[josm] 01/12: Imported Upstream version 0.0.svn10786+dfsg

Bas Couwenberg sebastic at debian.org
Fri Aug 12 14:29:11 UTC 2016


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

sebastic pushed a commit to branch master
in repository josm.

commit 1d2ce17da53cd9bd473354b17405e085012745d3
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Fri Aug 12 13:30:33 2016 +0200

    Imported Upstream version 0.0.svn10786+dfsg
---
 .classpath                                         |    4 +-
 .settings/org.eclipse.jdt.core.prefs               |    7 +-
 .settings/sf.eclipse.javacc.prefs                  |    2 +-
 README                                             |   13 +-
 REVISION                                           |    8 +-
 build.xml                                          |   41 +-
 data/defaultpresets.xml                            | 1735 ++++++-------
 data/validator/combinations.mapcss                 |   37 +-
 data/validator/deprecated.mapcss                   |   10 +
 data/validator/geometry.mapcss                     |    7 +-
 data/validator/ignoretags.cfg                      |    2 +
 data/validator/opening_hours.js                    |   63 +-
 data_nodist/trans/ast.lang                         |  Bin 8985 -> 8848 bytes
 data_nodist/trans/be.lang                          |  Bin 17233 -> 17556 bytes
 data_nodist/trans/bg.lang                          |  Bin 2409 -> 2411 bytes
 data_nodist/trans/ca-valencia.lang                 |  Bin 7819 -> 7791 bytes
 data_nodist/trans/ca.lang                          |  Bin 10610 -> 10470 bytes
 data_nodist/trans/cs.lang                          |  Bin 10579 -> 10730 bytes
 data_nodist/trans/da.lang                          |  Bin 9889 -> 10056 bytes
 data_nodist/trans/de.lang                          |  Bin 11011 -> 11232 bytes
 data_nodist/trans/el.lang                          |  Bin 1411 -> 1413 bytes
 data_nodist/trans/en.lang                          |  Bin 9069 -> 9243 bytes
 data_nodist/trans/en_AU.lang                       |  Bin 1496 -> 1498 bytes
 data_nodist/trans/en_GB.lang                       |  Bin 2128 -> 2130 bytes
 data_nodist/trans/es.lang                          |  Bin 11696 -> 11885 bytes
 data_nodist/trans/et.lang                          |  Bin 1444 -> 1390 bytes
 data_nodist/trans/fi.lang                          |  Bin 3082 -> 3011 bytes
 data_nodist/trans/fr.lang                          |  Bin 10961 -> 11345 bytes
 data_nodist/trans/gl.lang                          |  Bin 2959 -> 2961 bytes
 data_nodist/trans/hu.lang                          |  Bin 11195 -> 11083 bytes
 data_nodist/trans/id.lang                          |  Bin 6731 -> 6701 bytes
 data_nodist/trans/it.lang                          |  Bin 10154 -> 10414 bytes
 data_nodist/trans/ja.lang                          |  Bin 11831 -> 11614 bytes
 data_nodist/trans/km.lang                          |  Bin 16921 -> 16871 bytes
 data_nodist/trans/lt.lang                          |  Bin 2074 -> 2012 bytes
 data_nodist/trans/nb.lang                          |  Bin 1687 -> 1689 bytes
 data_nodist/trans/nl.lang                          |  Bin 11587 -> 11726 bytes
 data_nodist/trans/pl.lang                          |  Bin 2789 -> 2845 bytes
 data_nodist/trans/pt.lang                          |  Bin 13343 -> 12858 bytes
 data_nodist/trans/pt_BR.lang                       |  Bin 10058 -> 10112 bytes
 data_nodist/trans/ru.lang                          |  Bin 17259 -> 17590 bytes
 data_nodist/trans/sk.lang                          |  Bin 9906 -> 10055 bytes
 data_nodist/trans/sv.lang                          |  Bin 1348 -> 1312 bytes
 data_nodist/trans/uk.lang                          |  Bin 17662 -> 18005 bytes
 data_nodist/trans/vi.lang                          |  Bin 10845 -> 10737 bytes
 data_nodist/trans/zh_CN.lang                       |  Bin 6037 -> 7566 bytes
 data_nodist/trans/zh_TW.lang                       |  Bin 4655 -> 4587 bytes
 eclipse/JOSM (Java 7).launch                       |   21 -
 geticons.pl                                        |   37 +-
 i18n/po/af.po                                      |  404 +--
 i18n/po/am.po                                      |  404 +--
 i18n/po/ar.po                                      |  414 +--
 i18n/po/ast.po                                     |  492 ++--
 i18n/po/az.po                                      |  404 +--
 i18n/po/be.po                                      |  601 +++--
 i18n/po/bg.po                                      |  441 ++--
 i18n/po/bn.po                                      |  404 +--
 i18n/po/br.po                                      |  404 +--
 i18n/po/bs.po                                      |  404 +--
 i18n/po/ca.po                                      |  475 ++--
 i18n/po/ca at valencia.po                             |  452 ++--
 i18n/po/cs.po                                      |  539 ++--
 i18n/po/cy.po                                      |  404 +--
 i18n/po/da.po                                      |  498 ++--
 i18n/po/de.po                                      |  539 ++--
 i18n/po/de_DE.po                                   |  404 +--
 i18n/po/el.po                                      |  434 ++--
 i18n/po/en_AU.po                                   |  453 ++--
 i18n/po/en_CA.po                                   |  404 +--
 i18n/po/en_GB.po                                   |  508 ++--
 i18n/po/eo.po                                      |  408 +--
 i18n/po/es.po                                      |  517 ++--
 i18n/po/et.po                                      |  442 ++--
 i18n/po/eu.po                                      |  424 ++--
 i18n/po/fa.po                                      |  418 +--
 i18n/po/fi.po                                      |  455 ++--
 i18n/po/fil.po                                     |  404 +--
 i18n/po/fo.po                                      |  404 +--
 i18n/po/fr.po                                      |  541 ++--
 i18n/po/ga.po                                      |  404 +--
 i18n/po/gl.po                                      |  444 ++--
 i18n/po/he.po                                      |  418 +--
 i18n/po/hi.po                                      |  404 +--
 i18n/po/hr.po                                      |  426 ++--
 i18n/po/ht.po                                      |  404 +--
 i18n/po/hu.po                                      |  478 ++--
 i18n/po/hy.po                                      |  404 +--
 i18n/po/ia.po                                      |  404 +--
 i18n/po/id.po                                      |  451 ++--
 i18n/po/is.po                                      |  418 +--
 i18n/po/it.po                                      |  541 ++--
 i18n/po/ja.po                                      |  450 ++--
 i18n/po/ka.po                                      |  404 +--
 i18n/po/km.po                                      |  454 ++--
 i18n/po/ko.po                                      |  470 ++--
 i18n/po/ky.po                                      |  404 +--
 i18n/po/lb.po                                      |  404 +--
 i18n/po/lo.po                                      |  404 +--
 i18n/po/lt.po                                      |  552 ++--
 i18n/po/lv.po                                      |  406 +--
 i18n/po/mk.po                                      |  404 +--
 i18n/po/mr.po                                      |  409 +--
 i18n/po/ms.po                                      |  404 +--
 i18n/po/nb.po                                      |  425 ++--
 i18n/po/nds.po                                     |  404 +--
 i18n/po/nl.po                                      |  478 ++--
 i18n/po/nn.po                                      |  404 +--
 i18n/po/oc.po                                      |  404 +--
 i18n/po/pa.po                                      |  404 +--
 i18n/po/pl.po                                      | 2671 ++++++++++----------
 i18n/po/pt.po                                      |  475 ++--
 i18n/po/pt_BR.po                                   |  522 ++--
 i18n/po/rm.po                                      |  404 +--
 i18n/po/ro.po                                      |  412 +--
 i18n/po/ru.po                                      |  515 ++--
 i18n/po/sk.po                                      |  503 ++--
 i18n/po/sl.po                                      |  416 +--
 i18n/po/sq.po                                      |  404 +--
 i18n/po/sr.po                                      |  404 +--
 i18n/po/sv.po                                      |  480 ++--
 i18n/po/ta.po                                      |  406 +--
 i18n/po/te.po                                      |  404 +--
 i18n/po/th.po                                      |  404 +--
 i18n/po/tr.po                                      |  428 ++--
 i18n/po/ug.po                                      |  404 +--
 i18n/po/uk.po                                      |  513 ++--
 i18n/po/ur.po                                      |  404 +--
 i18n/po/vi.po                                      |  459 ++--
 i18n/po/wae.po                                     |  404 +--
 i18n/po/zh_CN.po                                   |  458 ++--
 i18n/po/zh_TW.po                                   |  442 ++--
 images/misc/error.svg                              |    4 +-
 images/presets/accommodation/alpine_hut_blue.png   |  Bin 0 -> 346 bytes
 images/presets/accommodation/basic_hut_blue.png    |  Bin 0 -> 217 bytes
 images/presets/accommodation/camping.svg           |  122 +
 images/presets/accommodation/caravan.svg           |  114 +
 images/presets/accommodation/chalet.svg            |  106 +
 images/presets/accommodation/guest_house.svg       |  129 +
 images/presets/accommodation/hostel.svg            |   14 +
 images/presets/accommodation/hotel.svg             |   14 +
 images/presets/accommodation/motel.svg             |   14 +
 images/presets/accommodation/shelter.svg           |  277 ++
 images/presets/accommodation/shelter_lean_to.svg   |  141 ++
 .../presets/accommodation/shelter_picnic_brown.png |  Bin 0 -> 346 bytes
 .../shelter_public_transport_brown.png             |  Bin 0 -> 242 bytes
 images/presets/accommodation/water.svg             |  116 +
 .../presets/accommodation/wilderness_hut_blue.png  |  Bin 0 -> 212 bytes
 images/presets/adit.png                            |  Bin 622 -> 0 bytes
 images/presets/aerialway.png                       |  Bin 486 -> 0 bytes
 images/presets/aerialway_station.png               |  Bin 284 -> 0 bytes
 images/presets/aeroway_gate.png                    |  Bin 872 -> 0 bytes
 images/presets/apron.png                           |  Bin 448 -> 0 bytes
 images/presets/arts_centre.png                     |  Bin 523 -> 0 bytes
 images/presets/athletics.png                       |  Bin 256 -> 0 bytes
 images/presets/baker.png                           |  Bin 737 -> 0 bytes
 images/presets/{ => barrier}/barrier.png           |  Bin
 images/presets/barrier/block.svg                   |   92 +
 images/presets/barrier/bollard.svg                 |  212 ++
 images/presets/barrier/cattle_grid.png             |  Bin 0 -> 272 bytes
 images/presets/barrier/chain.svg                   |  131 +
 images/presets/barrier/city_wall.svg               |  104 +
 images/presets/barrier/cycle_barrier.svg           |  122 +
 images/presets/{ => barrier}/douane.png            |  Bin
 images/presets/barrier/entrance.svg                |  110 +
 images/presets/barrier/fence.svg                   |  111 +
 images/presets/barrier/gate.png                    |  Bin 0 -> 492 bytes
 images/presets/barrier/hedge.svg                   |   86 +
 images/presets/barrier/kerb.svg                    |   88 +
 images/presets/barrier/lift_gate.svg               |  193 ++
 images/presets/barrier/retaining_wall.svg          |   80 +
 images/presets/barrier/sally_port.svg              |   94 +
 images/presets/barrier/spikes.svg                  |  100 +
 images/presets/barrier/stile.svg                   |  110 +
 images/presets/barrier/swing_gate.svg              |  196 ++
 images/presets/{ => barrier}/toll_station.png      |  Bin
 images/presets/barrier/turnstile.svg               |  102 +
 images/presets/barrier/wall.svg                    |  235 ++
 images/presets/basketball.png                      |  Bin 1920 -> 0 bytes
 images/presets/battlefield.png                     |  Bin 1338 -> 0 bytes
 images/presets/beachvolleyball.png                 |  Bin 296 -> 0 bytes
 images/presets/bed.png                             |  Bin 136 -> 0 bytes
 images/presets/bench.png                           |  Bin 99 -> 0 bytes
 images/presets/bicycle_rental.png                  |  Bin 715 -> 0 bytes
 images/presets/bike.png                            |  Bin 167 -> 0 bytes
 images/presets/board.png                           |  Bin 2422 -> 0 bytes
 images/presets/boatyard.png                        |  Bin 604 -> 0 bytes
 images/presets/bollard.png                         |  Bin 303 -> 0 bytes
 images/presets/boule.png                           |  Bin 258 -> 0 bytes
 images/presets/bus.png                             |  Bin 360 -> 0 bytes
 images/presets/bus_small.png                       |  Bin 367 -> 0 bytes
 images/presets/cable_car.png                       |  Bin 363 -> 0 bytes
 images/presets/car.png                             |  Bin 278 -> 0 bytes
 images/presets/car_rental.png                      |  Bin 459 -> 0 bytes
 images/presets/car_repair.png                      |  Bin 107 -> 0 bytes
 images/presets/car_sharing.png                     |  Bin 574 -> 0 bytes
 images/presets/car_wash.png                        |  Bin 709 -> 0 bytes
 images/presets/cemetery.png                        |  Bin 341 -> 0 bytes
 images/presets/chair_lift.png                      |  Bin 471 -> 0 bytes
 images/presets/cinema.png                          |  Bin 1113 -> 0 bytes
 images/presets/city_wall.png                       |  Bin 287 -> 0 bytes
 images/presets/confectionery.png                   |  Bin 811 -> 0 bytes
 images/presets/construction.png                    |  Bin 180 -> 0 bytes
 images/presets/craft/painter.png                   |  Bin 0 -> 291 bytes
 images/presets/craft/plumber.png                   |  Bin 0 -> 268 bytes
 images/presets/craft/pottery.png                   |  Bin 0 -> 354 bytes
 images/presets/craft/roofer.svg                    |   91 +
 images/presets/craft/tiler.png                     |  Bin 0 -> 90 bytes
 images/presets/craft/window_construction.png       |  Bin 0 -> 275 bytes
 images/presets/crane.png                           |  Bin 252 -> 0 bytes
 images/presets/diy_store.png                       |  Bin 1996 -> 0 bytes
 images/presets/drag_lift.png                       |  Bin 273 -> 0 bytes
 images/presets/education/college.png               |  Bin 0 -> 476 bytes
 images/presets/education/driving_school.png        |  Bin 0 -> 412 bytes
 images/presets/education/kindergarten.svg          |  100 +
 images/presets/{ => education}/school.png          |  Bin
 images/presets/education/university.png            |  Bin 0 -> 305 bytes
 images/presets/{ => emergency}/aed.svg             |    0
 images/presets/emergency/ambulance_station.svg     |   76 +
 images/presets/emergency/assembly_point.svg        |   32 +
 images/presets/emergency/fire_extinguisher.svg     |   11 +
 images/presets/emergency/fire_hose.svg             |   87 +
 images/presets/emergency/siren.svg                 |   67 +
 images/presets/emergency/water_tank.svg            |    9 +
 images/presets/empty.png                           |  Bin 86 -> 0 bytes
 images/presets/fence.png                           |  Bin 458 -> 0 bytes
 images/presets/fire_hydrant.png                    |  Bin 379 -> 0 bytes
 images/presets/firebrigade.png                     |  Bin 630 -> 0 bytes
 images/presets/food/bar.svg                        |  101 +
 images/presets/{ => food}/biergarten.png           |  Bin
 images/presets/{ => food}/cafe.png                 |  Bin
 images/presets/food/drinking_water.png             |  Bin 0 -> 523 bytes
 images/presets/{ => food}/fastfood.png             |  Bin
 images/presets/food/food_court.png                 |  Bin 0 -> 386 bytes
 images/presets/food/icecream.png                   |  Bin 0 -> 664 bytes
 images/presets/{ => food}/pub.png                  |  Bin
 images/presets/food/restaurant.svg                 |   57 +
 images/presets/football.png                        |  Bin 1098 -> 0 bytes
 images/presets/fuel.png                            |  Bin 248 -> 0 bytes
 images/presets/gasometer.png                       |  Bin 435 -> 0 bytes
 images/presets/glacier.png                         |  Bin 118 -> 0 bytes
 images/presets/goods.png                           |  Bin 241 -> 0 bytes
 images/presets/graveyard.png                       |  Bin 113 -> 0 bytes
 images/presets/guidepost.png                       |  Bin 139 -> 0 bytes
 images/presets/hangar.png                          |  Bin 335 -> 0 bytes
 images/presets/health/baby_hatch.svg               |  239 ++
 images/presets/health/clinic.svg                   |  235 ++
 images/presets/health/dentist.svg                  |  235 ++
 images/presets/health/doctors.svg                  |  243 ++
 images/presets/health/hospital.svg                 |  218 ++
 images/presets/health/pharmacy.svg                 |  218 ++
 images/presets/health/veterinary.svg               |  224 ++
 images/presets/hedge.png                           |  Bin 252 -> 0 bytes
 images/presets/hunting_stand.png                   |  Bin 121 -> 0 bytes
 images/presets/ice_hockey.png                      |  Bin 203 -> 0 bytes
 images/presets/informationoffice.png               |  Bin 1322 -> 0 bytes
 images/presets/island.png                          |  Bin 926 -> 0 bytes
 images/presets/islet.png                           |  Bin 407 -> 0 bytes
 images/presets/karting.png                         |  Bin 375 -> 0 bytes
 images/presets/kindergarten.png                    |  Bin 177 -> 0 bytes
 images/presets/kiosk.png                           |  Bin 1327 -> 0 bytes
 images/presets/landmark/adit.svg                   |  171 ++
 images/presets/landmark/beacon.png                 |  Bin 0 -> 149 bytes
 images/presets/landmark/building.svg               |   95 +
 images/presets/landmark/bunker.svg                 |  111 +
 images/presets/landmark/bunker_silo.svg            |  201 ++
 images/presets/{ => landmark}/cave_entrance.png    |  Bin
 images/presets/{ => landmark}/chimney.png          |  Bin
 images/presets/landmark/crane.svg                  |   92 +
 images/presets/landmark/cutline.svg                |   46 +
 images/presets/landmark/forest.svg                 |  700 +++++
 images/presets/landmark/gasometer.svg              |  107 +
 images/presets/landmark/glacier.svg                |   95 +
 images/presets/landmark/hunting_stand.png          |  Bin 0 -> 130 bytes
 images/presets/landmark/lighthouse.svg             |  126 +
 images/presets/landmark/mine.svg                   |   76 +
 images/presets/landmark/mountain_pass.svg          |  236 ++
 images/presets/{ => landmark}/peak.svg             |    0
 images/presets/landmark/plant.svg                  |  147 ++
 images/presets/landmark/reef.svg                   |   83 +
 images/presets/landmark/reservoir_covered.svg      |  109 +
 images/presets/{ => landmark}/ridge.svg            |    0
 images/presets/{ => landmark}/saddle.svg           |    0
 images/presets/landmark/silo.svg                   |  107 +
 images/presets/landmark/spring.svg                 |  103 +
 images/presets/landmark/storage_tank.svg           |  107 +
 images/presets/landmark/survey_point.svg           |  141 ++
 images/presets/landmark/tower.png                  |  Bin 0 -> 183 bytes
 images/presets/landmark/tree_row.svg               |  378 +++
 images/presets/landmark/trees.svg                  |  177 ++
 images/presets/landmark/trees_broad_leaved.svg     |  148 ++
 images/presets/landmark/trees_conifer.svg          |  149 ++
 images/presets/landmark/trees_palm.png             |  Bin 0 -> 487 bytes
 images/presets/{ => landmark}/valley.svg           |    0
 images/presets/landmark/volcano.svg                |   95 +
 images/presets/landmark/wastewater_plant.svg       |  178 ++
 images/presets/landmark/water_tower.svg            |   14 +
 images/presets/landmark/water_well.svg             |  139 +
 images/presets/{ => landmark}/water_works.png      |  Bin
 images/presets/landmark/watermill.svg              |  114 +
 images/presets/landmark/windmill.svg               |  116 +
 images/presets/landmark/works.svg                  |   84 +
 images/presets/landuse/allotments.svg              |  426 ++++
 images/presets/landuse/cemetery.svg                |  132 +
 images/presets/landuse/commercial.svg              |   86 +
 images/presets/landuse/construction.svg            |   84 +
 images/presets/landuse/farmland.png                |  Bin 0 -> 494 bytes
 images/presets/landuse/farmyard.png                |  Bin 0 -> 462 bytes
 images/presets/{ => landuse}/garages.png           |  Bin
 images/presets/landuse/graveyard.svg               |   96 +
 .../{ => landuse}/greenhouse_horticulture.png      |  Bin
 images/presets/landuse/landfill.svg                |  185 ++
 images/presets/{ => landuse}/landuse.png           |  Bin
 images/presets/{ => landuse}/landuse_water.png     |  Bin
 images/presets/landuse/meadow.svg                  |  447 ++++
 images/presets/landuse/military.svg                |  141 ++
 images/presets/landuse/mud.svg                     |  196 ++
 images/presets/landuse/orchard.svg                 |  258 ++
 images/presets/{ => landuse}/rail_light.png        |  Bin
 images/presets/landuse/sand.svg                    |  446 ++++
 images/presets/{ => landuse}/scrub.svg             |    0
 .../presets/{fruits.png => landuse/vineyard.png}   |  Bin
 images/presets/landuse/wetland.svg                 |  196 ++
 images/presets/laundry.png                         |  Bin 639 -> 0 bytes
 images/presets/leisure/advertising_column.svg      |  146 ++
 images/presets/{ => leisure}/bbq.png               |  Bin
 images/presets/leisure/bench.png                   |  Bin 0 -> 116 bytes
 images/presets/leisure/billboard.svg               |  331 +++
 images/presets/leisure/bird_hide.svg               |  111 +
 images/presets/leisure/casino.svg                  |   59 +
 images/presets/leisure/cinema.svg                  |  227 ++
 images/presets/leisure/common.png                  |  Bin 0 -> 206 bytes
 images/presets/leisure/discoball.svg               |  220 ++
 images/presets/leisure/dog.png                     |  Bin 0 -> 473 bytes
 images/presets/{ => leisure}/dogpark.png           |  Bin
 images/presets/{ => leisure}/equestrian.png        |  Bin
 images/presets/leisure/firepit.svg                 |  875 +++++++
 images/presets/leisure/fitness_station.svg         |   70 +
 images/presets/leisure/garden.png                  |  Bin 0 -> 117 bytes
 images/presets/leisure/nature_reserve.png          |  Bin 0 -> 137 bytes
 images/presets/leisure/nightclub.png               |  Bin 0 -> 594 bytes
 images/presets/leisure/park.png                    |  Bin 0 -> 103 bytes
 images/presets/leisure/picnic.png                  |  Bin 0 -> 337 bytes
 images/presets/leisure/playground.svg              |   70 +
 images/presets/leisure/sauna.png                   |  Bin 0 -> 787 bytes
 images/presets/leisure/stripclub.png               |  Bin 0 -> 634 bytes
 images/presets/{ => leisure}/theater.png           |  Bin
 images/presets/leisure/theme_park.svg              |  335 +++
 images/presets/leisure/water_park.png              |  Bin 0 -> 150 bytes
 images/presets/leisure/zoo.svg                     |  105 +
 images/presets/lift_gate.png                       |  Bin 382 -> 0 bytes
 images/presets/locality.png                        |  Bin 462 -> 0 bytes
 images/presets/lock_gate.png                       |  Bin 313 -> 0 bytes
 images/presets/map.png                             |  Bin 2375 -> 0 bytes
 images/presets/memorial.png                        |  Bin 402 -> 0 bytes
 images/presets/military.png                        |  Bin 145 -> 0 bytes
 images/presets/mine.png                            |  Bin 516 -> 0 bytes
 images/presets/mineshaft.png                       |  Bin 394 -> 0 bytes
 images/presets/{ => misc}/addresses.png            |  Bin
 images/presets/{ => misc}/boundaries.png           |  Bin
 images/presets/misc/boundary_stone.png             |  Bin 0 -> 160 bytes
 images/presets/misc/cliff-pattern.png              |  Bin 0 -> 124 bytes
 images/presets/misc/cliff.svg                      |  106 +
 images/presets/misc/construction.svg               |   66 +
 images/presets/{ => misc}/contact.png              |  Bin
 images/presets/misc/danger.svg                     |   65 +
 images/presets/misc/deprecated.svg                 |  113 +
 images/presets/misc/description.svg                |  102 +
 .../presets/misc/embankment-pattern-centered.png   |  Bin 0 -> 151 bytes
 images/presets/misc/embankment-pattern.png         |  Bin 0 -> 111 bytes
 images/presets/misc/embankment.svg                 |  245 ++
 images/presets/misc/entrance-emergency.png         |  Bin 0 -> 387 bytes
 images/presets/misc/entrance-exit.png              |  Bin 0 -> 304 bytes
 images/presets/misc/entrance-main.png              |  Bin 0 -> 372 bytes
 images/presets/misc/entrance-service.png           |  Bin 0 -> 374 bytes
 images/presets/misc/entrance-yes.png               |  Bin 0 -> 244 bytes
 images/presets/misc/fixme-annotation.png           |  Bin 0 -> 292 bytes
 images/presets/{ => misc}/flag.png                 |  Bin
 images/presets/misc/fountain.png                   |  Bin 0 -> 119 bytes
 images/presets/misc/grit_bin.svg                   |  248 ++
 images/presets/misc/housenumber.png                |  Bin 0 -> 310 bytes
 images/presets/misc/information/board.svg          |  120 +
 images/presets/misc/information/guidepost.svg      |   91 +
 images/presets/misc/information/information.svg    |  115 +
 .../presets/misc/information/informationoffice.svg |   69 +
 images/presets/misc/information/map.svg            |  123 +
 images/presets/{ => misc}/interpolation.png        |  Bin
 images/presets/{ => misc}/message.png              |  Bin
 images/presets/{ => misc}/monitoring_station.png   |  Bin
 images/presets/{ => misc}/multipolygon.png         |  Bin
 images/presets/misc/no_icon.svg                    |   91 +
 images/presets/misc/note-annotation.png            |  Bin 0 -> 541 bytes
 images/presets/misc/note-fixme-annotation.png      |  Bin 0 -> 746 bytes
 images/presets/{ => misc}/path.png                 |  Bin
 images/presets/misc/pipeline_marker.svg            |  176 ++
 images/presets/{ => misc}/relations.png            |  Bin
 images/presets/misc/rock.svg                       |   69 +
 images/presets/misc/stone.svg                      |   64 +
 images/presets/misc/streetlamp.png                 |  Bin 0 -> 410 bytes
 images/presets/misc/valve.svg                      |   57 +
 images/presets/misc/wlan.svg                       |  115 +
 images/presets/money/atm.svg                       |  174 ++
 images/presets/money/bank.svg                      |   80 +
 images/presets/money/dollar.svg                    |    6 +
 images/presets/money/exchange.svg                  |  262 ++
 images/presets/monument.png                        |  Bin 289 -> 0 bytes
 images/presets/motorbike.png                       |  Bin 181 -> 0 bytes
 images/presets/nautical/bay.svg                    |  100 +
 images/presets/nautical/beach.svg                  |  100 +
 images/presets/nautical/boatyard.png               |  Bin 0 -> 473 bytes
 images/presets/nautical/breakwater.svg             |  111 +
 images/presets/nautical/coast_line.svg             |  105 +
 images/presets/nautical/dam.svg                    |  117 +
 images/presets/nautical/ferry.svg                  |  118 +
 images/presets/nautical/groyne.svg                 |  194 ++
 images/presets/nautical/lock_gate.svg              |  139 +
 images/presets/nautical/marina.png                 |  Bin 0 -> 181 bytes
 images/presets/nautical/marine_fuel.png            |  Bin 0 -> 1252 bytes
 images/presets/nautical/pier.svg                   |  139 +
 images/presets/nautical/slipway.png                |  Bin 0 -> 304 bytes
 images/presets/nautical/turning.svg                |   85 +
 images/presets/nautical/water.svg                  |   94 +
 images/presets/nautical/waterfall.svg              |   99 +
 images/presets/nautical/waterway_canal.svg         |   99 +
 images/presets/nautical/waterway_ditch.svg         |   99 +
 images/presets/nautical/waterway_drain.svg         |   98 +
 images/presets/nautical/waterway_river.svg         |   82 +
 images/presets/nautical/waterway_riverbank.svg     |   93 +
 images/presets/nautical/waterway_stream.svg        |   80 +
 images/presets/nautical/weir.svg                   |   78 +
 images/presets/office/accountant.svg               |  113 +
 images/presets/office/administrative.svg           |  103 +
 images/presets/office/advertising_agency.svg       |  148 ++
 images/presets/office/architect.svg                |  138 +
 images/presets/office/association.svg              |  152 ++
 images/presets/office/educational_institution.svg  |  158 ++
 images/presets/office/employment_agency.svg        |  131 +
 images/presets/office/foundation.svg               |  150 ++
 images/presets/office/government.svg               |  103 +
 images/presets/office/insurance.svg                |  119 +
 images/presets/office/it.svg                       |  158 ++
 images/presets/office/lawyer.svg                   |  108 +
 images/presets/office/newspaper.svg                |  198 ++
 images/presets/office/notary.svg                   |  171 ++
 images/presets/office/ong.svg                      |  192 ++
 images/presets/office/political_party.svg          |  128 +
 images/presets/office/private_company.svg          |  193 ++
 images/presets/office/real_state.svg               |  125 +
 images/presets/office/religion.svg                 |  102 +
 images/presets/office/research.svg                 |  123 +
 images/presets/office/tax_advisor.svg              |  126 +
 images/presets/office/telecommunication.svg        |  132 +
 images/presets/parking.png                         |  Bin 329 -> 0 bytes
 images/presets/pelota.png                          |  Bin 263 -> 0 bytes
 images/presets/place/island.svg                    |  118 +
 images/presets/place/islet.svg                     |  104 +
 images/presets/place/locality.svg                  |  116 +
 images/presets/place/settlement/capital.png        |  Bin 0 -> 155 bytes
 images/presets/place/settlement/city.png           |  Bin 0 -> 273 bytes
 images/presets/place/settlement/farm.png           |  Bin 0 -> 275 bytes
 images/presets/place/settlement/hamlet.png         |  Bin 0 -> 258 bytes
 .../presets/place/settlement/isolated_dwelling.png |  Bin 0 -> 153 bytes
 images/presets/place/settlement/neighbourhood.png  |  Bin 0 -> 265 bytes
 images/presets/place/settlement/suburb.png         |  Bin 0 -> 265 bytes
 images/presets/place/settlement/town.png           |  Bin 0 -> 235 bytes
 images/presets/place/settlement/village.png        |  Bin 0 -> 260 bytes
 images/presets/plane.png                           |  Bin 327 -> 0 bytes
 images/presets/power/bay.svg                       |  269 ++
 images/presets/power/busbar.svg                    |  251 ++
 images/presets/power/cable.svg                     |  235 ++
 .../presets/power/cable_distribution_cabinet.svg   |  235 ++
 images/presets/power/compensator.svg               |  240 ++
 images/presets/power/converter.svg                 |  266 ++
 images/presets/power/generator.svg                 |  245 ++
 images/presets/power/insulator.svg                 |  247 ++
 images/presets/power/line.svg                      |  249 ++
 images/presets/power/plant.svg                     |  232 ++
 images/presets/power/pole.svg                      |  226 ++
 images/presets/power/pole_transformer.svg          |  233 ++
 images/presets/power/portal.svg                    |  294 +++
 images/presets/power/power.svg                     |  223 ++
 .../presets/{ => power}/power_source-biofuel.svg   |    0
 images/presets/{ => power}/power_source-coal.svg   |    0
 images/presets/{ => power}/power_source-gas.svg    |    0
 .../{ => power}/power_source-geothermal.svg        |    0
 .../presets/{ => power}/power_source-nuclear.svg   |    0
 images/presets/{ => power}/power_source-oil.svg    |    0
 images/presets/{ => power}/power_source-sun.svg    |    0
 images/presets/{ => power}/power_source-waste.svg  |    0
 images/presets/{ => power}/power_source-water.svg  |    0
 images/presets/{ => power}/power_source-wind.svg   |    0
 images/presets/power/substation.svg                |  318 +++
 images/presets/power/switch.svg                    |  232 ++
 images/presets/power/switchgear.svg                |  290 +++
 images/presets/power/tower.svg                     |  253 ++
 images/presets/power/transformer.svg               |  275 ++
 images/presets/power/transformer_tower.svg         |  234 ++
 images/presets/range.png                           |  Bin 392 -> 0 bytes
 images/presets/religion/bahai.svg                  |   77 +
 images/presets/religion/buddhism.svg               |  115 +
 images/presets/religion/church.svg                 |  129 +
 images/presets/religion/hinduism.svg               |   78 +
 images/presets/religion/jainism.svg                |  436 ++++
 images/presets/religion/jewish.svg                 |  160 ++
 images/presets/religion/muslim.svg                 |  119 +
 images/presets/religion/religion.svg               |  192 ++
 images/presets/religion/shinto.svg                 |  105 +
 images/presets/religion/sikhism.svg                |   79 +
 images/presets/religion/taoism.svg                 |   90 +
 images/presets/religion/wayside_cross.svg          |   99 +
 images/presets/religion/wayside_shrine.svg         |  162 ++
 images/presets/reservoir_covered.png               |  Bin 536 -> 0 bytes
 images/presets/restaurant.png                      |  Bin 196 -> 0 bytes
 images/presets/retaining_wall.png                  |  Bin 324 -> 0 bytes
 images/presets/rowing.png                          |  Bin 540 -> 0 bytes
 images/presets/ruins.png                           |  Bin 427 -> 0 bytes
 images/presets/sauna.png                           |  Bin 534 -> 0 bytes
 images/presets/service/arts_centre.png             |  Bin 0 -> 446 bytes
 images/presets/service/clock.svg                   |   14 +
 images/presets/{ => service}/community_centre.png  |  Bin
 images/presets/service/courthouse.svg              |   14 +
 images/presets/service/elevator.svg                |  243 ++
 images/presets/{ => service}/embassy.png           |  Bin
 images/presets/service/emergency_access_point.svg  |  226 ++
 images/presets/service/excrement_bags.png          |  Bin 0 -> 499 bytes
 images/presets/service/fire_hydrant.svg            |  164 ++
 images/presets/service/firebrigade.svg             |  137 +
 images/presets/{ => service}/network-wireless.svg  |    0
 images/presets/service/police.svg                  |  158 ++
 images/presets/service/post_box.png                |  Bin 0 -> 285 bytes
 images/presets/service/post_office.png             |  Bin 0 -> 428 bytes
 images/presets/service/prison.svg                  |   14 +
 images/presets/service/ranger_station.svg          |   75 +
 images/presets/service/recycling/recycling.svg     |   12 +
 .../presets/service/recycling/recycling_centre.svg |   12 +
 .../service/recycling/recycling_container.svg      |   12 +
 .../service/recycling/sanitary_dump_station.svg    |   87 +
 images/presets/service/recycling/trash-bin.svg     |   87 +
 .../presets/service/recycling/waste_disposal.png   |  Bin 0 -> 215 bytes
 images/presets/service/shower.svg                  |   87 +
 images/presets/service/studio.png                  |  Bin 0 -> 406 bytes
 images/presets/{ => service}/surveillance.png      |  Bin
 images/presets/service/telephone.svg               |  136 +
 images/presets/service/toilets.svg                 |  108 +
 images/presets/{ => service}/townhall.png          |  Bin
 images/presets/shop/alcohol.svg                    |  286 +++
 images/presets/shop/antique.svg                    |  391 +++
 images/presets/shop/art.svg                        |  168 ++
 images/presets/shop/bag.svg                        |  202 ++
 images/presets/shop/beauty.svg                     |  103 +
 images/presets/shop/bed.svg                        |   75 +
 images/presets/shop/beverages.svg                  |  373 +++
 images/presets/shop/bicycle.svg                    |   93 +
 images/presets/shop/body.svg                       |   53 +
 images/presets/shop/book.svg                       |   67 +
 images/presets/{ => shop}/boutique.png             |  Bin
 images/presets/shop/chemist.svg                    |   90 +
 images/presets/shop/clothes.svg                    |   73 +
 images/presets/shop/computer.svg                   | 2118 ++++++++++++++++
 images/presets/{ => shop}/convenience.png          |  Bin
 images/presets/{ => shop}/copyshop.png             |  Bin
 images/presets/shop/cosmetics.svg                  |  133 +
 images/presets/{ => shop}/curtain.png              |  Bin
 images/presets/shop/diy_store.svg                  |  388 +++
 images/presets/shop/electronics.svg                |  512 ++++
 images/presets/{ => shop}/erotic.png               |  Bin
 images/presets/{ => shop}/fabric.png               |  Bin
 images/presets/shop/florist.svg                    |  129 +
 images/presets/{ => shop}/frame.png                |  Bin
 images/presets/shop/funeral_directors.svg          |   90 +
 images/presets/shop/furniture.svg                  |  376 +++
 images/presets/shop/garden_centre.svg              |  232 ++
 images/presets/{ => shop/groceries}/apple.png      |  Bin
 images/presets/shop/groceries/bakery.png           |  Bin 0 -> 178 bytes
 images/presets/shop/groceries/butcher.png          |  Bin 0 -> 84 bytes
 images/presets/shop/groceries/coffee.svg           |  109 +
 images/presets/shop/groceries/confectionery.svg    |   64 +
 images/presets/{ => shop/groceries}/deli.png       |  Bin
 .../presets/{ => shop/groceries}/greengrocer.png   |  Bin
 images/presets/{ => shop/groceries}/seafood.png    |  Bin
 images/presets/shop/groceries/tea.svg              |  470 ++++
 images/presets/shop/hairdresser.svg                |  213 ++
 images/presets/{ => shop}/hardware.png             |  Bin
 images/presets/{ => shop}/hearing_aids.png         |  Bin
 images/presets/shop/hifi.svg                       |  121 +
 images/presets/shop/houseware.svg                  |  105 +
 images/presets/shop/interior_decoration.svg        |  243 ++
 images/presets/shop/jewelry.svg                    |  375 +++
 images/presets/shop/kiosk.svg                      |  456 ++++
 images/presets/{ => shop}/kitchen.png              |  Bin
 images/presets/shop/laundry.svg                    |  164 ++
 images/presets/shop/library.png                    |  Bin 0 -> 147 bytes
 images/presets/{ => shop}/lottery.svg              |    0
 images/presets/shop/mall.svg                       |  134 +
 images/presets/shop/marketplace.png                |  Bin 0 -> 600 bytes
 images/presets/shop/medical_supply.svg             |  177 ++
 images/presets/{ => shop}/mobile_phone.png         |  Bin
 images/presets/shop/music.svg                      |  514 ++++
 images/presets/{ => shop}/musical_instrument.png   |  Bin
 images/presets/shop/news.svg                       |   14 +
 images/presets/shop/optician.svg                   |   14 +
 images/presets/shop/outdoor.svg                    |  598 +++++
 images/presets/{ => shop}/paint.png                |  Bin
 images/presets/{ => shop}/pawnbroker.svg           |    0
 images/presets/shop/perfumery.svg                  |  174 ++
 images/presets/shop/pet.svg                        |  857 +++++++
 images/presets/shop/photo.svg                      |  193 ++
 images/presets/{ => shop}/present.svg              |    0
 images/presets/shop/shoes.svg                      |  126 +
 images/presets/{ => shop}/stationery.png           |  Bin
 images/presets/shop/supermarket.svg                |   14 +
 images/presets/shop/tailor.svg                     |  276 ++
 images/presets/shop/tattoo.svg                     |   95 +
 images/presets/shop/ticket.svg                     |  105 +
 images/presets/shop/tobacco.svg                    |   44 +
 images/presets/shop/toys.svg                       |  704 ++++++
 images/presets/{ => shop}/travel.png               |  Bin
 images/presets/{ => shop}/vacuum_cleaner.png       |  Bin
 images/presets/{ => shop}/variety_store.png        |  Bin
 images/presets/shop/vehicle.svg                    |   97 +
 images/presets/shop/video.png                      |  Bin 0 -> 170 bytes
 images/presets/shop/video_games.png                |  Bin 0 -> 226 bytes
 images/presets/shop/wine.svg                       |  115 +
 images/presets/sightseeing.png                     |  Bin 335 -> 0 bytes
 images/presets/sightseeing/archaeological.svg      |  148 ++
 images/presets/sightseeing/attraction.svg          |   91 +
 images/presets/sightseeing/battlefield.svg         |   56 +
 images/presets/sightseeing/castle.svg              |   82 +
 images/presets/sightseeing/memorial.svg            |  139 +
 images/presets/sightseeing/monument.svg            |  123 +
 images/presets/sightseeing/museum.svg              |   14 +
 .../{ => sightseeing}/palaeontological_site.png    |  Bin
 images/presets/sightseeing/peak_viewpoint.svg      |   97 +
 images/presets/sightseeing/ruins.svg               |  116 +
 images/presets/sightseeing/viewpoint.svg           |  103 +
 images/presets/silo.png                            |  Bin 592 -> 0 bytes
 images/presets/skating.png                         |  Bin 373 -> 0 bytes
 images/presets/social_facility/assisted_living.svg |  250 ++
 images/presets/social_facility/food_bank.svg       |  230 ++
 images/presets/social_facility/group_home.svg      |  244 ++
 images/presets/social_facility/nursing_home.svg    |  250 ++
 images/presets/social_facility/outreach.svg        |  247 ++
 images/presets/social_facility/shelter.svg         |  231 ++
 images/presets/sport/10pin.svg                     |  132 +
 images/presets/sport/archery.svg                   |  142 ++
 images/presets/sport/athletics.png                 |  Bin 0 -> 546 bytes
 images/presets/sport/baseball.svg                  |  216 ++
 images/presets/sport/basketball.svg                |  182 ++
 images/presets/sport/beachvolleyball.png           |  Bin 0 -> 653 bytes
 images/presets/sport/billiards.svg                 |  205 ++
 images/presets/sport/boule.svg                     |  127 +
 images/presets/sport/canoe.svg                     |   76 +
 images/presets/sport/centre.png                    |  Bin 0 -> 241 bytes
 images/presets/sport/chess.png                     |  Bin 0 -> 74 bytes
 images/presets/sport/climbing.svg                  |  115 +
 images/presets/sport/cricket.svg                   |  175 ++
 images/presets/sport/croquet.svg                   |  103 +
 images/presets/sport/cycling.svg                   |  367 +++
 images/presets/{ => sport}/field_hockey.png        |  Bin
 images/presets/sport/fishing.png                   |  Bin 0 -> 145 bytes
 .../{gymnastics.png => sport/fitness_centre.png}   |  Bin
 images/presets/sport/football.svg                  |  752 ++++++
 images/presets/sport/golf.svg                      |   70 +
 images/presets/sport/golf/bunker.svg               |  106 +
 images/presets/sport/golf/driving_range.svg        |  156 ++
 images/presets/sport/golf/fairway.svg              |  122 +
 images/presets/sport/golf/golf.svg                 |  164 ++
 images/presets/sport/golf/green.svg                |  116 +
 images/presets/sport/golf/hole.svg                 |  136 +
 images/presets/sport/golf/lateral_water_hazard.svg |  106 +
 images/presets/sport/golf/pin.svg                  |  126 +
 images/presets/sport/golf/rough.svg                |  220 ++
 images/presets/sport/golf/tee.svg                  |  189 ++
 images/presets/sport/golf/water_hazard.svg         |  106 +
 images/presets/sport/gymnastics.svg                |   91 +
 images/presets/sport/handball.svg                  |  108 +
 images/presets/sport/ice_hockey.png                |  Bin 0 -> 413 bytes
 images/presets/sport/karting.png                   |  Bin 0 -> 755 bytes
 images/presets/sport/miniature_golf.svg            |   83 +
 images/presets/sport/motocross.svg                 |  113 +
 images/presets/sport/motor.png                     |  Bin 0 -> 699 bytes
 images/presets/sport/multi.svg                     |  227 ++
 images/presets/sport/pelota.png                    |  Bin 0 -> 593 bytes
 images/presets/sport/pitch.png                     |  Bin 0 -> 577 bytes
 images/presets/sport/raceway.svg                   |   81 +
 images/presets/sport/racquetball.svg               |  415 +++
 images/presets/sport/range.svg                     |   99 +
 images/presets/sport/rc_car.svg                    |  107 +
 images/presets/sport/riding.svg                    |  105 +
 images/presets/sport/roller_skating.svg            |  118 +
 images/presets/sport/rowing.svg                    |  109 +
 images/presets/sport/running.svg                   |  206 ++
 images/presets/sport/scuba_diving.svg              |   73 +
 images/presets/sport/skateboard.svg                |  129 +
 images/presets/sport/skating.png                   |  Bin 0 -> 845 bytes
 images/presets/sport/skiing.svg                    |  367 +++
 images/presets/sport/soccer.svg                    |   58 +
 images/presets/sport/stadium.png                   |  Bin 0 -> 580 bytes
 images/presets/sport/swimming.svg                  |  379 +++
 images/presets/sport/table_tennis.svg              |  128 +
 images/presets/sport/tennis.svg                    |  361 +++
 images/presets/sport/track.png                     |  Bin 0 -> 130 bytes
 images/presets/sport/volleyball.svg                |  264 ++
 images/presets/stadium.png                         |  Bin 291 -> 0 bytes
 images/presets/station.png                         |  Bin 403 -> 0 bytes
 images/presets/station16.png                       |  Bin 415 -> 0 bytes
 images/presets/storage_tank.png                    |  Bin 705 -> 0 bytes
 images/presets/studio.png                          |  Bin 573 -> 0 bytes
 images/presets/swing_gate.png                      |  Bin 323 -> 0 bytes
 images/presets/table_tennis.png                    |  Bin 802 -> 0 bytes
 images/presets/taxi.png                            |  Bin 509 -> 0 bytes
 images/presets/telephone.png                       |  Bin 160 -> 0 bytes
 images/presets/theme_park.png                      |  Bin 1451 -> 0 bytes
 images/presets/toilet.png                          |  Bin 455 -> 0 bytes
 images/presets/tram.png                            |  Bin 137 -> 0 bytes
 images/presets/transport/aerialway/cable_car.svg   |  120 +
 images/presets/transport/aerialway/chair_lift.svg  |  106 +
 images/presets/transport/aerialway/drag_lift.svg   |   97 +
 images/presets/transport/aerialway/gondola.svg     |  104 +
 images/presets/transport/aerialway/goods.svg       |   96 +
 .../presets/transport/aerialway/magic_carpet.png   |  Bin 0 -> 256 bytes
 images/presets/transport/aerialway/mixed_lift.svg  |  131 +
 images/presets/transport/aerialway/pylon.svg       |  128 +
 images/presets/transport/aerialway/station.svg     |  116 +
 images/presets/transport/airport.svg               |  133 +
 images/presets/transport/airport/airfield.svg      |  112 +
 images/presets/transport/airport/apron.svg         |  175 ++
 images/presets/transport/airport/gate.svg          |   83 +
 images/presets/transport/airport/hangar.svg        |   76 +
 images/presets/transport/airport/helipad.svg       |  248 ++
 .../presets/transport/airport/parking_position.png |  Bin 0 -> 180 bytes
 images/presets/{ => transport/airport}/runway.png  |  Bin
 images/presets/{ => transport/airport}/taxiway.png |  Bin
 images/presets/transport/airport/terminal.svg      |  190 ++
 images/presets/transport/airport/windsock.svg      |   92 +
 images/presets/transport/bridge/bridge.svg         |   98 +
 images/presets/transport/bridge/bridge_movable.svg |  109 +
 images/presets/transport/bridge/bridge_outline.svg |   97 +
 images/presets/transport/bridge/bridge_support.svg |  102 +
 images/presets/transport/bus.svg                   |  137 +
 images/presets/transport/bus_old.svg               |  181 ++
 images/presets/transport/bus_small.png             |  Bin 0 -> 329 bytes
 images/presets/transport/passage/arcade.svg        |   81 +
 images/presets/transport/passage/colonnade.svg     |   80 +
 images/presets/transport/passage/tunnel.svg        |   90 +
 .../passage/tunnel_avalanche_protector.svg         |   93 +
 .../transport/passage/tunnel_building_passage.svg  |   92 +
 .../presets/transport/passage/tunnel_culvert.svg   |   99 +
 images/presets/transport/platform.svg              |  101 +
 images/presets/{ => transport}/platform_bus.png    |  Bin
 images/presets/{ => transport}/platform_rail.png   |  Bin
 .../presets/transport/railway/abandoned_rail.svg   |  133 +
 images/presets/transport/railway/buffer_stop.svg   |  113 +
 images/presets/transport/railway/bus_guideway.svg  |  159 ++
 images/presets/transport/railway/crossing.svg      |   84 +
 images/presets/transport/railway/disused_rail.svg  |  124 +
 images/presets/transport/railway/funicular.svg     |  129 +
 .../presets/transport/railway/level_crossing.svg   |   98 +
 images/presets/transport/railway/light_rail.svg    |  144 ++
 images/presets/transport/railway/milestone.svg     |  144 ++
 images/presets/transport/railway/monorail.svg      |  147 ++
 .../transport/railway/narrow_gauge_rail.svg        |  123 +
 images/presets/transport/railway/preserved.svg     |  224 ++
 images/presets/transport/railway/rail.svg          |  123 +
 images/presets/transport/railway/signal.svg        |  143 ++
 images/presets/transport/railway/subway.svg        |  140 +
 images/presets/transport/railway/switch.svg        |  133 +
 images/presets/transport/railway/tram.svg          |  186 ++
 images/presets/transport/railway/turntable.svg     |  129 +
 images/presets/transport/railway_small.png         |  Bin 0 -> 121 bytes
 images/presets/transport/railway_station.svg       |  172 ++
 images/presets/transport/share_taxi.svg            |  162 ++
 images/presets/transport/station.png               |  Bin 0 -> 882 bytes
 images/presets/transport/station.svg               |  161 ++
 images/presets/transport/station16.png             |  Bin 0 -> 412 bytes
 images/presets/transport/taxi.svg                  |  205 ++
 images/presets/transport/ticket-machine.svg        |  116 +
 images/presets/transport/train.svg                 |  167 ++
 images/presets/transport/tram.svg                  |  170 ++
 images/presets/transport/trolleybus.svg            |  169 ++
 images/presets/transport/underground.png           |  Bin 0 -> 566 bytes
 .../transport/way/combined_foot_cycleway.svg       |  159 ++
 images/presets/transport/way/cycle_lane_track.svg  |  156 ++
 .../presets/transport/way/dedicated_bridleway.svg  |   98 +
 .../presets/transport/way/dedicated_cycleway.svg   |  140 +
 images/presets/transport/way/dedicated_footway.svg |  118 +
 images/presets/transport/way/path.svg              |   82 +
 .../transport/way/segregated_foot_cycleway.svg     |  168 ++
 images/presets/transport/way/steps.svg             |  120 +
 images/presets/transport/way/track.svg             |  117 +
 images/presets/transport/way/way_bicycle_road.svg  |  145 ++
 images/presets/transport/way/way_construction.svg  |  154 ++
 images/presets/transport/way/way_escape.svg        |  257 ++
 images/presets/transport/way/way_living_street.svg |  156 ++
 images/presets/transport/way/way_motorway.svg      |  152 ++
 images/presets/transport/way/way_motorway_link.svg |  165 ++
 images/presets/transport/way/way_pedestrian.svg    |  148 ++
 images/presets/transport/way/way_primary.svg       |  114 +
 images/presets/transport/way/way_primary_link.svg  |  131 +
 images/presets/transport/way/way_residential.svg   |  141 ++
 images/presets/transport/way/way_road.svg          |  153 ++
 images/presets/transport/way/way_secondary.svg     |  114 +
 .../presets/transport/way/way_secondary_link.svg   |  135 +
 images/presets/transport/way/way_service.svg       |  100 +
 .../transport/way/way_service_parking_aisle.svg    |  100 +
 images/presets/transport/way/way_tertiary.svg      |  114 +
 images/presets/transport/way/way_tertiary_link.svg |  130 +
 images/presets/transport/way/way_trunk.svg         |  111 +
 images/presets/transport/way/way_trunk_link.svg    |  194 ++
 images/presets/transport/way/way_unclassified.svg  |  114 +
 images/presets/tunnel.png                          |  Bin 125 -> 0 bytes
 images/presets/turning.png                         |  Bin 229 -> 0 bytes
 images/presets/tyres.png                           |  Bin 322 -> 0 bytes
 images/presets/underground.png                     |  Bin 611 -> 0 bytes
 images/presets/vehicle/bicycle_rental.svg          |  219 ++
 images/presets/vehicle/bicycle_repair_station.svg  |  150 ++
 images/presets/vehicle/bump.svg                    |  122 +
 images/presets/vehicle/car_parts.svg               |  152 ++
 images/presets/vehicle/car_rental.svg              |  207 ++
 images/presets/vehicle/car_sharing.svg             |  192 ++
 images/presets/vehicle/car_wash.svg                |  167 ++
 images/presets/vehicle/charging_station.png        |  Bin 0 -> 322 bytes
 images/presets/vehicle/chicane.svg                 |  124 +
 images/presets/vehicle/choker.svg                  |  124 +
 images/presets/vehicle/compressed_air.svg          |  119 +
 images/presets/vehicle/crossing.svg                |  137 +
 images/presets/vehicle/crossing_island.svg         |  115 +
 images/presets/vehicle/crossing_ref_zebra.svg      |  116 +
 .../presets/vehicle/crossing_traffic_signals.svg   |   99 +
 images/presets/vehicle/crossing_unmarked.svg       |  102 +
 images/presets/vehicle/cushion.svg                 |  128 +
 images/presets/vehicle/emergency_phone.svg         |   76 +
 images/presets/vehicle/ford.svg                    |  125 +
 images/presets/vehicle/fuel.svg                    |   91 +
 images/presets/vehicle/hump.svg                    |  122 +
 images/presets/vehicle/island.svg                  |  106 +
 images/presets/vehicle/junction.svg                |  144 ++
 images/presets/vehicle/milestone.svg               |  160 ++
 images/presets/vehicle/motorbike.svg               |  107 +
 images/presets/vehicle/motorway_junction.svg       |  246 ++
 images/presets/vehicle/parking/bicycle.svg         |  168 ++
 images/presets/vehicle/parking/handicapped.svg     |   85 +
 images/presets/vehicle/parking/motorbike.svg       |   98 +
 images/presets/vehicle/parking/multi-storey.svg    |   78 +
 images/presets/vehicle/parking/park_ride.svg       |   97 +
 images/presets/vehicle/parking/parking.svg         |   74 +
 images/presets/vehicle/parking/parking_space.svg   |  106 +
 images/presets/vehicle/parking/underground.svg     |   91 +
 images/presets/vehicle/passing_place.svg           |  233 ++
 images/presets/vehicle/repair_shop.svg             |   82 +
 images/presets/vehicle/rest_area.svg               |  247 ++
 .../vehicle/restriction/bicycle-designated.svg     |   94 +
 images/presets/vehicle/restriction/bicycle.svg     |   98 +
 images/presets/vehicle/restriction/city_limit.svg  |  247 ++
 images/presets/vehicle/restriction/dead_end.svg    |   72 +
 .../vehicle/restriction/foot-designated.svg        |  103 +
 images/presets/vehicle/restriction/foot.svg        |   92 +
 images/presets/vehicle/restriction/give_way.svg    |  220 ++
 images/presets/vehicle/restriction/goods.svg       |  105 +
 .../vehicle/restriction/horse-designated.svg       |  104 +
 images/presets/vehicle/restriction/horse.svg       |   99 +
 images/presets/vehicle/restriction/maxheight.svg   |  110 +
 images/presets/vehicle/restriction/maxlength.svg   |  130 +
 images/presets/vehicle/restriction/maxspeed.svg    |  159 ++
 .../presets/vehicle/restriction/maxspeed_none.svg  |   98 +
 images/presets/vehicle/restriction/maxweight.svg   |   98 +
 images/presets/vehicle/restriction/maxwidth.svg    |   98 +
 .../vehicle/restriction/mini_roundabout_left.svg   |  125 +
 .../vehicle/restriction/mini_roundabout_right.svg  |  124 +
 images/presets/vehicle/restriction/minspeed.svg    |   88 +
 images/presets/vehicle/restriction/motorbike.svg   |  103 +
 images/presets/vehicle/restriction/motorcar.svg    |   98 +
 images/presets/vehicle/restriction/psv.svg         |  133 +
 .../presets/vehicle/restriction/restrictions.svg   |   96 +
 .../vehicle/restriction/roundabout_left.svg        |  114 +
 .../vehicle/restriction/roundabout_right.svg       |  113 +
 .../presets/vehicle/restriction/speed_camera.svg   |  241 ++
 images/presets/vehicle/restriction/stop.svg        |  237 ++
 .../restriction/turn_restrictions/no_left_turn.svg |    8 +
 .../turn_restrictions/no_left_turn_red.png         |  Bin 0 -> 1298 bytes
 .../turn_restrictions/no_right_turn.svg            |   81 +
 .../turn_restrictions/no_right_turn_red.png        |  Bin 0 -> 1304 bytes
 .../turn_restrictions/no_straight_on.svg           |   85 +
 .../turn_restrictions/no_straight_on_red.png       |  Bin 0 -> 1291 bytes
 .../restriction/turn_restrictions/no_u_turn.svg    |   80 +
 .../turn_restrictions/only_left_turn.svg           |   78 +
 .../turn_restrictions/only_right_turn.svg          |   71 +
 .../turn_restrictions/only_straight_on.svg         |   81 +
 images/presets/vehicle/rumble_strip.svg            |  170 ++
 images/presets/vehicle/services.svg                |  274 ++
 images/presets/vehicle/table.svg                   |  149 ++
 images/presets/vehicle/traffic_calming.svg         |  146 ++
 images/presets/vehicle/traffic_mirror.svg          |  270 ++
 images/presets/vehicle/traffic_signals.svg         |  113 +
 .../presets/vehicle/traffic_signals_crossing.svg   |  194 ++
 .../vehicle/traffic_signals_crossing_island.svg    |  172 ++
 .../vehicle/traffic_signals_crossing_ref_zebra.svg |  173 ++
 .../traffic_signals_crossing_traffic_signals.svg   |  136 +
 images/presets/vehicle/turning_circle.svg          |  233 ++
 images/presets/vehicle/turning_loop.svg            |  236 ++
 images/presets/vehicle/tyres.svg                   |  133 +
 images/presets/vehicle/waypoints.svg               |  106 +
 images/presets/volcano.png                         |  Bin 127 -> 0 bytes
 images/presets/wall.png                            |  Bin 362 -> 0 bytes
 images/presets/wastewater_plant.png                |  Bin 847 -> 0 bytes
 images/presets/water_well.png                      |  Bin 387 -> 0 bytes
 images/presets/wayside_cross.png                   |  Bin 146 -> 0 bytes
 images/presets/wayside_shrine.png                  |  Bin 422 -> 0 bytes
 images/presets/works.png                           |  Bin 136 -> 0 bytes
 images/presets/zoo.png                             |  Bin 467 -> 0 bytes
 josm-latest.jnlp                                   |    2 +-
 josm.jnlp                                          |    2 +-
 linux/latest/DEBIAN/control                        |    2 +-
 linux/latest/usr/bin/josm-latest                   |   15 +-
 .../usr/share/applications/josm-latest.desktop     |    2 +-
 linux/latest/usr/share/man/man1/josm-latest.1      |    4 +-
 linux/tested/DEBIAN/control                        |    2 +-
 linux/tested/usr/bin/josm                          |   15 +-
 linux/tested/usr/share/applications/josm.desktop   |    2 +-
 linux/tested/usr/share/man/man1/josm.1             |    4 +-
 netbeans/nbproject/project.properties              |    8 +-
 scripts/TagInfoExtract.groovy                      |    8 +-
 .../jcs/auxiliary/disk/block/BlockDiskCache.java   |  152 +-
 .../debug/CheckThreadViolationRepaintManager.java  |   71 +-
 src/org/openstreetmap/josm/Main.java               |  106 +-
 .../openstreetmap/josm/actions/AboutAction.java    |    2 +
 .../josm/actions/AbstractPasteAction.java          |  103 +
 .../josm/actions/AddImageryLayerAction.java        |   20 +-
 .../josm/actions/AlignInCircleAction.java          |    2 +-
 .../josm/actions/AutoScaleAction.java              |   16 +-
 .../josm/actions/CloseChangesetAction.java         |   17 +-
 .../josm/actions/CombineWayAction.java             |   17 +-
 src/org/openstreetmap/josm/actions/CopyAction.java |   54 +-
 .../josm/actions/CopyCoordinatesAction.java        |    3 +-
 .../josm/actions/CreateMultipolygonAction.java     |   26 +-
 .../josm/actions/DownloadPrimitiveAction.java      |   12 +-
 .../josm/actions/DuplicateAction.java              |   15 +-
 .../josm/actions/ExpertToggleAction.java           |    1 +
 .../josm/actions/ExtensionFileFilter.java          |   44 +-
 .../josm/actions/ImageryAdjustAction.java          |   37 +-
 src/org/openstreetmap/josm/actions/InfoAction.java |    7 +-
 .../josm/actions/JoinAreasAction.java              |    2 +-
 .../josm/actions/JoinNodeWayAction.java            |    6 +-
 src/org/openstreetmap/josm/actions/JosmAction.java |    9 +-
 .../openstreetmap/josm/actions/JumpToAction.java   |    9 +-
 .../josm/actions/MapRectifierWMSmenuAction.java    |    4 +-
 .../josm/actions/MergeLayerAction.java             |   17 +-
 .../josm/actions/MergeNodesAction.java             |   10 +-
 .../josm/actions/MergeSelectionAction.java         |    8 +-
 .../openstreetmap/josm/actions/MoveNodeAction.java |    8 +-
 .../openstreetmap/josm/actions/OpenFileAction.java |   21 +-
 .../josm/actions/OpenLocationAction.java           |    2 +
 .../josm/actions/OrthogonalizeAction.java          |    8 +-
 .../josm/actions/OverpassDownloadAction.java       |   11 +-
 .../openstreetmap/josm/actions/PasteAction.java    |  188 +-
 .../josm/actions/PasteAtSourcePositionAction.java  |   35 +
 .../josm/actions/PasteTagsAction.java              |  287 +--
 .../openstreetmap/josm/actions/PurgeAction.java    |   15 +-
 .../josm/actions/ReverseWayAction.java             |   10 +-
 .../josm/actions/SearchNotesDownloadAction.java    |    4 +-
 .../josm/actions/SelectAllAction.java              |    3 +-
 .../josm/actions/SessionLoadAction.java            |   13 +-
 .../josm/actions/ShowStatusReportAction.java       |   41 +-
 .../openstreetmap/josm/actions/SplitWayAction.java |   63 +-
 .../openstreetmap/josm/actions/UnGlueAction.java   |   22 +-
 .../josm/actions/UpdateSelectionAction.java        |    7 +-
 .../josm/actions/UploadSelectionAction.java        |   15 +-
 .../openstreetmap/josm/actions/ValidateAction.java |   11 +-
 .../josm/actions/audio/package-info.java           |    6 +
 .../AbstractChangesetDownloadTask.java             |    6 +-
 .../actions/downloadtasks/DownloadGeoUrlTask.java  |   30 +
 .../downloadtasks/DownloadReferrersTask.java       |   15 +-
 .../actions/downloadtasks/DownloadTaskList.java    |   41 +-
 .../actions/downloadtasks/PostDownloadHandler.java |   40 +-
 .../josm/actions/downloadtasks/package-info.java   |    7 +
 .../josm/actions/mapmode/DeleteAction.java         |    4 +-
 .../josm/actions/mapmode/DrawAction.java           |   18 +-
 .../josm/actions/mapmode/ExtrudeAction.java        |    6 +-
 .../actions/mapmode/ImproveWayAccuracyAction.java  |    3 +
 .../actions/mapmode/ImproveWayAccuracyHelper.java  |    4 +-
 .../josm/actions/mapmode/ParallelWayAction.java    |    4 +-
 .../josm/actions/mapmode/SelectAction.java         |   16 +-
 .../josm/actions/mapmode/package-info.java         |    7 +
 .../openstreetmap/josm/actions/package-info.java   |    2 +-
 .../actions/relation/AbstractRelationAction.java   |    2 +-
 .../actions/relation/AddSelectionToRelations.java  |    7 +-
 .../actions/relation/DownloadMembersAction.java    |   11 +-
 .../DownloadSelectedIncompleteMembersAction.java   |   17 +-
 .../josm/actions/relation/package-info.java        |    7 +
 .../josm/actions/search/SearchAction.java          |   23 +-
 .../josm/actions/search/SearchCompiler.java        |   64 +-
 .../josm/actions/search/package-info.java          |    6 +
 .../josm/actions/upload/FixDataHook.java           |   15 +-
 .../josm/actions/upload/UploadHook.java            |    1 +
 .../josm/actions/upload/package-info.java          |    6 +
 .../josm/command/ChangeNodesCommand.java           |    5 +-
 .../josm/command/ChangePropertyCommand.java        |    7 +-
 .../josm/command/ChangePropertyKeyCommand.java     |   12 +-
 .../command/ChangeRelationMemberRoleCommand.java   |   10 +-
 src/org/openstreetmap/josm/command/Command.java    |   10 +-
 .../openstreetmap/josm/command/DeleteCommand.java  |   57 +-
 .../openstreetmap/josm/command/MoveCommand.java    |    8 +
 .../openstreetmap/josm/command/PseudoCommand.java  |   12 +-
 .../openstreetmap/josm/command/RotateCommand.java  |   14 +-
 .../openstreetmap/josm/command/ScaleCommand.java   |   12 +-
 .../openstreetmap/josm/command/SelectCommand.java  |    8 +-
 .../josm/command/SequenceCommand.java              |    2 +-
 .../josm/command/TransformNodesCommand.java        |    2 +-
 .../conflict/TagConflictResolveCommand.java        |    3 +-
 .../josm/corrector/ReverseWayNoTagCorrector.java   |    5 +-
 .../openstreetmap/josm/corrector/package-info.java |    6 +
 src/org/openstreetmap/josm/data/APIDataSet.java    |   17 +-
 src/org/openstreetmap/josm/data/AutosaveTask.java  |   39 +-
 src/org/openstreetmap/josm/data/Bounds.java        |    2 +-
 .../josm/data/CustomConfigurator.java              |   86 +-
 src/org/openstreetmap/josm/data/Preferences.java   |   35 +-
 .../josm/data/SelectionChangedListener.java        |    3 +
 .../josm/data/SystemOfMeasurement.java             |    2 +
 .../josm/data/cache/BufferedImageCacheEntry.java   |    2 +-
 .../openstreetmap/josm/data/cache/CacheEntry.java  |    3 +-
 .../josm/data/cache/HostLimitQueue.java            |   25 +-
 .../josm/data/cache/ICachedLoaderListener.java     |    2 +
 .../josm/data/cache/JCSCacheManager.java           |   29 +-
 .../josm/data/cache/JCSCachedTileLoaderJob.java    |   69 +-
 .../josm/data/cache/package-info.java              |    6 +
 .../josm/data/conflict/ConflictCollection.java     |   29 +-
 .../josm/data/conflict/package-info.java           |    7 +
 .../openstreetmap/josm/data/coor/package-info.java |    7 +
 src/org/openstreetmap/josm/data/gpx/GpxData.java   |   11 +-
 .../openstreetmap/josm/data/gpx/package-info.java  |    6 +
 .../CachedAttributionBingAerialTileSource.java     |   34 +-
 .../josm/data/imagery/CachedTileLoaderFactory.java |    5 -
 .../josm/data/imagery/ImageryInfo.java             |   97 +-
 .../josm/data/imagery/OffsetBookmark.java          |    5 +-
 .../josm/data/imagery/TMSCachedTileLoader.java     |    3 +-
 .../josm/data/imagery/TMSCachedTileLoaderJob.java  |    6 +-
 .../josm/data/imagery/TileLoaderFactory.java       |    9 +-
 .../josm/data/imagery/WMTSTileSource.java          |   12 +-
 .../josm/data/imagery/package-info.java            |    6 +
 .../josm/data/notes/package-info.java              |    3 +-
 .../josm/data/oauth/package-info.java              |    6 +
 .../josm/data/osm/AbstractPrimitive.java           |    4 +-
 .../josm/data/osm/ChangesetCache.java              |   25 +-
 .../josm/data/osm/ChangesetCacheListener.java      |    1 +
 src/org/openstreetmap/josm/data/osm/DataSet.java   |   47 +-
 .../josm/data/osm/DatasetConsistencyTest.java      |    1 +
 .../openstreetmap/josm/data/osm/FilterMatcher.java |    4 +-
 .../openstreetmap/josm/data/osm/FilterWorker.java  |    8 +-
 .../josm/data/osm/MultipolygonBuilder.java         |    2 +-
 src/org/openstreetmap/josm/data/osm/Node.java      |    6 +-
 src/org/openstreetmap/josm/data/osm/NoteData.java  |   73 +-
 .../openstreetmap/josm/data/osm/OsmPrimitive.java  |  163 +-
 src/org/openstreetmap/josm/data/osm/OsmUtils.java  |    6 +-
 .../openstreetmap/josm/data/osm/PrimitiveData.java |    2 +
 .../josm/data/osm/PrimitiveDeepCopy.java           |  132 -
 .../openstreetmap/josm/data/osm/QuadBuckets.java   |   36 +-
 src/org/openstreetmap/josm/data/osm/Relation.java  |   34 +-
 .../josm/data/osm/RelationMember.java              |    2 +-
 src/org/openstreetmap/josm/data/osm/Storage.java   |    2 +-
 src/org/openstreetmap/josm/data/osm/Tag.java       |   16 +-
 .../openstreetmap/josm/data/osm/TagCollection.java |  217 +-
 src/org/openstreetmap/josm/data/osm/TagMap.java    |   60 +-
 src/org/openstreetmap/josm/data/osm/Tagged.java    |   10 +
 src/org/openstreetmap/josm/data/osm/Way.java       |    2 +-
 .../data/osm/event/DataSetListenerAdapter.java     |    1 +
 .../josm/data/osm/event/SelectionEventManager.java |    9 +-
 .../josm/data/osm/event/package-info.java          |    6 +
 .../josm/data/osm/history/History.java             |   76 +-
 .../josm/data/osm/history/HistoryRelation.java     |    2 +-
 .../josm/data/osm/history/HistoryWay.java          |    2 +-
 .../josm/data/osm/history/package-info.java        |    6 +
 .../openstreetmap/josm/data/osm/package-info.java  |   15 +
 .../josm/data/osm/visitor/package-info.java        |    6 +
 .../data/osm/visitor/paint/MapPaintSettings.java   |    4 +-
 .../visitor/paint/RenderBenchmarkCollector.java    |  152 ++
 .../josm/data/osm/visitor/paint/Rendering.java     |    3 +
 .../data/osm/visitor/paint/StyledMapRenderer.java  |   99 +-
 .../josm/data/osm/visitor/paint/package-info.java  |    8 +
 .../osm/visitor/paint/relations/package-info.java  |    7 +
 .../josm/data/preferences/package-info.java        |    6 +
 .../josm/data/projection/AbstractProjection.java   |   22 +-
 .../josm/data/projection/CustomProjection.java     |    8 +-
 .../josm/data/projection/Ellipsoid.java            |   46 +-
 .../data/projection/ProjectionChangeListener.java  |    1 +
 .../data/projection/datum/NTV2GridShiftFile.java   |    2 +-
 .../josm/data/projection/datum/NTV2SubGrid.java    |    2 +-
 .../data/projection/datum/SevenParameterDatum.java |    2 +-
 .../josm/data/projection/datum/package-info.java   |    6 +
 .../josm/data/projection/proj/AbstractProj.java    |    2 +-
 .../josm/data/projection/proj/CassiniSoldner.java  |    2 +-
 .../projection/proj/ICentralMeridianProvider.java  |    3 +
 .../data/projection/proj/IScaleFactorProvider.java |    3 +
 .../josm/data/projection/proj/ProjFactory.java     |    7 +
 .../josm/data/projection/proj/Sinusoidal.java      |    2 +-
 .../data/projection/proj/TransverseMercator.java   |    2 +-
 .../josm/data/projection/proj/package-info.java    |    6 +
 .../josm/data/validation/OsmValidator.java         |   14 +-
 .../openstreetmap/josm/data/validation/Test.java   |    2 +-
 .../josm/data/validation/TestError.java            |   12 +-
 .../data/validation/routines/DomainValidator.java  |  105 +-
 .../data/validation/routines/RegexValidator.java   |    2 +-
 .../data/validation/routines/UrlValidator.java     |    4 +-
 .../josm/data/validation/tests/Addresses.java      |   14 +-
 .../data/validation/tests/ConditionalKeys.java     |   33 +-
 .../josm/data/validation/tests/CrossingWays.java   |    6 +-
 .../josm/data/validation/tests/Highways.java       |   11 +-
 .../josm/data/validation/tests/Lanes.java          |   26 +-
 .../data/validation/tests/MapCSSTagChecker.java    |   59 +-
 .../data/validation/tests/OverlappingWays.java     |   24 +-
 .../josm/data/validation/tests/PowerLines.java     |    2 +-
 .../data/validation/tests/RelationChecker.java     |   16 +-
 .../data/validation/tests/SimilarNamedWays.java    |    6 +-
 .../josm/data/validation/tests/TagChecker.java     |   12 +-
 .../josm/data/validation/tests/UnclosedWays.java   |   13 +-
 .../data/validation/tests/UnconnectedWays.java     |    3 +-
 .../josm/data/validation/tests/UntaggedNode.java   |    2 +-
 .../data/validation/tests/WayConnectedToArea.java  |    4 +-
 .../josm/data/validation/tests/package-info.java   |    6 +
 .../josm/data/validation/util/package-info.java    |    6 +
 .../josm/gui/DefaultNameFormatter.java             |   91 +-
 src/org/openstreetmap/josm/gui/ExtendedDialog.java |   26 +-
 src/org/openstreetmap/josm/gui/FileDrop.java       |  663 -----
 src/org/openstreetmap/josm/gui/GettingStarted.java |   45 +-
 .../josm/gui/HelpAwareOptionPane.java              |   13 +-
 src/org/openstreetmap/josm/gui/ImageryMenu.java    |   13 +-
 .../openstreetmap/josm/gui/MainApplication.java    |  101 +-
 src/org/openstreetmap/josm/gui/MainFrame.java      |   32 +-
 src/org/openstreetmap/josm/gui/MainMenu.java       |   15 +-
 src/org/openstreetmap/josm/gui/MainPanel.java      |    7 +-
 src/org/openstreetmap/josm/gui/MapFrame.java       |   26 +-
 .../openstreetmap/josm/gui/MapFrameListener.java   |    2 +
 src/org/openstreetmap/josm/gui/MapMover.java       |    6 +-
 src/org/openstreetmap/josm/gui/MapStatus.java      |   82 +-
 src/org/openstreetmap/josm/gui/MapView.java        |  144 +-
 src/org/openstreetmap/josm/gui/MapViewState.java   |   41 +-
 .../josm/gui/NavigatableComponent.java             |   48 +-
 .../josm/gui/NotificationManager.java              |   12 +-
 .../openstreetmap/josm/gui/PleaseWaitRunnable.java |   34 +-
 src/org/openstreetmap/josm/gui/ScrollViewport.java |    9 +-
 .../openstreetmap/josm/gui/SelectionManager.java   |    9 +-
 src/org/openstreetmap/josm/gui/SideButton.java     |   10 +-
 src/org/openstreetmap/josm/gui/SplashScreen.java   |   19 +-
 .../josm/gui/bbox/SlippyMapBBoxChooser.java        |   21 +-
 .../josm/gui/bbox/TileSelectionBBoxChooser.java    |    2 +-
 .../josm/gui/conflict/package-info.java            |    6 +
 .../josm/gui/conflict/pair/ComparePairType.java    |    2 +-
 .../josm/gui/conflict/pair/ListMergeModel.java     |   18 +-
 .../josm/gui/conflict/pair/ListMerger.java         |   14 +-
 .../josm/gui/conflict/pair/tags/TagMerger.java     |    2 +-
 .../tags/CombinePrimitiveResolverDialog.java       |   57 +-
 .../gui/conflict/tags/MultiValueCellEditor.java    |   44 +-
 .../tags/PasteTagsConflictResolverDialog.java      |   15 +-
 .../tags/RelationMemberConflictDecisionEditor.java |    9 +-
 .../RelationMemberConflictResolverColumnModel.java |   11 +-
 .../tags/RelationMemberConflictResolverModel.java  |   22 +-
 .../gui/conflict/tags/TagConflictResolver.java     |   22 +-
 .../conflict/tags/TagConflictResolverModel.java    |   57 +-
 .../josm/gui/datatransfer/ClipboardUtils.java      |  150 ++
 .../josm/gui/datatransfer/FileTransferHandler.java |   44 +
 .../josm/gui/datatransfer/LayerTransferable.java   |   97 +
 .../josm/gui/datatransfer/OsmTransferHandler.java  |  128 +
 .../gui/datatransfer/PrimitiveTransferable.java    |   96 +-
 .../datatransfer/RelationMemberTransferable.java   |   44 +-
 .../gui/datatransfer/SingleLayerTransferable.java  |   56 +
 .../josm/gui/datatransfer/TagTransferable.java     |   62 +
 .../gui/datatransfer/data/LayerTransferData.java   |   62 +
 .../datatransfer/data/OsmLayerTransferData.java    |   63 +
 .../data/PrimitiveTagTransferData.java             |   90 +
 .../datatransfer/data/PrimitiveTransferData.java   |  159 ++
 .../gui/datatransfer/data/TagTransferData.java     |   57 +
 .../josm/gui/datatransfer/data/package-info.java   |    6 +
 .../importers/AbstractOsmDataPaster.java           |   80 +
 .../datatransfer/importers/AbstractTagPaster.java  |   79 +
 .../gui/datatransfer/importers/FilePaster.java     |   40 +
 .../importers/PrimitiveDataPaster.java             |  140 +
 .../importers/PrimitiveTagTransferPaster.java      |  205 ++
 .../datatransfer/importers/TagTransferPaster.java  |   30 +
 .../gui/datatransfer/importers/TextTagPaster.java  |   62 +
 .../gui/datatransfer/importers/package-info.java   |    6 +
 .../josm/gui/datatransfer/package-info.java        |    6 +
 .../josm/gui/dialogs/ChangesetDialog.java          |   50 +-
 .../josm/gui/dialogs/CommandStackDialog.java       |   24 +-
 .../josm/gui/dialogs/ConflictDialog.java           |   47 +-
 .../DeleteFromRelationConfirmationDialog.java      |   31 +-
 .../josm/gui/dialogs/FilterDialog.java             |    8 +-
 .../josm/gui/dialogs/FilterTableModel.java         |    1 +
 .../josm/gui/dialogs/IEnabledStateUpdating.java    |   15 +
 .../josm/gui/dialogs/InspectPrimitiveDialog.java   |   30 +-
 .../josm/gui/dialogs/LatLonDialog.java             |   17 +-
 .../josm/gui/dialogs/LayerListDialog.java          |   59 +-
 .../josm/gui/dialogs/MapPaintDialog.java           |   75 +-
 .../josm/gui/dialogs/MenuItemSearchDialog.java     |    8 +-
 .../josm/gui/dialogs/MinimapDialog.java            |   15 +-
 .../josm/gui/dialogs/NotesDialog.java              |   13 +-
 .../josm/gui/dialogs/OsmIdSelectionDialog.java     |   33 +-
 .../josm/gui/dialogs/RelationListDialog.java       |   33 +-
 .../josm/gui/dialogs/SelectionListDialog.java      |   34 +-
 .../josm/gui/dialogs/ToggleDialog.java             |   71 +-
 .../josm/gui/dialogs/UserListDialog.java           |   24 +-
 .../josm/gui/dialogs/ValidatorDialog.java          |   43 +-
 .../josm/gui/dialogs/changeset/ChangesetAware.java |    2 +
 .../dialogs/changeset/ChangesetCacheManager.java   |   19 +-
 .../changeset/ChangesetCacheManagerModel.java      |   24 +-
 .../dialogs/changeset/ChangesetContentPanel.java   |   25 +-
 .../changeset/ChangesetContentTableModel.java      |   49 +-
 .../changeset/ChangesetDiscussionPanel.java        |    9 +-
 .../gui/dialogs/changeset/ChangesetListModel.java  |   13 +-
 .../query/AdvancedChangesetQueryPanel.java         |    4 +-
 .../changeset/query/BasicChangesetQueryPanel.java  |    2 +-
 .../changeset/query/ChangesetQueryDialog.java      |    2 +
 .../changeset/query/UrlBasedQueryPanel.java        |   18 +-
 .../gui/dialogs/layer/ActivateLayerAction.java     |   20 +-
 .../josm/gui/dialogs/layer/DeleteLayerAction.java  |    1 +
 .../josm/gui/dialogs/layer/DuplicateAction.java    |   23 +-
 .../gui/dialogs/layer/IEnabledStateUpdating.java   |   13 -
 .../dialogs/layer/LayerListTransferHandler.java    |  175 ++
 .../gui/dialogs/layer/LayerVisibilityAction.java   |   40 +-
 .../josm/gui/dialogs/layer/MergeAction.java        |    1 +
 .../josm/gui/dialogs/layer/MoveDownAction.java     |    1 +
 .../josm/gui/dialogs/layer/MoveUpAction.java       |    1 +
 .../gui/dialogs/layer/ShowHideLayerAction.java     |    1 +
 .../gui/dialogs/properties/PropertiesDialog.java   |  118 +-
 .../josm/gui/dialogs/properties/TagEditHelper.java |   61 +-
 .../gui/dialogs/relation/ChildRelationBrowser.java |    7 +-
 .../relation/DownloadRelationMemberTask.java       |   14 +-
 .../gui/dialogs/relation/DownloadRelationTask.java |   15 +-
 .../dialogs/relation/GenericRelationEditor.java    |   57 +-
 .../gui/dialogs/relation/IMemberModelListener.java |    1 +
 .../josm/gui/dialogs/relation/MemberTable.java     |   39 +-
 .../gui/dialogs/relation/MemberTableModel.java     |   86 +-
 .../dialogs/relation/MemberTransferHandler.java    |   99 +-
 .../relation/ParentRelationLoadingTask.java        |   12 +-
 .../relation/ReferringRelationsBrowser.java        |   15 +-
 .../josm/gui/dialogs/relation/RelationTree.java    |    9 +-
 .../relation/actions/CopyMembersAction.java        |   12 +-
 .../relation/actions/PasteMembersAction.java       |   72 +-
 .../gui/dialogs/relation/actions/SavingAction.java |   11 +-
 .../gui/dialogs/relation/actions/package-info.java |    6 +
 .../gui/dialogs/relation/sort/RelationSorter.java  |   23 +-
 .../relation/sort/WayConnectionTypeCalculator.java |  118 +-
 .../gui/dialogs/relation/sort/package-info.java    |    6 +
 .../gui/dialogs/validator/ValidatorTreePanel.java  |   15 +-
 .../josm/gui/download/BookmarkList.java            |    2 +-
 .../josm/gui/download/BookmarkSelection.java       |   11 +-
 .../josm/gui/download/DownloadDialog.java          |   29 +-
 .../josm/gui/download/DownloadObjectDialog.java    |   13 +-
 .../josm/gui/download/PlaceSelection.java          |   19 +-
 .../openstreetmap/josm/gui/help/HelpBrowser.java   |   18 +-
 src/org/openstreetmap/josm/gui/help/Helpful.java   |    2 +
 .../josm/gui/history/HistoryBrowser.java           |   13 +-
 .../gui/history/HistoryBrowserDialogManager.java   |   53 +-
 .../josm/gui/history/HistoryBrowserModel.java      |   13 +-
 .../josm/gui/history/NodeListViewer.java           |   20 +-
 .../josm/gui/history/SelectionSynchronizer.java    |    6 +
 .../josm/gui/history/TagInfoTransferHandler.java   |   47 +
 .../josm/gui/history/TagInfoViewer.java            |   44 +-
 .../josm/gui/history/TagTableCellRenderer.java     |   56 +-
 .../josm/gui/history/TagTableColumnModel.java      |    2 +
 .../josm/gui/history/TwoColumnDiff.java            |    8 +-
 .../josm/gui/history/VersionTable.java             |   17 +-
 .../josm/gui/io/AbstractPrimitiveTask.java         |   13 +-
 .../josm/gui/io/ActionFlagsTableCell.java          |    7 +-
 .../josm/gui/io/BasicUploadSettingsPanel.java      |   16 +-
 .../josm/gui/io/CloseChangesetTask.java            |    9 +-
 .../josm/gui/io/CredentialDialog.java              |    2 +-
 .../josm/gui/io/DownloadOpenChangesetsTask.java    |   14 +-
 .../io/DownloadPrimitivesWithReferrersTask.java    |   52 +-
 .../josm/gui/io/SaveLayersDialog.java              |   43 +-
 .../openstreetmap/josm/gui/io/SaveLayersModel.java |   11 +-
 .../openstreetmap/josm/gui/io/UploadDialog.java    |   12 +-
 .../josm/gui/io/UploadPrimitivesTask.java          |   91 +-
 .../josm/gui/io/UploadSelectionDialog.java         |   22 +-
 .../josm/gui/io/UploadStrategySelectionPanel.java  |    4 +-
 .../josm/gui/layer/AbstractMapViewPaintable.java   |    2 +-
 .../josm/gui/layer/AbstractTileSourceLayer.java    |  587 +++--
 .../josm/gui/layer/AlignImageryPanel.java          |   15 +-
 src/org/openstreetmap/josm/gui/layer/GpxLayer.java |   12 +-
 .../josm/gui/layer/ImageProcessor.java             |    3 +
 .../openstreetmap/josm/gui/layer/ImageryLayer.java |  455 +---
 src/org/openstreetmap/josm/gui/layer/Layer.java    |   47 +-
 .../openstreetmap/josm/gui/layer/LayerManager.java |   23 +-
 .../josm/gui/layer/LayerPositionStrategy.java      |   80 +-
 .../josm/gui/layer/MainLayerManager.java           |   14 +-
 .../josm/gui/layer/MapViewPaintable.java           |    8 +-
 .../josm/gui/layer/NativeScaleLayer.java           |    3 +
 .../openstreetmap/josm/gui/layer/NoteLayer.java    |    7 +-
 .../openstreetmap/josm/gui/layer/OsmDataLayer.java |   70 +-
 src/org/openstreetmap/josm/gui/layer/TMSLayer.java |    9 +-
 src/org/openstreetmap/josm/gui/layer/WMSLayer.java |   19 +-
 .../openstreetmap/josm/gui/layer/WMTSLayer.java    |   17 +-
 .../gui/layer/geoimage/CorrelateGpxWithImages.java |   90 +-
 .../josm/gui/layer/geoimage/GeoImageLayer.java     |   49 +-
 .../josm/gui/layer/geoimage/ImageViewerDialog.java |    2 +-
 .../gui/layer/gpx/ChooseTrackVisibilityAction.java |   30 +-
 .../josm/gui/layer/gpx/DateFilterPanel.java        |   14 +-
 .../josm/gui/layer/gpx/DownloadAlongPanel.java     |    7 +-
 .../josm/gui/layer/gpx/GpxDrawHelper.java          |    4 +-
 .../josm/gui/layer/gpx/ImportAudioAction.java      |   18 +-
 .../josm/gui/layer/gpx/ImportImagesAction.java     |    2 +-
 .../gui/layer/imagery/ColorfulImageProcessor.java  |  185 ++
 .../gui/layer/imagery/GammaImageProcessor.java     |   68 +
 .../gui/layer/imagery/ImageryFilterSettings.java   |  121 +
 .../gui/layer/imagery/SharpenImageProcessor.java   |   94 +
 .../gui/layer/imagery/TileCoordinateConverter.java |   57 +
 .../layer/imagery/TileSourceDisplaySettings.java   |  354 +++
 .../josm/gui/layer/imagery/package-info.java       |    6 +
 .../josm/gui/layer/markerlayer/ImageMarker.java    |   18 +-
 .../josm/gui/layer/markerlayer/Marker.java         |   68 +-
 .../josm/gui/layer/markerlayer/MarkerLayer.java    |    8 +-
 .../gui/layer/markerlayer/MarkerProducers.java     |    3 +
 .../josm/gui/layer/markerlayer/PlayHeadMarker.java |    9 +-
 .../josm/gui/mappaint/ElemStyles.java              |    9 +-
 .../josm/gui/mappaint/MapPaintStyles.java          |   22 +-
 .../josm/gui/mappaint/mapcss/Condition.java        |  283 ++-
 .../josm/gui/mappaint/mapcss/Expression.java       |    3 +
 .../gui/mappaint/mapcss/ExpressionFactory.java     |   41 +-
 .../josm/gui/mappaint/mapcss/Instruction.java      |    1 +
 .../josm/gui/mappaint/mapcss/Selector.java         |   26 +-
 .../josm/gui/mappaint/mapcss/Subpart.java          |    3 +
 .../josm/gui/mappaint/mapcss/package-info.java     |    1 -
 .../gui/mappaint/styleelement/AreaElement.java     |    8 +-
 .../gui/mappaint/styleelement/BoxTextElement.java  |    2 +
 .../styleelement/LabelCompositionStrategy.java     |   15 +-
 .../gui/mappaint/styleelement/LineElement.java     |    4 +-
 .../josm/gui/mappaint/styleelement/MapImage.java   |   34 +-
 .../gui/mappaint/styleelement/NodeElement.java     |   20 +-
 .../josm/gui/mappaint/styleelement/TextLabel.java  |    4 +-
 .../gui/mappaint/styleelement/package-info.java    |    6 +
 .../gui/oauth/FullyAutomaticAuthorizationUI.java   |   22 +-
 .../gui/oauth/OsmOAuthAuthorizationClient.java     |    1 +
 .../josm/gui/oauth/RetrieveAccessTokenTask.java    |    8 +-
 .../josm/gui/oauth/RetrieveRequestTokenTask.java   |    8 +-
 .../gui/oauth/SemiAutomaticAuthorizationUI.java    |   46 +-
 .../preferences/DefaultTabPreferenceSetting.java   |    2 +-
 .../josm/gui/preferences/PreferenceDialog.java     |   10 +-
 .../gui/preferences/PreferenceSettingFactory.java  |    2 +-
 .../josm/gui/preferences/PreferenceTabbedPane.java |   40 +-
 .../josm/gui/preferences/SourceEditor.java         |   93 +-
 .../josm/gui/preferences/SourceProvider.java       |    1 +
 .../josm/gui/preferences/ToolbarPreferences.java   |   61 +-
 .../advanced/AbstractTableListEditor.java          |    2 +-
 .../preferences/advanced/AdvancedPreference.java   |   69 +-
 .../josm/gui/preferences/advanced/ListEditor.java  |   10 +-
 .../gui/preferences/display/ColorPreference.java   |   90 +-
 .../gui/preferences/display/DrawingPreference.java |   17 +-
 .../gui/preferences/display/GPXSettingsPanel.java  |   63 +-
 .../gui/preferences/display/LafPreference.java     |    2 +-
 .../gui/preferences/imagery/AddImageryPanel.java   |   11 +-
 .../gui/preferences/imagery/AddWMSLayerPanel.java  |  121 +-
 .../preferences/imagery/CacheContentsPanel.java    |  137 +-
 .../preferences/imagery/CommonSettingsPanel.java   |   37 +-
 .../gui/preferences/imagery/ImageryPreference.java |   49 +-
 .../gui/preferences/imagery/TMSSettingsPanel.java  |    9 +-
 .../josm/gui/preferences/map/BackupPreference.java |   16 +-
 .../gui/preferences/map/MapPaintPreference.java    |   16 +-
 .../preferences/map/TaggingPresetPreference.java   |   10 +-
 .../gui/preferences/plugin/PluginListPanel.java    |   18 +-
 .../gui/preferences/plugin/PluginPreference.java   |  162 +-
 .../preferences/plugin/PluginPreferencesModel.java |   14 +-
 .../plugin/PluginUpdatePolicyPanel.java            |    4 +-
 .../projection/CodeProjectionChoice.java           |    2 +-
 .../projection/CustomProjectionChoice.java         |   20 +-
 .../projection/ProjectionPreference.java           |   17 +-
 .../remotecontrol/RemoteControlPreference.java     |   86 +-
 .../gui/preferences/server/ApiUrlTestTask.java     |    2 +-
 .../josm/gui/preferences/server/FeaturesPanel.java |    9 +-
 .../OAuthAuthenticationPreferencesPanel.java       |    8 +-
 .../preferences/server/OsmApiUrlInputPanel.java    |   36 +-
 .../server/ProxyPreferenceListener.java            |    2 +
 .../preferences/server/ServerAccessPreference.java |    4 +-
 .../validator/ValidatorTestsPreference.java        |    8 +-
 .../gui/progress/PleaseWaitProgressMonitor.java    |  172 +-
 .../josm/gui/progress/ProgressMonitor.java         |    1 +
 .../progress/SwingRenderingProgressMonitor.java    |   37 +-
 .../josm/gui/tagging/TagEditorModel.java           |   74 +-
 .../josm/gui/tagging/TagEditorPanel.java           |    9 +-
 .../openstreetmap/josm/gui/tagging/TagTable.java   |   71 +-
 .../gui/tagging/ac/AutoCompletingComboBox.java     |   11 +-
 .../gui/tagging/ac/AutoCompletingTextField.java    |    4 +-
 .../josm/gui/tagging/ac/AutoCompletionManager.java |    9 +-
 .../josm/gui/tagging/presets/TaggingPreset.java    |   51 +-
 .../gui/tagging/presets/TaggingPresetHandler.java  |   12 +
 .../gui/tagging/presets/TaggingPresetItem.java     |    4 +-
 .../gui/tagging/presets/TaggingPresetListener.java |    2 +
 .../gui/tagging/presets/TaggingPresetMenu.java     |    3 +-
 .../gui/tagging/presets/TaggingPresetReader.java   |    8 +-
 .../tagging/presets/TaggingPresetSearchDialog.java |    8 +-
 .../TaggingPresetSearchPrimitiveDialog.java        |   12 +-
 .../gui/tagging/presets/TaggingPresetSelector.java |   42 +-
 .../josm/gui/tagging/presets/TaggingPresets.java   |   19 +-
 .../tagging/presets/items/ComboMultiSelect.java    |   11 +-
 .../josm/gui/tagging/presets/items/KeyedItem.java  |   29 +-
 .../gui/tagging/presets/items/MultiSelect.java     |    2 +-
 .../josm/gui/tagging/presets/items/PresetLink.java |   13 +-
 .../josm/gui/tagging/presets/items/Text.java       |   22 +-
 .../josm/gui/util/AdjustmentSynchronizer.java      |   47 +-
 .../josm/gui/util/AdvancedKeyPressDetector.java    |   17 +-
 src/org/openstreetmap/josm/gui/util/GuiHelper.java |   43 +-
 .../josm/gui/util/ModifierListener.java            |    2 +
 .../openstreetmap/josm/gui/util/RotationAngle.java |   19 +-
 .../josm/gui/util/StayOpenCheckBoxMenuItem.java    |   10 +-
 .../josm/gui/widgets/AbstractIdTextField.java      |    4 +-
 .../josm/gui/widgets/ButtonColumn.java             |  119 +
 .../josm/gui/widgets/ChangesetIdTextField.java     |    4 +-
 .../josm/gui/widgets/DateEditorWithSlider.java     |   41 +-
 .../josm/gui/widgets/EditableList.java             |   95 +-
 .../josm/gui/widgets/HistoryChangedListener.java   |    1 +
 .../josm/gui/widgets/JosmPasswordField.java        |    2 +-
 .../josm/gui/widgets/MultiSplitLayout.java         |   20 +-
 .../josm/gui/widgets/MultiSplitPane.java           |    1 +
 .../josm/gui/widgets/NativeFileChooser.java        |    7 +-
 .../josm/gui/widgets/OsmIdTextField.java           |    3 +
 .../josm/gui/widgets/QuadStateCheckBox.java        |    8 +-
 .../josm/gui/widgets/TextContextualPopupMenu.java  |   32 +-
 .../openstreetmap/josm/gui/widgets/UrlLabel.java   |    4 +-
 .../josm/io/BoundingBoxDownloader.java             |    3 +-
 .../openstreetmap/josm/io/CacheCustomContent.java  |    2 +
 src/org/openstreetmap/josm/io/CachedFile.java      |    5 +-
 src/org/openstreetmap/josm/io/Capabilities.java    |    2 +-
 src/org/openstreetmap/josm/io/ChangesetQuery.java  |   17 +-
 src/org/openstreetmap/josm/io/FileImporter.java    |   13 +-
 src/org/openstreetmap/josm/io/FileWatcher.java     |    7 +-
 src/org/openstreetmap/josm/io/GpxExporter.java     |   99 +-
 src/org/openstreetmap/josm/io/GpxImporter.java     |   40 +-
 src/org/openstreetmap/josm/io/MessageNotifier.java |   27 +-
 .../josm/io/MultiFetchOverpassObjectReader.java    |    8 +-
 .../josm/io/MultiFetchServerObjectReader.java      |    9 +-
 src/org/openstreetmap/josm/io/NMEAImporter.java    |   28 +-
 src/org/openstreetmap/josm/io/NmeaReader.java      |    4 +-
 src/org/openstreetmap/josm/io/OsmApi.java          |    1 +
 src/org/openstreetmap/josm/io/OsmApiException.java |    8 +-
 .../openstreetmap/josm/io/OsmChangeImporter.java   |   21 +-
 src/org/openstreetmap/josm/io/OsmConnection.java   |   34 +-
 src/org/openstreetmap/josm/io/OsmExporter.java     |    5 +-
 src/org/openstreetmap/josm/io/OsmImporter.java     |   42 +-
 src/org/openstreetmap/josm/io/OsmReader.java       |   14 +-
 .../josm/io/OsmServerReadPostprocessor.java        |    1 +
 .../josm/io/OsmServerWritePostprocessor.java       |    1 +
 src/org/openstreetmap/josm/io/OsmWriter.java       |   28 +-
 .../openstreetmap/josm/io/WMSLayerImporter.java    |   11 +-
 .../josm/io/auth/AbstractCredentialsAgent.java     |   33 +-
 .../josm/io/auth/CredentialsManager.java           |    3 +
 .../openstreetmap/josm/io/auth/package-info.java   |    6 +
 .../josm/io/imagery/ImageryReader.java             |    2 +
 .../openstreetmap/josm/io/imagery/WMSImagery.java  |  193 +-
 .../josm/io/imagery/package-info.java              |    6 +
 .../josm/io/remotecontrol/AddTagsDialog.java       |   36 +-
 .../io/remotecontrol/RemoteControlHttpServer.java  |    2 +
 .../io/remotecontrol/RemoteControlHttpsServer.java |   22 +-
 .../josm/io/remotecontrol/RequestProcessor.java    |   72 +-
 .../io/remotecontrol/handler/AddNodeHandler.java   |    8 +-
 .../io/remotecontrol/handler/AddWayHandler.java    |    8 +-
 .../io/remotecontrol/handler/ImageryHandler.java   |   20 +-
 .../remotecontrol/handler/LoadAndZoomHandler.java  |   98 +-
 .../remotecontrol/handler/LoadObjectHandler.java   |   30 +-
 .../io/remotecontrol/handler/OpenFileHandler.java  |    6 +-
 .../io/remotecontrol/handler/RequestHandler.java   |    4 +-
 .../io/remotecontrol/handler/package-info.java     |    6 +
 .../josm/io/remotecontrol/package-info.java        |    6 +
 .../josm/io/session/GenericSessionExporter.java    |   37 +-
 .../josm/io/session/GeoImageSessionImporter.java   |    4 +-
 .../josm/io/session/ImagerySessionExporter.java    |    8 +-
 .../josm/io/session/ImagerySessionImporter.java    |   17 +-
 .../josm/io/session/SessionLayerImporter.java      |    2 +
 .../josm/io/session/SessionReader.java             |   26 +-
 .../josm/io/session/package-info.java              |    6 +
 src/org/openstreetmap/josm/plugins/Plugin.java     |    8 +-
 .../openstreetmap/josm/plugins/PluginHandler.java  |  194 +-
 .../josm/plugins/PluginInformation.java            |    1 +
 .../openstreetmap/josm/plugins/PluginProxy.java    |    3 +
 .../plugins/ReadLocalPluginInformationTask.java    |   22 +-
 .../plugins/ReadRemotePluginInformationTask.java   |   47 +-
 src/org/openstreetmap/josm/tools/AudioUtil.java    |    4 +-
 src/org/openstreetmap/josm/tools/Base64.java       |   94 -
 src/org/openstreetmap/josm/tools/Destroyable.java  |    3 +
 src/org/openstreetmap/josm/tools/Diff.java         |   65 +-
 .../openstreetmap/josm/tools/ExceptionUtil.java    |   16 +-
 .../josm/tools/FilteredCollection.java             |    1 +
 src/org/openstreetmap/josm/tools/GBC.java          |   11 +
 .../openstreetmap/josm/tools/GeoUrlToBounds.java   |   58 +
 src/org/openstreetmap/josm/tools/Geometry.java     |    8 +-
 src/org/openstreetmap/josm/tools/I18n.java         |   29 +-
 .../openstreetmap/josm/tools/ImageProvider.java    |  150 +-
 .../openstreetmap/josm/tools/ImageResource.java    |    5 +-
 .../openstreetmap/josm/tools/MemoryManager.java    |  190 ++
 .../josm/tools/MultiLineFlowLayout.java            |  109 +
 .../josm/tools/MultikeyActionsHandler.java         |   15 +-
 src/org/openstreetmap/josm/tools/OpenBrowser.java  |    4 +-
 .../josm/tools/OverpassTurboQueryWizard.java       |    8 +-
 .../openstreetmap/josm/tools/PlatformHookOsx.java  |    8 +-
 .../josm/tools/PlatformHookUnixoid.java            |  117 +-
 .../josm/tools/PlatformHookWindows.java            |    9 +-
 src/org/openstreetmap/josm/tools/Predicate.java    |   18 -
 src/org/openstreetmap/josm/tools/Predicates.java   |  102 +-
 src/org/openstreetmap/josm/tools/StreamUtils.java  |   42 +
 .../josm/tools/SubclassFilteredCollection.java     |   17 +-
 .../openstreetmap/josm/tools/TextTagParser.java    |    7 +-
 src/org/openstreetmap/josm/tools/Utils.java        |  220 +-
 .../openstreetmap/josm/tools/WindowGeometry.java   |    4 +-
 .../openstreetmap/josm/tools/XmlObjectParser.java  |    3 +-
 .../josm/tools/bugreport/BugReport.java            |  145 +-
 .../josm/tools/bugreport/BugReportDialog.java      |  204 ++
 .../tools/bugreport/BugReportExceptionHandler.java |  144 +-
 .../josm/tools/bugreport/BugReportSender.java      |   31 +-
 .../tools/bugreport/BugReportSettingsPanel.java    |   38 +
 .../josm/tools/bugreport/DebugTextDisplay.java     |   57 +-
 .../josm/tools/bugreport/JosmUpdatePanel.java      |  103 +
 .../josm/tools/bugreport/ReportedException.java    |   99 +-
 .../josm/tools/bugreport/package-info.java         |    6 +
 .../template_engine/CompoundTemplateEntry.java     |    2 +-
 .../template_engine/ContextSwitchTemplate.java     |    2 +-
 .../josm/tools/template_engine/package-info.java   |    6 +
 styles/standard/elemstyles.mapcss                  | 1292 +++++-----
 styles/standard/potlatch2.mapcss                   |   14 +-
 styles_nodist/potlatch2/prelude.css                |   14 +-
 .../openstreetmap/josm/data/osm/TaginfoTestIT.java |    2 +-
 .../josm/io/MultiFetchServerObjectReaderTest.java  |    2 +-
 .../josm/io/OsmServerBackreferenceReaderTest.java  |    6 +-
 .../openstreetmap/josm/tools/HttpClientTest.java   |   85 +-
 .../openstreetmap/josm/PerformanceTestUtils.java   |   72 +-
 .../josm/data/osm/KeyValuePerformanceTest.java     |    2 +-
 .../josm/data/osm/RoundingPerformanceTest.java     |    2 +-
 .../gui/mappaint/MapRendererPerformanceTest.java   |   55 +-
 .../mapcss/MapCSSConditionPerformanceTest.java     |   68 +
 .../mapcss/MapCSSStyleSourceFilterTest.java        |   17 +-
 .../josm/io/OsmReaderPerformanceTest.java          |    2 +-
 test/unit/org/CustomMatchers.java                  |    4 +-
 test/unit/org/openstreetmap/josm/TestUtils.java    |    3 +-
 .../josm/actions/AddImageryLayerActionTest.java    |    4 +-
 .../josm/actions/AlignInLineActionTest.java        |    6 +-
 .../josm/actions/CombineWayActionTest.java         |    2 +-
 .../openstreetmap/josm/actions/CopyActionTest.java |  111 +-
 .../josm/actions/CreateCircleActionTest.java       |    4 +-
 .../actions/CreateMultipolygonActionTest.groovy    |   12 +-
 .../josm/actions/ExtensionFileFilterTest.java      |    2 +-
 .../josm/actions/OrthogonalizeActionTest.java      |    4 +-
 .../josm/actions/PasteTagsActionTest.java          |   55 -
 .../josm/actions/SplitWayActionTest.java           |    9 +-
 .../josm/actions/UnJoinNodeWayActionTest.java      |    2 +-
 .../josm/actions/mapmode/SelectActionTest.java     |    2 +-
 .../openstreetmap/josm/command/AddCommandTest.java |  119 +-
 .../josm/command/AddPrimitivesCommandTest.java     |  242 +-
 .../josm/command/ChangeCommandTest.java            |  135 +-
 .../josm/command/ChangeNodesCommandTest.java       |  108 +-
 .../josm/command/ChangePropertyCommandTest.java    |  263 +-
 .../josm/command/ChangePropertyKeyCommandTest.java |  133 +-
 .../ChangeRelationMemberRoleCommandTest.java       |  129 +-
 .../openstreetmap/josm/command/CommandTest.java    |  186 +-
 .../josm/command/DeleteCommandTest.java            |  361 ++-
 .../josm/command/MoveCommandTest.java              |  243 +-
 .../josm/command/PurgeCommandTest.java             |  124 +-
 .../josm/command/RemoveNodesCommandTest.java       |  106 +-
 .../josm/command/RotateCommandTest.java            |  133 +-
 .../josm/command/ScaleCommandTest.java             |  117 +-
 .../josm/command/SelectCommandTest.java            |  132 +-
 .../josm/command/SequenceCommandTest.java          |  200 +-
 .../josm/command/TransformNodesCommandTest.java    |    2 +-
 .../command/conflict/ConflictAddCommandTest.java   |    2 +-
 .../conflict/ConflictResolveCommandTest.java       |    2 +-
 .../CoordinateConflictResolveCommandTest.java      |    2 +-
 .../DeletedStateConflictResolveCommandTest.java    |    2 +-
 .../ModifiedConflictResolveCommandTest.java        |    2 +-
 .../RelationMemberConflictResolverCommandTest.java |    2 +-
 .../conflict/TagConflictResolveCommandTest.java    |    2 +-
 .../VersionConflictResolveCommandTest.java         |    2 +-
 .../WayNodesConflictResolverCommandTest.java       |    2 +-
 .../org/openstreetmap/josm/data/BoundsTest.java    |    2 +-
 .../josm/data/cache/JCSCacheManagerTest.java       |   35 +-
 .../data/cache/JCSCachedTileLoaderJobTest.java     |   42 +-
 .../josm/data/coor/CachedLatLonTest.java           |    2 +-
 .../openstreetmap/josm/data/coor/LatLonTest.java   |    2 +-
 .../josm/data/imagery/ImageryInfoTest.java         |   12 +
 .../data/imagery/TemplatedWMSTileSourceTest.java   |    8 +-
 .../josm/data/imagery/WMTSTileSourceTest.java      |    2 +-
 .../openstreetmap/josm/data/notes/NoteTest.java    |    2 +-
 .../josm/data/oauth/OAuthParametersTest.java       |    2 +-
 .../josm/data/oauth/OAuthTokenTest.java            |    2 +-
 .../josm/data/osm/APIDataSetTest.java              |   14 +-
 .../org/openstreetmap/josm/data/osm/BBoxTest.java  |    2 +-
 .../josm/data/osm/DataSetMergerTest.java           |   56 +-
 .../openstreetmap/josm/data/osm/FilterTest.java    |    6 +-
 .../openstreetmap/josm/data/osm/NodeDataTest.java  |    6 +-
 .../josm/data/osm/OsmPrimitiveKeyHandlingTest.java |   14 +-
 .../josm/data/osm/OsmPrimitiveTest.java            |   16 +-
 .../openstreetmap/josm/data/osm/RelationTest.java  |    4 +-
 .../josm/data/osm/TagCollectionTest.java           |  708 ++++++
 .../openstreetmap/josm/data/osm/WayDataTest.java   |    6 +-
 .../josm/data/osm/history/HistoryWayTest.java      |    4 +-
 .../josm/data/projection/EllipsoidTest.java        |    2 +-
 .../josm/data/projection/ProjectionRefTest.java    |    2 +-
 .../data/projection/ProjectionRegressionTest.java  |    2 +-
 .../josm/data/projection/ProjectionTest.java       |    4 +-
 .../josm/data/projection/SwissGridTest.java        |   18 +-
 .../validation/routines/DomainValidatorTestIT.java |   11 +-
 .../data/validation/tests/DuplicateNodeTest.java   |    2 +-
 .../validation/tests/MapCSSTagCheckerTest.java     |   14 +-
 .../data/validation/tests/NameMismatchTest.java    |    8 +-
 .../tests/PublicTransportRouteTestTest.java        |    2 +-
 .../josm/data/validation/tests/TagCheckerTest.java |    7 +-
 .../josm/gui/TableCellRendererTest.java            |    2 +-
 .../pair/nodes/NodeListMergeModelTest.java         |   56 +-
 .../pair/properties/PropertiesMergeModelTest.java  |    4 +-
 .../gui/conflict/pair/tags/TagMergeItemTest.java   |   32 +-
 .../gui/conflict/pair/tags/TagMergeModelTest.java  |   20 +-
 .../gui/correction/RoleCorrectionTableTest.java    |    6 +-
 .../gui/correction/TagCorrectionTableTest.java     |    8 +-
 .../josm/gui/datatransfer/ClipboardUtilsTest.java  |  122 +
 .../gui/datatransfer/LayerTransferableTest.java    |   98 +
 .../datatransfer/PrimitiveTransferableTest.java    |   60 +-
 .../RelationMemberTransferableTest.java            |   24 +-
 .../data/PrimitiveTagTransferDataTest.java         |  120 +
 .../properties/RecentTagCollectionTest.java        |    3 +-
 .../actions/AbstractRelationEditorActionTest.java  |   74 +
 .../relation/actions/PasteMembersActionTest.java   |  126 +
 .../actions/RelationEditorActionsTest.java         |   20 +-
 .../josm/gui/layer/ImageryLayerTest.java           |   31 +-
 .../josm/gui/layer/LayerManagerTest.java           |   10 +-
 .../josm/gui/layer/MainLayerManagerTest.java       |    3 +-
 .../josm/gui/layer/NoteLayerTest.java              |   30 +
 .../layer/imagery/ColorfulImageProcessorTest.java  |  155 ++
 .../gui/layer/imagery/GammaImageProcessorTest.java |   61 +
 .../layer/imagery/SharpenImageProcessorTest.java   |   61 +
 .../josm/gui/mappaint/mapcss/ConditionTest.java    |  251 ++
 .../gui/preferences/ToolbarPreferencesTest.java    |    2 +-
 .../gui/preferences/advanced/PrefEntryTest.java    |    2 +-
 .../map/TaggingPresetPreferenceTestIT.java         |   10 +-
 .../tagging/presets/PresetClassificationsTest.java |    9 +-
 .../tagging/presets/TaggingPresetReaderTest.java   |   15 +-
 .../org/openstreetmap/josm/io/GpxReaderTest.java   |    4 +-
 .../org/openstreetmap/josm/io/NmeaReaderTest.java  |    2 +-
 .../org/openstreetmap/josm/io/OsmWriterTest.java   |   15 +-
 .../josm/io/remotecontrol/DNSNameTest.java         |    2 +-
 .../josm/io/session/SessionReaderTest.java         |    7 +-
 .../josm/io/session/SessionWriterTest.java         |    5 +-
 .../josm/plugins/PluginHandlerTest.java            |    2 +-
 .../josm/plugins/PluginHandlerTestIT.java          |    5 +
 .../josm/testutils/JOSMTestRules.java              |  138 +-
 .../openstreetmap/josm/tools/ExifReaderTest.java   |    2 +-
 .../josm/tools/GeoUrlToBoundsTest.java             |   57 +
 .../org/openstreetmap/josm/tools/GeometryTest.java |   22 +-
 .../josm/tools/MemoryManagerTest.java              |  168 ++
 .../josm/tools/MultiLineFlowLayoutTest.java        |  136 +
 .../org/openstreetmap/josm/tools/MultiMapTest.java |    2 +-
 .../josm/tools/OsmUrlToBoundsTest.java             |    4 +-
 .../josm/tools/OverpassTurboQueryWizardTest.java   |   17 +-
 .../org/openstreetmap/josm/tools/PairTest.java     |    2 +-
 .../openstreetmap/josm/tools/PredicatesTest.java   |  157 +-
 .../josm/tools/TextTagParserTest.java              |   18 +-
 .../org/openstreetmap/josm/tools/UtilsTest.java    |   59 +-
 .../josm/tools/WindowGeometryTest.java             |   20 +-
 .../bugreport/BugReportExceptionHandlerTest.java   |    9 -
 .../josm/tools/date/DateUtilsTest.java             |    2 +
 tools/checkstyle/josm_filters.xml                  |    1 +
 1652 files changed, 118066 insertions(+), 26402 deletions(-)

diff --git a/.classpath b/.classpath
index 5c32c2b..aa7a22f 100644
--- a/.classpath
+++ b/.classpath
@@ -17,9 +17,9 @@
 	<classpathentry kind="lib" path="test/lib/fest/jcip-annotations-1.0.jar"/>
 	<classpathentry kind="lib" path="test/lib/fest/MRJToolkitStubs-1.0.jar"/>
 	<classpathentry kind="lib" path="test/lib/jfcunit.jar"/>
-	<classpathentry kind="lib" path="test/lib/equalsverifier-2.1.1.jar"/>
+	<classpathentry kind="lib" path="test/lib/equalsverifier-2.1.5.jar"/>
 	<classpathentry kind="lib" path="test/lib/reflections/reflections-0.9.10.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_80"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.8.0_102"/>
 	<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
 	<classpathentry kind="lib" path="test/lib/unitils-core/commons-collections-3.2.jar"/>
 	<classpathentry kind="lib" path="test/lib/unitils-core/commons-lang-2.3.jar"/>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index f83d090..bf54e3e 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@ org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nul
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -99,6 +99,7 @@ org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedImport=warning
 org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
 org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
@@ -111,7 +112,7 @@ org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
diff --git a/.settings/sf.eclipse.javacc.prefs b/.settings/sf.eclipse.javacc.prefs
index ea04584..6ed4d23 100644
--- a/.settings/sf.eclipse.javacc.prefs
+++ b/.settings/sf.eclipse.javacc.prefs
@@ -1,5 +1,5 @@
 CLEAR_CONSOLE=true
-JAVACC_OPTIONS=-JDK_VERSION\=1.7 -GRAMMAR_ENCODING\=UTF-8
+JAVACC_OPTIONS=-JDK_VERSION\=1.8 -GRAMMAR_ENCODING\=UTF-8
 JJDOC_OPTIONS=
 JJTREE_OPTIONS=
 JJ_NATURE=true
diff --git a/README b/README
index 54e8b5b..a0c897c 100644
--- a/README
+++ b/README
@@ -9,12 +9,12 @@ Installation notes
 To run JOSM, you need:
 
 * The JOSM .jar file, e.g., josm-tested.jar or josm-latest.jar
-* Java Runtime Environment (JRE) 7, or later.
+* Java Runtime Environment (JRE) 8, or later.
 
 
 How to get Java Runtime Environment
 -----------------------------------
-You need JRE Version 7, or later.
+You need JRE Version 8, or later.
 
 Microsoft Windows and Apple Mac OS X users should visit https://www.java.com
 and download the latest Java executable for their system.
@@ -116,10 +116,12 @@ This is an overview of the files and directories in the JOSM code repository:
 - tools/                    libraries and tools that help in the development process
     - animal-sniffer-ant-tasks-1.14.jar
                             used to build and check code signatures to ensure plugins binary compatibility 
-    - appbundler-1.0ea.jar  used to build Mac OS X package for Oracle Java 7
+    - appbundler-1.0ea.jar  used to build Mac OS X package
     - checkstyle/           libs and config files for checkstyle (automatically detects code style
                             problems in source code); can be launched as an ant target in build.xml
     - commons-cli-1.3.1.jar dependency of Groovy Ant task
+    - error_prone_ant-2.0.11.jar
+                            used to detect code errors during compilation
     - 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.7.jar  used for some unit tests and various scripts
@@ -132,8 +134,9 @@ This is an overview of the files and directories in the JOSM code repository:
 
 The 'patches' directory
 -----------------------
-Some libraries that JOSM depends on, are patched for various reasons. The files in the patches directory can be used to roll back these customizations. This is useful in order to
-
+Some libraries that JOSM depends on, are patched for various reasons. The
+files in the patches directory can be used to roll back these customizations.
+This is useful in order to
  * inspect the changes
  * update to a newer version of the library but keep the modifications
 
diff --git a/REVISION b/REVISION
index 6d1b033..f813e19 100644
--- a/REVISION
+++ b/REVISION
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <info>
 <entry
+   kind="dir"
    path="trunk"
-   revision="10526"
-   kind="dir">
+   revision="10786">
 <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="10526">
+   revision="10786">
 <author>Don-vip</author>
-<date>2016-07-11T21:04:49.619336Z</date>
+<date>2016-08-11T19:54:24.560250Z</date>
 </commit>
 </entry>
 </info>
diff --git a/build.xml b/build.xml
index d10daeb..6e4379f 100644
--- a/build.xml
+++ b/build.xml
@@ -25,6 +25,8 @@
         <property name="proj-build.dir" location="${base.dir}/build2"/>
         <property name="epsg.output" location="${base.dir}/data/projection/custom-epsg"/>
         <property name="groovy.jar" location="${base.dir}/tools/groovy-all-2.4.7.jar"/>
+        <property name="error_prone_ant.jar" location="${base.dir}/tools/error_prone_ant-2.0.11.jar"/>
+        <property name="javac.compiler" value="com.google.errorprone.ErrorProneAntCompilerAdapter" />
         <!-- build parameter: compression level (ant -Dclevel=N)
                  N ranges from 0 (no compression) to 9 (maximum compression)
                  default: 9 -->
@@ -211,7 +213,7 @@ Build-Date: ${build.tstamp}
             <arg value="javacc"/>
             <arg value="-DEBUG_PARSER=false"/>
             <arg value="-DEBUG_TOKEN_MANAGER=false"/>
-            <arg value="-JDK_VERSION=1.7"/>
+            <arg value="-JDK_VERSION=1.8"/>
             <arg value="-GRAMMAR_ENCODING=UTF-8"/>
             <arg value="-OUTPUT_DIRECTORY=${mapcss.dir}/parsergen"/>
             <arg value="${mapcss.dir}/MapCSSParser.jj"/>
@@ -220,7 +222,7 @@ Build-Date: ${build.tstamp}
     <target name="compile" depends="init,javacc">
         <!-- COTS -->
         <javac srcdir="${src.dir}" includes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**" nowarn="on" encoding="iso-8859-1"
-            destdir="build" target="1.7" source="1.7" debug="on" includeAntRuntime="false" createMissingPackageInfoClass="false">
+            destdir="build" target="1.8" source="1.8" debug="on" includeAntRuntime="false" createMissingPackageInfoClass="false">
             <!-- get rid of "internal proprietary API" warning -->
             <compilerarg value="-XDignore.symbol.file"/>
             <exclude name="org/apache/commons/compress/compressors/lzma/**"/>
@@ -243,8 +245,12 @@ Build-Date: ${build.tstamp}
             <exclude name="org/apache/commons/logging/impl/ServletContextCleaner.java"/>
         </javac>
         <!-- JMapViewer -->
-        <javac sourcepath="" srcdir="${src.dir}" excludes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/Demo.java,org/openstreetmap/josm/**,JOSM.java,gnu/**"
-            destdir="build" target="1.7" source="1.7" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
+        <javac compiler="${javac.compiler}" sourcepath="" srcdir="${src.dir}" 
+            excludes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/Demo.java,org/openstreetmap/josm/**,JOSM.java,gnu/**"
+            destdir="build" target="1.8" source="1.8" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
+            <compilerclasspath>
+                <pathelement location="${error_prone_ant.jar}"/>
+            </compilerclasspath>
             <compilerarg value="-Xlint:cast"/>
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:dep-ann"/>
@@ -258,10 +264,16 @@ Build-Date: ${build.tstamp}
             <compilerarg value="-Xlint:unchecked"/>
             <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
             <compilerarg value="-XDignore.symbol.file"/>
+            <compilerarg value="-Xep:ReferenceEquality:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
+            <compilerarg line="-Xmaxwarns 1000"/>
         </javac>
         <!-- JOSM -->
-        <javac sourcepath="" srcdir="${src.dir}" excludes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/Demo.java"
-            destdir="build" target="1.7" source="1.7" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
+        <javac compiler="${javac.compiler}" sourcepath="" srcdir="${src.dir}" 
+            excludes="com/**,oauth/**,org/apache/commons/**,org/glassfish/**,org/openstreetmap/gui/jmapviewer/Demo.java"
+            destdir="build" target="1.8" source="1.8" debug="on" includeantruntime="false" createMissingPackageInfoClass="false" encoding="UTF-8">
+            <compilerclasspath>
+                <pathelement location="${error_prone_ant.jar}"/>
+            </compilerclasspath>
             <compilerarg value="-Xlint:cast"/>
             <compilerarg value="-Xlint:deprecation"/>
             <compilerarg value="-Xlint:dep-ann"/>
@@ -275,6 +287,8 @@ Build-Date: ${build.tstamp}
             <compilerarg value="-Xlint:unchecked"/>
             <!-- Undocumented argument to ignore "Sun internal proprietary API" warning, see http://stackoverflow.com/a/13862308/2257172 -->
             <compilerarg value="-XDignore.symbol.file"/>
+            <compilerarg value="-Xep:ReferenceEquality:OFF" compiler="com.google.errorprone.ErrorProneAntCompilerAdapter"/>
+            <compilerarg line="-Xmaxwarns 1000"/>
         </javac>
 
         <copy todir="build" failonerror="no" includeemptydirs="no">
@@ -299,7 +313,7 @@ Build-Date: ${build.tstamp}
                 private="true"
                 linksource="true"
                 author="false">
-            <link href="http://docs.oracle.com/javase/7/docs/api"/>
+            <link href="http://docs.oracle.com/javase/8/docs/api"/>
             <doctitle><![CDATA[<h2>JOSM - Javadoc</h2>]]></doctitle>
             <bottom><![CDATA[<a href="https://josm.openstreetmap.de/">JOSM</a>]]></bottom>
         </javadoc>
@@ -352,7 +366,7 @@ Build-Date: ${build.tstamp}
                 <classpath>
                     <cp-elements/>
                 </classpath>
-                <javac target="1.7" source="1.7" debug="on" encoding="UTF-8">
+                <javac target="1.8" source="1.8" debug="on" encoding="UTF-8">
                     <compilerarg value="-Xlint:all"/>
                     <compilerarg value="-Xlint:-serial"/>
                 </javac>
@@ -385,16 +399,17 @@ Build-Date: ${build.tstamp}
         <attribute name="coverage" default="true"/>
         <sequential>
             <echo message="Running @{testfamily}@{testITsuffix} tests with JUnit"/>
-            <jacoco:coverage destfile="${test.dir}/jacoco@{testITsuffix}.exec" enabled="@{coverage}">
+            <jacoco:coverage destfile="${test.dir}/jacoco@{testITsuffix}.exec" enabled="@{coverage}" excludes="jdk.dynalink.*:jdk.nashorn.*">
                 <junit printsummary="yes" fork="true" forkmode="once">
                     <jvmarg value="-Dfile.encoding=UTF-8"/>
-                    <jvmarg line="-addmods java.xml.bind" if:set="isJava9" />
                     <jvmarg value="-XaddExports:java.base/sun.security.util=ALL-UNNAMED" if:set="isJava9" />
                     <jvmarg value="-XaddExports:java.base/sun.security.x509=ALL-UNNAMED" if:set="isJava9" />
-                    <jvmarg value="-XaddExports:java.xml.bind/javax.xml.bind=ALL-UNNAMED" if:set="isJava9" />
                     <sysproperty key="josm.home" value="${test.dir}/config/@{testfamily}-josm.home"/>
                     <sysproperty key="josm.test.data" value="${test.dir}/data"/>
                     <sysproperty key="java.awt.headless" value="true"/>
+                    <sysproperty key="glass.platform" value="Monocle"/>
+                    <sysproperty key="monocle.platform" value="Headless"/>
+                    <sysproperty key="prism.order" value="sw"/>
                     <sysproperty key="suppressPermanentFailure" value="${suppressPermanentFailure}"/>
                     <classpath>
                         <path refid="test.classpath"/>
@@ -656,7 +671,7 @@ Build-Date: ${build.tstamp}
 
     <target name="checkstyle" depends="init-properties">
         <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties"
-             classpath="tools/checkstyle/checkstyle-7.0-all.jar"/>
+             classpath="tools/checkstyle/checkstyle-7.1-all.jar"/>
         <checkstyle config="tools/checkstyle/josm_checks.xml">
             <fileset dir="${base.dir}/src/org/openstreetmap/josm" includes="**/*.java"
                 excludes="gui/mappaint/mapcss/parsergen/*.java"/>
@@ -700,7 +715,7 @@ Build-Date: ${build.tstamp}
         <property name="proj-classpath" location="${build.dir}"/>
         <mkdir dir="${proj-build.dir}"/>
         <javac sourcepath="" srcdir="${base.dir}/scripts" failonerror="true"
-            destdir="${proj-build.dir}" target="1.7" source="1.7" debug="on"
+            destdir="${proj-build.dir}" target="1.8" source="1.8" debug="on"
             includeantruntime="false" createMissingPackageInfoClass="false"
             encoding="UTF-8" classpath="${proj-classpath}">
         </javac>
diff --git a/data/defaultpresets.xml b/data/defaultpresets.xml
index 2659772..8eb5aec 100644
--- a/data/defaultpresets.xml
+++ b/data/defaultpresets.xml
@@ -72,7 +72,7 @@
         <combo key="service" text="Service type" values="yard,siding,spur,crossover" />
     </chunk>
     <chunk id="railway_electrified">
-        <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" />
+        <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" values_context="electrified" />
         <combo key="voltage" text="Voltage in Volts (V)" values="600,650,750,1500,3000,15000,25000" length="5" />
         <combo key="frequency" text="Frequency in Hertz (Hz)" values="0,16.67,16.7" length="5" />
     </chunk>
@@ -226,7 +226,7 @@
     </chunk>
     <chunk id="population_postcode_website">
         <text key="population" text="Population" />
-        <text key="addr:postcode" text="Post code" />
+        <text key="postal_code" text="Postal Code" />
         <text key="website" text="Website" />
     </chunk>
     <chunk id="route_hikebike_optionals">
@@ -255,7 +255,7 @@
         <combo key="denomination" text="Denomination" values="anglican,baptist,catholic,evangelical,greek_catholic,jehovahs_witness,lutheran,methodist,mormon,old_catholic,orthodox,pentecostal,presbyterian,protestant,quaker,roman_catholic,shia,sunni" />
     </chunk>
     <chunk id="voltage">
-        <combo key="voltage" text="Voltage in Volts (V)" values="1150000,765000,750000,735000,500000,450000,420000,400000,380000,350000,345000,330000,315000,300000,275000,238000,230000,225000,220000,200000,161000,154000,150000,138000,132000,120000,115000,110000,100000,90000,69000,66000,65000,63000,60000,55000,49000,45000,35000,33000,30000,20000,15000,high,medium,low,750000;200000,110000;20000" />
+        <combo key="voltage" text="Voltage in Volts (V)" values="1150000,765000,750000,735000,500000,450000,420000,400000,380000,350000,345000,330000,315000,300000,275000,238000,230000,225000,220000,200000,161000,154000,150000,138000,132000,120000,115000,110000,100000,90000,69000,66000,65000,63000,60000,55000,49000,45000,35000,33000,30000,20000,15000,750000;200000,110000;20000" />
     </chunk>
     <chunk id="frequency">
         <combo key="frequency" text="Frequency in Hertz (Hz)" values="0,16.67,16.7,50,60" length="5" />
@@ -392,9 +392,9 @@
     <combo key="colour" text="Color (HTML name or hexadecimal code)" values_context="color" values="black,brown,green,red,blue,gray,white,#CD853F" />
   </chunk>
   <!--  Groups -->
-  <group name="Highways" icon="styles/standard/transport/way/way_secondary.svg">
-    <group name="Streets" icon="styles/standard/transport/way/way_secondary.svg">
-        <item name="Motorway" icon="styles/standard/transport/way/way_motorway.svg" type="way" preset_name_label="true">
+  <group name="Highways" icon="presets/transport/way/way_secondary.svg">
+    <group name="Streets" icon="presets/transport/way/way_secondary.svg">
+        <item name="Motorway" icon="presets/transport/way/way_motorway.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=motorway"
@@ -431,7 +431,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Motorway -->
-        <item name="Motorway Link" icon="styles/standard/transport/way/way_motorway_link.svg" type="way" preset_name_label="true">
+        <item name="Motorway Link" icon="presets/transport/way/way_motorway_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway_link"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway_link"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=motorway_link"
@@ -460,7 +460,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Motorway Link -->
-        <item name="Trunk" icon="styles/standard/transport/way/way_trunk.svg" type="way" preset_name_label="true">
+        <item name="Trunk" icon="presets/transport/way/way_trunk.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=trunk"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=trunk"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=trunk"
@@ -497,7 +497,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Trunk -->
-        <item name="Trunk Link" icon="styles/standard/transport/way/way_trunk_link.svg" type="way" preset_name_label="true">
+        <item name="Trunk Link" icon="presets/transport/way/way_trunk_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Link_(highway)"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Highway_link" />
             <space />
@@ -523,7 +523,7 @@
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Trunk Link -->
         <separator/>
-        <item name="Primary" icon="styles/standard/transport/way/way_primary.svg" type="way,closedway" preset_name_label="true">
+        <item name="Primary" icon="presets/transport/way/way_primary.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=primary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=primary"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=primary"
@@ -549,7 +549,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Primary -->
-        <item name="Primary Link" icon="styles/standard/transport/way/way_primary_link.svg" type="way" preset_name_label="true">
+        <item name="Primary Link" icon="presets/transport/way/way_primary_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Link_(highway)"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Link_(highway)"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Link_(highway)"
@@ -566,7 +566,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Primary Link -->
-        <item name="Secondary" icon="styles/standard/transport/way/way_secondary.svg" type="way,closedway" preset_name_label="true">
+        <item name="Secondary" icon="presets/transport/way/way_secondary.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=secondary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=secondary"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=secondary"
@@ -592,7 +592,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Secondary -->
-        <item name="Secondary Link" icon="styles/standard/transport/way/way_secondary_link.svg" type="way" preset_name_label="true">
+        <item name="Secondary Link" icon="presets/transport/way/way_secondary_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Link_(highway)"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Link_(highway)"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Link_(highway)"
@@ -608,7 +608,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Secondary Link -->
-        <item name="Tertiary" icon="styles/standard/transport/way/way_tertiary.svg" type="way,closedway" preset_name_label="true">
+        <item name="Tertiary" icon="presets/transport/way/way_tertiary.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=tertiary"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=tertiary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=tertiary"
@@ -635,7 +635,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Tertiary -->
-        <item name="Tertiary Link" icon="styles/standard/transport/way/way_tertiary_link.svg" type="way" preset_name_label="true">
+        <item name="Tertiary Link" icon="presets/transport/way/way_tertiary_link.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Link_(highway)"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Link_(highway)"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Link_(highway)"
@@ -650,7 +650,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Tertiary Link -->
-        <item name="Unclassified" icon="styles/standard/transport/way/way_unclassified.svg" type="way,closedway" preset_name_label="true">
+        <item name="Unclassified" icon="presets/transport/way/way_unclassified.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=unclassified"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=unclassified"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=unclassified"
@@ -675,7 +675,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Unclassified -->
-        <item name="Residential" icon="styles/standard/transport/way/way_residential.svg" type="way,closedway" preset_name_label="true">
+        <item name="Residential" icon="presets/transport/way/way_residential.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=residential"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=residential"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=residential"
@@ -701,7 +701,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Residential -->
-        <item name="Bicycle Road" icon="styles/standard/transport/way/way_bicycle_road.svg" type="way,closedway" preset_name_label="true">
+        <item name="Bicycle Road" icon="presets/transport/way/way_bicycle_road.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:bicycle_road"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:bicycle_road"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Key:bicycle_road" />
@@ -725,7 +725,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Bicycle Road -->
-        <item name="Living Street" icon="styles/standard/transport/way/way_living_street.svg" type="way,closedway" preset_name_label="true">
+        <item name="Living Street" icon="presets/transport/way/way_living_street.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=living_street"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=living_street"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=living_street"
@@ -746,7 +746,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Living Street -->
-        <item name="Pedestrian" icon="styles/standard/transport/way/way_pedestrian.svg" type="way,closedway,multipolygon" preset_name_label="true">
+        <item name="Pedestrian" icon="presets/transport/way/way_pedestrian.svg" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=pedestrian"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=pedestrian"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=pedestrian"
@@ -770,7 +770,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Pedestrian -->
-        <item name="Service" icon="styles/standard/transport/way/way_service.svg" type="way,closedway" preset_name_label="true">
+        <item name="Service" icon="presets/transport/way/way_service.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=service"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=service"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=service"
@@ -793,7 +793,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Service -->
-        <item name="Parking Aisle" icon="styles/standard/transport/way/way_service_parking_aisle.svg" type="way,closedway" preset_name_label="true">
+        <item name="Parking Aisle" icon="presets/transport/way/way_service_parking_aisle.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:service=parking_aisle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:service=parking_aisle"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:service=parking_aisle"
@@ -811,7 +811,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Parking Aisle -->
-        <item name="Escape" icon="styles/standard/transport/way/way_escape.svg" type="way" preset_name_label="true">
+        <item name="Escape" icon="presets/transport/way/way_escape.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=escape"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=escape"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=escape"
@@ -825,7 +825,7 @@
                 <check key="lit" text="Lit" />
             </optional>
         </item> <!-- Escape -->
-        <item name="Raceway" icon="styles/standard/sport/raceway.svg" type="way,closedway" preset_name_label="true">
+        <item name="Raceway" icon="presets/sport/raceway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=raceway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=raceway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=raceway"
@@ -837,7 +837,7 @@
             <key key="highway" value="raceway" />
             <text key="name" text="Name" />
         </item> <!-- Raceway -->
-        <item name="Road (Unknown Type)" icon="styles/standard/transport/way/way_road.svg" type="way,closedway" preset_name_label="true">
+        <item name="Road (Unknown Type)" icon="presets/transport/way/way_road.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=road"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=road"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=road"
@@ -856,7 +856,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Road (Unknown Type) -->
-        <item name="Construction" icon="styles/standard/transport/way/way_construction.svg" type="way,closedway" preset_name_label="true">
+        <item name="Construction" icon="presets/transport/way/way_construction.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:construction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:construction"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:construction"
@@ -877,7 +877,7 @@
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Construction -->
         <separator/>
-        <item name="Road Restrictions" icon="styles/standard/vehicle/restriction/restrictions.svg" type="node,way,closedway" preset_name_label="true">
+        <item name="Road Restrictions" icon="presets/vehicle/restriction/restrictions.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:access"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:access"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Key:access"
@@ -931,7 +931,7 @@
             <combo key="overtaking" text="Overtaking" values="yes,both,forward,backward,no" values_context="overtaking" match="key" />
         </item> <!-- Road Restrictions -->
         <separator/>
-        <item name="Roundabout" icon="styles/standard/vehicle/restriction/roundabout_right.svg" type="node,way,closedway" preset_name_label="true">
+        <item name="Roundabout" icon="presets/vehicle/restriction/roundabout_right.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:junction=roundabout"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:junction=roundabout"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:junction=roundabout"
@@ -954,7 +954,7 @@
             </optional>
             <preset_link preset_name="Road Restrictions" />
         </item> <!-- Roundabout -->
-        <item name="Ford" icon="styles/standard/misc/ford.svg" type="node,way" preset_name_label="true">
+        <item name="Ford" icon="presets/vehicle/ford.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:ford"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:ford"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:ford"
@@ -969,8 +969,8 @@
             </optional>
         </item> <!-- Ford -->
     </group> <!-- Streets -->
-    <group name="Ways" icon="styles/standard/transport/way/way_unclassified.svg">
-        <item name="Track" icon="styles/standard/transport/way/track.svg" type="way,closedway" preset_name_label="true">
+    <group name="Ways" icon="presets/transport/way/way_unclassified.svg">
+        <item name="Track" icon="presets/transport/way/track.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=track"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=track"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=track"
@@ -1006,7 +1006,7 @@
                 <combo key="motorcar" text="Motorcar" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" />
             </optional>
         </item> <!-- Track -->
-        <item name="Path" icon="styles/standard/transport/way/path.svg" type="way,closedway" preset_name_label="true">
+        <item name="Path" icon="presets/transport/way/path.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=path"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=path"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=path"
@@ -1044,7 +1044,7 @@
             </optional>
         </item> <!-- Path -->
         <separator/>
-        <item name="Dedicated Bridleway" icon="styles/standard/transport/way/dedicated_bridleway.svg" type="way,closedway" preset_name_label="true">
+        <item name="Dedicated Bridleway" icon="presets/transport/way/dedicated_bridleway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bridleway"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:highway=bridleway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bridleway"
@@ -1060,7 +1060,7 @@
                 <reference ref="highway_yesno_incline_oneway_lit_width" />
             </optional>
         </item> <!-- Dedicated Bridleway -->
-        <item name="Cycle Lane/Track" icon="styles/standard/transport/way/cycle_lane_track.svg" type="way,closedway" preset_name_label="true">
+        <item name="Cycle Lane/Track" icon="presets/transport/way/cycle_lane_track.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Bicycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Bicycle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Bicycle"
@@ -1084,7 +1084,7 @@
                 <check key="oneway" text="Oneway" />
             </optional>
         </item> <!-- Cycle Lane/Track -->
-        <item name="Dedicated Cycleway" icon="styles/standard/transport/way/dedicated_cycleway.svg" type="way,closedway" preset_name_label="true">
+        <item name="Dedicated Cycleway" icon="presets/transport/way/dedicated_cycleway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=cycleway"
@@ -1102,7 +1102,7 @@
                 <combo key="foot" text="Pedestrians" values="yes,no" />
             </optional>
         </item> <!-- Dedicated Cycleway -->
-        <item name="Segregated Foot- and Cycleway" icon="styles/standard/transport/way/segregated_foot_cycleway.svg" type="way,closedway" preset_name_label="true">
+        <item name="Segregated Foot- and Cycleway" icon="presets/transport/way/segregated_foot_cycleway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=cycleway" />
@@ -1116,7 +1116,7 @@
                 <reference ref="highway_yesno_incline_oneway_lit_width" />
             </optional>
         </item> <!-- Segregated Foot- and Cycleway -->
-        <item name="Combined Foot- and Cycleway" icon="styles/standard/transport/way/combined_foot_cycleway.svg" type="way,closedway" preset_name_label="true">
+        <item name="Combined Foot- and Cycleway" icon="presets/transport/way/combined_foot_cycleway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=cycleway" />
@@ -1131,7 +1131,7 @@
                 <check key="passing_places" text="Passing Places" />
             </optional>
         </item> <!-- Combined Foot- and Cycleway -->
-        <item name="Dedicated Footway" icon="styles/standard/transport/way/dedicated_footway.svg" type="way,closedway" preset_name_label="true">
+        <item name="Dedicated Footway" icon="presets/transport/way/dedicated_footway.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=footway"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:highway=footway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=footway"
@@ -1155,7 +1155,7 @@
                 <text key="width" text="Width (meters)" />
             </optional>
         </item> <!-- Dedicated Footway -->
-        <item name="Steps" icon="styles/standard/transport/way/steps.svg" type="way" preset_name_label="true">
+        <item name="Steps" icon="presets/transport/way/steps.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=steps"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=steps"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=steps"
@@ -1197,8 +1197,8 @@
             </optional>
         </item> <!-- Steps -->
     </group> <!-- Ways -->
-    <group name="Waypoints" icon="styles/standard/vehicle/waypoints.svg">
-        <item name="Motorway Junction" icon="styles/standard/vehicle/motorway_junction.svg" type="node" preset_name_label="true">
+    <group name="Waypoints" icon="presets/vehicle/waypoints.svg">
+        <item name="Motorway Junction" icon="presets/vehicle/motorway_junction.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway_junction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway_junction"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=motorway_junction"
@@ -1211,7 +1211,7 @@
             <text key="name" text="Name" />
             <text key="ref" text="Number" />
         </item> <!-- Motorway Junction -->
-        <item name="Services" icon="styles/standard/vehicle/services.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Services" icon="presets/vehicle/services.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=services"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=services"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=services"
@@ -1226,7 +1226,7 @@
                 <check key="toilets" text="Toilets" />
             </optional>
         </item> <!-- Services -->
-        <item name="Rest Area" icon="styles/standard/vehicle/rest_area.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Rest Area" icon="presets/vehicle/rest_area.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=rest_area"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=rest_area"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=rest_area"
@@ -1244,7 +1244,7 @@
             </optional>
         </item> <!-- Rest Area -->
         <separator/>
-        <item name="Traffic Signal" icon="styles/standard/vehicle/traffic_signals.svg" type="node" preset_name_label="true">
+        <item name="Traffic Signal" icon="presets/vehicle/traffic_signals.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=traffic_signals"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=traffic_signals"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=traffic_signals"
@@ -1266,7 +1266,7 @@
                 <text key="name" text="Name" />
             </optional>
             </item> <!-- Traffic Signal -->
-        <item name="Stop" icon="styles/standard/vehicle/restriction/stop.svg" type="node" preset_name_label="true">
+        <item name="Stop" icon="presets/vehicle/restriction/stop.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=stop"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=stop"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=stop"
@@ -1275,7 +1275,7 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=stop" />
             <key key="highway" value="stop" />
         </item> <!-- Stop -->
-        <item name="Give Way" icon="styles/standard/vehicle/restriction/give_way.svg" type="node" preset_name_label="true">
+        <item name="Give Way" icon="presets/vehicle/restriction/give_way.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=give_way"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=give_way"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=give_way"
@@ -1284,7 +1284,7 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=give_way" />
             <key key="highway" value="give_way" />
         </item> <!-- Give Way -->
-        <item name="Mini-Roundabout" icon="styles/standard/vehicle/restriction/mini_roundabout_left.svg" type="node" preset_name_label="true">
+        <item name="Mini-Roundabout" icon="presets/vehicle/restriction/mini_roundabout_left.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=mini_roundabout"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=mini_roundabout"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=mini_roundabout"
@@ -1296,7 +1296,7 @@
             <space />
             <combo key="direction" text="Direction" values="clockwise" />
         </item> <!-- Mini-Roundabout -->
-        <item name="Pedestrian Crossing" icon="styles/standard/vehicle/crossing.svg" type="node" preset_name_label="true">
+        <item name="Pedestrian Crossing" icon="presets/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"
@@ -1310,10 +1310,10 @@
             <space />
             <key key="highway" value="crossing" />
             <combo key="crossing" text="Pedestrian crossing type" >
-                <list_entry value="uncontrolled" icon="styles/standard/vehicle/crossing.svg" />
-                <list_entry value="traffic_signals" icon="styles/standard/vehicle/crossing_traffic_signals.svg" />
-                <list_entry value="island" icon="styles/standard/vehicle/crossing_island.svg" />
-                <list_entry value="unmarked" icon="styles/standard/vehicle/crossing_unmarked.svg" />
+                <list_entry value="uncontrolled" icon="presets/vehicle/crossing.svg" />
+                <list_entry value="traffic_signals" icon="presets/vehicle/crossing_traffic_signals.svg" />
+                <list_entry value="island" icon="presets/vehicle/crossing_island.svg" />
+                <list_entry value="unmarked" icon="presets/vehicle/crossing_unmarked.svg" />
             </combo>
             <combo key="crossing_ref" text="Crossing type name (UK)" values="zebra,pelican,toucan,puffin,pegasus,tiger" values_searchable="true" />
             <combo key="supervised" text="Crossing attendant" delimiter="|" values="yes|no|06:00-20:00|Mo-Fr 09:00-18:00,Sa 08:00-14:00|May-Sep 09:30-12:30,14:15-19:30" />
@@ -1324,8 +1324,8 @@
             <check key="button_operated" text="Button operated" />
             <check key="traffic_signals:sound" text="Sound signals" />
         </item> <!-- Pedestrian Crossing -->
-        <group name="Traffic Calming" icon="styles/standard/vehicle/choker.svg"> 
-            <item name="Bump" icon="styles/standard/vehicle/bump.svg" type="node,way" preset_name_label="true">
+        <group name="Traffic Calming" icon="presets/vehicle/choker.svg"> 
+            <item name="Bump" icon="presets/vehicle/bump.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1341,7 +1341,7 @@
                 <space />
                 <key key="traffic_calming" value="bump" />
             </item> <!-- Bump -->
-            <item name="Chicane" icon="styles/standard/vehicle/chicane.svg" type="node,way" preset_name_label="true">
+            <item name="Chicane" icon="presets/vehicle/chicane.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1357,7 +1357,7 @@
                 <space />
                 <key key="traffic_calming" value="chicane" />
             </item> <!-- Chicane -->
-            <item name="Choker" icon="styles/standard/vehicle/choker.svg" type="node,way" preset_name_label="true">
+            <item name="Choker" icon="presets/vehicle/choker.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1373,7 +1373,7 @@
                 <space />
                 <key key="traffic_calming" value="choker" />
             </item> <!-- Choker -->
-            <item name="Cushion" icon="styles/standard/vehicle/cushion.svg" type="node,way" preset_name_label="true">
+            <item name="Cushion" icon="presets/vehicle/cushion.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1389,7 +1389,7 @@
                 <space />
                 <key key="traffic_calming" value="cushion" />
             </item> <!-- Cushion -->
-            <item name="Hump" icon="styles/standard/vehicle/hump.svg" type="node,way" preset_name_label="true">
+            <item name="Hump" icon="presets/vehicle/hump.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1405,7 +1405,7 @@
                 <space />
                 <key key="traffic_calming" value="hump" />
             </item> <!-- Hump -->
-            <item name="Island" name_context="traffic_calming" icon="styles/standard/vehicle/island.svg" type="node,way" preset_name_label="true">
+            <item name="Island" name_context="traffic_calming" icon="presets/vehicle/island.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1421,7 +1421,7 @@
                 <space />
                 <key key="traffic_calming" value="island" />
             </item> <!-- Island -->
-            <item name="Rumble strip" icon="styles/standard/vehicle/rumble_strip.svg" type="node,way" preset_name_label="true">
+            <item name="Rumble strip" icon="presets/vehicle/rumble_strip.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1437,7 +1437,7 @@
                 <space />
                 <key key="traffic_calming" value="rumble_strip" />
             </item> <!-- Rumble strip -->
-            <item name="Table" icon="styles/standard/vehicle/table.svg" type="node,way" preset_name_label="true">
+            <item name="Table" icon="presets/vehicle/table.svg" type="node,way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"
                       cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:traffic_calming"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_calming"
@@ -1454,14 +1454,14 @@
                 <key key="traffic_calming" value="table" />
             </item> <!-- Table -->
         </group> <!-- Traffic Calming -->
-        <item name="Passing Place" icon="styles/standard/vehicle/passing_place.svg" type="node" preset_name_label="true">
+        <item name="Passing Place" icon="presets/vehicle/passing_place.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=passing_place"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:highway=passing_place"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:highway=passing_place"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=passing_place" />
             <key key="highway" value="passing_place" />
         </item> <!-- Passing Place -->
-        <item name="Turning Circle" icon="styles/standard/vehicle/turning_circle.svg" type="node" preset_name_label="true">
+        <item name="Turning Circle" icon="presets/vehicle/turning_circle.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=turning_circle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=turning_circle"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=turning_circle"
@@ -1471,13 +1471,13 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:highway=turning_circle" />
             <key key="highway" value="turning_circle" />
         </item> <!-- Turning Circle -->
-        <item name="Turning Loop" icon="styles/standard/vehicle/turning_loop.svg" type="node" preset_name_label="true">
+        <item name="Turning Loop" icon="presets/vehicle/turning_loop.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=turning_loop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=turning_loop"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=turning_loop" />
             <key key="highway" value="turning_loop" />
         </item> <!-- Turning Loop -->
-        <item name="City Limit Sign" icon="styles/standard/vehicle/restriction/city_limit.svg" type="node" preset_name_label="true">
+        <item name="City Limit Sign" icon="presets/vehicle/restriction/city_limit.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_sign"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_sign"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:traffic_sign"
@@ -1490,7 +1490,7 @@
             <text key="name" text="Name" />
             <text key="alt_name" text="Second Name" />
         </item> <!-- City Limit -->
-        <item name="Speed Limit Sign" icon="styles/standard/vehicle/restriction/maxspeed.svg" type="node" preset_name_label="true">
+        <item name="Speed Limit Sign" icon="presets/vehicle/restriction/maxspeed.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_sign"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:traffic_sign"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:traffic_sign"
@@ -1502,7 +1502,7 @@
             <key key="traffic_sign" value="maxspeed" />
             <text key="maxspeed" text="Max. speed (km/h)" />
         </item> <!-- Speed Limit -->
-        <item name="Speed Camera" icon="styles/standard/vehicle/restriction/speed_camera.svg" type="node" preset_name_label="true">
+        <item name="Speed Camera" icon="presets/vehicle/restriction/speed_camera.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=speed_camera"
                   az.href="http://wiki.openstreetmap.org/wiki/Az:Tag:highway=speed_camera"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=speed_camera"
@@ -1516,12 +1516,12 @@
                 <text key="maxspeed" text="Max. speed (km/h)" />
             </optional>
         </item> <!-- Speed Camera -->
-        <item name="Traffic Mirror" icon="styles/standard/vehicle/traffic_mirror.svg" type="node" preset_name_label="true">
+        <item name="Traffic Mirror" icon="presets/vehicle/traffic_mirror.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=traffic_mirror"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=traffic_mirror" />
             <key key="highway" value="traffic_mirror" />
         </item> <!-- Traffic Mirror -->
-        <item name="Highway milestone" icon="styles/standard/vehicle/milestone.svg" type="node" preset_name_label="true">
+        <item name="Highway milestone" icon="presets/vehicle/milestone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=milestone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=milestone"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=milestone"
@@ -1530,7 +1530,7 @@
             <text key="distance" text="Distance (kilometers)" />
             <text key="ref" text="Reference" />
         </item> <!-- Highway Milestone -->
-        <item name="Named Junction" name_context="junction=yes" icon="styles/standard/vehicle/junction.svg" type="node,closedway" preset_name_label="true">
+        <item name="Named Junction" name_context="junction=yes" icon="presets/vehicle/junction.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:junction=yes"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:junction=yes" />
             <key key="junction" value="yes" />
@@ -1538,7 +1538,7 @@
             <text key="name" text="Name" />
         </item> <!-- Named Junction -->
         <separator/>
-        <item name="Elevator" icon="styles/standard/service/elevator.svg" type="node,way,closedway" preset_name_label="true">
+        <item name="Elevator" icon="presets/service/elevator.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=elevator"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=elevator"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=elevator"
@@ -1547,7 +1547,7 @@
             <key key="highway" value="elevator" />
         </item> <!-- Elevator -->
         <separator/>
-        <item name="Grit Bin" icon="styles/standard/misc/grit_bin.svg" type="node" preset_name_label="true">
+        <item name="Grit Bin" icon="presets/misc/grit_bin.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=grit_bin"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=grit_bin"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=grit_bin"
@@ -1555,7 +1555,7 @@
             <key key="amenity" value="grit_bin" />
         </item> <!-- Grit Bin -->
         <separator/>
-        <item name="Mountain Pass" icon="styles/standard/misc/landmark/mountain_pass.svg" type="node" preset_name_label="true">
+        <item name="Mountain Pass" icon="presets/landmark/mountain_pass.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:mountain_pass"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:mountain_pass"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:mountain_pass"
@@ -1571,8 +1571,8 @@
             </optional>
         </item> <!-- Mountain Pass -->
     </group> <!-- Waypoints -->
-    <group name="Barriers" icon="presets/barrier.png"> <!-- *** Node Barriers *** -->
-        <item name="Block" icon="styles/standard/vehicle/block.svg" type="node,way,closedway" preset_name_label="true">
+    <group name="Barriers" icon="presets/barrier/barrier.png"> <!-- *** Node Barriers *** -->
+        <item name="Block" icon="presets/barrier/block.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=block"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=block"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=block"
@@ -1584,7 +1584,7 @@
                 <combo key="material" text="Material" values="concrete,stone" />
             </optional>
         </item> <!-- Block -->
-        <item name="Bollard" icon="presets/bollard.png" type="node,way" preset_name_label="true">
+        <item name="Bollard" icon="presets/barrier/bollard.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=bollard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=bollard"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=bollard"
@@ -1601,7 +1601,7 @@
                 <combo key="material" text="Material" values="concrete,metal,plastic,stone,wood" />
             </optional>
         </item> <!-- Bollard -->
-        <item name="Cycle Barrier" icon="styles/standard/vehicle/cycle_barrier.png" type="node" preset_name_label="true">
+        <item name="Cycle Barrier" icon="presets/barrier/cycle_barrier.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=cycle_barrier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=cycle_barrier"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=cycle_barrier"
@@ -1610,20 +1610,20 @@
             <reference ref="barrier_4" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Cycle Barrier -->
-        <item name="Cattle Grid" icon="styles/standard/vehicle/cattle_grid.png" type="node" preset_name_label="true">
+        <item name="Cattle Grid" icon="presets/barrier/cattle_grid.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=cattle_grid"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=cattle_grid"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=cattle_grid" />
             <key key="barrier" value="cattle_grid" />
             <reference ref="barrier_4" />
         </item> <!-- Cattle Grid -->
-        <item name="Bus Trap" icon="presets/empty.png" type="node" preset_name_label="true">
+        <item name="Bus Trap" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=bus_trap"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=bus_trap" />
             <key key="barrier" value="bus_trap" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Bus Trap -->
-        <item name="Spikes" icon="styles/standard/vehicle/spikes.svg" type="node" preset_name_label="true">
+        <item name="Spikes" icon="presets/barrier/spikes.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:barrier"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:barrier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:barrier"
@@ -1640,7 +1640,7 @@
             <key key="barrier" value="spikes" />
             <reference ref="barrier_5" />
         </item> <!-- Spikes -->
-        <item name="Toll Booth" icon="presets/toll_station.png" type="node,closedway" preset_name_label="true">
+        <item name="Toll Booth" icon="presets/barrier/toll_station.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=toll_booth"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=toll_booth"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=toll_booth"
@@ -1655,13 +1655,13 @@
                 <text key="operator" text="Operator" />
             </optional>
         </item> <!-- Toll Booth -->
-        <item name="Border Control" icon="presets/douane.png" type="node" preset_name_label="true">
+        <item name="Border Control" icon="presets/barrier/douane.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=border_control" />
             <key key="barrier" value="border_control" />
             <reference ref="barrier_5" />
         </item> <!-- Border Control -->
         <separator/> <!-- *** Linear Barriers *** -->
-        <item name="Hedge" icon="presets/hedge.png" type="way,closedway,multipolygon" preset_name_label="true">
+        <item name="Hedge" icon="presets/barrier/hedge.svg" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=hedge"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=hedge"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=hedge"
@@ -1679,7 +1679,7 @@
                 <reference ref="leaf" />
             </optional>
         </item> <!-- Hedge -->
-        <item name="Fence" icon="presets/fence.png" type="way,closedway" preset_name_label="true">
+        <item name="Fence" icon="presets/barrier/fence.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=fence"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=fence"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:barrier=fence"
@@ -1701,7 +1701,7 @@
             <key key="barrier" value="guard_rail" />
             <reference ref="optional_height" />
         </item> <!-- Guard Rail -->
-        <item name="Wall" icon="presets/wall.png" type="way,closedway" preset_name_label="true">
+        <item name="Wall" icon="presets/barrier/wall.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=wall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=wall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=wall"
@@ -1714,7 +1714,7 @@
             <reference ref="optional_height" />
             <combo key="wall" text="Type" values="dry_stone,noise_barrier" />
         </item> <!-- Wall -->
-        <item name="City Wall" icon="presets/city_wall.png" type="way,closedway" preset_name_label="true">
+        <item name="City Wall" icon="presets/barrier/city_wall.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=city_wall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=city_wall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=city_wall"
@@ -1724,7 +1724,7 @@
             <key key="barrier" value="city_wall" />
             <reference ref="optional_height" />
         </item> <!-- City Wall -->
-        <item name="Retaining Wall" icon="presets/retaining_wall.png" type="way,closedway" preset_name_label="true">
+        <item name="Retaining Wall" icon="presets/barrier/retaining_wall.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=retaining_wall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=retaining_wall"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=retaining_wall"
@@ -1755,7 +1755,7 @@
                 <text key="width" text="Width (meters)" length="7" />
             </optional>
         </item> <!-- Ditch -->
-        <item name="Kerb" icon="styles/standard/vehicle/kerb.svg" type="node,way,closedway" preset_name_label="true">
+        <item name="Kerb" icon="presets/barrier/kerb.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=kerb"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=kerb"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=kerb" />
@@ -1765,7 +1765,7 @@
             <combo key="tactile_paving" text="Tactile paving" values="yes,no,incorrect" />
         </item> <!-- Kerb -->
         <separator/> <!-- *** Access *** -->
-        <item name="Entrance (Barrier Opening)" icon="styles/standard/vehicle/entrance.png" type="node" preset_name_label="true">
+        <item name="Entrance (Barrier Opening)" icon="presets/barrier/entrance.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=entrance"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=entrance"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=entrance"
@@ -1774,7 +1774,7 @@
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Entrance (Barrier Opening) -->
-        <item name="Gate" icon="styles/standard/vehicle/gate.png" type="node" preset_name_label="true">
+        <item name="Gate" icon="presets/barrier/gate.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=gate"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:barrier=gate"
@@ -1787,7 +1787,7 @@
             <reference ref="optional_maxheight_maxwidth" />
             <reference ref="general_access" />
         </item> <!-- Gate -->
-        <item name="Lift Gate" icon="presets/lift_gate.png" type="node" preset_name_label="true">
+        <item name="Lift Gate" icon="presets/barrier/lift_gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=lift_gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=lift_gate"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:barrier=lift_gate"
@@ -1799,7 +1799,7 @@
             <reference ref="optional_maxwidth" />
             <reference ref="general_access" />
         </item> <!-- Lift Gate -->
-        <item name="Swing Gate" icon="presets/swing_gate.png" type="node" preset_name_label="true">
+        <item name="Swing Gate" icon="presets/barrier/swing_gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=swing_gate" />
             <key key="barrier" value="swing_gate" />
             <combo key="swing_gate:type" text="Type" values="single,double" values_context="swing_gate" />
@@ -1807,7 +1807,7 @@
             <reference ref="optional_maxwidth" />
             <reference ref="general_access" />
         </item> <!-- Swing Gate -->
-        <item name="Hampshire Gate" icon="presets/empty.png" type="node" preset_name_label="true">
+        <item name="Hampshire Gate" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:barrier"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:barrier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:barrier"
@@ -1823,7 +1823,7 @@
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Hampshire Gate -->
-        <item name="Bump Gate" icon="presets/empty.png" type="node" preset_name_label="true">
+        <item name="Bump Gate" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:barrier"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:barrier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:barrier"
@@ -1839,21 +1839,21 @@
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Bump Gate -->
-        <item name="Kissing Gate" icon="presets/empty.png" type="node" preset_name_label="true">
+        <item name="Kissing Gate" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=kissing_gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=kissing_gate" />
             <key key="barrier" value="kissing_gate" />
             <reference ref="barrier_2" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Kissing Gate -->
-        <item name="Chain" icon="styles/standard/vehicle/chain.svg" type="node,way,closedway" preset_name_label="true">
+        <item name="Chain" icon="presets/barrier/chain.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=chain"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=chain" />
             <key key="barrier" value="chain" />
             <reference ref="barrier_5" />
             <reference ref="optional_maxwidth" />
         </item> <!-- Chain -->
-        <item name="Stile" icon="styles/standard/vehicle/stile.svg" type="node" preset_name_label="true">
+        <item name="Stile" icon="presets/barrier/stile.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=stile" />
             <space />
             <key key="barrier" value="stile" />
@@ -1863,14 +1863,14 @@
             </optional>
             <reference ref="barrier_2" />
         </item> <!-- Stile -->
-        <item name="Turnstile" icon="styles/standard/vehicle/turnstile.png" type="node" preset_name_label="true">
+        <item name="Turnstile" icon="presets/barrier/turnstile.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=turnstile"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:barrier=turnstile"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=turnstile" />
             <key key="barrier" value="turnstile" />
             <reference ref="barrier_2" />
         </item> <!-- Turnstile -->
-        <item name="Sally Port" icon="styles/standard/vehicle/sally_port.png" type="node" preset_name_label="true">
+        <item name="Sally Port" icon="presets/barrier/sally_port.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=sally_port"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:barrier=sally_port"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:barrier=sally_port" />
@@ -1879,8 +1879,8 @@
             <reference ref="optional_maxheight_maxwidth" />
         </item> <!-- Sally Port -->
     </group> <!-- Barriers -->
-    <group name="Passageways" icon="styles/standard/transport/passage/tunnel.svg">
-        <item name="Tunnel" icon="styles/standard/transport/passage/tunnel.svg" type="way" preset_name_label="true">
+    <group name="Passageways" icon="presets/transport/passage/tunnel.svg">
+        <item name="Tunnel" icon="presets/transport/passage/tunnel.svg" 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"
@@ -1907,7 +1907,7 @@
                 <check key="toll" text="Toll" />
             </optional>
         </item> <!-- Tunnel -->
-        <item name="Building Passage" icon="styles/standard/transport/passage/tunnel_building_passage.svg" type="way" preset_name_label="true">
+        <item name="Building Passage" icon="presets/transport/passage/tunnel_building_passage.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:tunnel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:tunnel"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:tunnel"
@@ -1926,7 +1926,7 @@
                 <combo key="incline" text="Incline" values="10%,-10%,10°,-10°,up,down" />
             </optional>
         </item> <!-- Building Passage -->
-        <item name="Arcade" icon="styles/standard/transport/passage/arcade.svg" type="way" preset_name_label="true">
+        <item name="Arcade" icon="presets/transport/passage/arcade.svg" 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"
@@ -1945,7 +1945,7 @@
                 <text key="width" text="Width (meters)" />
             </optional>
         </item> <!-- Arcade -->
-        <item name="Colonnade" icon="styles/standard/transport/passage/colonnade.svg" type="way" preset_name_label="true">
+        <item name="Colonnade" icon="presets/transport/passage/colonnade.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:covered"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:covered"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:covered"
@@ -1962,7 +1962,7 @@
                 <text key="width" text="Width (meters)" />
             </optional>
         </item> <!-- Colonnade -->
-        <item name="Avalanche Protector" icon="styles/standard/transport/passage/tunnel_avalanche_protector.svg" type="way" preset_name_label="true">
+        <item name="Avalanche Protector" icon="presets/transport/passage/tunnel_avalanche_protector.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:tunnel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:tunnel"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:tunnel"
@@ -1984,9 +1984,9 @@
         </item> <!-- Avalanche Protector -->
     </group> <!-- Passageways -->
   </group> <!-- Highways -->
-  <group name="Water" name_context="main group" icon="styles/standard/nautical/waterway_river.svg">
-    <group name="Water" name_context="sub group" icon="styles/standard/nautical/waterway_river.svg">
-        <item name="Drain" icon="styles/standard/nautical/waterway_drain.svg" type="way" preset_name_label="true">
+  <group name="Water" name_context="main group" icon="presets/nautical/waterway_river.svg">
+    <group name="Water" name_context="sub group" icon="presets/nautical/waterway_river.svg">
+        <item name="Drain" icon="presets/nautical/waterway_drain.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=drain"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=drain"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=drain"
@@ -2001,7 +2001,7 @@
                 <reference ref="waterway" />
             </optional>
         </item> <!-- Drain -->
-        <item name="Ditch" icon="styles/standard/nautical/waterway_ditch.svg" type="way" preset_name_label="true">
+        <item name="Ditch" icon="presets/nautical/waterway_ditch.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=ditch"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=ditch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=ditch"
@@ -2015,7 +2015,7 @@
                 <reference ref="waterway" />
             </optional>
         </item> <!-- Ditch -->
-        <item name="Stream" icon="styles/standard/nautical/waterway_stream.svg" type="way" preset_name_label="true">
+        <item name="Stream" icon="presets/nautical/waterway_stream.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=stream"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=stream"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=stream"
@@ -2034,7 +2034,7 @@
             </optional>
             <reference ref="water_access" />
         </item> <!-- Stream -->
-        <item name="River" icon="styles/standard/nautical/waterway_river.svg" type="way" preset_name_label="true">
+        <item name="River" icon="presets/nautical/waterway_river.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=river"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=river"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=river"
@@ -2053,7 +2053,7 @@
             </optional>
             <reference ref="water_access" />
         </item> <!-- River -->
-        <item name="Canal" icon="styles/standard/nautical/waterway_canal.svg" type="way" preset_name_label="true">
+        <item name="Canal" icon="presets/nautical/waterway_canal.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=canal"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=canal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=canal"
@@ -2073,7 +2073,7 @@
             <reference ref="water_access" />
         </item> <!-- Canal -->
         <separator/>
-        <item name="Spring" icon="styles/standard/misc/landmark/spring.svg" type="node,closedway" preset_name_label="true">
+        <item name="Spring" icon="presets/landmark/spring.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=spring"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=spring"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=spring"
@@ -2088,7 +2088,7 @@
             <text key="name" text="Name" />
             <check key="drinking_water" text="Drinking Water" />
         </item> <!-- Spring -->
-        <item name="Waterfall" icon="styles/standard/nautical/waterfall.svg" type="node,way" preset_name_label="true">
+        <item name="Waterfall" icon="presets/nautical/waterfall.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=waterfall"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=waterfall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=waterfall"
@@ -2099,7 +2099,7 @@
             <reference ref="name_wikipedia" />
             <text key="height" text="Height (meters)" />
         </item> <!-- Waterfall -->
-        <item name="Weir" icon="styles/standard/nautical/weir.svg" type="node,way" preset_name_label="true">
+        <item name="Weir" icon="presets/nautical/weir.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=weir"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=weir"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=weir"
@@ -2112,7 +2112,7 @@
             <key key="waterway" value="weir" />
             <text key="name" text="Name" />
         </item> <!-- Weir -->
-        <item name="Dam" icon="styles/standard/nautical/dam.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Dam" icon="presets/nautical/dam.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=dam"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=dam"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=dam"
@@ -2125,7 +2125,7 @@
             <key key="waterway" value="dam" />
             <reference ref="name_wikipedia" />
         </item> <!-- Dam -->
-        <item name="Groyne" icon="styles/standard/nautical/groyne.svg" type="way,closedway" preset_name_label="true">
+        <item name="Groyne" icon="presets/nautical/groyne.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=groyne"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=groyne"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=groyne"
@@ -2133,7 +2133,7 @@
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=groyne" />
             <key key="man_made" value="groyne" />
         </item> <!-- Groyne -->
-        <item name="Breakwater" icon="styles/standard/nautical/breakwater.svg" type="way,closedway,multipolygon" preset_name_label="true">
+        <item name="Breakwater" icon="presets/nautical/breakwater.svg" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=breakwater"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=breakwater"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=breakwater"
@@ -2146,7 +2146,7 @@
             <text key="name" text="Name" />
         </item> <!-- Breakwater -->
         <separator/>
-        <item name="Culvert" icon="styles/standard/transport/passage/tunnel_culvert.svg" type="way" preset_name_label="true">
+        <item name="Culvert" icon="presets/transport/passage/tunnel_culvert.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tunnel=culvert"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tunnel=culvert"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tunnel=culvert"
@@ -2162,7 +2162,7 @@
             </optional>
         </item> <!-- Culvert -->
         <separator/>
-        <item name="Basin" icon="presets/landuse_water.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Basin" icon="presets/landuse/landuse_water.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=basin"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=basin"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=basin"
@@ -2174,7 +2174,7 @@
             <key key="landuse" value="basin" />
             <text key="name" text="Name" />
         </item> <!-- Basin -->
-        <item name="Reservoir" icon="presets/landuse_water.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Reservoir" icon="presets/landuse/landuse_water.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=reservoir"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=reservoir"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=reservoir"
@@ -2185,7 +2185,7 @@
             <key key="landuse" value="reservoir" />
             <text key="name" text="Name" />
         </item> <!-- Reservoir -->
-        <item name="Covered Reservoir" icon="presets/reservoir_covered.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Covered Reservoir" icon="presets/landmark/reservoir_covered.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=reservoir_covered"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=reservoir_covered"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=reservoir_covered"
@@ -2197,7 +2197,7 @@
             <text key="name" text="Name" />
         </item> <!-- Covered Reservoir -->
         <separator/>
-        <item name="Water" name_context="natural" icon="styles/standard/nautical/water.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Water" name_context="natural" icon="presets/nautical/water.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=water"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=water"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=water"
@@ -2218,7 +2218,7 @@
             <text key="wikipedia" text="Wikipedia" />
             <reference ref="water_access" />
         </item> <!-- Water -->
-        <item name="Coastline" icon="styles/standard/nautical/coast_line.svg" type="way,closedway" preset_name_label="true">
+        <item name="Coastline" icon="presets/nautical/coast_line.svg" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=coastline"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=coastline"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=coastline"
@@ -2232,7 +2232,7 @@
             <key key="natural" value="coastline" />
             <text key="name" text="Name" />
         </item> <!-- Coastline -->
-        <item name="Riverbank" icon="styles/standard/nautical/waterway_riverbank.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Riverbank" icon="presets/nautical/waterway_riverbank.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=riverbank"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=riverbank"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=riverbank"
@@ -2251,7 +2251,7 @@
             <check key="tidal" text="In the tidal range" disable_off="true" />
         </item> <!-- Riverbank -->
         <separator/>
-        <item name="Wetland" icon="styles/standard/misc/landuse/wetland.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Wetland" icon="presets/landuse/wetland.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=wetland"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=wetland"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=wetland"
@@ -2270,7 +2270,7 @@
             <combo key="wetland" text="Type" values="swamp,bog,marsh,reedbed,saltmarsh,tidalflat,mangrove,wet_meadow,string_bog,saltern" values_searchable="true" />
             <check key="seasonal" text="Seasonal" disable_off="true" />
         </item> <!-- Wetland -->
-        <item name="Mud" icon="styles/standard/misc/landuse/mud.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Mud" icon="presets/landuse/mud.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=mud"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=mud"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=mud"
@@ -2281,7 +2281,7 @@
             <key key="natural" value="mud" />
             <text key="name" text="Name" />
         </item> <!-- Mud -->
-        <item name="Beach" icon="styles/standard/nautical/beach.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Beach" icon="presets/nautical/beach.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=beach"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=beach"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=beach"
@@ -2301,7 +2301,7 @@
                 <combo key="sport" text="Sport" values="swimming,surfing" />
             </optional>
         </item> <!-- Beach -->
-        <item name="Bay" icon="styles/standard/nautical/bay.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bay" icon="presets/nautical/bay.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=bay"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=bay"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=bay"
@@ -2315,8 +2315,8 @@
             <text key="name" text="Name" />
         </item> <!-- Bay -->
     </group> <!-- Water -->
-    <group name="Shipping" icon="styles/standard/nautical/ferry.svg">
-        <item name="Ferry Terminal" icon="styles/standard/nautical/ferry.svg" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Shipping" icon="presets/nautical/ferry.svg">
+        <item name="Ferry Terminal" icon="presets/nautical/ferry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ferry_terminal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=ferry_terminal"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=ferry_terminal"
@@ -2329,7 +2329,7 @@
             <text key="name" text="Name" />
             <combo key="cargo" text="Cargo" values="passengers,vehicle,bicycle,hgv,passengers;vehicle" values_context="cargo" />
         </item> <!-- Ferry Terminal -->
-        <item name="Ferry Route" icon="styles/standard/nautical/ferry.svg" type="way,closedway,relation" preset_name_label="true">
+        <item name="Ferry Route" icon="presets/nautical/ferry.svg" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:route=ferry"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:route=ferry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=ferry"
@@ -2341,7 +2341,7 @@
             </optional>
         </item> <!-- Ferry Route -->
         <separator/>
-        <item name="Marina" icon="styles/standard/nautical/marina.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Marina" icon="presets/nautical/marina.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=marina"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=marina"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=marina"
@@ -2355,7 +2355,7 @@
             <text key="name" text="Name" />
             <combo key="sanitary_dump_station" text="Dump Station" values="yes,public,customers,no" />
         </item> <!-- Marina -->
-        <item name="Marine Fuel" icon="styles/standard/nautical/marine_fuel.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Marine Fuel" icon="presets/nautical/marine_fuel.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=fuel"/>
             <space />
             <key key="waterway" value="fuel" />
@@ -2382,7 +2382,7 @@
             </optional>
             <reference ref="link_contact_address_payment" />
         </item> <!-- Marine Fuel -->
-        <item name="Pier" icon="styles/standard/nautical/pier.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Pier" icon="presets/nautical/pier.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=pier"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=pier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=pier"
@@ -2398,7 +2398,7 @@
             <combo key="mooring" text="Mooring" values="yes,no,private,commercial" />
             <check key="floating" text="Floating" />
         </item> <!-- Pier -->
-        <item name="Lock Gate" icon="presets/lock_gate.png" type="node" preset_name_label="true">
+        <item name="Lock Gate" icon="presets/nautical/lock_gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=lock_gate"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=lock_gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=lock_gate"
@@ -2409,14 +2409,14 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:waterway=lock_gate" />
             <key key="waterway" value="lock_gate" />
         </item> <!-- Lock Gate -->
-        <item name="Turning Point" icon="presets/turning.png" type="node" preset_name_label="true">
+        <item name="Turning Point" icon="presets/nautical/turning.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=turning_point"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=turning_point"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:waterway=turning_point" />
             <key key="waterway" value="turning_point" />
         </item> <!-- Turning Point -->
         <separator/>
-        <item name="Slipway" icon="styles/standard/nautical/slipway.png" type="node,way" preset_name_label="true">
+        <item name="Slipway" icon="presets/nautical/slipway.png" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=slipway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=slipway"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:leisure=slipway"
@@ -2428,7 +2428,7 @@
                 <text key="name" text="Name" />
             </optional>
         </item> <!-- Slipway -->
-        <item name="Boatyard" icon="presets/boatyard.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Boatyard" icon="presets/nautical/boatyard.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=boatyard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=boatyard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=boatyard"
@@ -2440,7 +2440,7 @@
             <key key="waterway" value="boatyard" />
             <text key="name" text="Name" />
         </item> <!-- Boatyard -->
-        <item name="Dock" icon="presets/boatyard.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Dock" icon="presets/nautical/boatyard.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=dock"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:waterway=dock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=dock"
@@ -2454,9 +2454,9 @@
         </item> <!-- Dock -->
     </group> <!-- Shipping -->
   </group> <!-- Water -->
-  <group name="Transport" icon="styles/standard/transport/railway/rail.svg">
-    <group name="Railway" icon="styles/standard/transport/railway/rail.svg">
-        <item name="Rail" icon="styles/standard/transport/railway/rail.svg" type="way" preset_name_label="true">
+  <group name="Transport" icon="presets/transport/railway/rail.svg">
+    <group name="Railway" icon="presets/transport/railway/rail.svg">
+        <item name="Rail" icon="presets/transport/railway/rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=rail"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=rail"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=rail"
@@ -2472,7 +2472,7 @@
                 <reference ref="railway_service_gauge_electrified" />
             </optional>
         </item> <!-- Rail -->
-        <item name="Narrow Gauge Rail" icon="styles/standard/transport/railway/narrow_gauge_rail.svg" type="way" preset_name_label="true">
+        <item name="Narrow Gauge Rail" icon="presets/transport/railway/narrow_gauge_rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:narrow_gauge" />
             <key key="railway" value="narrow_gauge" />
             <optional>
@@ -2480,7 +2480,7 @@
                 <reference ref="railway_service_gauge_electrified" />
             </optional>
         </item> <!-- Narrow Gauge Rail -->
-        <item name="Monorail" icon="styles/standard/transport/railway/monorail.svg" type="way" preset_name_label="true">
+        <item name="Monorail" icon="presets/transport/railway/monorail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=monorail"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=monorail"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=monorail"
@@ -2491,7 +2491,7 @@
                 <reference ref="railway_electrified" />
             </optional>
         </item> <!-- Monorail -->
-        <item name="Preserved" icon="styles/standard/transport/railway/preserved.svg" type="way" preset_name_label="true">
+        <item name="Preserved" icon="presets/transport/railway/preserved.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=preserved"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=preserved"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=preserved"
@@ -2502,14 +2502,14 @@
                 <reference ref="railway_service_gauge_electrified" />
             </optional>
         </item> <!-- Preserved -->
-        <item name="Light Rail" icon="styles/standard/transport/railway/light_rail.svg" type="way" preset_name_label="true">
+        <item name="Light Rail" icon="presets/transport/railway/light_rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=light_rail" />
             <key key="railway" value="light_rail" />
             <optional>
                 <reference ref="railway_service_gauge_electrified" />
             </optional>
         </item> <!-- Light Rail -->
-        <item name="Subway" icon="styles/standard/transport/railway/subway.svg" type="way" preset_name_label="true">
+        <item name="Subway" icon="presets/transport/railway/subway.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=subway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=subway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=subway"
@@ -2521,7 +2521,7 @@
                 <reference ref="railway_service_gauge_electrified" />
             </optional>
         </item> <!-- Subway -->
-        <item name="Tram" icon="styles/standard/transport/railway/tram.svg" type="way" preset_name_label="true">
+        <item name="Tram" icon="presets/transport/railway/tram.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=tram"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=tram"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=tram"
@@ -2534,7 +2534,14 @@
                 <reference ref="railway_service_gauge_electrified" />
             </optional>
         </item> <!-- Tram -->
-        <item name="Bus Guideway" icon="styles/standard/transport/railway/bus_guideway.svg" type="way" preset_name_label="true">
+        <item name="Funicular" icon="presets/transport/railway/funicular.svg" type="way" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=funicular" />
+            <key key="railway" value="funicular" />
+            <optional>
+                <reference ref="railway_service_gauge_electrified" />
+            </optional>
+        </item> <!-- Funicular -->
+        <item name="Bus Guideway" icon="presets/transport/railway/bus_guideway.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bus_guideway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bus_guideway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=bus_guideway"
@@ -2552,7 +2559,7 @@
             </optional>
         </item> <!-- Bus Guideway -->
         <separator/>
-        <item name="Disused Rail" icon="styles/standard/transport/railway/disused_rail.svg" type="way" preset_name_label="true">
+        <item name="Disused Rail" icon="presets/transport/railway/disused_rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=disused"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=disused"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=disused" />
@@ -2561,7 +2568,7 @@
                 <reference ref="railway_service" />
             </optional>
         </item> <!-- Disused Rail -->
-        <item name="Abandoned Rail" icon="styles/standard/transport/railway/abandoned_rail.svg" type="way" preset_name_label="true">
+        <item name="Abandoned Rail" icon="presets/transport/railway/abandoned_rail.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=abandoned"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=abandoned"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=abandoned"
@@ -2573,7 +2580,7 @@
             </optional>
         </item> <!-- Abandoned Rail -->
         <separator/>
-        <item name="Level Crossing" icon="styles/standard/transport/railway/level_crossing.svg" type="node" preset_name_label="true">
+        <item name="Level Crossing" icon="presets/transport/railway/level_crossing.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=level_crossing"
                   bg.href="http://wiki.openstreetmap.org/wiki/Bg:Tag:railway=level_crossing"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:railway=level_crossing"
@@ -2595,7 +2602,7 @@
                 <combo key="crossing:barrier" text="Barrier" values="yes,no,half,full,double_half" values_context="crossing:barrier" />
             </optional>
         </item> <!-- Level Crossing -->
-        <item name="Crossing" icon="styles/standard/transport/railway/crossing.svg" type="node" preset_name_label="true">
+        <item name="Crossing" icon="presets/transport/railway/crossing.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:crossing"
                   bg.href="http://wiki.openstreetmap.org/wiki/Bg:Key:crossing"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:crossing"
@@ -2614,7 +2621,7 @@
                 <combo key="crossing:barrier" text="Barrier" values="yes,no,half,full,double_half" values_context="crossing:barrier" />
             </optional>
         </item> <!-- Crossing -->
-        <item name="Turntable" icon="styles/standard/transport/railway/turntable.svg" type="node,closedway" preset_name_label="true">
+        <item name="Turntable" icon="presets/transport/railway/turntable.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=turntable"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=turntable"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=turntable"
@@ -2622,13 +2629,13 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:railway=turntable" />
             <key key="railway" value="turntable" />
         </item> <!-- Turntable -->
-        <item name="Buffer Stop" icon="styles/standard/transport/railway/buffer_stop.svg" type="node" preset_name_label="true">
+        <item name="Buffer Stop" icon="presets/transport/railway/buffer_stop.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=buffer_stop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=buffer_stop"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=buffer_stop" />
             <key key="railway" value="buffer_stop" />
         </item> <!-- Buffer Stop -->
-        <item name="Railway Switch" icon="styles/standard/transport/railway/switch.svg" type="node" preset_name_label="true">
+        <item name="Railway Switch" icon="presets/transport/railway/switch.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=switch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=switch"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:railway=switch" />
@@ -2636,22 +2643,22 @@
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Railway Switch -->
-        <item name="Railway Signal" icon="styles/standard/transport/railway/signal.svg" type="node" preset_name_label="true">
+        <item name="Railway Signal" icon="presets/transport/railway/signal.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=signal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=signal" />
             <key key="railway" value="signal" />
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Railway Signal -->
-        <item name="Railway milestone" icon="styles/standard/transport/railway/milestone.svg" type="node" preset_name_label="true">
+        <item name="Railway milestone" icon="presets/transport/railway/milestone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=milestone" />
             <key key="railway" value="milestone" />
             <text key="distance" text="Distance (kilometers)" />
             <text key="ref" text="Reference" />
         </item> <!-- Railway Milestone -->
     </group> <!-- Railway -->
-    <group name="Aerialway" icon="presets/aerialway.png">
-        <item name="Cable Car" icon="presets/cable_car.png" type="way" preset_name_label="true">
+    <group name="Aerialway" icon="presets/transport/aerialway/gondola.svg">
+        <item name="Cable Car" icon="presets/transport/aerialway/cable_car.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=cable_car"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=cable_car"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aerialway=cable_car"
@@ -2670,7 +2677,7 @@
                 <check key="aerialway:heating" text="Has heating?" />
             </optional>
         </item> <!-- Cable Car -->
-        <item name="Chair Lift" icon="presets/chair_lift.png" type="way" preset_name_label="true">
+        <item name="Chair Lift" icon="presets/transport/aerialway/chair_lift.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=chair_lift"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aerialway=chair_lift" />
             <space />
@@ -2684,7 +2691,7 @@
                 <check key="aerialway:heating" text="Has heating?" />
             </optional>
         </item> <!-- Chair Lift -->
-        <item name="Gondola" icon="presets/aerialway.png" type="way" preset_name_label="true">
+        <item name="Gondola" icon="presets/transport/aerialway/gondola.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=gondola" />
             <space />
             <key key="aerialway" value="gondola" />
@@ -2696,7 +2703,7 @@
                 <check key="aerialway:heating" text="Has heating?" />
             </optional>
         </item> <!-- Gondola -->
-        <item name="Mixed Lift" icon="styles/standard/transport/aerialway/mixed_lift.png" type="way" preset_name_label="true">
+        <item name="Mixed Lift" icon="presets/transport/aerialway/mixed_lift.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=mixed_lift" />
             <space />
             <key key="aerialway" value="mixed_lift" />
@@ -2709,7 +2716,7 @@
                 <check key="aerialway:heating" text="Has heating?" />
             </optional>
         </item> <!-- Mixed Lift -->
-        <item name="Drag Lift" icon="presets/drag_lift.png" type="way" preset_name_label="true">
+        <item name="Drag Lift" icon="presets/transport/aerialway/drag_lift.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=drag_lift"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=drag_lift"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aerialway=drag_lift" />
@@ -2721,7 +2728,7 @@
                 <text key="aerialway:duration" text="Typical journey time in minutes" />
             </optional>
         </item> <!-- Drag Lift -->
-        <item name="Magic Carpet" icon="styles/standard/transport/aerialway/magic_carpet.png" type="way" preset_name_label="true">
+        <item name="Magic Carpet" icon="presets/transport/aerialway/magic_carpet.png" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=magic_carpet" />
             <space />
             <key key="aerialway" value="magic_carpet" />
@@ -2731,7 +2738,7 @@
                 <text key="aerialway:duration" text="Typical journey time in minutes" />
             </optional>
         </item> <!-- Magic Carpet -->
-        <item name="Goods" icon="presets/goods.png" type="way" preset_name_label="true">
+        <item name="Goods" icon="presets/transport/aerialway/goods.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=goods"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aerialway=goods" />
             <space />
@@ -2742,14 +2749,14 @@
             </optional>
         </item> <!-- Goods -->
         <separator/>
-        <item name="Station" name_context="aerialway" icon="presets/aerialway_station.png" type="node,closedway" preset_name_label="true">
+        <item name="Station" name_context="aerialway" icon="presets/transport/aerialway/station.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=station"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aerialway=station" />
             <space />
             <key key="aerialway" value="station" />
             <text key="name" text="Name" />
         </item> <!-- Station -->
-        <item name="Pylon" icon="styles/standard/transport/aerialway/pylon.svg" type="node" preset_name_label="true">
+        <item name="Pylon" icon="presets/transport/aerialway/pylon.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=pylon" />
             <space />
             <key key="aerialway" value="pylon" />
@@ -2757,8 +2764,8 @@
         </item> <!-- Pylon -->
     </group> <!-- Aerialway -->
     <separator/>
-    <group name="Car" icon="presets/car.png">
-        <item name="Parking" icon="presets/parking.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Car" icon="presets/shop/vehicle.svg">
+        <item name="Parking" icon="presets/vehicle/parking/parking.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=parking"
@@ -2786,7 +2793,7 @@
             <reference ref="maxstay" />
             <reference ref="supervised_lit_oh" />
         </item> <!-- Parking -->
-        <item name="Parking Space" icon="styles/standard/vehicle/parking/parking_space.svg" type="node,closedway" preset_name_label="true">
+        <item name="Parking Space" icon="presets/vehicle/parking/parking_space.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking_space"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking_space"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=parking_space"
@@ -2802,7 +2809,7 @@
             <reference ref="supervised_lit_oh" />
             <check key="covered" text="Covered (with roof)" />
         </item> <!-- Parking Space -->
-        <item name="Parking Entrance" icon="presets/parking.png" type="node" preset_name_label="true">
+        <item name="Parking Entrance" icon="presets/vehicle/parking/parking.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking_entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking_entrance"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=parking_entrance"
@@ -2818,7 +2825,7 @@
             <check key="covered" text="Covered (with roof)" />
         </item> <!-- Parking Entrance -->
         <separator/>
-        <item name="Fuel" icon="presets/fuel.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fuel" icon="presets/vehicle/fuel.svg" type="node,closedway,multipolygon" 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"
@@ -2872,7 +2879,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Fuel -->
-        <item name="Charging Station" icon="styles/standard/vehicle/fuel/charging_station.png" type="node" preset_name_label="true">
+        <item name="Charging Station" icon="presets/vehicle/charging_station.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=charging_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=charging_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=charging_station"
@@ -2920,7 +2927,7 @@
             <combo key="authentication:membership_card" text="Membership card" values="yes" />
             <preset_link preset_name="Payment Methods" />
         </item> <!-- Charging Station -->
-        <item name="Wash" icon="presets/car_wash.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Wash" icon="presets/vehicle/car_wash.svg" type="node,closedway,multipolygon" 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"
@@ -2935,7 +2942,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Wash -->
         <separator/>
-        <item name="Car Dealer" icon="presets/car.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Car Dealer" icon="presets/shop/vehicle.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=car"
@@ -2953,7 +2960,7 @@
             <combo key="second_hand" text="Second hand" values="only,yes,no" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Car Dealer -->
-        <item name="Repair" icon="presets/car_repair.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Repair" icon="presets/vehicle/repair_shop.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car_repair"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car_repair"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=car_repair"
@@ -2966,7 +2973,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Repair -->
-        <item name="Parts" icon="styles/standard/vehicle/car_parts.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Parts" icon="presets/vehicle/car_parts.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car_parts"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=car_parts"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=car_parts" />
@@ -2976,7 +2983,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Parts -->
-        <item name="Tires" icon="presets/tyres.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Tires" icon="presets/vehicle/tyres.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tyres"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tyres"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=tyres" />
@@ -2986,7 +2993,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Tires -->
         <separator/>
-        <item name="Rental" icon="presets/car_rental.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Rental" icon="presets/vehicle/car_rental.svg" type="node,closedway,multipolygon" 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"
@@ -3000,7 +3007,7 @@
             <reference ref="name_brand_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Rental -->
-        <item name="Sharing" icon="presets/car_sharing.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Sharing" icon="presets/vehicle/car_sharing.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_sharing"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=car_sharing"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_sharing"
@@ -3016,8 +3023,8 @@
             <text key="website" text="Website" />
         </item> <!-- Sharing -->
     </group> <!-- Car -->
-    <group name="Motorcycle" icon="presets/motorbike.png">
-        <item name="Parking" icon="styles/standard/vehicle/parking/motorbike.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Motorcycle" icon="presets/vehicle/motorbike.svg">
+        <item name="Parking" icon="presets/vehicle/parking/motorbike.svg" type="node,closedway,multipolygon" 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"
@@ -3031,7 +3038,7 @@
             <reference ref="supervised_lit_oh" />
             <check key="covered" text="Covered (with roof)" />
         </item> <!-- Parking -->
-        <item name="Motorcycle Dealer" icon="presets/motorbike.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Motorcycle Dealer" icon="presets/vehicle/motorbike.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=motorcycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=motorcycle"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=motorcycle"
@@ -3057,8 +3064,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Motorcycle Dealer -->
     </group> <!-- Motorcycle -->
-    <group name="Bicycle" icon="presets/bike.png">
-        <item name="Parking" icon="styles/standard/vehicle/parking/bicycle.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+    <group name="Bicycle" icon="presets/shop/bicycle.svg">
+        <item name="Parking" icon="presets/vehicle/parking/bicycle.svg" type="node,way,closedway,multipolygon" 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"
@@ -3080,7 +3087,7 @@
             <check key="covered" text="Covered" />
             <reference ref="supervised_lit_oh" />
         </item> <!-- Parking -->
-        <item name="Bike Dealer" icon="presets/bike.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bike Dealer" icon="presets/shop/bicycle.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bicycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bicycle"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=bicycle"
@@ -3102,7 +3109,7 @@
             <check key="service:bicycle:cleaning" text="Bicycles are washed (for a fee)" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bike Dealer -->
-        <item name="Rental" icon="presets/bicycle_rental.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Rental" icon="presets/vehicle/bicycle_rental.svg" type="node,closedway,multipolygon" 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"
@@ -3120,7 +3127,7 @@
             <text key="name" text="Name" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Rental -->
-        <item name="Public Bicycle Repair Station" icon="styles/standard/vehicle/bicycle_repair_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Public Bicycle Repair Station" icon="presets/vehicle/bicycle_repair_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_repair_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bicycle_repair_station"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=bicycle_repair_station"
@@ -3137,8 +3144,8 @@
             </optional>
         </item> <!-- Public Bicycle Repair Station -->
     </group> <!-- Bicycle -->
-    <group name="Public Transport" icon="presets/bus.png">
-        <item name="Public Transport Route (Rail)" icon="presets/path.png" type="relation" preset_name_label="true">
+    <group name="Public Transport" icon="presets/transport/bus_old.svg">
+        <item name="Public Transport Route (Rail)" icon="presets/misc/path.png" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Route" />
             <space />
             <key key="type" value="route" />
@@ -3158,7 +3165,7 @@
                 <role key="" text="route segment" requisite="required" type="way,closedway" member_expression="railway" />
             </roles>
         </item> <!-- Public Transport Route (Rail) -->
-        <item name="Public Transport Route (Bus)" icon="presets/path.png" type="relation" preset_name_label="true">
+        <item name="Public Transport Route (Bus)" icon="presets/misc/path.png" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Route" />
             <space />
             <key key="type" value="route" />
@@ -3178,7 +3185,7 @@
                 <role key="" text="route segment" requisite="required" type="way,closedway" member_expression="highway" />
             </roles>
         </item> <!-- Public Transport Route (Bus) -->
-        <item name="Route Master" icon="presets/path.png" type="relation" preset_name_label="true">
+        <item name="Route Master" icon="presets/misc/path.png" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Route_master" />
             <space />
             <key key="type" value="route_master" />
@@ -3193,7 +3200,7 @@
                 <role key="" text="route variant/direction (at least 2)" requisite="required" type="relation" member_expression="type=route" /> <!-- FIXME: at least 2 members are required -->
             </roles>
         </item> <!-- Route Master -->
-        <item name="Stop Area" type="relation" icon="presets/interpolation.png" preset_name_label="true">
+        <item name="Stop Area" type="relation" icon="presets/misc/interpolation.png" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Stop_area" />
             <space />
             <key key="type" value="public_transport" />
@@ -3214,7 +3221,7 @@
             </roles>
         </item> <!-- Stop Area -->
         <separator/>
-        <item name="Stop Position" type="node" icon="styles/standard/transport/railway_small.png" preset_name_label="true">
+        <item name="Stop Position" type="node" icon="presets/transport/railway_small.png" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Stop_position" />
             <space />
             <key key="public_transport" value="stop_position" />
@@ -3244,7 +3251,7 @@
             <check key="aerialway" text="Aerialway" />
             <check key="ferry" text="Ferry" />
         </item> <!-- Stop Position -->
-        <item name="Platform" type="node,way,closedway,multipolygon" icon="styles/standard/transport/platform.svg" preset_name_label="true">
+        <item name="Platform" type="node,way,closedway,multipolygon" icon="presets/transport/platform.svg" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Platform" />
             <space />
             <key key="public_transport" value="platform" />
@@ -3256,7 +3263,7 @@
             <reference ref="wheelchair" />
             <combo key="tactile_paving" text="Tactile Paving" values="yes,no,incorrect" />
         </item> <!-- Platform -->
-        <item name="Station" name_context="railway" type="node,closedway,multipolygon" icon="styles/standard/transport/station.svg" preset_name_label="true">
+        <item name="Station" name_context="railway" type="node,closedway,multipolygon" icon="presets/transport/station.svg" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:public_transport=station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:public_transport=station"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:public_transport=station"
@@ -3273,7 +3280,7 @@
             <text key="network" text="Network" />
         </item> <!-- Station -->
         <separator/> <!-- *** Access *** -->
-        <item name="Subway Entrance" icon="presets/underground.png" type="node" preset_name_label="true">
+        <item name="Subway Entrance" icon="presets/transport/underground.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=subway_entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=subway_entrance"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=subway_entrance"
@@ -3287,7 +3294,7 @@
                 <check key="bicycle" text="Bicycle" />
             </optional>
         </item> <!-- Subway Entrance -->
-        <item name="Ticket Machine" icon="styles/standard/transport/ticket-machine.png" type="node" preset_name_label="true">
+        <item name="Ticket Machine" icon="presets/transport/ticket-machine.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=vending_machine"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=vending_machine"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=vending_machine"
@@ -3303,8 +3310,8 @@
             <preset_link preset_name="Payment Methods" />
         </item> <!-- Ticket Machine -->
     </group> <!-- Public Transport -->
-    <group name="Public Transport (Legacy)" icon="presets/bus.png">
-        <item name="Public transport route (Legacy)" icon="presets/path.png" type="relation" preset_name_label="true">
+    <group name="Public Transport (Legacy)" icon="presets/transport/bus_old.svg">
+        <item name="Public transport route (Legacy)" icon="presets/misc/path.png" type="relation" preset_name_label="true">
             <key key="type" value="route" />
             <combo key="route" text="Route type" values="train,subway,monorail,tram,bus,trolleybus,aerialway,ferry" values_searchable="true" match="keyvalue!" />
             <key key="public_transport:version" value="1" /> <!-- only validate marked relations in order to avoid false positives -->
@@ -3328,7 +3335,7 @@
                 <role key="platform" text="platform" requisite="optional" type="node,way,closedway" member_expression="highway=platform OR railway=platform" />
             </roles>
         </item> <!-- Public transport route (Legacy) -->
-        <item name="Station" name_context="railway" icon="styles/standard/transport/railway_station.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Station" name_context="railway" icon="presets/transport/railway_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=station"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=station"
@@ -3342,7 +3349,7 @@
                 <text key="uic_ref" text="UIC-Reference" />
             </optional>
         </item> <!-- Station -->
-        <item name="Railway Halt" icon="presets/station.png" type="node" preset_name_label="true">
+        <item name="Railway Halt" icon="presets/transport/station.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=halt"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=halt"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=halt"
@@ -3353,7 +3360,7 @@
                 <text key="name" text="Name" />
             </optional>
         </item> <!-- Railway Halt -->
-        <item name="Tram Stop" icon="styles/standard/transport/tram.png" type="node" preset_name_label="true">
+        <item name="Tram Stop" icon="presets/transport/tram.svg" type="node" preset_name_label="true">
            <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=tram_stop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=tram_stop"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=tram_stop"
@@ -3363,7 +3370,7 @@
                 <text key="name" text="Name" />
             </optional>
         </item> <!-- Tram Stop -->
-        <item name="Railway Platform" icon="presets/platform_rail.png" type="way,closedway,multipolygon" preset_name_label="true">
+        <item name="Railway Platform" icon="presets/transport/platform_rail.png" type="way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=platform"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=platform"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:railway=platform"
@@ -3375,7 +3382,7 @@
             <check key="area" text="Area" />
         </item> <!-- Railway Platform -->
         <separator/>
-        <item name="Bus Station" icon="presets/bus.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bus Station" icon="presets/transport/bus_old.svg" type="node,closedway,multipolygon" 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"
@@ -3387,7 +3394,7 @@
                 <text key="name" text="Name" />
             </optional>
         </item> <!-- Bus Station -->
-        <item name="Bus Stop" icon="presets/bus_small.png" type="node" preset_name_label="true">
+        <item name="Bus Stop" icon="presets/transport/bus_small.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bus_stop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bus_stop"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=bus_stop"
@@ -3406,7 +3413,7 @@
                 <combo key="tactile_paving" text="Tactile Paving" values="yes,no,incorrect" />
             </optional>
         </item> <!-- Bus Stop -->
-        <item name="Bus Platform" icon="presets/platform_bus.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Bus Platform" icon="presets/transport/platform_bus.png" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=platform"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=platform"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:highway=platform"
@@ -3420,7 +3427,7 @@
             <combo key="tactile_paving" text="Tactile Paving" values="yes,no,incorrect" />
         </item> <!-- Bus Platform -->
     </group> <!-- Public Transport -->
-    <item name="Taxi" icon="presets/taxi.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Taxi" icon="presets/transport/taxi.svg" type="node,closedway,multipolygon" 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"
@@ -3436,8 +3443,8 @@
         <text key="name" text="Name" />
     </item> <!-- Taxi -->
     <separator/>
-    <group name="Airport" icon="presets/plane.png">
-        <item name="Airport Ground" icon="presets/plane.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Airport" icon="presets/transport/airport.svg">
+        <item name="Airport Ground" icon="presets/transport/airport.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=aerodrome"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=aerodrome"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=aerodrome"
@@ -3447,7 +3454,7 @@
             <reference ref="aerodrome" />
         </item> <!-- Airport Ground -->
         <separator/>
-        <item name="Runway" icon="presets/runway.png" type="way,closedway" preset_name_label="true">
+        <item name="Runway" icon="presets/transport/airport/runway.png" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=runway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=runway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aeroway=runway"
@@ -3459,7 +3466,7 @@
                 <text key="ref" text="Reference" />
             </optional>
         </item> <!-- Runway -->
-        <item name="Taxiway" icon="presets/taxiway.png" type="way,closedway" preset_name_label="true">
+        <item name="Taxiway" icon="presets/transport/airport/taxiway.png" type="way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=taxiway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=taxiway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=taxiway"
@@ -3470,7 +3477,7 @@
                 <text key="ref" text="Reference" />
             </optional>
         </item> <!-- Taxiway -->
-        <item name="Helipad" icon="styles/standard/transport/airport/helipad.png" type="node,closedway" preset_name_label="true">
+        <item name="Helipad" icon="presets/transport/airport/helipad.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=helipad"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=helipad"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:aeroway=helipad"
@@ -3482,7 +3489,7 @@
                 <text key="ref" text="Reference" />
             </optional>
         </item> <!-- Helipad -->
-        <item name="Apron" icon="presets/apron.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Apron" icon="presets/transport/airport/apron.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=apron"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=apron"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:aeroway=apron"
@@ -3490,13 +3497,13 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=apron" />
             <key key="aeroway" value="apron" />
         </item> <!-- Apron -->
-        <item name="Plane Parking Position" icon="styles/standard/transport/airport/parking_position.png" type="node,way" preset_name_label="true">
+        <item name="Plane Parking Position" icon="presets/transport/airport/parking_position.png" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=parking_position"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:aeroway=parking_position" />
             <key key="aeroway" value="parking_position" />
             <text key="ref" text="Reference" />
         </item> <!-- Plane Parking Position -->
-        <item name="Hangar" icon="presets/hangar.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hangar" icon="presets/transport/airport/hangar.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=hangar"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=hangar"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:aeroway=hangar"
@@ -3505,21 +3512,21 @@
             <key key="aeroway" value="hangar" />
             <combo key="building" text="Building" values="hangar,yes" values_context="building" default="hangar" values_searchable="true" />
         </item> <!-- Hangar -->
-        <item name="Beacon" icon="styles/standard/misc/landmark/beacon.png" type="node" preset_name_label="true">
+        <item name="Beacon" icon="presets/landmark/beacon.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=beacon"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=beacon"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=beacon"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=beacon" />
             <key key="man_made" value="beacon" />
         </item> <!-- Beacon -->
-        <item name="Windsock" icon="styles/standard/transport/airport/windsock.png" type="node" preset_name_label="true">
+        <item name="Windsock" icon="presets/transport/airport/windsock.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=windsock"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=windsock"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:aeroway=windsock" />
             <key key="aeroway" value="windsock" />
         </item> <!-- Windsock -->
         <separator/>
-        <item name="Terminal" icon="styles/standard/transport/airport/terminal.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Terminal" icon="presets/transport/airport/terminal.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=terminal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=terminal"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:aeroway=terminal"
@@ -3532,7 +3539,7 @@
             <reference ref="internet" />
             <reference ref="link_contact_address" />
         </item> <!-- Terminal -->
-        <item name="Gate" name_context="airport" icon="presets/aeroway_gate.png" type="node" preset_name_label="true">
+        <item name="Gate" name_context="airport" icon="presets/transport/airport/gate.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=gate"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:aeroway=gate"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:aeroway=gate"
@@ -3543,9 +3550,9 @@
         </item> <!-- Gate -->
     </group> <!-- Airport -->
   </group> <!-- Transport -->
-  <group name="Facilities" icon="presets/bed.png">
-    <group name="Accommodation" icon="presets/bed.png">
-        <item name="Hotel" icon="styles/standard/accommodation/hotel.svg" type="node,closedway,multipolygon" preset_name_label="true">
+  <group name="Facilities" icon="presets/accommodation/hotel.svg">
+    <group name="Accommodation" icon="presets/accommodation/hotel.svg">
+        <item name="Hotel" icon="presets/accommodation/hotel.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=hotel"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=hotel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=hotel"
@@ -3568,7 +3575,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Residential Building" />
         </item> <!-- Hotel -->
-        <item name="Motel" icon="styles/standard/accommodation/motel.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Motel" icon="presets/accommodation/motel.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=motel"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=motel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=motel"
@@ -3590,7 +3597,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Motel -->
-        <item name="Guest House/Bed & Breakfast" icon="styles/standard/accommodation/guest_house.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Guest House/Bed & Breakfast" icon="presets/accommodation/guest_house.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=guest_house"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=guest_house"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=guest_house"
@@ -3611,7 +3618,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Guest House/Bed & Breakfast -->
-        <item name="Chalet" icon="styles/standard/accommodation/chalet.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Chalet" icon="presets/accommodation/chalet.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=chalet"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=chalet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=chalet"
@@ -3633,7 +3640,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Chalet -->
-        <item name="Hostel" icon="styles/standard/accommodation/hostel.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hostel" icon="presets/accommodation/hostel.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=hostel"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=hostel"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=hostel"
@@ -3655,7 +3662,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Hostel -->
-        <item name="Alpine Hut" icon="styles/standard/accommodation/alpine_hut_blue.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Alpine Hut" icon="presets/accommodation/alpine_hut_blue.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=alpine_hut"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=alpine_hut"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=alpine_hut"
@@ -3675,7 +3682,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Alpine Hut -->
-        <item name="Wilderness Hut" icon="styles/standard/accommodation/wilderness_hut_blue.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Wilderness Hut" icon="presets/accommodation/wilderness_hut_blue.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=wilderness_hut"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=wilderness_hut"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=wilderness_hut"
@@ -3697,7 +3704,7 @@
             <preset_link preset_name="Building" />
         </item> <!-- Wilderness Hut -->
         <separator/>
-        <item name="Caravan Site/RV Park" icon="styles/standard/accommodation/camping/caravan.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Caravan Site/RV Park" icon="presets/accommodation/caravan.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=caravan_site"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=caravan_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=caravan_site"
@@ -3720,7 +3727,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Caravan Site/RV Park -->
-        <item name="Camping Site" icon="styles/standard/accommodation/camping.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Camping Site" icon="presets/accommodation/camping.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=camp_site"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=camp_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=camp_site"
@@ -3742,8 +3749,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Camping Site -->
     </group> <!-- Accommodation -->
-    <group name="Food+Drinks" icon="styles/standard/food/restaurant.svg">
-        <item name="Restaurant" icon="styles/standard/food/restaurant.svg" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Food+Drinks" icon="presets/food/restaurant.svg">
+        <item name="Restaurant" icon="presets/food/restaurant.svg" type="node,closedway,multipolygon" 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"
@@ -3767,7 +3774,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Restaurant -->
-        <item name="Fast Food" icon="presets/fastfood.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fast Food" icon="presets/food/fastfood.png" type="node,closedway,multipolygon" 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"
@@ -3788,7 +3795,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Fast Food -->
-        <item name="Food Court" icon="presets/restaurant.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Food Court" icon="presets/food/food_court.png" type="node,closedway,multipolygon" 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"
@@ -3805,7 +3812,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Food Court -->
-        <item name="Cafe" icon="presets/cafe.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Cafe" icon="presets/food/cafe.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=cafe"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=cafe"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=cafe"
@@ -3829,7 +3836,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Cafe -->
-        <item name="Ice cream" icon="styles/standard/food/icecream.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ice cream" icon="presets/food/icecream.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:ice_cream" />
             <space />
             <key key="amenity" value="ice_cream" />
@@ -3842,7 +3849,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Ice cream -->
-        <item name="Pub" icon="presets/pub.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Pub" icon="presets/food/pub.png" type="node,closedway,multipolygon" 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"
@@ -3862,7 +3869,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Pub -->
-        <item name="Beer Garden" icon="presets/biergarten.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Beer Garden" icon="presets/food/biergarten.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=biergarten"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=biergarten"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=biergarten"
@@ -3879,7 +3886,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Beer Garden -->
-        <item name="Bar" icon="styles/standard/food/bar.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bar" icon="presets/food/bar.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bar"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bar"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bar"
@@ -3900,8 +3907,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bar -->
     </group> <!-- Food+Drinks -->
-    <group name="Tourism" icon="presets/sightseeing.png">
-        <item name="Attraction" icon="presets/sightseeing.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Tourism" icon="presets/sightseeing/attraction.svg">
+        <item name="Attraction" icon="presets/sightseeing/attraction.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=attraction"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=attraction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=attraction"
@@ -3913,7 +3920,7 @@
             <key key="tourism" value="attraction" />
             <reference ref="name_oh_wheelchair" />
         </item> <!-- Attraction -->
-        <item name="Viewpoint" icon="styles/standard/sightseeing/viewpoint.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Viewpoint" icon="presets/sightseeing/viewpoint.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=viewpoint"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=viewpoint"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=viewpoint"
@@ -3928,7 +3935,7 @@
             <!--<check key="man_made" value="tower" text="Look-Out Tower" />-->
         </item> <!-- Viewpoint -->
         <separator/>
-        <item name="Information Office" icon="presets/informationoffice.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Information Office" icon="presets/misc/information/informationoffice.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:information"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:information"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:information"
@@ -3944,7 +3951,7 @@
             <reference ref="internet" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Information Office -->
-        <item name="Map" icon="presets/map.png" type="node" preset_name_label="true">
+        <item name="Map" icon="presets/misc/information/map.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:information"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:information"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:information"
@@ -3969,7 +3976,7 @@
                 <label text="... other transportation modes possible" />
             </optional>
         </item> <!-- Map -->
-        <item name="Information Board" icon="presets/board.png" type="node" preset_name_label="true">
+        <item name="Information Board" icon="presets/misc/information/board.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:information"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:information"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:information"
@@ -3984,7 +3991,7 @@
             <combo key="board_type" text="Board Content" values="notice,history,nature,wildlife,plants,geology" />
             <text key="description" text="Closer Description" />
         </item> <!-- Information Board -->
-        <item name="Guidepost" icon="presets/guidepost.png" type="node" preset_name_label="true">
+        <item name="Guidepost" icon="presets/misc/information/guidepost.svg" 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"
@@ -4007,7 +4014,7 @@
                 <label text="... other transportation modes possible" />
             </optional>
         </item> <!-- Guidepost -->
-        <item name="Information Terminal" icon="styles/standard/misc/information.png" type="node" preset_name_label="true">
+        <item name="Information Terminal" icon="presets/misc/information/information.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:information"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:information"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:information"
@@ -4025,7 +4032,7 @@
             <reference ref="fee" />
             <reference ref="internet" />
         </item> <!-- Information Terminal -->
-        <item name="Audio Guide" icon="styles/standard/misc/information.png" type="node" preset_name_label="true">
+        <item name="Audio Guide" icon="presets/misc/information/information.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:information"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:information"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:information"
@@ -4045,7 +4052,7 @@
             <label text="Audioguide via mobile phone?" />
             <text key="phone" text="Phone number" />
         </item> <!-- Audio Guide -->
-        <item name="Other Information Point" icon="styles/standard/misc/information.png" type="node,closedway" preset_name_label="true">
+        <item name="Other Information Point" icon="presets/misc/information/information.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=information"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=information"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=information"
@@ -4060,8 +4067,8 @@
             <text key="description" text="Closer Description" />
         </item> <!-- Other Information Point -->
     </group> <!-- Tourism -->
-    <group name="Leisure" icon="presets/theme_park.png">
-        <item name="Movie Theater/Cinema" icon="presets/cinema.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Leisure" icon="presets/leisure/theme_park.svg">
+        <item name="Movie Theater/Cinema" icon="presets/leisure/cinema.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=cinema"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=cinema"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=cinema"
@@ -4079,7 +4086,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Movie Theater/Cinema -->
-        <item name="Zoo" icon="presets/zoo.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Zoo" icon="presets/leisure/zoo.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=zoo"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=zoo"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=zoo"
@@ -4095,7 +4102,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Zoo -->
-        <item name="Dog Park" icon="presets/dogpark.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Dog Park" icon="presets/leisure/dogpark.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=dog_park"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:leisure=dog_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=dog_park"
@@ -4113,7 +4120,7 @@
             <reference ref="oh_wheelchair" />
             <check key="lit" text="Lit" />
         </item> <!-- Dog Park -->
-        <item name="Amusement/Theme Park" icon="presets/theme_park.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Amusement/Theme Park" icon="presets/leisure/theme_park.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=theme_park"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=theme_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=theme_park"
@@ -4127,7 +4134,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Amusement/Theme Park -->
-        <item name="Water Park" icon="styles/standard/leisure/water_park.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Water Park" icon="presets/leisure/water_park.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=water_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=water_park"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=water_park"
@@ -4141,7 +4148,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Water Park -->
-        <item name="Swimming Pool" icon="styles/standard/sport/pool.png" type="node,closedway" preset_name_label="true">
+        <item name="Swimming Pool" icon="presets/sport/swimming.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=swimming_pool"
                   ca.href="http://wiki.openstreetmap.org/wiki/Ca:Tag:leisure=swimming_pool"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=swimming_pool"
@@ -4156,7 +4163,7 @@
             <space />
             <combo key="access" text="Access" values="yes,customers,private" />
         </item> <!-- Swimming Pool -->
-        <item name="Fitness Station" icon="styles/standard/leisure/fitness_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fitness Station" icon="presets/leisure/fitness_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fitness_station" />
             <space />
             <key key="leisure" value="fitness_station" />
@@ -4164,7 +4171,7 @@
             <text key="ref" text="Reference" />
             <text key="description" text="Description" />
         </item> <!-- Fitness Station -->
-        <item name="Sauna" icon="presets/sauna.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Sauna" icon="presets/leisure/sauna.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=sauna"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=sauna"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:amenity=sauna"
@@ -4176,7 +4183,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Sauna -->
-        <item name="Horse Riding" icon="presets/equestrian.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Horse Riding" icon="presets/leisure/equestrian.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=horse_riding" />
             <space />
             <key key="leisure" value="horse_riding" />
@@ -4186,7 +4193,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Horse Riding -->
         <separator/>
-        <item name="Playground" icon="styles/standard/leisure/playground.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Playground" icon="presets/leisure/playground.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=playground"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=playground"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=playground"
@@ -4201,7 +4208,7 @@
             <key key="leisure" value="playground" />
             <reference ref="name_operator_oh_wheelchair" />
         </item> <!-- Playground -->
-        <item name="Picnic Site" icon="styles/standard/leisure/picnic.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Picnic Site" icon="presets/leisure/picnic.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=picnic_site"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=picnic_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=picnic_site"
@@ -4214,14 +4221,14 @@
             <text key="name" text="Name" />
             <check key="fireplace" text="Fireplace" />
         </item> <!-- Picnic Site -->
-        <item name="Picnic Table" icon="styles/standard/leisure/picnic.png" type="node" preset_name_label="true">
+        <item name="Picnic Table" icon="presets/leisure/picnic.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=picnic_table"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=picnic_table" />
             <space />
             <key key="leisure" value="picnic_table" />
             <check key="covered" text="Covered" />
         </item> <!-- Picnic Table -->
-        <item name="Public Grill" icon="presets/bbq.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Public Grill" icon="presets/leisure/bbq.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bbq"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bbq"
                   el.href="http://wiki.openstreetmap.org/wiki/El:Tag:amenity=bbq"
@@ -4234,7 +4241,7 @@
             <combo key="fuel" text="Fuel" text_context="grill" values="charcoal,electric,wood" />
             <check key="covered" text="Covered" />
         </item> <!-- Public Grill -->
-        <item name="Firepit" icon="styles/standard/leisure/firepit.svg" type="node,closedway" preset_name_label="true">
+        <item name="Firepit" icon="presets/leisure/firepit.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=firepit"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=firepit"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=firepit"
@@ -4245,7 +4252,7 @@
             <key key="leisure" value="firepit" />
             <text key="name" text="Name" />
         </item> <!-- Firepit -->
-        <item name="Fishing" icon="styles/standard/sport/fishing.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fishing" icon="presets/sport/fishing.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fishing"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:leisure=fishing"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=fishing"
@@ -4254,14 +4261,14 @@
             <key key="leisure" value="fishing" />
             <text key="name" text="Name" />
         </item> <!-- Fishing -->
-        <item name="Bird Hide" icon="styles/standard/leisure/bird_hide.svg" type="node,closedway" preset_name_label="true">
+        <item name="Bird Hide" icon="presets/leisure/bird_hide.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=bird_hide" />
             <space />
             <key key="leisure" value="bird_hide" />
             <reference ref="name_ref_operator" />
         </item> <!-- Bird Hide -->
         <separator/>
-        <item name="Night Club" icon="styles/standard/leisure/discoball.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Night Club" icon="presets/leisure/discoball.svg" type="node,closedway,multipolygon" 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"
@@ -4279,7 +4286,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Night Club -->
-        <item name="Casino" icon="styles/standard/leisure/casino.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Casino" icon="presets/leisure/casino.svg" type="node,closedway,multipolygon" 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"
@@ -4292,7 +4299,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Casino -->
-        <item name="Strip Club" icon="styles/standard/leisure/nightclub.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Strip Club" icon="presets/leisure/nightclub.png" type="node,closedway,multipolygon" 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"
@@ -4306,7 +4313,7 @@
             <space />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Strip Club -->
-        <item name="Brothel" icon="styles/standard/leisure/stripclub.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Brothel" icon="presets/leisure/stripclub.png" type="node,closedway,multipolygon" 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"
@@ -4323,8 +4330,8 @@
             <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,multipolygon" preset_name_label="true">
+    <group name="Culture" icon="presets/leisure/theater.png">
+        <item name="Museum" icon="presets/sightseeing/museum.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=museum"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=museum"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=museum"
@@ -4340,7 +4347,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Museum -->
-        <item name="Theatre" icon="presets/theater.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Theatre" icon="presets/leisure/theater.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=theatre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=theatre"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=theatre"
@@ -4354,7 +4361,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Theatre -->
-        <item name="Library" icon="styles/standard/shop/library.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Library" icon="presets/shop/library.png" type="node,closedway,multipolygon" 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"
@@ -4370,7 +4377,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Library -->
-        <item name="Arts Centre" icon="presets/arts_centre.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Arts Centre" icon="presets/service/arts_centre.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=arts_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=arts_centre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=arts_centre"
@@ -4382,7 +4389,7 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Arts Centre -->
-        <item name="Artwork" icon="presets/arts_centre.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Artwork" icon="presets/service/arts_centre.png" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=artwork"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:tourism=artwork"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:tourism=artwork"
@@ -4399,7 +4406,7 @@
             <text key="name" text="Name" />
             <text key="artist_name" text="Artist Name" />
         </item> <!-- Artwork -->
-        <item name="Studio" icon="presets/studio.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Studio" icon="presets/service/studio.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=studio"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=studio"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=studio"
@@ -4413,8 +4420,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Studio -->
     </group> <!-- Culture -->
-    <group name="Place of Worship" icon="styles/standard/religion.png">
-        <item name="Church" icon="styles/standard/religion/church.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Place of Worship" icon="presets/religion/religion.svg">
+        <item name="Church" icon="presets/religion/church.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4440,7 +4447,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Church -->
-        <item name="Mosque" icon="styles/standard/religion/muslim.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Mosque" icon="presets/religion/muslim.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4465,7 +4472,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Mosque -->
-        <item name="Synagogue" icon="styles/standard/religion/jewish.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Synagogue" icon="presets/religion/jewish.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4490,7 +4497,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Synagogue -->
-        <item name="Buddhist Temple" icon="styles/standard/religion/buddhism.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Buddhist Temple" icon="presets/religion/buddhism.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4514,7 +4521,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Buddhist Temple -->
-        <item name="Hindu Temple" icon="styles/standard/religion/hinduism.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hindu Temple" icon="presets/religion/hinduism.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4538,7 +4545,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Hindu Temple -->
-        <item name="Shinto Shrine" icon="styles/standard/religion/shinto.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Shinto Shrine" icon="presets/religion/shinto.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4561,7 +4568,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Shinto Shrine -->
-        <item name="Other Place of Worship" icon="styles/standard/religion.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Other Place of Worship" icon="presets/religion/religion.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=place_of_worship"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=place_of_worship"
@@ -4585,8 +4592,8 @@
             <preset_link preset_name="Building" />
         </item> <!-- Other Place of Worship -->
     </group> <!-- Place of Worship -->
-    <group name="Public Building" icon="presets/townhall.png">
-        <item name="Town Hall" icon="presets/townhall.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Public Building" icon="presets/service/townhall.png">
+        <item name="Town Hall" icon="presets/service/townhall.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=townhall"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=townhall"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=townhall"
@@ -4600,7 +4607,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Town Hall -->
-        <item name="Community Centre" icon="presets/community_centre.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Community Centre" icon="presets/service/community_centre.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=community_centre"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=community_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=community_centre"
@@ -4615,7 +4622,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Community Centre -->
-        <item name="Embassy" icon="presets/embassy.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Embassy" icon="presets/service/embassy.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=embassy"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=embassy"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=embassy"
@@ -4628,7 +4635,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address" />
         </item> <!-- Embassy -->
-        <item name="Courthouse" icon="styles/standard/service/administration/courthouse.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Courthouse" icon="presets/service/courthouse.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=courthouse"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=courthouse"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=courthouse"
@@ -4641,7 +4648,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Courthouse -->
-        <item name="Prison" icon="styles/standard/service/administration/prison.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Prison" icon="presets/service/prison.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=prison"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=prison"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=prison"
@@ -4653,7 +4660,7 @@
             <reference ref="name_operator" />
             <reference ref="link_contact_address" />
         </item> <!-- Prison -->
-        <item name="Police" icon="styles/standard/service/police.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Police" icon="presets/service/police.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=police"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=police"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=police"
@@ -4668,14 +4675,14 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Police -->
-        <item name="Ranger Station" icon="styles/standard/service/ranger_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ranger Station" icon="presets/service/ranger_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ranger_station" />
             <space />
             <key key="amenity" value="ranger_station" />
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address" />
         </item> <!-- Ranger Station -->
-        <item name="Fire Station" icon="presets/firebrigade.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fire Station" icon="presets/service/firebrigade.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fire_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fire_station"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fire_station"
@@ -4690,7 +4697,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Fire Station -->
-        <item name="Post Office" icon="styles/standard/service/post_office.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Post Office" icon="presets/service/post_office.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=post_office"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=post_office"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=post_office"
@@ -4708,8 +4715,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Post Office -->
     </group> <!-- Public Buildings -->
-    <group name="Education" icon="presets/school.png">
-        <item name="Kindergarten" icon="presets/kindergarten.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Education" icon="presets/education/school.png">
+        <item name="Kindergarten" icon="presets/education/kindergarten.svg" type="node,closedway,multipolygon" 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"
@@ -4724,7 +4731,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Kindergarten -->
-        <item name="School" icon="presets/school.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="School" icon="presets/education/school.png" type="node,closedway,multipolygon" preset_name_label="true">
             <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"
@@ -4743,7 +4750,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- School -->
-        <item name="University" icon="styles/standard/education/university.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="University" icon="presets/education/university.png" type="node,closedway,multipolygon" 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"
@@ -4759,7 +4766,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address" />
         </item> <!-- University -->
-        <item name="College" icon="styles/standard/education/college.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="College" icon="presets/education/college.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=college"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=college"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=college"
@@ -4771,7 +4778,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address" />
         </item> <!-- College -->
-         <item name="Driving School" icon="styles/standard/education/driving_school.png" type="node,closedway,multipolygon" preset_name_label="true">
+         <item name="Driving School" icon="presets/education/driving_school.png" type="node,closedway,multipolygon" 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"
@@ -4783,8 +4790,8 @@
             <reference ref="link_contact_address" />
         </item> <!-- Driving School -->
     </group> <!-- Education -->
-    <group name="Health" icon="styles/standard/health/pharmacy.svg">
-        <item name="Hospital" icon="styles/standard/health/hospital.svg" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Health" icon="presets/health/pharmacy.svg">
+        <item name="Hospital" icon="presets/health/hospital.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=hospital"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=hospital"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=hospital"
@@ -4799,7 +4806,7 @@
             <reference ref="name_operator" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Hospital -->
-        <item name="Clinic" icon="styles/standard/health/clinic.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Clinic" icon="presets/health/clinic.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=clinic"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=clinic"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=clinic"
@@ -4810,7 +4817,7 @@
             <reference ref="name_operator" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Clinic -->
-        <item name="Doctor's Office" icon="styles/standard/health/doctors.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Doctor's Office" icon="presets/health/doctors.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=doctors"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=doctors"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=doctors"
@@ -4824,7 +4831,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Doctor's Office -->
-        <item name="Dentist" icon="styles/standard/health/dentist.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Dentist" icon="presets/health/dentist.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=dentist"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=dentist"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=dentist"
@@ -4836,7 +4843,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Dentist -->
-        <item name="Pharmacy" icon="styles/standard/health/pharmacy.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Pharmacy" icon="presets/health/pharmacy.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=pharmacy"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=pharmacy"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=pharmacy"
@@ -4853,7 +4860,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Pharmacy -->
         <separator/>
-        <item name="Baby Hatch/Safe Haven" icon="styles/standard/health/baby_hatch.svg" type="node,closedway" preset_name_label="true">
+        <item name="Baby Hatch/Safe Haven" icon="presets/health/baby_hatch.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=baby_hatch"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=baby_hatch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=baby_hatch"
@@ -4871,7 +4878,7 @@
             <reference ref="link_contact_address" />
         </item> <!-- Baby Hatch/Safe Haven -->
         <separator/>
-        <item name="Emergency Access Point" icon="styles/standard/service/emergency_access_point.svg" type="node,closedway" preset_name_label="true">
+        <item name="Emergency Access Point" icon="presets/service/emergency_access_point.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=emergency_access_point"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=emergency_access_point"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=emergency_access_point"
@@ -4887,7 +4894,7 @@
             <space />
         </item> <!-- Emergency Access Point -->
         <separator/>
-        <item name="Veterinary" icon="styles/standard/health/veterinary.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Veterinary" icon="presets/health/veterinary.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=veterinary"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=veterinary"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:amenity=veterinary"
@@ -4904,8 +4911,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Veterinary -->
     </group> <!-- Health -->
-    <group name="Emergency" icon="styles/standard/emergency/ambulance_station.svg">
-        <item name="Ambulance Station" icon="styles/standard/emergency/ambulance_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Emergency" icon="presets/emergency/ambulance_station.svg">
+        <item name="Ambulance Station" icon="presets/emergency/ambulance_station.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=ambulance_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=ambulance_station"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:emergency=ambulance_station"
@@ -4915,7 +4922,7 @@
             <reference ref="name_operator" />
             <reference ref="link_contact_address" />
         </item> <!-- Ambulance Station -->
-        <item name="Automated Defibrillator" icon="presets/aed.svg" type="node" preset_name_label="true">
+        <item name="Automated Defibrillator" icon="presets/emergency/aed.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=defibrillator"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=defibrillator"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:emergency=defibrillator"
@@ -4935,7 +4942,7 @@
             -->
         </item> <!-- Automated Defibrillator -->
         <separator />
-        <item name="Fire Extinguisher" icon="styles/standard/emergency/fire_extinguisher.svg" type="node" preset_name_label="true">
+        <item name="Fire Extinguisher" icon="presets/emergency/fire_extinguisher.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_extinguisher"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:emergency=fire_extinguisher"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=fire_extinguisher"
@@ -4947,7 +4954,7 @@
             <text key="operator" text="Operator" />
             <check key="indoor" text="Indoor" />
         </item> <!-- Fire Extinguisher -->
-        <item name="Fire Hose" icon="styles/standard/emergency/fire_hose.svg" type="node" preset_name_label="true">
+        <item name="Fire Hose" icon="presets/emergency/fire_hose.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_hose"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_hose" />
             <space />
@@ -4955,7 +4962,7 @@
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Fire Hose -->
-        <item name="Fire Hydrant" icon="presets/fire_hydrant.png" type="node" preset_name_label="true">
+        <item name="Fire Hydrant" icon="presets/service/fire_hydrant.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_hydrant"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=fire_hydrant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=fire_hydrant"
@@ -4976,7 +4983,7 @@
             <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="Water Tank" icon="styles/standard/emergency/water_tank.svg" type="node,closedway" preset_name_label="true">
+        <item name="Water Tank" icon="presets/emergency/water_tank.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=water_tank"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:emergency=fire_hose"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:emergency=fire_hose"
@@ -4988,14 +4995,14 @@
             <text key="water_tank:volume" text="Volume (in liters)" />
         </item> <!-- Water Tank -->
         <separator />
-        <item name="Assembly Point" icon="styles/standard/emergency/assembly_point.svg" type="node" preset_name_label="true">
+        <item name="Assembly Point" icon="presets/emergency/assembly_point.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=assembly_point"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=assembly_point" />
             <space />
             <key key="emergency" value="assembly_point" />
             <reference ref="name_ref_operator" />
         </item> <!-- Assembly Point -->
-        <item name="Emergency Phone" icon="styles/standard/vehicle/emergency_phone.png" type="node" preset_name_label="true">
+        <item name="Emergency Phone" icon="presets/vehicle/emergency_phone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=phone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=phone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:emergency=phone"
@@ -5005,7 +5012,7 @@
             <text key="ref" text="Reference" />
             <text key="operator" text="Operator" />
         </item> <!-- Emergency Phone -->
-        <item name="Siren" icon="styles/standard/emergency/siren.svg" type="node" preset_name_label="true">
+        <item name="Siren" icon="presets/emergency/siren.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=siren"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=siren"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:emergency=siren" />
@@ -5018,8 +5025,8 @@
             <text key="siren:range" text="Range (in meters)" />
         </item> <!-- Emergency Phone -->
     </group> <!-- Emergency -->
-    <group name="Social Facility" icon="styles/standard/social_facility/outreach.svg">
-        <item name="Nursing Home" icon="styles/standard/social_facility/nursing_home.svg" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Social Facility" icon="presets/social_facility/outreach.svg">
+        <item name="Nursing Home" icon="presets/social_facility/nursing_home.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=nursing_home"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=nursing_home"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=nursing_home"
@@ -5031,7 +5038,7 @@
             <text key="capacity" text="Capacity" />
             <reference ref="link_contact_address" />
         </item> <!-- Nursing Home -->
-        <item name="Group Home" icon="styles/standard/social_facility/group_home.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Group Home" icon="presets/social_facility/group_home.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:social_facility"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:social_facility"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:social_facility"
@@ -5047,7 +5054,7 @@
             <text key="capacity" text="Capacity" />
             <reference ref="link_contact_address" />
         </item> <!-- Group Home -->
-        <item name="Assisted Living" icon="styles/standard/social_facility/assisted_living.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Assisted Living" icon="presets/social_facility/assisted_living.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:social_facility"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:social_facility"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:social_facility"
@@ -5063,7 +5070,7 @@
             <text key="capacity" text="Capacity" />
             <reference ref="link_contact_address" />
         </item> <!-- Assisted Living -->
-        <item name="Outreach" icon="styles/standard/social_facility/outreach.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Outreach" icon="presets/social_facility/outreach.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:social_facility"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:social_facility"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:social_facility"
@@ -5077,7 +5084,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address" />
         </item> <!-- Outreach -->
-        <item name="Shelter" name_context="social_facility" icon="styles/standard/social_facility/shelter.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Shelter" name_context="social_facility" icon="presets/social_facility/shelter.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:social_facility"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:social_facility"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:social_facility"
@@ -5092,7 +5099,7 @@
             <text key="capacity" text="Capacity" />
             <reference ref="link_contact_address" />
         </item> <!-- Shelter -->
-        <item name="Food Bank" icon="styles/standard/social_facility/food_bank.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Food Bank" icon="presets/social_facility/food_bank.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:social_facility"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:social_facility"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Key:social_facility"
@@ -5107,8 +5114,8 @@
             <reference ref="link_contact_address" />
         </item> <!-- Food Bank -->
     </group> <!-- Social Facility -->
-    <group name="Facilities" icon="presets/telephone.png">
-        <item name="Toilets/Restrooms" icon="presets/toilet.png" type="node,closedway" preset_name_label="true">
+    <group name="Facilities" icon="presets/service/telephone.svg">
+        <item name="Toilets/Restrooms" icon="presets/service/toilets.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=toilets"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=toilets"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=toilets"
@@ -5136,7 +5143,7 @@
                 <reference ref="wheelchair" />
             </optional>
         </item> <!-- Toilets/Restrooms -->
-        <item name="Shower" icon="styles/standard/service/shower.svg" type="node,closedway" preset_name_label="true">
+        <item name="Shower" icon="presets/service/shower.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=shower"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=shower"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=shower" />
@@ -5150,7 +5157,7 @@
                 <reference ref="oh_wheelchair" />
             </optional>
         </item> <!-- Shower -->
-        <item name="Post Box" icon="styles/standard/service/post_box.png" type="node" preset_name_label="true">
+        <item name="Post Box" icon="presets/service/post_box.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=post_box"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=post_box"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=post_box"
@@ -5165,7 +5172,7 @@
             <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">
+        <item name="Telephone" icon="presets/service/telephone.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=telephone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=telephone"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=telephone"
@@ -5182,7 +5189,7 @@
             <check key="payment:telephone_cards" text="Telephone cards" />
             <preset_link preset_name="Payment Methods" />
         </item> <!-- Telephone -->
-        <item name="Internet Access" icon="presets/network-wireless.svg" type="node,closedway,multipolygon,relation" preset_name_label="true">
+        <item name="Internet Access" icon="presets/service/network-wireless.svg" type="node,closedway,multipolygon,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:internet_access"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:internet_access"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:internet_access"
@@ -5194,7 +5201,7 @@
             <space />
             <reference ref="internet" />
         </item> <!-- Internet Access -->
-        <item name="Clock" icon="styles/standard/service/clock.svg" type="node" preset_name_label="true">
+        <item name="Clock" icon="presets/service/clock.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=clock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=clock"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=clock"
@@ -5211,7 +5218,7 @@
                 <check key="hygrometer" text="Shows humidity" />
             </optional>
         </item> <!-- Clock -->
-        <item name="Recycling Container" icon="styles/standard/service/recycling/recycling_container.svg" type="node,closedway" preset_name_label="true">
+        <item name="Recycling Container" icon="presets/service/recycling/recycling_container.svg" type="node,closedway" preset_name_label="true">
            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=recycling"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=recycling"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=recycling"
@@ -5248,7 +5255,7 @@
                 <check key="recycling:waste" text="Waste" />
             </checkgroup>
         </item> <!-- Recycling Container-->
-        <item name="Recycling Centre" icon="styles/standard/service/recycling/recycling_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Recycling Centre" icon="presets/service/recycling/recycling_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
            <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=recycling"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=recycling"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=recycling"
@@ -5285,7 +5292,7 @@
             </checkgroup>
             <reference ref="link_contact_address_payment" />
         </item> <!-- Recycling Centre-->
-        <item name="Waste Basket/Trash Can" icon="styles/standard/service/recycling/trash-bin.png" type="node" preset_name_label="true">
+        <item name="Waste Basket/Trash Can" icon="presets/service/recycling/trash-bin.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=waste_basket"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=waste_basket"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=waste_basket"
@@ -5296,7 +5303,7 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=waste_basket" />
             <key key="amenity" value="waste_basket" />
         </item> <!-- Waste Basket/Trash Can -->
-        <item name="Waste Disposal/Dumpster" icon="styles/standard/service/recycling/waste_disposal.png" type="node" preset_name_label="true">
+        <item name="Waste Disposal/Dumpster" icon="presets/service/recycling/waste_disposal.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=waste_disposal"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:amenity=waste_disposal"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=waste_disposal"
@@ -5306,7 +5313,7 @@
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=waste_disposal" />
             <key key="amenity" value="waste_disposal" />
         </item> <!-- Waste Disposal/Dumpster -->
-        <item name="Sanitary Dump Station" icon="styles/standard/service/recycling/sanitary_dump_station.svg" type="node,closedway" preset_name_label="true">
+        <item name="Sanitary Dump Station" icon="presets/service/recycling/sanitary_dump_station.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Toilet_Holding_Tank_Disposal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Toilet_Holding_Tank_Disposal"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Toilet_Holding_Tank_Disposal"
@@ -5322,7 +5329,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">
+        <item name="Bench" icon="presets/leisure/bench.png" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bench"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bench"
                   et.href="http://wiki.openstreetmap.org/wiki/Et:Tag:amenity=bench"
@@ -5342,7 +5349,7 @@
             <combo key="colour" text="Color (HTML name or hexadecimal code)" values_context="color" values="black,brown,green,red,blue,gray,white,#CD853F" />
             <combo key="seats" text="Amount of Seats" values="2,3,4,5,6,7,8,9,10" />
         </item> <!-- Bench -->
-        <item name="Shelter" icon="styles/standard/accommodation/shelter.png" type="node,closedway" preset_name_label="true">
+        <item name="Shelter" icon="presets/accommodation/shelter.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=shelter"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=shelter"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=shelter"
@@ -5356,15 +5363,15 @@
             <text key="name" text="Name" />
             <check key="fireplace" text="Fireplace" />
             <combo key="shelter_type" text="Type of shelter" values_context="shelter" values_searchable="true">
-                <list_entry value="basic_hut" icon="styles/standard/accommodation/basic_hut_blue.png" />
-                <list_entry value="lean_to" icon="styles/standard/accommodation/shelter_lean_to.svg" />
-                <list_entry value="picnic_shelter" icon="styles/standard/accommodation/shelter_picnic_brown.png" />
-                <list_entry value="public_transport" icon="styles/standard/accommodation/shelter_public_transport_brown.png" />
-                <list_entry value="weather_shelter" icon="styles/standard/accommodation/shelter.png" />
-                <list_entry value="wildlife_hide" icon="styles/standard/accommodation/shelter.png" />
+                <list_entry value="basic_hut" icon="presets/accommodation/basic_hut_blue.png" />
+                <list_entry value="lean_to" icon="presets/accommodation/shelter_lean_to.svg" />
+                <list_entry value="picnic_shelter" icon="presets/accommodation/shelter_picnic_brown.png" />
+                <list_entry value="public_transport" icon="presets/accommodation/shelter_public_transport_brown.png" />
+                <list_entry value="weather_shelter" icon="presets/accommodation/shelter.svg" />
+                <list_entry value="wildlife_hide" icon="presets/accommodation/shelter.svg" />
             </combo>
         </item> <!-- Shelter -->
-        <item name="Hunting Stand" icon="presets/hunting_stand.png" type="node" preset_name_label="true">
+        <item name="Hunting Stand" icon="presets/landmark/hunting_stand.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=hunting_stand"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=hunting_stand"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=hunting_stand"
@@ -5378,7 +5385,7 @@
             <check key="lock" text="Lock" />
         </item> <!-- Hunting Stand -->
         <separator/>
-        <item name="Drinking Water" icon="styles/standard/food/drinking_water.png" type="node" preset_name_label="true">
+        <item name="Drinking Water" icon="presets/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"
@@ -5396,7 +5403,7 @@
                 <text key="description" text="Description" />
             </optional>
         </item> <!-- Drinking Water -->
-        <item name="Water Point" icon="styles/standard/accommodation/camping/water.png" type="node" preset_name_label="true">
+        <item name="Water Point" icon="presets/accommodation/water.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=water_point" />
             <space />
             <key key="amenity" value="water_point" />
@@ -5406,7 +5413,7 @@
                 <text key="description" text="Description" />
             </optional>
         </item> <!-- Water Point -->
-        <item name="Compressed Air" icon="styles/standard/vehicle/compressed_air.svg" type="node" preset_name_label="true">
+        <item name="Compressed Air" icon="presets/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"
@@ -5421,7 +5428,7 @@
             <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">
+        <item name="Advertising Column" icon="presets/leisure/advertising_column.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:advertising=column"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:advertising=column"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:advertising=column" />
@@ -5431,7 +5438,7 @@
                 <check key="lit" text="Lit" />
             </optional>
         </item> <!-- Advertising Column -->
-        <item name="Billboard" icon="styles/standard/leisure/billboard.svg" type="node" preset_name_label="true">
+        <item name="Billboard" icon="presets/leisure/billboard.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:advertising=billboard" />
             <space />
             <key key="advertising" value="billboard" />
@@ -5441,9 +5448,9 @@
         </item> <!-- Billboard -->   
     </group> <!-- Facilities -->
   </group>  <!-- Facilities -->
-  <group name="Sports" icon="styles/standard/sport/soccer.png">
-    <group name="Sport Facilities" icon="presets/stadium.png">
-        <item name="Stadium" icon="styles/standard/sport/stadium.png" type="node,closedway,multipolygon" preset_name_label="true">
+  <group name="Sports" icon="presets/sport/soccer.svg">
+    <group name="Sport Facilities" icon="presets/sport/stadium.png">
+        <item name="Stadium" icon="presets/sport/stadium.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=stadium"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=stadium"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=stadium"
@@ -5458,7 +5465,7 @@
             <reference ref="sport" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Stadium -->
-        <item name="Sports Centre" icon="styles/standard/sport/centre.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Sports Centre" icon="presets/sport/centre.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=sports_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=sports_centre"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:leisure=sports_centre"
@@ -5472,7 +5479,16 @@
             <reference ref="link_contact_address_payment" />
             <preset_link preset_name="Building" />
         </item> <!-- Sports Centre -->
-        <item name="Pitch" icon="styles/standard/sport/pitch.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fitness Centre" icon="presets/sport/fitness_centre.png" type="node,closedway,multipolygon" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=fitness_centre" />
+            <space />
+            <key key="leisure" value="fitness_centre" />
+            <text key="name" text="Name" />
+            <reference ref="sport" />
+            <reference ref="link_contact_address_payment" />
+            <preset_link preset_name="Building" />
+        </item> <!-- Fitness Centre -->
+        <item name="Pitch" icon="presets/sport/pitch.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=pitch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=pitch"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=pitch"
@@ -5490,7 +5506,7 @@
             <combo key="surface" text="Surface" values="artificial_turf,asphalt,clay,concrete,decoturf,grass,sand,tartan,ground" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Pitch -->
-        <item name="Racetrack" icon="styles/standard/sport/track.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Racetrack" icon="presets/sport/track.png" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=track"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=track"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:leisure=track"
@@ -5504,8 +5520,8 @@
             <combo key="sport" text="Sport" values="athletics,cycling,dog_racing,equestrian,horse_racing,running,roller_skating,ice_skating" values_context="sport" />
             <combo key="surface" text="Surface" values="artificial_turf,asphalt,clay,concrete,decoturf,grass,sand,tartan,ground" />
         </item> <!-- Racetrack -->
-        <group name="Golf" icon="styles/standard/sport/golf/golf.svg">
-                <item name="Golf Course" icon="styles/standard/sport/golf/golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <group name="Golf" icon="presets/sport/golf/golf.svg">
+                <item name="Golf Course" icon="presets/sport/golf/golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
                     <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                           de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                           es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5518,7 +5534,7 @@
                     <reference ref="name_oh_wheelchair" />
                 </item> <!-- Golf Course -->
             <separator/>
-            <item name="Tee" name_context="golf" icon="styles/standard/sport/golf/tee.svg" type="node,closedway" preset_name_label="true">
+            <item name="Tee" name_context="golf" icon="presets/sport/golf/tee.svg" type="node,closedway" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5529,7 +5545,7 @@
                 <space />
                 <key key="golf" value="tee" />
             </item> <!-- Tee -->
-            <item name="Hole" name_context="golf" icon="styles/standard/sport/golf/hole.svg" type="way" preset_name_label="true">
+            <item name="Hole" name_context="golf" icon="presets/sport/golf/hole.svg" type="way" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5546,7 +5562,7 @@
                     <combo key="handicap" text="Handicap rating" values="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18" />
                 </optional>
             </item> <!-- Hole -->
-            <item name="Pin" name_context="golf" icon="styles/standard/sport/golf/pin.svg" type="node" preset_name_label="true">
+            <item name="Pin" name_context="golf" icon="presets/sport/golf/pin.svg" type="node" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5559,13 +5575,13 @@
                 <text key="ref" text="Reference" />
             </item> <!-- Pin -->
             <separator/>
-            <item name="Bunker" name_context="golf" icon="styles/standard/sport/golf/bunker.svg" type="closedway" preset_name_label="true">
+            <item name="Bunker" name_context="golf" icon="presets/sport/golf/bunker.svg" type="closedway" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:golf=bunker" />
                 <space />
                 <key key="golf" value="bunker" />
                 <combo key="natural" text="Natural" text_context="golf" values="sand" default="sand" />
             </item> <!-- Bunker -->
-             <item name="Frontal Water hazard" name_context="golf" icon="styles/standard/sport/golf/water_hazard.svg" type="closedway" preset_name_label="true">
+             <item name="Frontal Water hazard" name_context="golf" icon="presets/sport/golf/water_hazard.svg" type="closedway" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5577,7 +5593,7 @@
                 <key key="golf" value="water_hazard" />
                 <key key="natural" value="water" match="keyvalue" />
             </item> <!-- Frontal Water hazard -->
-             <item name="Lateral water hazard" name_context="golf" icon="styles/standard/sport/golf/lateral_water_hazard.svg" type="closedway" preset_name_label="true">
+             <item name="Lateral water hazard" name_context="golf" icon="presets/sport/golf/lateral_water_hazard.svg" type="closedway" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5590,7 +5606,7 @@
                 <key key="natural" value="water" match="keyvalue" />
             </item> <!-- Lateral water hazard -->
             <separator/>
-            <item name="Green" name_context="golf" icon="styles/standard/sport/golf/green.svg" type="closedway,multipolygon" preset_name_label="true">
+            <item name="Green" name_context="golf" icon="presets/sport/golf/green.svg" type="closedway,multipolygon" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5601,13 +5617,13 @@
                 <space />
                 <key key="golf" value="green" />
             </item> <!-- Green -->
-            <item name="Fairway" name_context="golf" icon="styles/standard/sport/golf/fairway.svg" type="closedway,multipolygon" preset_name_label="true">
+            <item name="Fairway" name_context="golf" icon="presets/sport/golf/fairway.svg" type="closedway,multipolygon" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:golf=fairway" />
                 <space />
                 <key key="golf" value="fairway" />
                 <key key="surface" value="grass" match="keyvalue" />
             </item> <!-- Fairway -->
-            <item name="Rough" name_context="golf" icon="styles/standard/sport/golf/rough.svg" type="closedway,multipolygon" preset_name_label="true">
+            <item name="Rough" name_context="golf" icon="presets/sport/golf/rough.svg" type="closedway,multipolygon" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5619,7 +5635,7 @@
                 <key key="golf" value="rough" />
             </item> <!-- Rough -->
             <separator/>
-            <item name="Driving range" name_context="golf" icon="styles/standard/sport/golf/driving_range.svg" type="node,closedway" preset_name_label="true">
+            <item name="Driving range" name_context="golf" icon="presets/sport/golf/driving_range.svg" type="node,closedway" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=golf_course"
                       de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=golf_course"
                       es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=golf_course"
@@ -5631,7 +5647,7 @@
                 <key key="golf" value="driving_range" />
             </item> <!-- Driving range -->
         </group> <!-- Golf -->
-        <item name="Miniature Golf" icon="styles/standard/sport/miniature_golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Miniature Golf" icon="presets/sport/miniature_golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=miniature_golf"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=miniature_golf"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=miniature_golf"
@@ -5643,16 +5659,16 @@
             <reference ref="name_oh_wheelchair" />
         </item> <!-- Miniature Golf -->
     </group> <!-- Sport Facilities -->
-    <group name="Sport" icon="presets/rowing.png">
-        <item name="Multi" icon="styles/standard/sport/multi.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Sport" icon="presets/sport/multi.svg">
+        <item name="Multi" icon="presets/sport/multi.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=multi"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=multi" />
             <space />
             <key key="sport" value="multi" />
             <text key="name" text="Name" />
-            <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="running" />
+            <combo key="leisure" text="Type" values="pitch,sports_centre,fitness_centre,stadium,track" values_context="running" />
         </item> <!-- Multi -->
-        <item name="Nine-pin Bowling" icon="styles/standard/sport/10pin.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Nine-pin Bowling" icon="presets/sport/10pin.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=9pin"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=9pin" />
             <space />
@@ -5660,7 +5676,7 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Nine-pin Bowling -->
-        <item name="Ten-pin Bowling" icon="styles/standard/sport/10pin.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ten-pin Bowling" icon="presets/sport/10pin.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=10pin"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=10pin" />
             <space />
@@ -5668,7 +5684,7 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Ten-pin Bowling -->
-        <item name="Archery" icon="styles/standard/sport/archery.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Archery" icon="presets/sport/archery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=archery"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:sport=archery" />
             <space />
@@ -5676,21 +5692,21 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Archery -->
-        <item name="Track and Field Athletics" icon="presets/athletics.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Track and Field Athletics" icon="presets/sport/athletics.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sports=athletics" />
             <space />
             <key key="sport" value="athletics" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="running" default="track" />
         </item> <!-- Track and Field Athletics -->
-        <item name="Running" icon="styles/standard/sport/running.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Running" icon="presets/sport/running.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=running" />
             <space />
             <key key="sport" value="running" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="running" />
         </item> <!-- Running -->
-        <item name="Climbing" icon="styles/standard/sport/climbing.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Climbing" icon="presets/sport/climbing.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=climbing"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=climbing"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:sport=climbing"
@@ -5700,62 +5716,62 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="sports_centre" />
         </item> <!-- Climbing -->
-        <item name="Canoeing/Kayaking" icon="styles/standard/sport/canoe.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Canoeing/Kayaking" icon="presets/sport/canoe.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=canoe" />
             <space />
             <key key="sport" value="canoe" />
             <text key="name" text="Name" />
         </item> <!-- Canoeing/Kayaking -->
-        <item name="Cycling" icon="styles/standard/sport/cycling.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Cycling" icon="presets/sport/cycling.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=cycling" />
             <space />
             <key key="sport" value="cycling" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="racing" />
         </item> <!-- Cycling -->
-        <item name="Dog Racing" icon="styles/standard/leisure/dog.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Dog Racing" icon="presets/leisure/dog.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=dog_racing" />
             <space />
             <key key="sport" value="dog_racing" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="racing" />
         </item> <!-- Dog Racing -->
-        <item name="Equestrian" icon="presets/equestrian.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Equestrian" icon="presets/leisure/equestrian.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=equestrian" />
             <space />
             <key key="sport" value="equestrian" />
             <text key="name" text="Name" />
             <reference ref="riding_surface" />
         </item> <!-- Equestrian -->
-        <item name="Horse Racing" icon="styles/standard/sport/riding.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Horse Racing" icon="presets/sport/riding.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=horse_racing" />
             <space />
             <key key="sport" value="horse_racing" />
             <text key="name" text="Name" />
             <reference ref="riding_surface" />
         </item> <!-- Horse Racing -->
-        <item name="Gymnastics" icon="presets/gymnastics.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Gymnastics" icon="presets/sport/gymnastics.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=gymnastics" />
             <space />
             <key key="sport" value="gymnastics" />
             <text key="name" text="Name" />
-            <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
+            <combo key="leisure" text="Type" values="pitch,sports_centre,fitness_centre,stadium" />
         </item> <!-- Gymnastics -->
-        <item name="Ice Skating" icon="presets/skating.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ice Skating" icon="presets/sport/skating.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=ice_skating" />
             <space />
             <key key="sport" value="ice_skating" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="ice_rink,pitch,sports_centre,stadium" default="ice_rink" />
         </item> <!-- Ice Skating -->
-        <item name="Roller Skating" icon="styles/standard/sport/roller_skating.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Roller Skating" icon="presets/sport/roller_skating.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=roller_skating"/>
             <space />
             <key key="sport" value="roller_skating" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Roller Skating -->
-        <item name="Skateboard" icon="styles/standard/sport/skateboard.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Skateboard" icon="presets/sport/skateboard.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=skateboard"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=skateboard" />
             <space />
@@ -5763,7 +5779,7 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" default="pitch" values_context="racing" />
         </item> <!-- Skateboard -->
-        <item name="Swimming" icon="styles/standard/sport/pool.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Swimming" icon="presets/sport/swimming.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=swimming"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=swimming"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=swimming" />
@@ -5772,7 +5788,7 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="sports_centre,stadium,swimming_pool,water_park" default="swimming_pool" values_searchable="true" />
         </item> <!-- Swimming -->
-        <item name="Scuba Diving" icon="styles/standard/sport/scuba_diving.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Scuba Diving" icon="presets/sport/scuba_diving.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=scuba_diving"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=scuba_diving"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:sport=scuba_diving" />
@@ -5780,7 +5796,7 @@
             <key key="sport" value="scuba_diving" />
             <text key="name" text="Name" />
         </item> <!-- Scuba Diving -->
-        <item name="Skiing" icon="styles/standard/sport/skiing.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Skiing" icon="presets/sport/skiing.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Piste_Maps"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Piste_Maps"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Piste_Maps"
@@ -5793,7 +5809,7 @@
                 <combo key="piste:grooming" text="Grooming" values="classic,mogul,skating,classic;skating,scooter,backcountry" values_context="piste:grooming" />
             </optional>
         </item> <!-- Skiing -->
-        <item name="Shooting" icon="presets/range.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Shooting" icon="presets/sport/range.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=shooting"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=shooting"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:sport=shooting"
@@ -5805,8 +5821,8 @@
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Shooting -->
     </group> <!-- Sport -->
-    <group name="Sport (Ball)" icon="styles/standard/sport/soccer.png">
-        <item name="Soccer" icon="styles/standard/sport/soccer.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Sport (Ball)" icon="presets/sport/soccer.svg">
+        <item name="Soccer" icon="presets/sport/soccer.svg" type="node,closedway,multipolygon" 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"
@@ -5816,25 +5832,25 @@
             <key key="sport" value="soccer" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Soccer -->
-        <item name="Australian Football" icon="presets/football.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Australian Football" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=australian_football" />
             <space />
             <key key="sport" value="australian_football" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Australian Football -->
-        <item name="American Football" icon="presets/football.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="American Football" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=american_football" />
             <space />
             <key key="sport" value="american_football" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- American Football -->
-        <item name="Canadian Football" icon="presets/football.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Canadian Football" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=canadian_football" />
             <space />
             <key key="sport" value="canadian_football" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Canadian Football -->
-        <item name="Gaelic Games" icon="styles/standard/sport/soccer.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Gaelic Games" icon="presets/sport/soccer.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=gaelic_games" />
             <space />
             <key key="sport" value="gaelic_games" />
@@ -5846,61 +5862,61 @@
                 <check key="gaelic_games:rounders" text="Rounders" />
             </optional>
         </item> <!-- Gaelic Games -->
-        <item name="Rugby League" icon="presets/football.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Rugby League" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=rugby_league"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:sport=rugby_league" />
             <space />
             <key key="sport" value="rugby_league" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Rugby League -->
-        <item name="Rugby Union" icon="presets/football.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Rugby Union" icon="presets/sport/football.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=rugby_union"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:sport=rugby_union" />
             <space />
             <key key="sport" value="rugby_union" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Rugby Union -->
-        <item name="Baseball" icon="styles/standard/sport/baseball.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Baseball" icon="presets/sport/baseball.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=baseball" />
             <space />
             <key key="sport" value="baseball" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Baseball -->
-        <item name="Basketball" icon="presets/basketball.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Basketball" icon="presets/sport/basketball.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=basketball" />
             <space />
             <key key="sport" value="basketball" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Basketball -->
-        <item name="Handball" icon="styles/standard/sport/handball.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Handball" icon="presets/sport/handball.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=handball" />
             <space />
             <key key="sport" value="handball" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Handball -->
-        <item name="Volleyball" icon="styles/standard/sport/volleyball.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Volleyball" icon="presets/sport/volleyball.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=volleyball" />
             <space />
             <key key="sport" value="volleyball" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Volleyball -->
-        <item name="Beach Volleyball" icon="presets/beachvolleyball.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Beach Volleyball" icon="presets/sport/beachvolleyball.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=beachvolleyball" />
             <space />
             <key key="sport" value="beachvolleyball" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Beach Volleyball -->
-        <item name="Billiards" icon="styles/standard/sport/billiards.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Billiards" icon="presets/sport/billiards.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=billiards" />
             <space />
             <key key="sport" value="billiards" />
             <reference ref="name_operator" />
             <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" />
         </item> <!-- Billiards -->
-        <item name="Golf" icon="styles/standard/sport/golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Golf" icon="presets/sport/golf.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=golf"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=golf"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:sport=golf"
@@ -5910,52 +5926,52 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="golf_course,pitch,sports_centre,stadium" default="golf_course" />
         </item> <!-- Golf -->
-        <item name="Boule" icon="presets/boule.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Boule" icon="presets/sport/boule.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=boules" />
             <space />
             <key key="sport" value="boules" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Boule -->
-        <item name="Lawn Bowling" icon="presets/boule.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Lawn Bowling" icon="presets/sport/boule.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=bowls" />
             <space />
             <key key="sport" value="bowls" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Lawn Bowling -->
-        <item name="Cricket" icon="styles/standard/sport/cricket.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Cricket" icon="presets/sport/cricket.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=cricket" />
             <space />
             <key key="sport" value="cricket" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Cricket -->
-        <item name="Croquet" icon="styles/standard/sport/croquet.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Croquet" icon="presets/sport/croquet.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=croquet" />
             <space />
             <key key="sport" value="croquet" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Croquet -->
-        <item name="Field Hockey" icon="presets/field_hockey.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Field Hockey" icon="presets/sport/field_hockey.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=field_hockey" />
             <space />
             <key key="sport" value="field_hockey" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Field Hockey -->
-        <item name="Ice Hockey" icon="presets/ice_hockey.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ice Hockey" icon="presets/sport/ice_hockey.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=ice_hockey" />
             <space />
             <key key="sport" value="ice_hockey" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="ice_rink,pitch,sports_centre,stadium" />
         </item> <!-- Ice Hockey -->
-        <item name="Pelota" icon="presets/pelota.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Pelota" icon="presets/sport/pelota.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=pelota"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=pelota" />
             <space />
             <key key="sport" value="pelota" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Pelota -->
-        <item name="Racquetball" icon="styles/standard/sport/racquetball.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Racquetball" icon="presets/sport/racquetball.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=racquet"
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:sport=racquet" />
             <space />
@@ -5963,22 +5979,22 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Racquetball -->
-        <item name="Table Tennis/Ping-Pong" icon="presets/table_tennis.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Table Tennis/Ping-Pong" icon="presets/sport/table_tennis.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=table_tennis" />
             <space />
             <key key="sport" value="table_tennis" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium" />
         </item> <!-- Table Tennis/Ping-Pong -->
-        <item name="Tennis" icon="styles/standard/sport/tennis.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Tennis" icon="presets/sport/tennis.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=tennis" />
             <space />
             <key key="sport" value="tennis" />
             <reference ref="name_leisure_pitch" />
         </item> <!-- Tennis -->
     </group> <!-- Sport (Ball) -->
-    <group name="Motorsport" icon="presets/motorbike.png">
-        <item name="Motorsport" icon="styles/standard/sport/motor.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Motorsport" icon="presets/vehicle/motorbike.svg">
+        <item name="Motorsport" icon="presets/sport/motor.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=motor"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=motor" />
             <space />
@@ -5986,7 +6002,7 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,stadium,track" values_context="racing" />
         </item> <!-- Motorsport -->
-        <item name="Kart Racing" icon="presets/karting.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Kart Racing" icon="presets/sport/karting.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=karting"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=karting" />
             <space />
@@ -5994,7 +6010,7 @@
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,track" values_context="racing" />
         </item> <!-- Kart Racing -->
-        <item name="Motocross" icon="styles/standard/sport/motocross.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Motocross" icon="presets/sport/motocross.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=motocross"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:sport=motocross"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:sport=motocross" />
@@ -6004,14 +6020,14 @@
             <combo key="leisure" text="Type" values="pitch,sports_centre,track" values_context="racing" />
         </item> <!-- Motocross -->
         <separator/>
-        <item name="Model Aerodrome" icon="presets/plane.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Model Aerodrome" icon="presets/transport/airport.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=model_aerodrome" />
             <space />
             <key key="sport" value="model_aerodrome" />
             <text key="name" text="Name" />
             <combo key="leisure" text="Type" values="pitch,sports_centre,track" values_context="aerialway" />
         </item> <!-- Model Aerodrome -->
-        <item name="RC Car" icon="styles/standard/transport/car.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="RC Car" icon="presets/sport/rc_car.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=rc_car"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:sport"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:sport"
@@ -6031,9 +6047,9 @@
         </item> <!-- RC Car -->
     </group> <!-- Motorsport -->
   </group> <!-- Sports -->
-  <group name="Man Made" icon="presets/works.png">
-    <group name="Man Made" icon="presets/works.png">
-        <item name="Building" icon="styles/standard/misc/landmark/building.png" type="node,closedway,multipolygon" preset_name_label="true">
+  <group name="Man Made" icon="presets/landmark/works.svg">
+    <group name="Man Made" icon="presets/landmark/works.svg">
+        <item name="Building" icon="presets/landmark/building.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:building"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:building"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:building"
@@ -6057,7 +6073,7 @@
             </optional>
             <preset_link preset_name="Addresses" />
         </item> <!-- Building -->
-        <item name="Residential Building" icon="styles/standard/misc/landmark/building.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Residential Building" icon="presets/landmark/building.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:building"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:building"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:building"
@@ -6080,7 +6096,7 @@
             </optional>
             <preset_link preset_name="Addresses" />
         </item> <!-- Residential Building -->
-        <item name="Building part" icon="styles/standard/misc/landmark/building.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Building part" icon="presets/landmark/building.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:building:part"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:building:part"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:building:part"
@@ -6096,7 +6112,7 @@
             <text key="height" text="Height (meters)" />
             <text key="min_height" text="Skipped height (meters)" />
         </item> <!-- Building part -->
-        <item name="Entrance" icon="styles/standard/misc/entrance-yes.png" type="node" preset_name_label="true">
+        <item name="Entrance" icon="presets/misc/entrance-yes.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:entrance"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:entrance"
@@ -6107,12 +6123,12 @@
                   uk.href="http://wiki.openstreetmap.org/wiki/Uk:Key:entrance" />
             <space />
             <combo key="entrance" text="Entrance" values_context="entrance" default="yes" match="key">
-                <list_entry value="yes" icon="styles/standard/misc/entrance-yes.png" />
-                <list_entry value="main" icon="styles/standard/misc/entrance-main.png" />
-                <list_entry value="service" icon="styles/standard/misc/entrance-service.png" />
-                <list_entry value="exit" icon="styles/standard/misc/entrance-exit.png" />
-                <list_entry value="emergency" icon="styles/standard/misc/entrance-emergency.png" />
-                <list_entry value="staircase" icon="styles/standard/misc/entrance-yes.png" />
+                <list_entry value="yes" icon="presets/misc/entrance-yes.png" />
+                <list_entry value="main" icon="presets/misc/entrance-main.png" />
+                <list_entry value="service" icon="presets/misc/entrance-service.png" />
+                <list_entry value="exit" icon="presets/misc/entrance-exit.png" />
+                <list_entry value="emergency" icon="presets/misc/entrance-emergency.png" />
+                <list_entry value="staircase" icon="presets/misc/entrance-yes.png" />
             </combo>
             <combo key="access" text="Access" values="yes,delivery,private,no" />
             <reference ref="wheelchair" />
@@ -6121,7 +6137,7 @@
                 <text key="addr:flats" text="Flat numbers" />
             </optional>
         </item> <!-- Entrance -->
-        <item name="Tower" icon="styles/standard/misc/landmark/tower.png" type="node,closedway" preset_name_label="true">
+        <item name="Tower" icon="presets/landmark/tower.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=tower"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=tower"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=tower"
@@ -6139,7 +6155,7 @@
                 <text key="operator" text="Operator" />
             </optional>
         </item> <!-- Tower -->
-        <item name="Flagpole" icon="presets/flag.png" type="node" preset_name_label="true">
+        <item name="Flagpole" icon="presets/misc/flag.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=flagpole"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=flagpole"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=flagpole"
@@ -6148,7 +6164,7 @@
             <key key="man_made" value="flagpole" />
         </item> <!-- Flagpole -->
         <separator/>
-        <item name="Works" icon="styles/standard/misc/landmark/works.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Works" icon="presets/landmark/works.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=works"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=works"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=works"
@@ -6160,7 +6176,7 @@
             <key key="man_made" value="works" />
             <text key="name" text="Name" />
         </item> <!-- Works -->
-        <item name="Chimney" icon="presets/chimney.png" type="node,closedway" preset_name_label="true">
+        <item name="Chimney" icon="presets/landmark/chimney.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=chimney"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=chimney"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=chimney"
@@ -6170,7 +6186,7 @@
             <reference ref="name_operator" />
             <text key="height" text="Height (meters)" />
         </item> <!-- Chimney -->
-        <item name="Windmill" icon="styles/standard/misc/landmark/windmill.png" type="node,closedway" preset_name_label="true">
+        <item name="Windmill" icon="presets/landmark/windmill.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=windmill"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=windmill"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=windmill"
@@ -6183,7 +6199,7 @@
             <key key="man_made" value="windmill" />
             <text key="name" text="Name" />
         </item> <!-- Windmill -->
-        <item name="Gasometer" icon="presets/gasometer.png" type="node,closedway" preset_name_label="true">
+        <item name="Gasometer" icon="presets/landmark/gasometer.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=gasometer"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=gasometer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=gasometer" />
@@ -6195,7 +6211,7 @@
                 <text key="height" text="Height (meters)" length="7" />
             </optional>
         </item> <!-- Gasometer -->
-        <item name="Silo" icon="presets/silo.png" type="node,closedway" preset_name_label="true">
+        <item name="Silo" icon="presets/landmark/silo.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=silo" />
             <space />
             <key key="man_made" value="silo" />
@@ -6205,7 +6221,7 @@
                 <text key="height" text="Height (meters)" length="7" />
             </optional>
         </item> <!-- Silo -->
-        <item name="Storage Tank" icon="presets/storage_tank.png" type="node,closedway">
+        <item name="Storage Tank" icon="presets/landmark/storage_tank.svg" type="node,closedway">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=storage_tank"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=storage_tank"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=storage_tank"
@@ -6218,7 +6234,7 @@
                 <text key="height" text="Height (meters)" length="7" />
             </optional>
         </item> <!-- Storage Tank -->
-        <item name="Bunker Silo" icon="styles/standard/bunker_silo.svg" type="node,closedway" preset_name_label="true">
+        <item name="Bunker Silo" icon="presets/landmark/bunker_silo.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=bunker_silo"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=bunker_silo"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=bunker_silo"
@@ -6229,7 +6245,7 @@
                 <reference ref="name_operator" />
             </optional>
         </item> <!-- Bunker Silo -->
-        <item name="Crane" icon="presets/crane.png" type="node,way,closedway" preset_name_label="true">
+        <item name="Crane" icon="presets/landmark/crane.svg" type="node,way,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=crane"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=crane"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=crane"
@@ -6240,7 +6256,7 @@
             <key key="man_made" value="crane" />
             <text key="name" text="Name" />
         </item> <!-- Crane -->
-        <item name="Mineshaft" icon="presets/mineshaft.png" type="node,closedway" preset_name_label="true">
+        <item name="Mineshaft" icon="presets/landmark/mine.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=mineshaft"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=mineshaft"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=mineshaft"
@@ -6257,7 +6273,7 @@
             <check key="headframe" text="Visible Headframe" />
             <check key="disused" text="Disused" />
         </item> <!-- Mineshaft -->
-        <item name="Adit" icon="presets/adit.png" type="node" preset_name_label="true">
+        <item name="Adit" icon="presets/landmark/adit.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=adit"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=adit"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=adit"
@@ -6274,7 +6290,7 @@
             <combo key="resource" text="Resource" values="aggregate,bauxite,coal,copper,dimension_stone,gold,ilmenite,iron_ore,lead,limestone,nickel,rutile,salt,silver,tin,zinc,zircon" />
             <check key="disused" text="Disused" />
         </item> <!-- Adit -->
-        <item name="Embankment" icon="styles/standard/misc/embankment.svg" type="way" preset_name_label="true">
+        <item name="Embankment" icon="presets/misc/embankment.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=embankment"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=embankment"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=embankment"
@@ -6285,7 +6301,7 @@
             <key key="man_made" value="embankment" />
         </item> <!-- Embankment -->
         <separator/>
-        <item name="Pipeline" icon="presets/path.png" type="way" preset_name_label="true">
+        <item name="Pipeline" icon="presets/misc/path.png" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=pipeline"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=pipeline"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=pipeline"
@@ -6298,7 +6314,7 @@
             <reference ref="operator_substance" />
             <combo key="location" text="Location" values="underground,underwater,overground" values_context="pipeline" />
         </item> <!-- Pipeline -->
-        <item name="Pipeline Marker" icon="styles/standard/misc/pipeline_marker.svg" type="node" preset_name_label="true">
+        <item name="Pipeline Marker" icon="presets/misc/pipeline_marker.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:pipeline=marker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:pipeline=marker"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:pipeline=marker" />
@@ -6308,7 +6324,7 @@
             <reference ref="operator_substance" />
             <reference ref="support" />
         </item> <!-- Pipeline Marker -->
-        <item name="Pipeline Valve" icon="styles/standard/misc/valve.svg" type="node" preset_name_label="true">
+        <item name="Pipeline Valve" icon="presets/misc/valve.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:pipeline=valve"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:pipeline=valve" />
             <space />
@@ -6317,7 +6333,7 @@
             <reference ref="operator_substance" />
         </item> <!-- Pipeline Valve -->
         <separator/>
-        <item name="Water Tower" icon="styles/standard/misc/landmark/water_tower.svg" type="node,closedway" preset_name_label="true">
+        <item name="Water Tower" icon="presets/landmark/water_tower.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=water_tower"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=water_tower"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=water_tower"
@@ -6332,7 +6348,7 @@
                 <text key="height" text="Height (meters)" length="7" />
             </optional>
         </item> <!-- Water Tower -->
-        <item name="Water Works" icon="presets/water_works.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Water Works" icon="presets/landmark/water_works.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=water_works"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=water_works"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=water_works"
@@ -6344,7 +6360,7 @@
             <key key="man_made" value="water_works" />
             <reference ref="name_operator" />
         </item> <!-- Water Works -->
-        <item name="Wastewater Treatment Plant" icon="presets/wastewater_plant.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Wastewater Treatment Plant" icon="presets/landmark/wastewater_plant.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=wastewater_plant"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=wastewater_plant"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=wastewater_plant"
@@ -6358,7 +6374,7 @@
             <key key="man_made" value="wastewater_plant" />
             <text key="name" text="Name" />
         </item> <!-- Wastewater Treatment Plant -->
-        <item name="Watermill" icon="styles/standard/misc/landmark/watermill.png" type="node,closedway" preset_name_label="true">
+        <item name="Watermill" icon="presets/landmark/watermill.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=watermill"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=watermill"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=watermill"
@@ -6372,7 +6388,7 @@
             <key key="man_made" value="watermill" />
             <text key="name" text="Name" />
         </item> <!-- Watermill -->
-        <item name="Fountain" icon="styles/standard/misc/fountain.png" type="node,closedway" preset_name_label="true">
+        <item name="Fountain" icon="presets/misc/fountain.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fountain"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fountain"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fountain"
@@ -6386,7 +6402,7 @@
             <key key="amenity" value="fountain" />
             <text key="name" text="Name" />
         </item> <!-- Fountain -->
-        <item name="Water Well" icon="presets/water_well.png" type="node,closedway" preset_name_label="true">
+        <item name="Water Well" icon="presets/landmark/water_well.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=water_well"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=water_well"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=water_well"
@@ -6401,7 +6417,7 @@
             <text key="name" text="Name" />
         </item> <!-- Water Well -->
         <separator/>
-        <item name="Lighthouse" icon="styles/standard/misc/landmark/lighthouse.png" type="node,closedway" preset_name_label="true">
+        <item name="Lighthouse" icon="presets/landmark/lighthouse.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=lighthouse"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=lighthouse"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=lighthouse"
@@ -6412,7 +6428,7 @@
             <key key="man_made" value="lighthouse" />
             <text key="name" text="Name" />
         </item> <!-- Lighthouse -->
-        <item name="Beacon" icon="styles/standard/misc/landmark/beacon.png" type="node,closedway" preset_name_label="true">
+        <item name="Beacon" icon="presets/landmark/beacon.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=beacon"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:man_made=beacon"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:man_made=beacon" />
@@ -6420,7 +6436,7 @@
             <key key="man_made" value="beacon" />
             <text key="name" text="Name" />
         </item> <!-- Beacon -->
-        <item name="Street Lamp" icon="styles/standard/misc/streetlamp.png" type="node" preset_name_label="true">
+        <item name="Street Lamp" icon="presets/misc/streetlamp.png" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=street_lamp"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=street_lamp"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:highway=street_lamp"
@@ -6429,7 +6445,7 @@
             <key key="highway" value="street_lamp" />
             <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">
+        <item name="Monitoring Station" icon="presets/misc/monitoring_station.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=monitoring_station"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=monitoring_station"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=monitoring_station"
@@ -6467,7 +6483,7 @@
                 <check key="display:digital" text="Digital" />
             </checkgroup>
         </item> <!-- Monitoring Station -->
-        <item name="Survey Point" icon="styles/standard/misc/landmark/survey_point.png" type="node" preset_name_label="true">
+        <item name="Survey Point" icon="presets/landmark/survey_point.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=survey_point"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=survey_point"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=survey_point"
@@ -6481,7 +6497,7 @@
             <text key="ref" text="Reference" />
             <text key="ele" text="Elevation" />
         </item> <!-- Survey Point -->
-        <item name="Surveillance Camera" icon="presets/surveillance.png" type="node,closedway" preset_name_label="true">
+        <item name="Surveillance Camera" icon="presets/service/surveillance.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=surveillance"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=surveillance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=surveillance"
@@ -6511,8 +6527,8 @@
             </optional>
         </item> <!-- Surveillance Camera -->
     </group> <!-- Man Made -->
-    <group name="Bridges" icon="styles/standard/transport/bridge/bridge.svg">
-        <item name="Bridge" icon="styles/standard/transport/bridge/bridge.svg" type="way,relation,multipolygon" preset_name_label="true">
+    <group name="Bridges" icon="presets/transport/bridge/bridge.svg">
+        <item name="Bridge" icon="presets/transport/bridge/bridge.svg" type="way,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:bridge"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:bridge"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:bridge"
@@ -6530,7 +6546,7 @@
             <combo key="bridge:structure" text="Structure" values="arch,beam,truss,floating,suspension,cable-stayed,simple-suspension,humpback" match="key" />
             <reference ref="optional_bridge" />
         </item> <!-- Bridge -->
-        <item name="Movable Bridge" icon="styles/standard/transport/bridge/bridge_movable.svg" type="way,relation,multipolygon" preset_name_label="true">
+        <item name="Movable Bridge" icon="presets/transport/bridge/bridge_movable.svg" type="way,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:bridge:movable"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:bridge:movable"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:bridge:movable" />
@@ -6539,12 +6555,12 @@
             <combo key="bridge:movable" text="Type" values="bascule,drawbridge,lift,submersible,swing,transporter" match="key" />
             <reference ref="optional_bridge" />
         </item> <!-- Movable Bridge -->
-        <item name="Bridge Support" icon="styles/standard/transport/bridge/bridge_support.svg" type="node,closedway" preset_name_label="true">
+        <item name="Bridge Support" icon="presets/transport/bridge/bridge_support.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:bridge:support" />
             <space />
             <combo key="bridge:support" text="Type" values="pier,abutment,lift_pier,pivot_pier" match="key" />
         </item> <!-- Bridge Support -->
-        <item name="Bridge outline" icon="styles/standard/transport/bridge/bridge_outline.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Bridge outline" icon="presets/transport/bridge/bridge_outline.svg" type="closedway,multipolygon" 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"
@@ -6557,8 +6573,8 @@
             </optional>
         </item> <!-- Bridge outline -->
     </group> <!-- Bridges -->
-    <group name="Military" name_context="preset group" icon="presets/military.png">
-        <item name="Airfield" icon="styles/standard/transport/airport/airfield.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Military" name_context="preset group" icon="presets/landuse/military.svg">
+        <item name="Airfield" icon="presets/transport/airport/airfield.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:military=airfield"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=airfield"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:military=airfield"
@@ -6574,7 +6590,7 @@
             <space />
             <key key="military" value="barracks" />
         </item> <!-- Barracks -->
-        <item name="Bunker" icon="styles/standard/misc/landmark/bunker.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bunker" icon="presets/landmark/bunker.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:military=bunker"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:military=bunker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=bunker"
@@ -6589,7 +6605,7 @@
             <check key="historic" text="Historic" />
             <check key="ruins" text="Ruins" />
         </item> <!-- Bunker -->
-        <item name="Range" icon="styles/standard/misc/landmark/range.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Range" icon="presets/sport/range.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:military=range"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:military=range"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:military=range" />
@@ -6597,8 +6613,8 @@
             <key key="military" value="range" />
         </item> <!-- Range -->
     </group> <!-- Military -->
-    <group name="Power" icon="styles/standard/power/power.svg">
-        <item name="Power Plant" icon="styles/standard/power/plant.svg" type="closedway,relation,multipolygon" preset_name_label="true">
+    <group name="Power" icon="presets/power/power.svg">
+        <item name="Power Plant" icon="presets/power/plant.svg" type="closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=plant"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=plant"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=plant"
@@ -6622,22 +6638,22 @@
                 <reference ref="voltage_frequency" />
             </optional>
         </item> <!-- Power Plant -->
-        <group name="Power Generator" icon="styles/standard/power/generator.svg">
-            <item name="Biofuel Power Generator" icon="presets/power_source-biofuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <group name="Power Generator" icon="presets/power/generator.svg">
+            <item name="Biofuel Power Generator" icon="presets/power/power_source-biofuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="biofuel" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="gas_turbine,reciprocating_engine,steam_generator" />
                 <reference ref="power_output" />
             </item> <!-- Power Generator -->
-            <item name="Biogas Power Generator" icon="presets/power_source-biofuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Biogas Power Generator" icon="presets/power/power_source-biofuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="biogas" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="reciprocating_engine,steam_generator" />
                 <reference ref="power_output" />
             </item> <!-- Biogas Power Generator -->
-            <item name="Biomass Power Generator" icon="presets/power_source-biofuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Biomass Power Generator" icon="presets/power/power_source-biofuel.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="biomass" />
                 <reference ref="power_generator" />
                 <combo key="generator:method" text="Method" values_context="generator method" values="anaerobic_digestion,combustion,gasification" />
@@ -6649,42 +6665,42 @@
                 </combo>
                 <reference ref="power_output" />
             </item> <!-- Biomass Power Generator -->
-            <item name="Coal Power Generator" icon="presets/power_source-coal.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Coal Power Generator" icon="presets/power/power_source-coal.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="coal" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="steam_generator,steam_turbine" />
                 <reference ref="power_output" />
             </item> <!-- Coal Power Generator -->
-            <item name="Gas Power Generator" icon="presets/power_source-gas.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Gas Power Generator" icon="presets/power/power_source-gas.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="gas" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="combined_cycle,gas_turbine,reciprocating_engine,steam_generator,steam_turbine" />
                 <reference ref="power_output" />
             </item> <!-- Gas Power Generator -->
-            <item name="Oil Power Generator" icon="presets/power_source-oil.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Oil Power Generator" icon="presets/power/power_source-oil.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="oil" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="steam_generator,steam_turbine" />
                 <reference ref="power_output" />
             </item> <!-- Oil Power Generator -->
-            <item name="Diesel Power Generator" icon="presets/power_source-oil.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Diesel Power Generator" icon="presets/power/power_source-oil.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="diesel" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="reciprocating_engine,steam_generator" />
                 <reference ref="power_output" />
             </item> <!-- Diesel Power Generator -->
-            <item name="Gasoline Power Generator" icon="presets/power_source-oil.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Gasoline Power Generator" icon="presets/power/power_source-oil.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="gasoline" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="combustion" />
                 <combo key="generator:type" text="Generator Type" values="reciprocating_engine,steam_generator" />
                 <reference ref="power_output" />
             </item> <!-- Gasoline Power Generator -->
-            <item name="Nuclear Reactor" icon="presets/power_source-nuclear.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Nuclear Reactor" icon="presets/power/power_source-nuclear.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="nuclear" />
                 <reference ref="power_generator" />
                 <combo key="generator:method" text="Method" values_context="generator method" values="fission,fusion" />
@@ -6709,7 +6725,7 @@
                 </combo>
                 <reference ref="power_output" />
             </item> <!-- Nuclear Reactor -->
-            <item name="Solar Power Generator" icon="presets/power_source-sun.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Solar Power Generator" icon="presets/power/power_source-sun.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="solar" />
                 <reference ref="power_generator" />
                 <combo key="generator:method" text="Method" values_context="generator method" values="photovoltaic,thermal" />
@@ -6720,7 +6736,7 @@
                 </combo>
                 <reference ref="power_output" />
             </item> <!-- Solar Power Generator -->
-            <item name="Waste Power Generator" icon="presets/power_source-waste.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Waste Power Generator" icon="presets/power/power_source-waste.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="waste" />
                 <reference ref="power_generator" />
                 <combo key="generator:method" text="Method" values_context="generator method" values="combustion,gasification,pyrolysis" />
@@ -6733,7 +6749,7 @@
                 <combo key="generator:type" text="Generator Type" values="bioreactor,reciprocating_engine,steam_generator" />
                 <reference ref="power_output" />
             </item> <!-- Waste Power Generator -->
-            <item name="Water Turbine" icon="presets/power_source-water.svg" type="node,closedway" preset_name_label="true">
+            <item name="Water Turbine" icon="presets/power/power_source-water.svg" type="node,closedway" preset_name_label="true">
                 <key key="generator:source" value="hydro" />
                 <reference ref="power_generator" />
                 <combo key="generator:method" text="Method" values_context="generator method" values="run-of-the-river,water-pumped-storage,water-storage" />
@@ -6745,7 +6761,7 @@
                 </combo>
                 <reference ref="power_output" />
             </item> <!-- Water Turbine -->
-            <item name="Tidal Water Turbine" icon="presets/power_source-water.svg" type="node,closedway" preset_name_label="true">
+            <item name="Tidal Water Turbine" icon="presets/power/power_source-water.svg" type="node,closedway" preset_name_label="true">
                 <key key="generator:source" value="tidal" />
                 <reference ref="power_generator" />
                 <combo key="generator:method" text="Method" values_context="generator method" values="barrage,stream" />
@@ -6756,23 +6772,23 @@
                 </combo>
                 <reference ref="power_output" />
             </item> <!-- Tidal Water Turbine -->
-            <item name="Wave Energy Converter" icon="presets/power_source-water.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Wave Energy Converter" icon="presets/power/power_source-water.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="wave" />
                 <reference ref="power_generator" />
                 <reference ref="power_output" />
             </item> <!-- Wave Energy Converter -->
-            <item name="Osmotic Power Generator" icon="presets/power_source-water.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Osmotic Power Generator" icon="presets/power/power_source-water.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="osmotic" />
                 <reference ref="power_generator" />
                 <reference ref="power_output" />
             </item> <!-- Osmotic Power Generator -->
-            <item name="Geothermal Power Generator" icon="presets/power_source-geothermal.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <item name="Geothermal Power Generator" icon="presets/power/power_source-geothermal.svg" type="node,closedway,multipolygon" preset_name_label="true">
                 <key key="generator:source" value="geothermal" />
                 <reference ref="power_generator" />
                 <combo key="generator:type" text="Generator Type" values="heat_pump,steam_turbine" />
                 <reference ref="power_output" />
             </item> <!-- Geothermal Power Generator -->
-            <item name="Wind Turbine" icon="presets/power_source-wind.svg" type="node,closedway" preset_name_label="true">
+            <item name="Wind Turbine" icon="presets/power/power_source-wind.svg" type="node,closedway" preset_name_label="true">
                 <key key="generator:source" value="wind" />
                 <reference ref="power_generator" />
                 <key key="generator:method" value="wind_turbine" />
@@ -6781,7 +6797,7 @@
             </item> <!-- Wind Turbine -->
         </group> <!-- Power Generator -->
         <separator/>
-        <item name="Power Substation" icon="styles/standard/power/substation.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Power Substation" icon="presets/power/substation.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=substation"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
@@ -6798,7 +6814,7 @@
                 <check key="gas_insulated" text="Gas insulated" />
             </optional>
         </item> <!-- Power Substation -->
-        <item name="Power Transformer" icon="styles/standard/power/transformer.svg" type="node" preset_name_label="true">
+        <item name="Power Transformer" icon="presets/power/transformer.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=transformer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=transformer"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=transformer"
@@ -6814,7 +6830,7 @@
                 <combo key="phases" text="Phases" values="1,3" length="1" />
             </optional>
         </item> <!-- Power Transformer -->
-        <item name="Power Switchgear" icon="styles/standard/power/switchgear.svg" type="closedway" preset_name_label="true">
+        <item name="Power Switchgear" icon="presets/power/switchgear.svg" type="closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=switch"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
@@ -6830,7 +6846,7 @@
                 <check key="gas_insulated" text="Gas insulated" />
             </optional>
         </item> <!-- Power Switchgear -->
-        <item name="Power Busbar" icon="styles/standard/power/busbar.svg" type="way" preset_name_label="true">
+        <item name="Power Busbar" icon="presets/power/busbar.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:line=busbar"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
@@ -6841,7 +6857,7 @@
             <key key="line" value="busbar" />
             <reference ref="power_line_extra" />
         </item> <!-- Power Busbar -->
-        <item name="Power Bay" icon="styles/standard/power/bay.svg" type="way" preset_name_label="true">
+        <item name="Power Bay" icon="presets/power/bay.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:line=bay"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
@@ -6852,13 +6868,13 @@
             <key key="line" value="bay" />
             <reference ref="power_line_extra" />
         </item> <!-- Power Bay -->
-        <item name="Power Switch" icon="styles/standard/power/switch.svg" type="node" preset_name_label="true">
+        <item name="Power Switch" icon="presets/power/switch.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=switch" />
             <space />
             <key key="power" value="switch" />
         </item> <!-- Power Switch -->
         <separator/>
-        <item name="Power Converter" icon="styles/standard/power/converter.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Power Converter" icon="presets/power/converter.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=converter"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
@@ -6874,7 +6890,7 @@
                 <combo key="rating" text="Power rating (MVA)" values="15 MVA,50 MVA,100 MVA" />
             </optional>
         </item> <!-- Power Converter -->
-        <item name="Power Compensator" icon="styles/standard/power/compensator.svg" type="node,closedway" preset_name_label="true">
+        <item name="Power Compensator" icon="presets/power/compensator.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=compensator"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=substation"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=substation"
@@ -6890,16 +6906,16 @@
             </optional>
         </item> <!-- Power Compensator -->
         <separator/>
-        <item name="Power Street Cabinet" icon="styles/standard/power/cable_distribution_cabinet.svg" type="node" preset_name_label="true">
+        <item name="Power Street Cabinet" icon="presets/power/cable_distribution_cabinet.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=street_cabinet" />
             <space />
             <key key="man_made" value="street_cabinet" />
             <key key="street_cabinet" value="power" />
-            <combo key="voltage" text="Voltage in Volts (V)" values="600,400,220,110,low" /> <!-- Recheck values -->
+            <combo key="voltage" text="Voltage in Volts (V)" values="600,400,220,110" /> <!-- Recheck values -->
             <reference ref="ref_operator_branch" />
         </item> <!-- Power Street Cabinet -->
         <separator/>
-        <item name="Transformer Tower" icon="styles/standard/power/transformer_tower.svg" type="node,closedway" preset_name_label="true">
+        <item name="Transformer Tower" icon="presets/power/transformer_tower.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:building=transformer_tower" />
             <space />
             <key key="building" value="transformer_tower" />
@@ -6907,7 +6923,7 @@
             <reference ref="ref_operator_branch" />
             <preset_link preset_name="Power Substation" />
         </item> <!-- Transformer Tower -->
-        <item name="Power Portal" icon="styles/standard/power/portal.svg" type="node,way" preset_name_label="true">
+        <item name="Power Portal" icon="presets/power/portal.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=portal"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=portal" />
             <space />
@@ -6919,7 +6935,7 @@
             <reference ref="ref_operator_branch" />
             <combo key="design" text="Portal design" values="portal,portal_two-level,portal_three-level" values_context="power" />
         </item> <!-- Power Portal -->
-        <item name="Power Tower" icon="styles/standard/power/tower.svg" type="node" preset_name_label="true">
+        <item name="Power Tower" icon="presets/power/tower.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=tower"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=tower"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:power=tower"
@@ -6946,7 +6962,7 @@
                 <check key="location:transition" text="Location transition" disable_off="true" />
             </optional>
         </item> <!-- Power Tower -->
-        <item name="Pole" icon="styles/standard/power/pole.svg" type="node" preset_name_label="true">
+        <item name="Pole" icon="presets/power/pole.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=pole"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=pole"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:power=pole"
@@ -6964,7 +6980,7 @@
             <check key="location:transition" text="Location transition" disable_off="true" />
             <reference ref="ref_operator_branch" />
         </item> <!-- Pole -->
-        <item name="Pole with Transformer" icon="styles/standard/power/pole_transformer.svg" type="node" preset_name_label="true">
+        <item name="Pole with Transformer" icon="presets/power/pole_transformer.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=pole"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=pole"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:power=pole"
@@ -6989,13 +7005,13 @@
                 <combo key="phases" text="Phases" values="1,3" length="1" />
             </optional>
         </item> <!-- Pole with Transformer-->
-        <item name="Insulator" icon="styles/standard/power/insulator.svg" type="node,way" preset_name_label="true">
+        <item name="Insulator" icon="presets/power/insulator.svg" type="node,way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=insulator" />
             <space />
             <key key="power" value="insulator" />
             <reference ref="ref_operator_branch" />
         </item> <!-- Insulator -->
-        <item name="Power Line" icon="styles/standard/power/line.svg" type="way" preset_name_label="true">
+        <item name="Power Line" icon="presets/power/line.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=line"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=line"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:power=line"
@@ -7015,7 +7031,7 @@
                 <check key="communication" text="Used for data communications" value_on="line" value_off="" default="off" />
             </optional>
         </item> <!-- Power Line -->
-        <item name="Power Cable" icon="styles/standard/power/cable.svg" type="way" preset_name_label="true">
+        <item name="Power Cable" icon="presets/power/cable.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:power=cable"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=cable"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:power=cable" />
@@ -7031,8 +7047,8 @@
             </optional>
         </item> <!-- Power Cable -->
     </group> <!-- Power -->
-    <group name="Historic Places" icon="styles/standard/sightseeing/castle.svg">
-        <item name="Castle" icon="styles/standard/sightseeing/castle.svg" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Historic Places" icon="presets/sightseeing/castle.svg">
+        <item name="Castle" icon="presets/sightseeing/castle.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=castle"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=castle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=castle"
@@ -7045,7 +7061,7 @@
             <check key="ruins" text="Ruins" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Castle -->
-        <item name="Ruins" icon="presets/ruins.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ruins" icon="presets/sightseeing/ruins.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=ruins"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:historic=ruins"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=ruins"
@@ -7057,7 +7073,7 @@
             <key key="historic" value="ruins" />
             <reference ref="name_oh_wheelchair" />
         </item> <!-- Ruins -->
-        <item name="Archaeological Site" icon="styles/standard/sightseeing/archaeological.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Archaeological Site" icon="presets/sightseeing/archaeological.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=archaeological_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=archaeological_site"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=archaeological_site"
@@ -7069,7 +7085,7 @@
             <key key="historic" value="archaeological_site" />
             <reference ref="name_oh_wheelchair" />
         </item> <!-- Archaeological Site -->
-        <item name="Battlefield" icon="presets/battlefield.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Battlefield" icon="presets/sightseeing/battlefield.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=battlefield"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=battlefield"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=battlefield"
@@ -7081,7 +7097,7 @@
             <key key="historic" value="battlefield" />
             <text key="name" text="Name" />
         </item> <!-- Battlefield -->
-        <item name="Palaeontological Site" icon="presets/palaeontological_site.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Palaeontological Site" icon="presets/sightseeing/palaeontological_site.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:geological=palaeontological_site"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:geological=palaeontological_site"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:geological=palaeontological_site"
@@ -7092,7 +7108,7 @@
             <text key="name" text="Name" />
         </item> <!-- Palaeontological Site -->
         <separator/>
-        <item name="Monument" icon="presets/monument.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Monument" icon="presets/sightseeing/monument.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=monument"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=monument"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=monument"
@@ -7105,7 +7121,7 @@
             <key key="historic" value="monument" />
             <text key="name" text="Name" />
         </item> <!-- Monument -->
-        <item name="Memorial" icon="presets/memorial.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Memorial" icon="presets/sightseeing/memorial.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=memorial"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=memorial"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=memorial"
@@ -7125,7 +7141,7 @@
                 <text key="wikipedia" text="Wikipedia" />
             </optional>
         </item> <!-- Memorial -->
-        <item name="Wayside Cross" icon="presets/wayside_cross.png" type="node,closedway" preset_name_label="true">
+        <item name="Wayside Cross" icon="presets/religion/wayside_cross.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=wayside_cross"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=wayside_cross"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=wayside_cross"
@@ -7140,7 +7156,7 @@
             <text key="start_date" text="Start date" />
             <text key="inscription" text="Inscription" />
         </item> <!-- Wayside Cross -->
-        <item name="Wayside Shrine" icon="presets/wayside_shrine.png" type="node,closedway" preset_name_label="true">
+        <item name="Wayside Shrine" icon="presets/religion/wayside_shrine.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=wayside_shrine"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=wayside_shrine"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=wayside_shrine"
@@ -7159,7 +7175,7 @@
             <text key="start_date" text="Start date" />
             <text key="inscription" text="Inscription" />
         </item> <!-- Wayside Shrine -->
-        <item name="Boundary Stone" icon="styles/standard/historic/boundary_stone.png" type="node,closedway" preset_name_label="true">
+        <item name="Boundary Stone" icon="presets/misc/boundary_stone.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=boundary_stone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=boundary_stone"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:historic=boundary_stone"
@@ -7172,9 +7188,9 @@
         </item> <!-- Boundary Stone -->
     </group> <!-- Historic Places -->
   </group> <!-- Man Made -->
-  <group name="Shops" icon="styles/standard/shop/mall.png">
-    <group name="Food" icon="styles/standard/shop/supermarket.svg">
-        <item name="Supermarket" icon="styles/standard/shop/supermarket.svg" type="node,closedway,multipolygon" preset_name_label="true">
+  <group name="Shops" icon="presets/shop/mall.svg">
+    <group name="Food" icon="presets/shop/supermarket.svg">
+        <item name="Supermarket" icon="presets/shop/supermarket.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=supermarket"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=supermarket"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=supermarket"
@@ -7188,7 +7204,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Supermarket -->
-        <item name="Convenience Store" icon="presets/convenience.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Convenience Store" icon="presets/shop/convenience.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=convenience"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=convenience"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=convenience"
@@ -7202,7 +7218,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Convenience Store -->
-        <item name="Kiosk" icon="presets/kiosk.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Kiosk" icon="presets/shop/kiosk.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=kiosk"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=kiosk"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=kiosk"
@@ -7217,7 +7233,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Kiosk -->
         <separator/>
-        <item name="Bakery" icon="presets/baker.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bakery" icon="presets/shop/groceries/bakery.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bakery"
                   ar.href="http://wiki.openstreetmap.org/wiki/Ar:Tag:shop=bakery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bakery"
@@ -7234,7 +7250,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bakery -->
-        <item name="Butcher" icon="styles/standard/shop/groceries/butcher.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Butcher" icon="presets/shop/groceries/butcher.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=butcher"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=butcher"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=butcher"
@@ -7249,7 +7265,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Butcher -->
-        <item name="Seafood" icon="presets/seafood.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Seafood" icon="presets/shop/groceries/seafood.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=seafood"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=seafood"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=seafood"
@@ -7261,7 +7277,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Seafood -->
-        <item name="Deli (Fine Food)" icon="presets/deli.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Deli (Fine Food)" icon="presets/shop/groceries/deli.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=deli"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=deli"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=deli"
@@ -7274,7 +7290,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Deli (Fine Food) -->
-        <item name="Candy Store" icon="presets/confectionery.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Candy Store" icon="presets/shop/groceries/confectionery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=confectionery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=confectionery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=confectionery"
@@ -7289,7 +7305,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Candy Store -->
-        <item name="Tea" icon="styles/standard/shop/groceries/tea.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Tea" icon="presets/shop/groceries/tea.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tea"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tea"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=tea"
@@ -7299,7 +7315,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Tea -->
-        <item name="Coffee" icon="styles/standard/shop/groceries/coffee.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Coffee" icon="presets/shop/groceries/coffee.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=coffee"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=coffee"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=coffee" />
@@ -7309,7 +7325,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Coffee -->
         <separator/>
-        <item name="Public Market" icon="styles/standard/place/marketplace.png" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Public Market" icon="presets/shop/marketplace.png" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=marketplace"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=marketplace"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:amenity=marketplace"
@@ -7325,7 +7341,7 @@
             <text key="website" text="Website" />
             <combo key="organic" text="Organic" values="only,yes,no" />
         </item> <!-- Public Market -->
-        <item name="Greengrocer" icon="presets/greengrocer.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Greengrocer" icon="presets/shop/groceries/greengrocer.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=greengrocer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=greengrocer"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=greengrocer"
@@ -7339,7 +7355,7 @@
             <combo key="organic" text="Organic" values="only,yes,no" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Greengrocer -->
-        <item name="Farm Stand" icon="presets/apple.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Farm Stand" icon="presets/shop/groceries/apple.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=farm"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=farm"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=farm"
@@ -7369,7 +7385,7 @@
             <combo text="Fair Trade" key="fair_trade" values="no,yes,only" match="key" />
         </item> <!-- Fair Trade -->
         <separator/>
-        <item name="Alcohol" icon="styles/standard/shop/alcohol.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Alcohol" icon="presets/shop/alcohol.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=alcohol"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=alcohol"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=alcohol"
@@ -7383,7 +7399,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Alcohol -->
-        <item name="Beverages" icon="styles/standard/shop/beverages.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Beverages" icon="presets/shop/beverages.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=beverages"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=beverages"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=beverages"
@@ -7395,7 +7411,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Beverages -->
-        <item name="Wine" icon="styles/standard/shop/wine.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Wine" icon="presets/shop/wine.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=wine"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=wine"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=wine" />
@@ -7405,8 +7421,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Wine -->
     </group> <!-- Food -->
-    <group name="Clothes" icon="styles/standard/shop/clothes.png">
-        <item name="Clothes" icon="styles/standard/shop/clothes.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Clothes" icon="presets/shop/clothes.svg">
+        <item name="Clothes" icon="presets/shop/clothes.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=clothes"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=clothes"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=clothes"
@@ -7423,7 +7439,7 @@
             <combo key="organic" text="Organic" values="only,yes,no" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Clothes -->
-        <item name="Boutique" icon="presets/boutique.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Boutique" icon="presets/shop/boutique.png" type="node,closedway,multipolygon" 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"
@@ -7435,7 +7451,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Boutique -->
-        <item name="Shoes" icon="styles/standard/shop/shoes.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Shoes" icon="presets/shop/shoes.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=shoes"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=shoes"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=shoes"
@@ -7447,7 +7463,7 @@
             <combo key="organic" text="Organic" values="only,yes,no" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Shoes -->
-        <item name="Outdoor" icon="styles/standard/shop/outdoor.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Outdoor" icon="presets/shop/outdoor.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=outdoor"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=outdoor"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=outdoor"
@@ -7458,7 +7474,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Outdoor -->
-        <item name="Sports" icon="styles/standard/sport/multi.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Sports" icon="presets/sport/multi.svg" type="node,closedway,multipolygon" preset_name_label="true">
              <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=sports"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=sports"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=sports"
@@ -7469,7 +7485,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Sports -->
         <separator/>
-        <item name="Dry Cleaning" icon="presets/laundry.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Dry Cleaning" icon="presets/shop/laundry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=dry_cleaning"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=dry_cleaning"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=dry_cleaning"
@@ -7481,7 +7497,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Dry Cleaning -->
-        <item name="Laundry" icon="presets/laundry.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Laundry" icon="presets/shop/laundry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=laundry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=laundry"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=laundry"
@@ -7491,7 +7507,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Laundry -->
-        <item name="Tailor" icon="styles/standard/shop/tailor.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Tailor" icon="presets/shop/tailor.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tailor"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=tailor" />
             <space />
@@ -7499,7 +7515,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Tailor -->
-        <item name="Fabric" icon="presets/fabric.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Fabric" icon="presets/shop/fabric.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=fabric"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=fabric"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=fabric"
@@ -7510,8 +7526,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Fabric -->
     </group> <!-- Clothes -->
-    <group name="Electronic" icon="styles/standard/shop/electronics.png">
-        <item name="Computer" icon="styles/standard/shop/computer.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Electronic" icon="presets/shop/electronics.svg">
+        <item name="Computer" icon="presets/shop/computer.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=computer"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=computer"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=computer"
@@ -7522,7 +7538,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Computer -->
-        <item name="Electronics" icon="styles/standard/shop/electronics.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Electronics" icon="presets/shop/electronics.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=electronics"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=electronics"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=electronics"
@@ -7532,7 +7548,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Computer -->
-        <item name="Mobile Phone" icon="presets/mobile_phone.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Mobile Phone" icon="presets/shop/mobile_phone.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=mobile_phone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=mobile_phone"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=mobile_phone"
@@ -7542,7 +7558,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Mobile Phone -->
-        <item name="Vacuum Cleaner" icon="presets/vacuum_cleaner.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Vacuum Cleaner" icon="presets/shop/vacuum_cleaner.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=vacuum_cleaner"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=vacuum_cleaner"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=vacuum_cleaner" />
@@ -7551,7 +7567,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Vacuum Cleaner -->
-        <item name="Hifi" icon="styles/standard/shop/hifi.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hifi" icon="presets/shop/hifi.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hifi"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hifi"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=hifi"
@@ -7562,7 +7578,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Hifi -->
-        <item name="Video" icon="styles/standard/shop/video.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Video" icon="presets/shop/video.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=video"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=video"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=video"
@@ -7573,14 +7589,14 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Video -->
-        <item name="Video Games" icon="styles/standard/shop/video_games.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Video Games" icon="presets/shop/video_games.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=video_games" />
             <space />
             <key key="shop" value="video_games" />
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Video Games -->
-        <item name="Music" icon="styles/standard/shop/music.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Music" icon="presets/shop/music.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=music"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=music"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=music" />
@@ -7590,8 +7606,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Music -->
     </group> <!-- Electronic -->
-    <group name="Cash" icon="styles/standard/money/dollar.svg">
-        <item name="Bank" icon="styles/standard/money/bank.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Cash" icon="presets/money/dollar.svg">
+        <item name="Bank" icon="presets/money/bank.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bank"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=bank"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bank"
@@ -7611,7 +7627,7 @@
             <reference ref="link_contact_address" />
             <preset_link preset_name="Building" />
         </item> <!-- Bank -->
-        <item name="Money Exchange" icon="styles/standard/money/exchange.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Money Exchange" icon="presets/money/exchange.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bureau_de_change"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bureau_de_change"
                   fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=bureau_de_change"
@@ -7623,7 +7639,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address" />
         </item> <!-- Money Exchange -->
-        <item name="Automated Teller Machine" icon="styles/standard/money/atm.png" type="node" preset_name_label="true">
+        <item name="Automated Teller Machine" icon="presets/money/atm.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=atm"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=atm"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=atm"
@@ -7642,7 +7658,7 @@
             <text key="operator" text="Operator" />
             <reference ref="oh_wheelchair" />
         </item> <!-- Automated Teller Machine -->
-        <item name="Pawnbroker" icon="presets/pawnbroker.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Pawnbroker" icon="presets/shop/pawnbroker.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=pawnbroker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=pawnbroker"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=pawnbroker"
@@ -7653,8 +7669,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Pawnbroker -->
     </group> <!-- Cash -->
-    <group name="Home decoration" icon="styles/standard/shop/interior_decoration.svg">
-        <item name="Furniture" icon="styles/standard/shop/furniture.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Home decoration" icon="presets/shop/interior_decoration.svg">
+        <item name="Furniture" icon="presets/shop/furniture.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=furniture"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=furniture"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=furniture"
@@ -7666,7 +7682,7 @@
             <reference ref="name_brand_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Furniture -->
-        <item name="Kitchen" icon="presets/kitchen.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Kitchen" icon="presets/shop/kitchen.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=kitchen"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=kitchen"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=kitchen"
@@ -7678,7 +7694,7 @@
             <reference ref="name_brand_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Kitchen -->
-        <item name="Houseware" icon="styles/standard/shop/houseware.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Houseware" icon="presets/shop/houseware.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=houseware"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=houseware"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=houseware"
@@ -7689,7 +7705,7 @@
             <reference ref="name_brand_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Houseware -->
-        <item name="Curtain" icon="presets/curtain.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Curtain" icon="presets/shop/curtain.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=curtain"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=curtain"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=curtain"
@@ -7699,7 +7715,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Curtain -->
-        <item name="Art" icon="styles/standard/shop/art.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Art" icon="presets/shop/art.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=art"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=art"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=art"
@@ -7710,7 +7726,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Art -->
-        <item name="Frame" icon="presets/frame.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Frame" icon="presets/shop/frame.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=frame"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=frame"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=frame"
@@ -7721,7 +7737,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Frame -->
-        <item name="Bed" icon="styles/standard/shop/bed.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bed" icon="presets/shop/bed.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bed"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bed"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=bed"
@@ -7733,7 +7749,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bed -->
-        <item name="Interior Decoration" icon="styles/standard/shop/interior_decoration.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Interior Decoration" icon="presets/shop/interior_decoration.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=interior_decoration"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=interior_decoration"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=interior_decoration"
@@ -7743,7 +7759,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Interior Decoration -->
-        <item name="Antiques" icon="styles/standard/shop/antique.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Antiques" icon="presets/shop/antique.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=antiques"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=antiques"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=antiques"
@@ -7755,8 +7771,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Antiques -->
     </group> <!-- Home decoration -->
-    <group name="Printed Material" icon="presets/stationery.png">
-        <item name="Stationery" icon="presets/stationery.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="Printed Material" icon="presets/shop/stationery.png">
+        <item name="Stationery" icon="presets/shop/stationery.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=stationery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=stationery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=stationery"
@@ -7767,7 +7783,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Stationery -->
-        <item name="Copy Shop" icon="presets/copyshop.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Copy Shop" icon="presets/shop/copyshop.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=copyshop"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=copyshop"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=copyshop"
@@ -7778,7 +7794,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Copy Shop -->
-        <item name="Book Store" icon="styles/standard/shop/book.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Book Store" icon="presets/shop/book.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=books"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=books"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=books"
@@ -7791,7 +7807,7 @@
             <combo key="second_hand" text="Second hand" values="only,yes,no" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Book Store -->
-        <item name="Newspaper Stand" icon="styles/standard/shop/news.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Newspaper Stand" icon="presets/shop/news.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=newsagent"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=newsagent"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=newsagent"
@@ -7803,7 +7819,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Newspaper Stand -->
-        <item name="Ticket" icon="styles/standard/shop/ticket.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Ticket" icon="presets/shop/ticket.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=ticket"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=ticket"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=ticket"
@@ -7814,8 +7830,8 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Ticket -->
     </group> <!-- Printed Material -->
-    <group name="For the body" icon="styles/standard/shop/body.svg">
-        <item name="Chemist" icon="styles/standard/shop/chemist.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <group name="For the body" icon="presets/shop/body.svg">
+        <item name="Chemist" icon="presets/shop/chemist.svg" type="node,closedway,multipolygon" 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"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=chemist"
@@ -7828,21 +7844,21 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Chemist -->
-        <item name="Cosmetics" icon="styles/standard/shop/cosmetics.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Cosmetics" icon="presets/shop/cosmetics.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=cosmetics" />
             <space />
             <key key="shop" value="cosmetics" />
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Cosmetics -->
-        <item name="Perfumery" icon="styles/standard/shop/perfumery.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Perfumery" icon="presets/shop/perfumery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=perfumery" />
             <space />
             <key key="shop" value="perfumery" />
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Perfumery -->
-        <item name="Beauty" icon="styles/standard/shop/beauty.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Beauty" icon="presets/shop/beauty.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=beauty"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=beauty"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=beauty"
@@ -7855,14 +7871,14 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Beauty -->
-        <item name="Tobacco" icon="styles/standard/shop/tobacco.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Tobacco" icon="presets/shop/tobacco.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tobacco" />
             <space />
             <key key="shop" value="tobacco" />
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Tobacco -->
-        <item name="Hairdresser/Barber" icon="styles/standard/shop/hairdresser.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hairdresser/Barber" icon="presets/shop/hairdresser.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hairdresser"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hairdresser"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=hairdresser"
@@ -7873,9 +7889,14 @@
             <space />
             <key key="shop" value="hairdresser" />
             <reference ref="name_oh_wheelchair" />
+            <checkgroup columns="3">
+                <check key="female" text="Female" />
+                <check key="male" text="Male" />
+                <check key="unisex" text="Unisex" />
+            </checkgroup>
             <reference ref="link_contact_address_payment" />
         </item> <!-- Hairdresser/Barber -->
-        <item name="Tattoo" icon="styles/standard/shop/tattoo.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Tattoo" icon="presets/shop/tattoo.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=tattoo"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=tattoo"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=tattoo"
@@ -7886,7 +7907,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Tattoo -->
-        <item name="Optician" icon="styles/standard/shop/optician.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Optician" icon="presets/shop/optician.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=optician"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=optician"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=optician"
@@ -7897,7 +7918,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Optician -->
-        <item name="Hearing Aids" icon="presets/hearing_aids.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hearing Aids" icon="presets/shop/hearing_aids.png" type="node,closedway,multipolygon" 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"
@@ -7907,7 +7928,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Hearing Aids -->
-        <item name="Medical Supply" icon="styles/standard/shop/medical_supply.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Medical Supply" icon="presets/shop/medical_supply.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=medical_supply"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=medical_supply"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=medical_supply" />
@@ -7917,7 +7938,7 @@
             <check key="dispensing" text="Dispensing" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Medical Supply -->
-        <item name="Jewellery" icon="styles/standard/shop/jewelry.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Jewellery" icon="presets/shop/jewelry.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=jewelry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=jewelry"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=jewelry"
@@ -7928,7 +7949,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Jewellery -->
-        <item name="Erotic" icon="presets/erotic.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Erotic" icon="presets/shop/erotic.png" type="node,closedway,multipolygon" 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"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=erotic"
@@ -7939,8 +7960,8 @@
             <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,multipolygon" preset_name_label="true">
+    <group name="Other" icon="presets/shop/mall.svg">
+        <item name="Department Store" icon="presets/shop/mall.svg" type="node,closedway,multipolygon" 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"
@@ -7953,7 +7974,7 @@
             <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,multipolygon" preset_name_label="true">
+        <item name="Mall" icon="presets/shop/mall.svg" type="node,closedway,multipolygon" 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"
@@ -7966,7 +7987,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Mall -->
         <separator/>
-        <item name="Florist" icon="styles/standard/shop/florist.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Florist" icon="presets/shop/florist.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=florist"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=florist"
                   it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:shop=florist"
@@ -7979,7 +8000,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Florist -->
-        <item name="Garden Centre" icon="styles/standard/shop/garden_centre.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Garden Centre" icon="presets/shop/garden_centre.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=garden_centre"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=garden_centre"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=garden_centre"
@@ -7993,7 +8014,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Garden Centre -->
         <separator/>
-        <item name="Do-It-Yourself Store" icon="presets/diy_store.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Do-It-Yourself Store" icon="presets/shop/diy_store.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=doityourself"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=doityourself"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=doityourself"
@@ -8006,7 +8027,7 @@
             <reference ref="name_brand_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Do-It-Yourself Store -->
-        <item name="Hardware" icon="presets/hardware.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Hardware" icon="presets/shop/hardware.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hardware"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=hardware"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=hardware"
@@ -8017,7 +8038,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Hardware -->
-        <item name="Paint" icon="presets/paint.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Paint" icon="presets/shop/paint.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=paint"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=paint"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=paint"
@@ -8029,7 +8050,7 @@
             <reference ref="link_contact_address_payment" />
         </item> <!-- Paint -->
         <separator/>
-        <item name="Travel Agency" icon="presets/travel.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Travel Agency" icon="presets/shop/travel.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=travel_agency"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=travel_agency"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:shop=travel_agency"
@@ -8039,7 +8060,7 @@
             <reference ref="name_brand_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Travel Agency -->
-        <item name="Musical Instrument" icon="presets/musical_instrument.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Musical Instrument" icon="presets/shop/musical_instrument.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=musical_instrument"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=musical_instrument"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:shop=musical_instrument"
@@ -8049,7 +8070,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Musical Instrument -->
-        <item name="Toys" icon="styles/standard/shop/toys.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Toys" icon="presets/shop/toys.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=toys"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=toys"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=toys"
@@ -8060,7 +8081,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Toys -->
-        <item name="Gift/Souvenir" icon="presets/present.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Gift/Souvenir" icon="presets/shop/present.svg" type="node,closedway,multipolygon" 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"
@@ -8077,7 +8098,7 @@
             </optional>
             <reference ref="link_contact_address_payment" />
         </item> <!-- Gift/Souvenir -->
-        <item name="Variety Store" icon="presets/variety_store.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Variety Store" icon="presets/shop/variety_store.png" type="node,closedway,multipolygon" 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"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:shop=variety_store"
@@ -8089,7 +8110,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Variety Store -->
-        <item name="Bookmaker" icon="presets/lottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bookmaker" icon="presets/shop/lottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bookmaker"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bookmaker" />
             <space />
@@ -8097,7 +8118,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bookmaker -->
-        <item name="Lottery" icon="presets/lottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Lottery" icon="presets/shop/lottery.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=lottery"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=lottery"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:shop=lottery" />
@@ -8106,7 +8127,7 @@
             <reference ref="name_operator_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Lottery -->
-        <item name="Bag" icon="styles/standard/shop/bag.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Bag" icon="presets/shop/bag.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bag"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=bag"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:shop=bag" />
@@ -8115,7 +8136,7 @@
             <reference ref="name_oh_wheelchair" />
             <reference ref="link_contact_address_payment" />
         </item> <!-- Bag -->
-        <item name="Pet" icon="styles/standard/shop/pet.svg" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Pet" icon="presets/shop/pet.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=pet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:shop=pet"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:shop=pet"
@@ -8127,7 +8148,7 @@
             <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,multipolygon" preset_name_label="true">
+        <item name="Photo" icon="presets/shop/photo.svg" type="node,closedway,multipolygon" 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" />
@@ -8136,7 +8157,7 @@
             <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,multipolygon" preset_name_label="true">
+        <item name="Funeral Directors" icon="presets/shop/funeral_directors.svg" type="node,closedway,multipolygon" 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"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:shop=funeral_directors"
@@ -8151,25 +8172,25 @@
         </item> <!-- Funeral Directors -->
     </group> <!-- Other -->
         <separator/>
-    <item name="Vending Machine" icon="styles/standard/transport/ticket-machine.png" type="node" preset_name_label="true">
+    <item name="Vending Machine" icon="presets/transport/ticket-machine.svg" type="node" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=vending_machine"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=vending_machine"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=vending_machine"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=vending_machine" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=vending_machine"
+              ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:amenity=vending_machine"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:amenity=vending_machine" />
         <space />
         <key key="amenity" value="vending_machine" />
-        <multiselect key="vending" text="Vending products" values="animal_food;bicycle_tube;cigarettes;condoms;drinks;excrement_bags;food;newspapers;parking_tickets;photos;public_transport_plans;public_transport_tickets;SIM_cards;stamps;sweets;tampons;telephone_vouchers;toys;vouchers" values_searchable="true" />
+        <multiselect key="vending" text="Vending products" values="animal_food;bicycle_tube;cigarettes;condoms;drinks;excrement_bags;food;milk;newspapers;parking_tickets;photos;public_transport_plans;public_transport_tickets;SIM_cards;stamps;sweets;tampons;telephone_vouchers;toys;vouchers" values_searchable="true" />
         <text key="operator" text="Operator" />
         <text key="ref" text="Reference number" />
         <preset_link preset_name="Payment Methods" />
     </item> <!-- Vending Machine -->
-    <item name="Payment Methods" icon="styles/standard/money/dollar.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
+    <item name="Payment Methods" icon="presets/money/dollar.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Key:payment"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:payment"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:payment"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:payment"
-                  ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:payment"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:payment" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Key:payment"
+              es.href="http://wiki.openstreetmap.org/wiki/ES:Key:payment"
+              fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:payment"
+              ja.href="http://wiki.openstreetmap.org/wiki/JA:Key:payment"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Key:payment" />
         <space />
         <combo key="payment:cash" text="Cash" values="yes,no" match="keyvalue" />
         <checkgroup columns="4">
@@ -8222,223 +8243,225 @@
         </checkgroup>
     </item> <!-- Payment Methods -->
   </group> <!-- Shops -->
-  <group name="Offices" icon="styles/standard/office/private_company.svg">
-    <item name="Accountant" icon="styles/standard/office/accountant.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+  <group name="Offices" icon="presets/office/private_company.svg">
+    <item name="Accountant" icon="presets/office/accountant.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=accountant"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=accountant"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=accountant"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=accountant"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=accountant" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=accountant"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=accountant"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=accountant"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=accountant" />
         <space />
         <key key="office" value="accountant" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Administrative" icon="styles/standard/office/administrative.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Accountant -->
+    <item name="Administrative" icon="presets/office/administrative.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=administrative"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=administrative"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=administrative"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=administrative" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=administrative"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=administrative"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=administrative" />
         <space />
         <key key="office" value="administrative" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Advertising agency" icon="styles/standard/office/advertising_agency.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Administrative -->
+    <item name="Advertising agency" icon="presets/office/advertising_agency.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=advertising_agency" />
         <space />
         <key key="office" value="advertising_agency" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Architect" icon="styles/standard/office/architect.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Advertising agency -->
+    <item name="Architect" icon="presets/office/architect.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=architect"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=architect"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=architect"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=architect" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=architect"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=architect"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=architect" />
         <space />
         <key key="office" value="architect" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Association" icon="styles/standard/office/association.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Architect -->
+    <item name="Association" icon="presets/office/association.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=association" />
         <space />
         <key key="office" value="association" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Private company" icon="styles/standard/office/private_company.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Association -->
+    <item name="Private company" icon="presets/office/private_company.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=company"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=company"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=company"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=company" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=company"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=company"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=company" />
         <space />
         <key key="office" value="company" />
         <reference ref="name_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Educational institution" icon="styles/standard/office/educational_institution.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Private company -->
+    <item name="Educational institution" icon="presets/office/educational_institution.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=educational_institution"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=educational_institution"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=educational_institution" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=educational_institution"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=educational_institution" />
         <space />
         <key key="office" value="educational_institution" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Employment agency" icon="styles/standard/office/employment_agency.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Educational institution -->
+    <item name="Employment agency" icon="presets/office/employment_agency.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=employment_agency"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=employment_agency"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=employment_agency"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=employment_agency"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=employment_agency"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=employment_agency" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=employment_agency"
+              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=employment_agency"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=employment_agency"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=employment_agency"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=employment_agency" />
         <space />
         <key key="office" value="employment_agency" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Estate agent" icon="styles/standard/office/real_state.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Employment agency -->
+    <item name="Estate agent" icon="presets/office/real_state.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=estate_agent"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=estate_agent"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=estate_agent"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=estate_agent"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=estate_agent"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=estate_agent" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=estate_agent"
+              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=estate_agent"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=estate_agent"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=estate_agent"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=estate_agent" />
         <space />
         <key key="office" value="estate_agent" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Foundation" icon="styles/standard/office/foundation.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Estate agent -->
+    <item name="Foundation" icon="presets/office/foundation.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=foundation" />
         <space />
         <key key="office" value="foundation" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Government" icon="styles/standard/office/government.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Foundation -->
+    <item name="Government" icon="presets/office/government.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=government"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=government"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=government"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=government" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=government"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=government"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=government" />
         <space />
         <key key="office" value="government" />
-        <reference ref="name_oh_wheelchair" />
+        <text key="name" text="Name" />
+        <combo key="government" text="Type" values="ministry,prosecutor,tax,register_office" />
+        <reference ref="oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Insurance" icon="styles/standard/office/insurance.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Government -->
+    <item name="Insurance" icon="presets/office/insurance.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=insurance"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=insurance"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=insurance"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=insurance"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=insurance" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=insurance"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=insurance"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=insurance"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=insurance" />
         <space />
         <key key="office" value="insurance" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="It specialist" icon="styles/standard/office/it.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Insurance -->
+    <item name="It specialist" icon="presets/office/it.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=it"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=it"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=it"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=it" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=it"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=it"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=it" />
         <space />
         <key key="office" value="it" />
         <reference ref="name_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Lawyer" icon="styles/standard/office/lawyer.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- It specialist -->
+    <item name="Lawyer" icon="presets/office/lawyer.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=lawyer"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=lawyer"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=lawyer"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=lawyer"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=lawyer"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=lawyer" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=lawyer"
+              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=lawyer"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=lawyer"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=lawyer"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=lawyer" />
         <space />
         <key key="office" value="lawyer" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Newspaper" icon="styles/standard/office/newspaper.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Lawyer -->
+    <item name="Newspaper" icon="presets/office/newspaper.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=newspaper"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=newspaper"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=newspaper"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=newspaper" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=newspaper"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=newspaper"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=newspaper" />
         <space />
         <key key="office" value="newspaper" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Non-governmental organisation (NGO)" icon="styles/standard/office/ong.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Newspaper -->
+    <item name="Non-governmental organisation (NGO)" icon="presets/office/ong.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=ngo"
-                  fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=ngo"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=ngo"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=ngo"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=ngo" />
+              fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:office=ngo"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=ngo"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=ngo"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=ngo" />
         <space />
         <key key="office" value="ngo" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Notary" icon="styles/standard/office/notary.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Non-governmental organisation (NGO) -->
+    <item name="Notary" icon="presets/office/notary.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=notary" />
         <space />
         <key key="office" value="notary" />
         <reference ref="name_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Political party" icon="styles/standard/office/political_party.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Notary -->
+    <item name="Political party" icon="presets/office/political_party.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=political_party"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=political_party"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=political_party" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=political_party"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=political_party" />
         <space />
         <key key="office" value="political_party" />
         <reference ref="name_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Religion" icon="styles/standard/office/religion.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Political party -->
+    <item name="Religion" icon="presets/office/religion.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=religion"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=religion"
-                  pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:office=religion" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=religion"
+              pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:office=religion" />
         <space />
         <key key="office" value="religion" />
         <reference ref="religious" />
         <reference ref="oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Research" icon="styles/standard/office/research.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Religion -->
+    <item name="Research" icon="presets/office/research.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=research"
-                  es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=research"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=research"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=research"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=research" />
+              es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:office=research"
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=research"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=research"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=research" />
         <space />
         <key key="office" value="research" />
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Tax advisor" icon="styles/standard/office/tax_advisor.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Research -->
+    <item name="Tax advisor" icon="presets/office/tax_advisor.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=tax_advisor"
-                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=tax_advisor" />
+              de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:office=tax_advisor" />
         <space />
         <key key="office" value="tax_advisor" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
-    <item name="Telecommunication" icon="styles/standard/office/telecommunication.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
+    </item> <!-- Tax advisor -->
+    <item name="Telecommunication" icon="presets/office/telecommunication.svg" name_context="office" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:office=telecommunication"
-                  pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=telecommunication"
-                  ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=telecommunication"
-                  uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=telecommunication" />
+              pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:office=telecommunication"
+              ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:office=telecommunication"
+              uk.href="http://wiki.openstreetmap.org/wiki/Uk:Tag:office=telecommunication" />
         <space />
         <key key="office" value="telecommunication" />
         <reference ref="name_brand_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
-    </item>
+    </item> <!-- Telecommunication -->
   </group> <!-- Offices -->
-  <group name="Craft" icon="styles/standard/craft/painter.png">
+  <group name="Craft" icon="presets/craft/painter.png">
     <item name="Carpenter" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=carpenter" />
         <space />
@@ -8481,7 +8504,7 @@
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Brewery -->
-    <item name="Plumber" icon="styles/standard/craft/plumber.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Plumber" icon="presets/craft/plumber.png" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=plumber" />
         <space />
         <key key="craft" value="plumber" />
@@ -8516,7 +8539,7 @@
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Hvac -->
-    <item name="Painter" icon="styles/standard/craft/painter.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Painter" icon="presets/craft/painter.png" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=painter" />
         <space />
         <key key="craft" value="painter" />
@@ -8537,7 +8560,7 @@
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Handicraft -->
-    <item name="Pottery" icon="styles/standard/craft/pottery.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Pottery" icon="presets/craft/pottery.png" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=pottery" />
         <space />
         <key key="craft" value="pottery" />
@@ -8558,7 +8581,7 @@
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Caterer -->
-    <item name="Roofer" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Roofer" icon="presets/craft/roofer.svg" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=roofer" />
         <space />
         <key key="craft" value="roofer" />
@@ -8586,7 +8609,7 @@
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Locksmith -->
-    <item name="Window construction" icon="styles/standard/craft/window_construction.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Window construction" icon="presets/craft/window_construction.png" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=window_construction" />
         <space />
         <key key="craft" value="window_construction" />
@@ -8600,7 +8623,7 @@
         <reference ref="name_operator_oh_wheelchair" />
         <reference ref="link_contact_address" />
     </item> <!-- Upholsterer -->
-    <item name="Tiler" icon="styles/standard/craft/tiler.png" type="node,closedway,multipolygon" preset_name_label="true">
+    <item name="Tiler" icon="presets/craft/tiler.png" type="node,closedway,multipolygon" preset_name_label="true">
         <link href="http://wiki.openstreetmap.org/wiki/Tag:craft=tiler" />
         <space />
         <key key="craft" value="tiler" />
@@ -8608,9 +8631,9 @@
         <reference ref="link_contact_address" />
     </item> <!-- Tiler -->
   </group> <!-- Craft -->
-  <group name="Geography" icon="presets/peak.svg">
-    <group name="Boundaries" icon="presets/boundaries.png">
-        <item name="Administrative" icon="presets/boundaries.png" type="way,closedway,relation" preset_name_label="true">
+  <group name="Geography" icon="presets/landmark/peak.svg">
+    <group name="Boundaries" icon="presets/misc/boundaries.png">
+        <item name="Administrative" icon="presets/misc/boundaries.png" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=administrative"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=administrative"
                   hu.href="http://wiki.openstreetmap.org/wiki/Hu:Tag:boundary=administrative"
@@ -8624,7 +8647,7 @@
             <combo key="admin_level" text="Administrative level" values="1,2,3,4,5,6,7,8,9,10,11" />
             <check key="maritime" text="Maritime" disable_off="true" />
         </item> <!-- Administrative -->
-        <item name="Political" icon="presets/boundaries.png" type="closedway,relation" preset_name_label="true">
+        <item name="Political" icon="presets/misc/boundaries.png" type="closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=political"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:boundary=political"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=political"
@@ -8634,7 +8657,7 @@
             <combo key="political_division" text="Division" values="canton,linguistic_community,ward" />
             <text key="name" text="Name" />
         </item> <!-- Political -->
-        <item name="Postal Code" icon="presets/boundaries.png" type="way,closedway,relation" preset_name_label="true">
+        <item name="Postal Code" icon="presets/misc/boundaries.png" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=postal_code"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=postal_code"
                   ru.href="http://wiki.openstreetmap.org/wiki/RU:Tag:boundary=postal_code" />
@@ -8642,7 +8665,7 @@
             <key key="boundary" value="postal_code" />
             <text key="postal_code" text="Postal Code" />
         </item> <!-- Postal Code -->
-        <item name="National Park" icon="presets/boundaries.png" type="closedway,relation" preset_name_label="true">
+        <item name="National Park" icon="presets/misc/boundaries.png" type="closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=national_park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=national_park"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=national_park"
@@ -8651,7 +8674,7 @@
             <key key="boundary" value="national_park" />
             <text key="name" text="Name" />
         </item> <!-- National Park -->
-        <item name="Protected Area" icon="presets/boundaries.png" type="closedway,relation" preset_name_label="true">
+        <item name="Protected Area" icon="presets/misc/boundaries.png" type="closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=protected_area"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:boundary=protected_area"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:boundary=protected_area"
@@ -8668,7 +8691,7 @@
                 <text key="start_date" text="Start date" />
             </optional>
         </item> <!-- Protected Area -->
-        <item name="Maritime" icon="presets/boundaries.png" type="way,closedway,relation" preset_name_label="true">
+        <item name="Maritime" icon="presets/misc/boundaries.png" type="way,closedway,relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:boundary=maritime"
                   no.href="http://wiki.openstreetmap.org/wiki/No:Tag:boundary=maritime"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:boundary=maritime" />
@@ -8678,8 +8701,8 @@
             <text key="name" text="Name" />
         </item> <!-- Maritime -->
     </group> <!-- Boundaries -->
-    <group name="Places" icon="styles/standard/place/settlement/isolated_dwelling.png">
-        <item name="Continent" icon="styles/standard/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
+    <group name="Places" icon="presets/place/settlement/isolated_dwelling.png">
+        <item name="Continent" icon="presets/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=continent"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=continent"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=continent"
@@ -8688,7 +8711,7 @@
             <key key="place" value="continent" />
             <reference ref="name_wikipedia" />
         </item> <!-- Continent -->
-        <item name="Country" icon="styles/standard/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
+        <item name="Country" icon="presets/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=country"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=country"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=country"
@@ -8697,7 +8720,7 @@
             <key key="place" value="country" />
             <reference ref="name_wikipedia" />
         </item> <!-- Country -->
-        <item name="State" icon="styles/standard/place/settlement/capital.png" name_context="place" type="node,closedway" preset_name_label="true">
+        <item name="State" icon="presets/place/settlement/capital.png" name_context="place" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=state"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=state"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=state"
@@ -8706,14 +8729,14 @@
             <key key="place" value="state" />
             <reference ref="name_wikipedia" />
         </item> <!-- State -->
-        <item name="Region" icon="styles/standard/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
+        <item name="Region" icon="presets/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=region"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=region" />
             <space />
             <key key="place" value="region" />
             <reference ref="name_wikipedia" />
         </item> <!-- Region -->
-        <item name="County" icon="styles/standard/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
+        <item name="County" icon="presets/place/settlement/capital.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=county"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=county"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=county"
@@ -8724,7 +8747,7 @@
             <reference ref="population_postcode_website" />
         </item> <!-- County -->
         <separator/>
-        <item name="City" icon="styles/standard/place/settlement/city.png" type="node,closedway" preset_name_label="true">
+        <item name="City" icon="presets/place/settlement/city.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=city"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=city"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=city"
@@ -8737,7 +8760,7 @@
             <reference ref="name_wikipedia" />
             <reference ref="population_postcode_website" />
         </item> <!-- City -->
-        <item name="Town" icon="styles/standard/place/settlement/town.png" type="node,closedway" preset_name_label="true">
+        <item name="Town" icon="presets/place/settlement/town.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=town"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:place=town"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=town"
@@ -8751,7 +8774,7 @@
             <reference ref="name_wikipedia" />
             <reference ref="population_postcode_website" />
         </item> <!-- Town -->
-        <item name="Village" icon="styles/standard/place/settlement/village.png" type="node,closedway" preset_name_label="true">
+        <item name="Village" icon="presets/place/settlement/village.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=village"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:place=village"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=village"
@@ -8767,7 +8790,7 @@
             <reference ref="name_wikipedia" />
             <reference ref="population_postcode_website" />
         </item> <!-- Village -->
-        <item name="Hamlet" icon="styles/standard/place/settlement/hamlet.png" type="node,closedway" preset_name_label="true">
+        <item name="Hamlet" icon="presets/place/settlement/hamlet.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=hamlet"
                   da.href="http://wiki.openstreetmap.org/wiki/Da:Tag:place=hamlet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=hamlet"
@@ -8781,7 +8804,7 @@
             <reference ref="name_wikipedia" />
             <reference ref="population_postcode_website" />
         </item> <!-- Hamlet -->
-        <item name="Isolated Dwelling" icon="styles/standard/place/settlement/isolated_dwelling.png" type="node,closedway" preset_name_label="true">
+        <item name="Isolated Dwelling" icon="presets/place/settlement/isolated_dwelling.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=isolated_dwelling"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=isolated_dwelling"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=isolated_dwelling"
@@ -8794,7 +8817,7 @@
             <reference ref="population_postcode_website" />
         </item> <!-- Isolated Dwelling -->
         <separator/>
-        <item name="Suburb" icon="styles/standard/place/settlement/suburb.png" type="node,closedway" preset_name_label="true">
+        <item name="Suburb" icon="presets/place/settlement/suburb.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=suburb"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=suburb"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:place=suburb"
@@ -8808,7 +8831,7 @@
             <reference ref="name_wikipedia" />
             <reference ref="population_postcode_website" />
         </item> <!-- Suburb -->
-        <item name="Neighbourhood" icon="styles/standard/place/settlement/neighbourhood.png" type="node,closedway" preset_name_label="true">
+        <item name="Neighbourhood" icon="presets/place/settlement/neighbourhood.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=neighbourhood"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=neighbourhood"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=neighbourhood"
@@ -8821,7 +8844,7 @@
             <text key="population" text="Population" />
             <text key="website" text="Website" />
         </item> <!-- Neighbourhood -->
-        <item name="Farm" icon="styles/standard/place/settlement/farm.png" type="node,closedway" preset_name_label="true">
+        <item name="Farm" icon="presets/place/settlement/farm.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=farm"
                   pl.href="http://wiki.openstreetmap.org/wiki/Pl:Tag:place=farm"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:place=farm" />
@@ -8833,7 +8856,7 @@
             <reference ref="population_postcode_website" />
         </item> <!-- Farm -->
         <separator/>
-        <item name="Locality" icon="presets/locality.png" type="node,closedway" preset_name_label="true">
+        <item name="Locality" icon="presets/place/locality.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=locality"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=locality"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=locality"
@@ -8846,8 +8869,8 @@
             <reference ref="name_wikipedia" />
         </item> <!-- Locality -->
     </group> <!-- Places -->
-    <group name="Geography" icon="presets/peak.svg">
-        <item name="Peak" icon="presets/peak.svg" type="node" preset_name_label="true">
+    <group name="Geography" icon="presets/landmark/peak.svg">
+        <item name="Peak" icon="presets/landmark/peak.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=peak"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=peak"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=peak"
@@ -8862,7 +8885,7 @@
             <reference ref="name_wikipedia" />
             <text key="ele" text="Elevation" />
         </item> <!-- Peak -->
-        <item name="Saddle" icon="presets/saddle.svg" type="node" preset_name_label="true">
+        <item name="Saddle" icon="presets/landmark/saddle.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=saddle"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=saddle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=saddle"
@@ -8876,7 +8899,7 @@
             <reference ref="name_wikipedia" />
             <text key="ele" text="Elevation" />
         </item> <!-- Saddle -->
-        <item name="Glacier" icon="presets/glacier.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Glacier" icon="presets/landmark/glacier.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=glacier"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=glacier"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=glacier"
@@ -8890,7 +8913,7 @@
             <reference ref="name_wikipedia" />
             <text key="ele" text="Elevation" />
         </item> <!-- Glacier -->
-        <item name="Volcano" icon="presets/volcano.png" type="node" preset_name_label="true">
+        <item name="Volcano" icon="presets/landmark/volcano.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=volcano"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=volcano"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=volcano"
@@ -8908,7 +8931,7 @@
                 <combo key="volcano:type" text="Type" values="stratovolcano,shield,scoria" />
             </optional>
         </item> <!-- Volcano -->
-        <item name="Ridge" icon="presets/ridge.svg" type="way" preset_name_label="true">
+        <item name="Ridge" icon="presets/landmark/ridge.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=ridge"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=ridge"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=ridge"
@@ -8922,7 +8945,7 @@
             <reference ref="name_wikipedia" />
             <text key="ele" text="Elevation" />
         </item> <!-- Ridge -->
-        <item name="Valley" icon="presets/valley.svg" type="way" preset_name_label="true">
+        <item name="Valley" icon="presets/landmark/valley.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=valley"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=valley"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=valley"
@@ -8933,7 +8956,7 @@
             <key key="natural" value="valley" />
             <reference ref="name_wikipedia" />
         </item> <!-- Valley -->
-        <item name="Cliff" icon="styles/standard/misc/cliff.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
+        <item name="Cliff" icon="presets/misc/cliff.svg" type="node,way,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=cliff"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=cliff"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=cliff"
@@ -8947,7 +8970,7 @@
             <text key="name" text="Name" />
             <text key="height" text="Height (meters)" />
         </item> <!-- Cliff -->
-        <item name="Cave Entrance" icon="presets/cave_entrance.png" type="node,closedway" preset_name_label="true">
+        <item name="Cave Entrance" icon="presets/landmark/cave_entrance.png" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=cave_entrance"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=cave_entrance"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=cave_entrance"
@@ -8964,7 +8987,7 @@
             <reference ref="fee" />
         </item> <!-- Cave Entrance -->
         <separator/>
-        <item name="Island" icon="presets/island.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Island" icon="presets/place/island.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=island"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=island"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:place=island"
@@ -8975,7 +8998,7 @@
             <key key="place" value="island" />
             <reference ref="name_wikipedia" />
         </item> <!-- Island -->
-        <item name="Islet" icon="presets/islet.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Islet" icon="presets/place/islet.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:place=islet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:place=islet"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:place=islet"
@@ -8985,9 +9008,17 @@
             <key key="place" value="islet" />
             <reference ref="name_wikipedia" />
         </item> <!-- Islet -->
+        <item name="Reef" icon="presets/landmark/reef.svg" type="node,closedway,multipolygon" preset_name_label="true">
+            <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=reef"
+                  de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=reef" />
+            <space />
+            <key key="natural" value="reef" />
+            <text key="name" text="Name" />
+            <combo key="reef" text="Type" values="coral,oyster,rock,sand" />
+        </item> <!-- Reef -->
     </group> <!-- Geography -->
-    <group name="Nature" icon="styles/standard/misc/landmark/trees.png">
-        <item name="Tree" icon="styles/standard/misc/landmark/trees.png" type="node" preset_name_label="true">
+    <group name="Nature" icon="presets/landmark/trees.svg">
+        <item name="Tree" icon="presets/landmark/trees.svg" type="node" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=tree"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=tree"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=tree"
@@ -9009,7 +9040,7 @@
             <text key="taxon" text="Taxon" />
             <reference ref="leaf" />
         </item> <!-- Tree -->
-        <item name="Tree Row" icon="styles/standard/misc/landmark/tree_row.svg" type="way" preset_name_label="true">
+        <item name="Tree Row" icon="presets/landmark/tree_row.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=tree_row"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=tree_row"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=tree_row"
@@ -9028,7 +9059,7 @@
                 <reference ref="leaf" />
             </optional>
         </item> <!-- Tree Row -->
-        <item name="Wood" icon="styles/standard/misc/landmark/forest.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Wood" icon="presets/landmark/forest.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=wood"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=wood"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=wood"
@@ -9043,7 +9074,7 @@
             <text key="name" text="Name" />
             <reference ref="leaf" />
         </item> <!-- Wood -->
-        <item name="Forest" icon="styles/standard/misc/landmark/forest.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Forest" icon="presets/landmark/forest.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=forest"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=forest"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=forest"
@@ -9058,7 +9089,7 @@
             <text key="name" text="Name" />
             <reference ref="leaf" />
         </item> <!-- Forest -->
-        <item name="Cutline" icon="styles/standard/misc/landmark/cutline.svg" type="way" preset_name_label="true">
+        <item name="Cutline" icon="presets/landmark/cutline.svg" type="way" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=cutline"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:man_made=cutline"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=cutline"
@@ -9071,7 +9102,7 @@
             <key key="man_made" value="cutline" />
             <combo key="cutline" text="Type" values="border,firebreak,hunting,loggingmachine,pipeline,piste,section" values_context="cutline" />
         </item> <!-- Cutline -->
-        <item name="Grassland" icon="styles/standard/misc/landuse/meadow.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Grassland" icon="presets/landuse/meadow.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=grassland"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=grassland"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=grassland"
@@ -9089,7 +9120,7 @@
             <text key="name" text="Name" />
             <combo key="grassland" text="Type" values="pampas,prairie,puszta,savanna,steppe,veld" />
         </item> <!-- Grassland -->
-        <item name="Nature Reserve" icon="styles/standard/leisure/nature_reserve.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Nature Reserve" icon="presets/leisure/nature_reserve.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=nature_reserve"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=nature_reserve"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=nature_reserve"
@@ -9101,7 +9132,7 @@
             <text key="name" text="Name" />
         </item> <!-- Nature Reserve -->
         <separator/>
-        <item name="Scree" icon="presets/empty.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Scree" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=scree"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=scree"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=scree"
@@ -9117,7 +9148,7 @@
             <key key="natural" value="scree" />
             <text key="name" text="Name" />
         </item> <!-- Scree -->
-        <item name="Fell" icon="presets/empty.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Fell" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=fell"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=fell"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=fell"
@@ -9130,7 +9161,7 @@
             <key key="natural" value="fell" />
             <text key="name" text="Name" />
         </item> <!-- Fell -->
-        <item name="Scrub" icon="presets/scrub.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Scrub" icon="presets/landuse/scrub.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=scrub"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=scrub"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=scrub"
@@ -9148,7 +9179,7 @@
                 <reference ref="leaf" />
             </optional>
         </item> <!-- Scrub -->
-        <item name="Heath" icon="presets/empty.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Heath" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=heath"
                   bg.href="http://wiki.openstreetmap.org/wiki/Bg:Tag:natural=heath"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=heath"
@@ -9164,7 +9195,7 @@
             <key key="natural" value="heath" />
             <text key="name" text="Name" />
         </item> <!-- Heath -->
-        <item name="Sand" icon="styles/standard/misc/sand.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Sand" icon="presets/landuse/sand.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=sand"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=sand"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:natural=sand"
@@ -9175,7 +9206,7 @@
             <key key="natural" value="sand" />
             <text key="name" text="Name" />
         </item> <!-- Sand -->
-        <item name="Bare Rock" icon="presets/empty.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Bare Rock" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=bare_rock"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=bare_rock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=bare_rock"
@@ -9190,7 +9221,7 @@
             <key key="natural" value="bare_rock" />
             <text key="name" text="Name" />
         </item> <!-- Bare Rock -->
-        <item name="Rock" icon="styles/standard/misc/rock.svg" type="node,closedway" preset_name_label="true">
+        <item name="Rock" icon="presets/misc/rock.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=rock"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=rock"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=rock"
@@ -9203,7 +9234,7 @@
                 <check key="tourism" text="Tourism attraction" value_on="attraction" disable_off="true" />
             </optional>
         </item> <!-- Rock -->
-        <item name="Stone" icon="styles/standard/misc/stone.svg" type="node,closedway" preset_name_label="true">
+        <item name="Stone" icon="presets/misc/stone.svg" type="node,closedway" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=stone"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:natural=stone"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=stone"
@@ -9220,8 +9251,8 @@
             </optional>
         </item> <!-- Stone -->
     </group> <!-- Nature -->
-    <group name="Land use" icon="presets/landuse.png">
-        <item name="Farmyard" icon="styles/standard/misc/landuse/farmyard.png" type="closedway,multipolygon" preset_name_label="true">
+    <group name="Land use" icon="presets/landuse/landuse.png">
+        <item name="Farmyard" icon="presets/landuse/farmyard.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=farmyard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=farmyard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=farmyard"
@@ -9233,7 +9264,7 @@
             <key key="landuse" value="farmyard" />
             <text key="name" text="Name" />
         </item> <!-- Farmyard -->
-        <item name="Farmland" icon="styles/standard/misc/landuse/farmland.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Farmland" icon="presets/landuse/farmland.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=farmland"
                   ca.href="http://wiki.openstreetmap.org/wiki/Ca:Tag:landuse=farmland"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=farmland"
@@ -9247,7 +9278,7 @@
             <text key="name" text="Name" />
             <combo key="crop" text="Crop" values="corn,grass,rice,wheat,hop" values_context="crop" />
         </item> <!-- Farmland -->
-        <item name="Meadow" icon="styles/standard/misc/landuse/meadow.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Meadow" icon="presets/landuse/meadow.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=meadow"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=meadow"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=meadow"
@@ -9260,7 +9291,7 @@
             <key key="landuse" value="meadow" />
             <text key="name" text="Name" />
         </item> <!-- Meadow -->
-        <item name="Orchard" icon="styles/standard/misc/landuse/orchard.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Orchard" icon="presets/landuse/orchard.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=orchard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=orchard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=orchard"
@@ -9273,7 +9304,7 @@
             <text key="name" text="Name" />
             <combo key="trees" text="Trees" values="olive_trees,apple_trees,oil_palms,orange_trees,almond_trees,banana_plants,coconut_palms,hazel_plants,cherry_trees,persimmon_trees,walnut_trees,plum_trees,peach_trees,tea_plants" />
         </item> <!-- Orchard -->
-        <item name="Vineyard" icon="presets/fruits.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Vineyard" icon="presets/landuse/vineyard.png" type="closedway,multipolygon" preset_name_label="true">
             <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"
@@ -9284,7 +9315,7 @@
             <key key="landuse" value="vineyard" />
             <text key="name" text="Name" />
         </item> <!-- Vineyard -->
-        <item name="Greenhouse Horticulture" icon="presets/greenhouse_horticulture.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Greenhouse Horticulture" icon="presets/landuse/greenhouse_horticulture.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=greenhouse_horticulture"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=greenhouse_horticulture"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=greenhouse_horticulture"
@@ -9299,7 +9330,7 @@
             <text key="name" text="Name" />
             <text key="operator" text="Operator" />
         </item> <!-- Greenhouse Horticulture -->
-        <item name="Plant Nursery" icon="styles/standard/misc/landmark/plant.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Plant Nursery" icon="presets/landmark/plant.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=plant_nursery"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=plant_nursery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=plant_nursery"
@@ -9314,7 +9345,7 @@
             <text key="genus" text="Genus" />
             <text key="species" text="Species" />
         </item> <!-- Plant Nursery -->
-        <item name="Allotments" icon="styles/standard/misc/landuse/allotments.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Allotments" icon="presets/landuse/allotments.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=allotments"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=allotments"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=allotments"
@@ -9329,7 +9360,7 @@
             <text key="name" text="Name" />
         </item> <!-- Allotments -->
         <separator/>
-        <item name="Garden" icon="styles/standard/leisure/garden.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Garden" icon="presets/leisure/garden.png" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=garden"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=garden"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=garden"
@@ -9340,7 +9371,7 @@
             <key key="leisure" value="garden" />
             <text key="name" text="Name" />
         </item> <!-- Garden -->
-        <item name="Grass" icon="styles/standard/misc/landuse/meadow.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Grass" icon="presets/landuse/meadow.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=grass"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=grass"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=grass"
@@ -9355,7 +9386,7 @@
             <key key="landuse" value="grass" />
             <text key="name" text="Name" />
         </item> <!-- Grass -->
-        <item name="Village Green" icon="styles/standard/leisure/common.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Village Green" icon="presets/leisure/common.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=village_green"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=village_green"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=village_green"
@@ -9369,7 +9400,7 @@
             <key key="landuse" value="village_green" />
             <text key="name" text="Name" />
         </item> <!-- Village Green -->
-        <item name="Common" icon="styles/standard/leisure/common.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Common" icon="presets/leisure/common.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=common"
                   pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:leisure=common"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:leisure=common"
@@ -9379,7 +9410,7 @@
             <key key="leisure" value="common" />
             <text key="name" text="Name" />
         </item> <!-- Common -->
-        <item name="Park" icon="styles/standard/leisure/park.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Park" icon="presets/leisure/park.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=park"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=park"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Tag:leisure=park"
@@ -9392,7 +9423,7 @@
             <key key="leisure" value="park" />
             <text key="name" text="Name" />
         </item> <!-- Park -->
-        <item name="Recreation Ground" icon="styles/standard/leisure/common.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Recreation Ground" icon="presets/leisure/common.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=recreation_ground"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=recreation_ground"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=recreation_ground"
@@ -9405,7 +9436,7 @@
             <text key="name" text="Name" />
         </item> <!-- Recreation Ground -->
         <separator/>
-        <item name="Residential Area" icon="styles/standard/misc/landmark/building.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Residential Area" icon="presets/landmark/building.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=residential"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=residential"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=residential"
@@ -9418,7 +9449,7 @@
             <key key="landuse" value="residential" />
             <text key="name" text="Name" />
         </item> <!-- Residential Area -->
-        <item name="Graveyard" icon="presets/graveyard.png" type="node,closedway,multipolygon" preset_name_label="true">
+        <item name="Graveyard" icon="presets/landuse/graveyard.svg" type="node,closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=grave_yard"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:amenity=grave_yard"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=grave_yard"
@@ -9432,7 +9463,7 @@
             <key key="amenity" value="grave_yard" />
             <reference ref="religious" />
         </item> <!-- Graveyard -->
-        <item name="Cemetery" icon="presets/cemetery.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Cemetery" icon="presets/landuse/cemetery.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=cemetery"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=cemetery"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=cemetery"
@@ -9448,7 +9479,7 @@
             <key key="landuse" value="cemetery" />
             <reference ref="religious" />
         </item> <!-- Cemetery -->
-        <item name="Religious" icon="styles/standard/religion.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Religious" icon="presets/religion/religion.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=religious"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=religious"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:landuse=religious"
@@ -9457,7 +9488,7 @@
             <key key="landuse" value="religious" />
             <reference ref="religious" />
         </item> <!-- Religious -->
-        <item name="Retail" icon="styles/standard/shop/mall.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Retail" icon="presets/shop/mall.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=retail"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=retail"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=retail"
@@ -9470,7 +9501,7 @@
             <key key="landuse" value="retail" />
             <text key="name" text="Name" />
         </item> <!-- Retail -->
-        <item name="Commercial" icon="styles/standard/misc/landuse/commercial.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Commercial" icon="presets/landuse/commercial.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=commercial"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=commercial"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=commercial"
@@ -9483,7 +9514,7 @@
             <key key="landuse" value="commercial" />
             <text key="name" text="Name" />
         </item> <!-- Commercial -->
-        <item name="Industrial" icon="styles/standard/misc/landmark/works.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Industrial" icon="presets/landmark/works.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=industrial"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=industrial"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=industrial"
@@ -9497,7 +9528,7 @@
             <key key="landuse" value="industrial" />
             <text key="name" text="Name" />
         </item> <!-- Industrial -->
-        <item name="Garages" icon="presets/garages.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Garages" icon="presets/landuse/garages.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=garages"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=garages"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=garages"
@@ -9510,7 +9541,7 @@
             <text key="name" text="Name" />
             <text key="operator" text="Operator" />
         </item> <!-- Garages -->
-        <item name="Railway Land" icon="presets/rail_light.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Railway Land" icon="presets/landuse/rail_light.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=railway"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=railway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=railway"
@@ -9522,7 +9553,7 @@
             <key key="landuse" value="railway" />
             <text key="name" text="Name" />
         </item> <!-- Railway Land -->
-        <item name="Military" icon="presets/military.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Military" icon="presets/landuse/military.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=military"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=military"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=military"
@@ -9534,7 +9565,7 @@
             <text key="name" text="Name" />
         </item> <!-- Military -->
         <separator/>
-        <item name="Construction Area" icon="presets/construction.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Construction Area" icon="presets/landuse/construction.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=construction"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=construction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=construction"
@@ -9547,7 +9578,7 @@
             <key key="landuse" value="construction" />
             <text key="name" text="Name" />
         </item> <!-- Construction Area -->
-        <item name="Brownfield" icon="presets/landuse.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Brownfield" icon="presets/landuse/landuse.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=brownfield"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=brownfield"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=brownfield"
@@ -9560,7 +9591,7 @@
             <key key="landuse" value="brownfield" />
             <text key="name" text="Name" />
         </item> <!-- Brownfield -->
-        <item name="Greenfield" icon="presets/landuse.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Greenfield" icon="presets/landuse/landuse.png" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=greenfield"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=greenfield"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=greenfield"
@@ -9571,7 +9602,7 @@
             <key key="landuse" value="greenfield" />
             <text key="name" text="Name" />
         </item> <!-- Greenfield -->
-        <item name="Landfill" icon="styles/standard/misc/landuse/landfill.svg" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Landfill" icon="presets/landuse/landfill.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=landfill"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=landfill"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=landfill"
@@ -9583,7 +9614,7 @@
             <key key="landuse" value="landfill" />
             <text key="name" text="Name" />
         </item> <!-- Landfill -->
-        <item name="Quarry" icon="presets/mine.png" type="closedway,multipolygon" preset_name_label="true">
+        <item name="Quarry" icon="presets/landmark/mine.svg" type="closedway,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=quarry"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Tag:landuse=quarry"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=quarry"
@@ -9597,8 +9628,8 @@
         </item> <!-- Quarry -->
     </group> <!-- Landuse -->
   </group> <!-- Geography -->
-    <group name="Annotation" icon="presets/addresses.png">
-        <item name="Name" icon="presets/message.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+    <group name="Annotation" icon="presets/misc/addresses.png">
+        <item name="Name" icon="presets/misc/message.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:name"
                   ar.href="http://wiki.openstreetmap.org/wiki/Ar:Key:name"
                   ca.href="http://wiki.openstreetmap.org/wiki/Ca:Key:name"
@@ -9629,7 +9660,7 @@
                 <text key="short_name" text="Common name abbreviation" match="key" />
             </optional>
         </item> <!-- Name -->
-        <item name="Addresses" icon="presets/addresses.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+        <item name="Addresses" icon="presets/misc/addresses.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:addr"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:addr"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:addr"
@@ -9665,7 +9696,7 @@
                 <combo key="addr:state" text="State" text_context="addr:" values="AL,AK,AZ,AR,CA,CO,CT,DE,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,DC,AS,GU,MP,PR,UM,VI" use_last_as_default="force" match="key" />
             </optional>
         </item> <!-- Addresses -->
-        <item name="Address Interpolation" icon="presets/interpolation.png" type="way" preset_name_label="true">
+        <item name="Address Interpolation" icon="presets/misc/interpolation.png" type="way" preset_name_label="true">
            <link href="http://wiki.openstreetmap.org/wiki/Key:addr"
                  de.href="http://wiki.openstreetmap.org/wiki/DE:Key:addr"
                  es.href="http://wiki.openstreetmap.org/wiki/ES:Key:addr"
@@ -9684,7 +9715,7 @@
                 <combo key="addr:inclusion" text="Accuracy" values="actual,estimate,potential" match="key" />
             </optional>
         </item> <!-- Address Interpolation -->
-        <item name="Contact (Common Schema)" icon="presets/contact.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+        <item name="Contact (Common Schema)" icon="presets/misc/contact.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Annotations"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Annotations"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Annotations"
@@ -9700,7 +9731,7 @@
             <text key="wikipedia" text="Wikipedia" />
             <text key="image" text="Image" />
         </item> <!-- Contact (Common Schema) -->
-        <item name="Contact (Schema with 'contact:*' Prefix)" icon="presets/contact.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+        <item name="Contact (Schema with 'contact:*' Prefix)" icon="presets/misc/contact.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:contact"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:contact"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:contact"
@@ -9720,7 +9751,7 @@
             <text key="wikipedia" text="Wikipedia" />
             <text key="image" text="Image" />
         </item> <!-- Contact (Schema with 'contact:*' Prefix) -->
-        <item name="Description" icon="styles/standard/misc/description.svg" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+        <item name="Description" icon="presets/misc/description.svg" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:description"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:description"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:description"
@@ -9739,7 +9770,7 @@
             <preset_link preset_name="Note" />
             <preset_link preset_name="Fixme" />
         </item> <!-- Description -->
-        <item name="Note" icon="styles/standard/misc/note-annotation.png" name_context="the tag note=*" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+        <item name="Note" icon="presets/misc/note-annotation.png" name_context="the tag note=*" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:note"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:note"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:note"
@@ -9759,7 +9790,7 @@
             <preset_link preset_name="Fixme" />
             <preset_link preset_name="Description" />
         </item> <!-- Note -->
-        <item name="Fixme" icon="styles/standard/misc/fixme-annotation.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
+        <item name="Fixme" icon="presets/misc/fixme-annotation.png" type="node,way,closedway,relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Key:fixme"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Key:fixme"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Key:fixme"
@@ -9779,8 +9810,8 @@
             <preset_link preset_name="Description" />
         </item> <!-- Fixme -->
     </group> <!-- Annotation -->
-    <group name="Relations" icon="presets/relations.png">
-        <item name="Multipolygon" icon="presets/multipolygon.png" type="relation,multipolygon" preset_name_label="true">
+    <group name="Relations" icon="presets/misc/relations.png">
+        <item name="Multipolygon" icon="presets/misc/multipolygon.png" type="relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:multipolygon"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Relation:multipolygon"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:multipolygon"
@@ -9801,7 +9832,7 @@
                 <role key="inner" text="inner segment" requisite="optional" type="way,closedway" />
             </roles>
         </item> <!-- Multipolygon -->
-        <item name="Boundary" icon="presets/boundaries.png" type="relation,multipolygon" preset_name_label="true">
+        <item name="Boundary" icon="presets/misc/boundaries.png" type="relation,multipolygon" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:boundary"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:boundary"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:boundary"
@@ -9841,7 +9872,7 @@
             </roles>
         </item> <!-- Site -->
         <separator/>
-        <item name="Turn Restriction" icon="styles/standard/vehicle/restriction/turn_restrictions/no_u_turn.png" type="relation" preset_name_label="true">
+        <item name="Turn Restriction" icon="presets/vehicle/restriction/turn_restrictions/no_u_turn.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:restriction"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:restriction"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:restriction"
@@ -9863,7 +9894,7 @@
                 <role key="to" text="to way" requisite="required" count="1" type="way" />
             </roles>
         </item> <!-- Turn Restriction -->
-        <item name="Enforcement" icon="styles/standard/vehicle/restriction/speed_camera.svg" type="relation" preset_name_label="true">
+        <item name="Enforcement" icon="presets/vehicle/restriction/speed_camera.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:enforcement"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:enforcement"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:enforcement"
@@ -9886,8 +9917,8 @@
             </roles>
         </item> <!-- Enforcement -->
         <separator/>
-        <group name="Routes" icon="presets/path.png">
-            <item name="Bicycle Route" icon="presets/path.png" type="relation" preset_name_label="true">
+        <group name="Routes" icon="presets/misc/path.png">
+            <item name="Bicycle Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=bicycle"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Cycle_routes"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Cycle_routes"
@@ -9909,7 +9940,7 @@
                     <role key="backward" text="backward segment" requisite="optional" type="way,closedway" />
                 </roles>
             </item> <!-- Bicycle Route -->
-            <item name="Mountain Biking Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Mountain Biking Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Mountain_biking"
                   cs.href="http://wiki.openstreetmap.org/wiki/Cs:Mountain_biking"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Mountain_biking"
@@ -9932,7 +9963,7 @@
                     <role key="backward" text="backward segment" requisite="optional" type="way,closedway" />
                 </roles>
             </item> <!-- Mountain Biking Route -->
-            <item name="Hiking Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Hiking Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=hiking#Tagging_walking_and_hiking_Route_Networks"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Hiking"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Hiking"
@@ -9956,7 +9987,7 @@
                     <role key="" text="natural" requisite="optional" type="node,closedway" member_expression="natural=peak OR natural=volcano OR mountain_pass=yes OR natural=water OR tourism=viewpoint OR amenity=drinking_water OR natural=spring OR place=locality"/>
                 </roles>
             </item> <!-- Hiking Route -->
-            <item name="Walking Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Walking Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=foot" />
                 <space/>
                 <key key="type" value="route"/>
@@ -9972,7 +10003,7 @@
                     <role key="" text="natural" requisite="optional" type="node,closedway" member_expression="natural=peak OR natural=volcano OR mountain_pass=yes OR natural=water OR tourism=viewpoint OR amenity=drinking_water OR natural=spring OR place=locality"/>
                 </roles>
             </item> <!-- Walking Route -->
-            <item name="Riding Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Riding Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=horse" />
                 <space/>
                 <key key="type" value="route"/>
@@ -9988,7 +10019,7 @@
                     <role key="" text="natural" requisite="optional" type="node,closedway" member_expression="natural=peak OR natural=volcano OR mountain_pass=yes OR natural=water OR tourism=viewpoint OR amenity=drinking_water OR natural=spring OR place=locality"/>
                 </roles>
             </item> <!-- Riding Route -->
-            <item name="Piste Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Piste Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=piste"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=piste"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:route=piste" />
@@ -10010,7 +10041,7 @@
                     <role key="start" text="entry points" requisite="optional" type="node" />
                 </roles>
             </item> <!-- Piste Route -->
-            <item name="Ski Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Ski Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=ski"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=ski" />
                 <space/>
@@ -10032,7 +10063,7 @@
                 </roles>
             </item> <!-- Ski Route -->
             <separator/>
-            <item name="Detour Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Detour Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=detour"
                   pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt-br:Tag:route=detour" />
                 <space/>
@@ -10049,7 +10080,7 @@
                     <role key="fork" text="fork node for alternative routes" requisite="optional" type="node"/>
                 </roles>
             </item> <!-- Detour Route -->
-            <item name="Power Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Power Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=power" />
                 <space/>
                 <key key="type" value="route"/>
@@ -10059,7 +10090,7 @@
                     <role key="" text="route segment" requisite="required" type="way" member_expression="power"/>
                 </roles>
             </item> <!-- Power Route -->
-            <item name="Railway Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Railway Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=railway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=railway"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=railway"
@@ -10073,7 +10104,7 @@
                     <role key="" text="route segment" requisite="required" type="way" member_expression="railway|route=ferry"/>
                 </roles>
             </item> <!-- Railway Route -->
-            <item name="Road Route" icon="presets/path.png" type="relation" preset_name_label="true">
+            <item name="Road Route" icon="presets/misc/path.png" type="relation" preset_name_label="true">
                 <link href="http://wiki.openstreetmap.org/wiki/Tag:route=road"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:route=road"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Tag:route=road"
@@ -10093,7 +10124,7 @@
                 </roles>
             </item> <!-- Road Route -->
         </group> <!-- Routes -->
-        <item name="Route Network" icon="presets/path.png" type="relation" preset_name_label="true">
+        <item name="Route Network" icon="presets/misc/path.png" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relations/Proposed/Network" />
             <space />
             <key key="type" value="network" />
@@ -10107,7 +10138,7 @@
             </roles>
         </item> <!-- Route Network -->
         <separator/>
-        <item name="Associated Street" icon="presets/addresses.png" type="relation" preset_name_label="true">
+        <item name="Associated Street" icon="presets/misc/addresses.png" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:associatedStreet"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:associatedStreet"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:associatedStreet"
@@ -10136,7 +10167,7 @@
                 <role key="associated" text="anything related to the street" requisite="optional" type="node,way,closedway" />
             </roles>
         </item> <!-- Street -->
-        <item name="Destination Sign" icon="presets/guidepost.png" type="relation" preset_name_label="true">
+        <item name="Destination Sign" icon="presets/misc/information/guidepost.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:destination_sign"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:destination_sign"
                   es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:destination_sign"
@@ -10160,7 +10191,7 @@
             </roles>
         </item> <!-- Destination Sign -->
         <separator/>
-        <item name="Waterway" icon="styles/standard/nautical/waterway_river.svg" type="relation" preset_name_label="true">
+        <item name="Waterway" icon="presets/nautical/waterway_river.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relation:waterway"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:waterway"
                   fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:waterway"
@@ -10187,7 +10218,7 @@
                 <role key="spring" text="spring of waterway" requisite="optional" type="node" />
             </roles>
         </item> <!-- Waterway -->
-        <item name="Bridge" icon="styles/standard/transport/bridge/bridge.svg" type="relation" preset_name_label="true">
+        <item name="Bridge" icon="presets/transport/bridge/bridge.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relations/Proposed/Bridges_and_Tunnels"
                   de.href="http://wiki.openstreetmap.org/wiki/DE:Relations/Proposed/Bridges_and_Tunnels"
                   ja.href="http://wiki.openstreetmap.org/wiki/JA:Relations/Proposed/Bridges_and_Tunnels"
@@ -10206,7 +10237,7 @@
                 <role key="edge" text="edge ways parallel to 'across'" requisite="optional" type="way" />
             </roles>
         </item> <!-- Bridge -->
-        <item name="Tunnel" icon="presets/tunnel.png" type="relation" preset_name_label="true">
+        <item name="Tunnel" icon="presets/transport/passage/tunnel.svg" type="relation" preset_name_label="true">
             <link href="http://wiki.openstreetmap.org/wiki/Relations/Proposed/Bridges_and_Tunnels" />
             <space />
             <key key="type" value="tunnel" />
diff --git a/data/validator/combinations.mapcss b/data/validator/combinations.mapcss
index 6d37ecf..f314931 100644
--- a/data/validator/combinations.mapcss
+++ b/data/validator/combinations.mapcss
@@ -198,11 +198,11 @@ way[oneway][!highway][!railway] {
   throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.key}");
 }
 
-/* {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"] {
+/* {0.tag} together with {1.key}, see #9389, #11977, #13156 */
+way[oneway=yes][/:backward/][!traffic_sign:backward][bicycle:backward!=use_sidepath],
+way[oneway=yes][/:forward/][!traffic_sign:forward][bicycle:forward!=use_sidepath],
+way[oneway=-1 ][/:backward/][!traffic_sign:backward][bicycle:backward!=use_sidepath],
+way[oneway=-1 ][/:forward/][!traffic_sign:forward][bicycle:forward!=use_sidepath] {
   throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.key}");
 }
 
@@ -372,4 +372,31 @@ way[waterway][layer][layer=~/^(-1|-2|-3|-4|-5)$/][!tunnel][culvert!=yes][covered
 }
 way[waterway][layer][layer=~/^(-1|-2|-3|-4|-5)$/][!tunnel][culvert!=yes][covered!=yes][pipeline!=yes][location!=underground][eval(waylength()) <= 400] {
   throwOther: tr("Short waterway with {0} but without a tag which defines it as tunnel or underground. Remove {1} or add a tunnel tag if applicable. Also check crossing bridges and their {1} tags.", "{1.tag}", "{1.key}");
+}
+
+/* #13144 */
+*[unisex=yes][female=yes][male!=yes],
+*[unisex=yes][male=yes][female!=yes] {
+  throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
+}
+*[unisex=yes][female=yes][male=yes] {
+  throwWarning: tr("{0} together with {1} and {2}. Remove {1} and {2}", "{0.tag}", "{1.tag}", "{2.tag}");
+  fixRemove: "female";
+  fixRemove: "male";
+}
+*[female=yes][male=yes][!unisex][shop=hairdresser] { /* for toilets male=yes female=yes unisex=no combination is valid */
+  throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
+  suggestAlternative: "unisex=yes";
+  fixRemove: "female";
+  fixRemove: "male";
+  fixAdd: "unisex=yes";
+}
+
+/* #13138 */
+area:closed[water][natural!=water][water!=intermittent] { /* water=intermittent is deprecated and has an own warning */
+  throwWarning: tr("{0} without {1}", "{1.key}", "{2.tag}");
+  fixAdd: "natural=water";
+}
+way!:closed[water][natural!=water][water!=intermittent] {
+  throwWarning: tr("{0} without {1}", "{1.key}", "{2.tag}");
 }
\ No newline at end of file
diff --git a/data/validator/deprecated.mapcss b/data/validator/deprecated.mapcss
index 95ca6cb..60e7c73 100644
--- a/data/validator/deprecated.mapcss
+++ b/data/validator/deprecated.mapcss
@@ -1,5 +1,6 @@
 *[barrier=wire_fence] {
   throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "barrier=fence + fence_type=chain_link";
   fixAdd: "barrier=fence";
   fixAdd: "fence_type=chain_link";
   assertMatch: "way barrier=wire_fence";
@@ -867,4 +868,13 @@ node[tower=transition] {
   suggestAlternative: "location:transition=yes";
   fixAdd: "location:transition=yes";
   fixRemove: "tower";
+}
+
+/* #13138 */
+area[landuse=pond] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "natural=water + water=pond";
+  fixAdd: "natural=water";
+  fixAdd: "water=pond";
+  fixRemove: "landuse";
 }
\ No newline at end of file
diff --git a/data/validator/geometry.mapcss b/data/validator/geometry.mapcss
index de154f9..c88dcd8 100644
--- a/data/validator/geometry.mapcss
+++ b/data/validator/geometry.mapcss
@@ -151,18 +151,23 @@ area:closed:areaStyle[tag("landuse") = parent_tag("landuse")] ⧉ area:closed:ar
 /* see ticket:#9522 */
 node[tag("amenity") = parent_tag("amenity")] ∈ *[amenity][amenity != parking] {
   throwWarning: tr("{0} inside {1}", concat("amenity=", tag("amenity")), concat("amenity=", tag("amenity")));
+  group: tr("{0} inside {1}", "amenity", "amenity");
 }
 node[tag("leisure") = parent_tag("leisure")] ∈ *[leisure] {
   throwWarning: tr("{0} inside {1}", concat("leisure=", tag("leisure")), concat("leisure=", tag("leisure")));
+  group: tr("{0} inside {1}", "leisure", "leisure");
 }
 node[tag("tourism") = parent_tag("tourism")] ∈ *[tourism] {
   throwWarning: tr("{0} inside {1}", concat("tourism=", tag("tourism")), concat("tourism=", tag("tourism")));
+  group: tr("{0} inside {1}", "tourism", "tourism");
 }
 node[tag("shop") = parent_tag("shop")] ∈ *[shop] {
   throwWarning: tr("{0} inside {1}", concat("shop=", tag("shop")), concat("shop=", tag("shop")));
+  group: tr("{0} inside {1}", "shop", "shop");
 }
 node[tag("power") = parent_tag("power")] ∈ *[power] {
   throwWarning: tr("{0} inside {1}", concat("power=", tag("power")), concat("power=", tag("power")));
+  group: tr("{0} inside {1}", "power", "power");
 }
 
 /* isolated nodes which should be part of a way, see #10825 */
@@ -270,7 +275,7 @@ way[!power][!building] > node.node_in_power_way {
 }
 
 /* #12646, #12992 */
-way[waterway=~/^(stream|ditch|river|drain)$/]!:closed >[index=-1] node!:connection:in-downloaded-area { 
+way[waterway=~/^(stream|ditch|river|drain)$/]!:closed >[index=-1] node[natural!=sinkhole][natural!=cave_entrance]!:connection:in-downloaded-area { 
   throwWarning: tr("Waterway ends without a connection to another waterway or the direction of the waterway is wrong.");
 }
 
diff --git a/data/validator/ignoretags.cfg b/data/validator/ignoretags.cfg
index 884f780..b72c1da 100644
--- a/data/validator/ignoretags.cfg
+++ b/data/validator/ignoretags.cfg
@@ -176,6 +176,7 @@ K:cuisine=pie
 ;
 K:historic=building
 K:historic=wreck
+K:historic=charcoal_pile
 ;
 ; Lifecycle Tags
 ;
@@ -263,6 +264,7 @@ K:shop=vacant
 ;
 K:sport=boxing
 K:sport=netball
+K:sport=cliff_diving
 ;
 ; Tourism Tags
 ;
diff --git a/data/validator/opening_hours.js b/data/validator/opening_hours.js
index b8beaa1..5d7f2dc 100644
--- a/data/validator/opening_hours.js
+++ b/data/validator/opening_hours.js
@@ -1,23 +1,46 @@
-require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){if(req [...]
- Copyright (c) 2011-2013, Vladimir Agafonkin
- SunCalc is a JavaScript library for calculating sun position, sunlight phases, and moon position.
+require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){if(typ [...]
+ (c) 2011-2015, Vladimir Agafonkin
+ SunCalc is a JavaScript library for calculating sun/moon position and light phases.
  https://github.com/mourner/suncalc
- */
-(function(global){"use strict";var SunCalc;if(typeof exports!=="undefined"){SunCalc=exports}else{SunCalc=global.SunCalc={}}var PI=Math.PI,rad=PI/180,sin=Math.sin,cos=Math.cos,tan=Math.tan,asin=Math.asin,atan=Math.atan2,acos=Math.acos;var dayMs=1e3*60*60*24,J1970=2440588,J2000=2451545;function toJulian(date){return date.valueOf()/dayMs-.5+J1970}function fromJulian(j){return new Date((j+.5-J1970)*dayMs)}function toDays(date){return toJulian(date)-J2000}var e=rad*23.4397;function getRightAs [...]
-// v0.5.0 of https://github.com/goloroden/http.js
-var getXhr=function(callback){if(window.XMLHttpRequest){return callback(null,new XMLHttpRequest)}else if(window.ActiveXObject){try{return callback(null,new ActiveXObject("Msxml2.XMLHTTP"))}catch(e){return callback(null,new ActiveXObject("Microsoft.XMLHTTP"))}}return callback(new Error)};var encodeUsingUrlEncoding=function(data){if(typeof data==="string"){return data}var result=[];for(var dataItem in data){if(data.hasOwnProperty(dataItem)){result.push(encodeURIComponent(dataItem)+"="+enco [...]
-var _rulesPluralsTypes={1:function(n){return Number(n>1)},2:function(n){return Number(n!=1)},3:function(n){return 0},4:function(n){return Number(n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)},5:function(n){return Number(n===0?0:n==1?1:n==2?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5)},6:function(n){return Number(n==1?0:n>=2&&n<=4?1:2)},7:function(n){return Number(n==1?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)},8:function(n){return Number(n==1?0:n==2?1:n!=8&&n!=11?2:3)} [...]
-// https://github.com/moment/moment/issues/1423
-c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c)}function local__createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false)}var prototypeMin=deprecate("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var other=local__createLocal.apply(null,arguments);return other<this?this:other});var prototypeMax=deprecate("mom [...]
-// https://github.com/moment/moment/pull/1871
-return-Math.round(m._d.getTimezoneOffset()/15)*15}utils_hooks__hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime){var offset=this._offset||0,localAdjust;if(input!=null){if(typeof input==="string"){input=offsetFromString(input)}if(Math.abs(input)<16){input=input*60}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this)}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,"m")}if(offset!==input){if(!keepLocalTime||this._changeInPro [...]
-// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-var Y=iso_string__abs(this.years());var M=iso_string__abs(this.months());var D=iso_string__abs(this.days());var h=iso_string__abs(this.hours());var m=iso_string__abs(this.minutes());var s=iso_string__abs(this.seconds()+this.milliseconds()/1e3);var total=this.asSeconds();if(!total){return"P0D"}return(total<0?"-":"")+"P"+(Y?Y+"Y":"")+(M?M+"M":"")+(D?D+"D":"")+(h||m||s?"T":"")+(h?h+"H":"")+(m?m+"M":"")+(s?s+"S":"")}var duration_prototype__proto=Duration.prototype;duration_prototype__proto.a [...]
- * For information see https://github.com/ypid/opening_hours.js
+*/
+(function(){"use strict";var PI=Math.PI,sin=Math.sin,cos=Math.cos,tan=Math.tan,asin=Math.asin,atan=Math.atan2,acos=Math.acos,rad=PI/180;var dayMs=1e3*60*60*24,J1970=2440588,J2000=2451545;function toJulian(date){return date.valueOf()/dayMs-.5+J1970}function fromJulian(j){return new Date((j+.5-J1970)*dayMs)}function toDays(date){return toJulian(date)-J2000}var e=rad*23.4397;function rightAscension(l,b){return atan(sin(l)*cos(e)-tan(b)*sin(e),cos(l))}function declination(l,b){return asin(si [...]
+var getXhr=function(callback){if(window.XMLHttpRequest){return callback(null,new XMLHttpRequest)}else if(window.ActiveXObject){try{return callback(null,new ActiveXObject("Msxml2.XMLHTTP"))}catch(e){return callback(null,new ActiveXObject("Microsoft.XMLHTTP"))}}return callback(new Error)};var encodeUsingUrlEncoding=function(data){if(typeof data==="string"){return data}var result=[];for(var dataItem in data){if(data.hasOwnProperty(dataItem)){result.push(encodeURIComponent(dataItem)+"="+enco [...]
+var _rulesPluralsTypes={1:function(n){return Number(n>1)},2:function(n){return Number(n!=1)},3:function(n){return 0},4:function(n){return Number(n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)},5:function(n){return Number(n===0?0:n==1?1:n==2?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5)},6:function(n){return Number(n==1?0:n>=2&&n<=4?1:2)},7:function(n){return Number(n==1?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2)},8:function(n){return Number(n==1?0:n==2?1:n!=8&&n!=11?2:3)} [...]
+return typeof sth==="function"&&Object.prototype.toString.call(sth)==="[object Function]"}function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){if(!hasOwnProp(regexes,token)){return new RegExp(unescapeFormat(token))}return regexes[token](config._strict,config._locale)}function unescapeFormat(s){return s.replace("\\","").replace(/\\(\[)|\\(\])|\[ [...]
+c._isAMomentObject=true;c._useUTC=c._isUTC=isUTC;c._l=locale;c._i=input;c._f=format;c._strict=strict;return createFromConfig(c)}function local__createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,false)}var prototypeMin=deprecate("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var other=local__createLocal.apply(null,arguments);return other<this?this:other});var prototypeMax=deprecate("mom [...]
+return-Math.round(m._d.getTimezoneOffset()/15)*15}utils_hooks__hooks.updateOffset=function(){};function getSetOffset(input,keepLocalTime){var offset=this._offset||0,localAdjust;if(input!=null){if(typeof input==="string"){input=offsetFromString(input)}if(Math.abs(input)<16){input=input*60}if(!this._isUTC&&keepLocalTime){localAdjust=getDateOffset(this)}this._offset=input;this._isUTC=true;if(localAdjust!=null){this.add(localAdjust,"m")}if(offset!==input){if(!keepLocalTime||this._changeInPro [...]
+if(!(milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0)){milliseconds+=absCeil(monthsToDays(months)+days)*864e5;days=0;months=0}data.milliseconds=milliseconds%1e3;seconds=absFloor(milliseconds/1e3);data.seconds=seconds%60;minutes=absFloor(seconds/60);data.minutes=minutes%60;hours=absFloor(minutes/60);data.hours=hours%24;days+=absFloor(hours/24);monthsFromDays=absFloor(daysToMonths(days));months+=monthsFromDays;days-=absCeil(monthsToDays(monthsFromDays));years=absFl [...]
+var Y=years;var M=months;var D=days;var h=hours;var m=minutes;var s=seconds;var total=this.asSeconds();if(!total){return"P0D"}return(total<0?"-":"")+"P"+(Y?Y+"Y":"")+(M?M+"M":"")+(D?D+"D":"")+(h||m||s?"T":"")+(h?h+"H":"")+(m?m+"M":"")+(s?s+"S":"")}var duration_prototype__proto=Duration.prototype;duration_prototype__proto.abs=duration_abs__abs;duration_prototype__proto.add=duration_add_subtract__add;duration_prototype__proto.subtract=duration_add_subtract__subtract;duration_prototype__pro [...]
+ * @source: https://github.com/opening-hours/opening_hours.js/blob/master/opening_hours.js
+ * @source: ./opening_hours.js
+ * @license: LGPL-3.0
+ *
+ * Copyright (C) 2012-2013 Dmitry Marakasov
+ * Copyright (C) 2013-2016 Robin `ypid` Schneider
+ *
+ * opening_hours.js is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, version 3 of the License.
+ *
+ * opening_hours.js is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with opening_hours.js; if not, see
+ * <https://www.gnu.org/licenses/>.
+ * For information see https://github.com/opening-hours/opening_hours.js
  * and the docs directory which contains internal documentation and design.
+ *
+ * ---------------
+ * Copyright (C) 2012-2013 Dmitry Marakasov
+ *
+ * All work done by Dmitry Marakasov is additionally published under the New (2-clause) BSD license.
+ * Refer to the README.md and the reversion control history for more details.
  */
-(function(root,factory){var holidays={fr:{PH:{"Jour de l'an":[1,1],"Vendredi saint":["easter",-2,["Moselle","Bas-Rhin","Haut-Rhin","Guadeloupe","Martinique","Polynésie française"]],"Lundi de Pâques":["easter",1],"Saint-Pierre-Chanel":[4,28,["Wallis-et-Futuna"]],"Fête du Travail":[5,1],"Fête de la Victoire":[5,8],"Abolition de l'esclavage (Martinique)":[5,22,["Martinique"]],"Abolition de l'esclavage (Guadeloupe)":[5,27,["Guadeloupe"]],"Jeudi de l'Ascension":["easter",39],"Lundi de Pentecô [...]
-"Christmas Day":[12,25]},Alabama:{PH:{"New Year's Day":[1,1],"Robert E. Lee/Martin Luther King Birthday":["firstJanuaryMonday",14],"George Washington/Thomas Jefferson Birthday":["firstFebruaryMonday",14],"Memorial Day":["lastMayMonday",0],"Independence Day":[7,4],"Labor Day":["firstSeptemberMonday",0],"Columbus Day":["firstOctoberMonday",7],"Veterans Day":[11,11],Thanksgiving:["firstNovemberThursday",21],"Christmas Day":[12,25],"Confederate Memorial Day":["firstAprilMonday",21],"Jefferso [...]
-"neděle":0,ne:0,"pondělí":1,po:1,"úterý":2,"út":2,"středa":3,st:3,"čtvrtek":4,"čt":4,"pátek":5,"pá":5,sobota:6},'Please use the English abbreviation "<ok>" (Spanish) for "<ko>".':{martes:0,"miércoles":1,jueves:2,viernes:3,"sábado":4,domingo:5,lunes:6},'Please use the English abbreviation "<ok>" (Indonesian) for "<ko>".':{selasa:0,rabu:1,kami:2,jumat:3,sabtu:4,minggu:5,senin:6},'Please use the English abbreviation "<ok>" (Swedish) for "<ko>".':{"söndag":0,"söndagar":0,"måndag":1,ma:1,tisd [...]
-}var selector_start_end_type=[0,0,undefined];var prettified_group_value=[];var count=0;do{selector_start_end_type=getSelectorRange(new_tokens[nrule][0],selector_start_end_type[1]);if(count>50){throw formatLibraryBugMessage("infinite loop")}if(selector_start_end_type[2]!=="rule separator"){prettified_group_value.push([selector_start_end_type,prettifySelector(new_tokens[nrule][0],selector_start_end_type[0],selector_start_end_type[1],selector_start_end_type[2],user_conf)])}selector_start_en [...]
-firstAugustMonday:new Date(Y,7,firstWeekdayOfMonth(7,1)),firstSeptemberMonday:new Date(Y,8,firstWeekdayOfMonth(8,1)),firstSeptemberSunday:new Date(Y,8,firstWeekdayOfMonth(8,0)),firstOctoberMonday:new Date(Y,9,firstWeekdayOfMonth(9,1)),firstNovemberMonday:new Date(Y,10,firstWeekdayOfMonth(10,1)),firstMarchTuesday:new Date(Y,2,firstWeekdayOfMonth(2,2)),firstAugustTuesday:new Date(Y,7,firstWeekdayOfMonth(7,2)),firstAugustFriday:new Date(Y,7,firstWeekdayOfMonth(7,5)),firstNovemberThursday:ne [...]
\ No newline at end of file
+(function(root,factory){"use strict";var holiday_definitions={nl:{PH:{Nieuwjaarsdag:[1,1],"Goede vrijdag":["easter",-2],"Tweede Paasdag":["easter",1],Koningsdag:[4,27],Bevreidingsdag:[5,5],Hemelvaartsdag:["easter",39],"Tweede Pinksterdag":["easter",50],"Eerste Kerstdag":[12,25],"Tweede Kerstdag":[12,26]}},be:{PH:{"Nieuwjaar - Jour de l'an":[1,1],"Paasmaandag - Lundi de Pâques":["easter",1],"Dag van de Arbeid - Fête du Travail":[5,1],"Onze-Lieve-Heer-Hemelvaart - Jeudi de l'Ascensionn":[" [...]
+var word_error_correction={wrong_words:{'Assuming "<ok>" for "<ko>".':{daytime:"sunrise-sunset",spring:"Mar-May",summer:"Jun-Aug",autumn:"Sep-Nov",winter:"Dec-Feb",_:"-","=":"-"},'"<ko>" wird als "<ok>" interpertiert.':{"frühling":"Mar-May","frühjahr":"Mar-May",sommer:"Jun-Aug",herbst:"Sep-Nov"},'Bitte benutze die englische Schreibweise "<ok>" für "<ko>".':{"werktags?":"Mo-Fr"},'Bitte benutze "<ok>" für "<ko>". Beispiel: "Mo-Fr 08:00-12:00; Tu off".':{"ruhetage?":"off",geschlossen:"off", [...]
+return val}else{var correct_abbr;for(correct_abbr in word_error_correction[token_name]["default"]){if(word_error_correction[token_name]["default"][correct_abbr]===val)break}if(typeof correct_abbr==="undefined"){throw formatLibraryBugMessage("Please also include the stacktrace.")}if(token_name!=="timevar"){correct_abbr=correct_abbr.charAt(0).toUpperCase()+correct_abbr.slice(1)}if(!done_with_warnings)parsing_warnings.push([-1,value_length-word.length,comment.replace(/<ko>/,word).replace(/< [...]
+var last_holiday_last_year_num=getValueForDate(last_holiday_last_year[0],true);if(date_num<last_holiday_last_year_num){return[false,last_holiday_last_year[0]]}else if(date_num===last_holiday_last_year_num){return[true,dateAtDayMinutes(last_holiday_last_year[0],minutes_in_day),"Day after "+last_holiday_last_year[1]]}}return[false,holidays[i][0]]}else if(date_num===next_holiday_date_num){return[true,new Date(date.getFullYear(),date.getMonth(),date.getDate()+1),(add_days[0]>0?"Day after ":a [...]
+else if(prevstate)open+=it.getDate().getTime()-prevdate.getTime()}prevdate=it.getDate();prevstate=it.getState();prevunknown=it.getUnknown()}else{if(typeof prevdate==="object"){if(prevunknown)unknown+=it.getDate().getTime()-prevdate.getTime();else open+=it.getDate().getTime()-prevdate.getTime();prevdate=undefined}}}if(typeof prevdate==="object"){if(prevunknown)unknown+=to.getTime()-prevdate.getTime();else open+=to.getTime()-prevdate.getTime()}return[open,unknown]};this.getIterator=functio [...]
\ No newline at end of file
diff --git a/data_nodist/trans/ast.lang b/data_nodist/trans/ast.lang
index d909503..42197e8 100644
Binary files a/data_nodist/trans/ast.lang and b/data_nodist/trans/ast.lang differ
diff --git a/data_nodist/trans/be.lang b/data_nodist/trans/be.lang
index 85b1964..5006cad 100644
Binary files a/data_nodist/trans/be.lang and b/data_nodist/trans/be.lang differ
diff --git a/data_nodist/trans/bg.lang b/data_nodist/trans/bg.lang
index f2f87ea..a00f61d 100644
Binary files a/data_nodist/trans/bg.lang and b/data_nodist/trans/bg.lang differ
diff --git a/data_nodist/trans/ca-valencia.lang b/data_nodist/trans/ca-valencia.lang
index d0f842c..3c8c334 100644
Binary files a/data_nodist/trans/ca-valencia.lang and b/data_nodist/trans/ca-valencia.lang differ
diff --git a/data_nodist/trans/ca.lang b/data_nodist/trans/ca.lang
index b0dfbf7..794098f 100644
Binary files a/data_nodist/trans/ca.lang and b/data_nodist/trans/ca.lang differ
diff --git a/data_nodist/trans/cs.lang b/data_nodist/trans/cs.lang
index a7c6f1c..263096a 100644
Binary files a/data_nodist/trans/cs.lang and b/data_nodist/trans/cs.lang differ
diff --git a/data_nodist/trans/da.lang b/data_nodist/trans/da.lang
index 782a4d0..a8c1e35 100644
Binary files a/data_nodist/trans/da.lang and b/data_nodist/trans/da.lang differ
diff --git a/data_nodist/trans/de.lang b/data_nodist/trans/de.lang
index 096821f..264f562 100644
Binary files a/data_nodist/trans/de.lang and b/data_nodist/trans/de.lang differ
diff --git a/data_nodist/trans/el.lang b/data_nodist/trans/el.lang
index 819fe8a..bbfa9f4 100644
Binary files a/data_nodist/trans/el.lang and b/data_nodist/trans/el.lang differ
diff --git a/data_nodist/trans/en.lang b/data_nodist/trans/en.lang
index 0abd5ce..1189842 100644
Binary files a/data_nodist/trans/en.lang and b/data_nodist/trans/en.lang differ
diff --git a/data_nodist/trans/en_AU.lang b/data_nodist/trans/en_AU.lang
index b17a3cd..ea7fd1b 100644
Binary files a/data_nodist/trans/en_AU.lang and b/data_nodist/trans/en_AU.lang differ
diff --git a/data_nodist/trans/en_GB.lang b/data_nodist/trans/en_GB.lang
index 13be7db..9189535 100644
Binary files a/data_nodist/trans/en_GB.lang and b/data_nodist/trans/en_GB.lang differ
diff --git a/data_nodist/trans/es.lang b/data_nodist/trans/es.lang
index 4447597..fd6c628 100644
Binary files a/data_nodist/trans/es.lang and b/data_nodist/trans/es.lang differ
diff --git a/data_nodist/trans/et.lang b/data_nodist/trans/et.lang
index 1a03fb2..119500d 100644
Binary files a/data_nodist/trans/et.lang and b/data_nodist/trans/et.lang differ
diff --git a/data_nodist/trans/fi.lang b/data_nodist/trans/fi.lang
index fe302f3..8659d00 100644
Binary files a/data_nodist/trans/fi.lang and b/data_nodist/trans/fi.lang differ
diff --git a/data_nodist/trans/fr.lang b/data_nodist/trans/fr.lang
index 163467e..f8c564a 100644
Binary files a/data_nodist/trans/fr.lang and b/data_nodist/trans/fr.lang differ
diff --git a/data_nodist/trans/gl.lang b/data_nodist/trans/gl.lang
index 1e1c625..2ae3a02 100644
Binary files a/data_nodist/trans/gl.lang and b/data_nodist/trans/gl.lang differ
diff --git a/data_nodist/trans/hu.lang b/data_nodist/trans/hu.lang
index 7544fd0..35e19ce 100644
Binary files a/data_nodist/trans/hu.lang and b/data_nodist/trans/hu.lang differ
diff --git a/data_nodist/trans/id.lang b/data_nodist/trans/id.lang
index dfe6324..fa1b4c5 100644
Binary files a/data_nodist/trans/id.lang and b/data_nodist/trans/id.lang differ
diff --git a/data_nodist/trans/it.lang b/data_nodist/trans/it.lang
index 89848bb..d19b4e0 100644
Binary files a/data_nodist/trans/it.lang and b/data_nodist/trans/it.lang differ
diff --git a/data_nodist/trans/ja.lang b/data_nodist/trans/ja.lang
index 644ef00..b4af924 100644
Binary files a/data_nodist/trans/ja.lang and b/data_nodist/trans/ja.lang differ
diff --git a/data_nodist/trans/km.lang b/data_nodist/trans/km.lang
index b348e38..6e37e3b 100644
Binary files a/data_nodist/trans/km.lang and b/data_nodist/trans/km.lang differ
diff --git a/data_nodist/trans/lt.lang b/data_nodist/trans/lt.lang
index 1cd8f83..301abfc 100644
Binary files a/data_nodist/trans/lt.lang and b/data_nodist/trans/lt.lang differ
diff --git a/data_nodist/trans/nb.lang b/data_nodist/trans/nb.lang
index a3f17a0..ed8f62c 100644
Binary files a/data_nodist/trans/nb.lang and b/data_nodist/trans/nb.lang differ
diff --git a/data_nodist/trans/nl.lang b/data_nodist/trans/nl.lang
index ee91142..e320b5a 100644
Binary files a/data_nodist/trans/nl.lang and b/data_nodist/trans/nl.lang differ
diff --git a/data_nodist/trans/pl.lang b/data_nodist/trans/pl.lang
index 8d7a92d..f82ecb9 100644
Binary files a/data_nodist/trans/pl.lang and b/data_nodist/trans/pl.lang differ
diff --git a/data_nodist/trans/pt.lang b/data_nodist/trans/pt.lang
index fdacd24..017c76c 100644
Binary files a/data_nodist/trans/pt.lang and b/data_nodist/trans/pt.lang differ
diff --git a/data_nodist/trans/pt_BR.lang b/data_nodist/trans/pt_BR.lang
index 373ffe8..93791aa 100644
Binary files a/data_nodist/trans/pt_BR.lang and b/data_nodist/trans/pt_BR.lang differ
diff --git a/data_nodist/trans/ru.lang b/data_nodist/trans/ru.lang
index 3806d6b..9056c50 100644
Binary files a/data_nodist/trans/ru.lang and b/data_nodist/trans/ru.lang differ
diff --git a/data_nodist/trans/sk.lang b/data_nodist/trans/sk.lang
index 932a6e1..7f04b11 100644
Binary files a/data_nodist/trans/sk.lang and b/data_nodist/trans/sk.lang differ
diff --git a/data_nodist/trans/sv.lang b/data_nodist/trans/sv.lang
index bdc6805..12a278c 100644
Binary files a/data_nodist/trans/sv.lang and b/data_nodist/trans/sv.lang differ
diff --git a/data_nodist/trans/uk.lang b/data_nodist/trans/uk.lang
index d9c6369..7c8a5c6 100644
Binary files a/data_nodist/trans/uk.lang and b/data_nodist/trans/uk.lang differ
diff --git a/data_nodist/trans/vi.lang b/data_nodist/trans/vi.lang
index 605813c..96a75f4 100644
Binary files a/data_nodist/trans/vi.lang and b/data_nodist/trans/vi.lang differ
diff --git a/data_nodist/trans/zh_CN.lang b/data_nodist/trans/zh_CN.lang
index 7e1df73..e2472c5 100644
Binary files a/data_nodist/trans/zh_CN.lang and b/data_nodist/trans/zh_CN.lang differ
diff --git a/data_nodist/trans/zh_TW.lang b/data_nodist/trans/zh_TW.lang
index 6e915d9..1c72919 100644
Binary files a/data_nodist/trans/zh_TW.lang and b/data_nodist/trans/zh_TW.lang differ
diff --git a/eclipse/JOSM (Java 7).launch b/eclipse/JOSM (Java 7).launch
deleted file mode 100644
index c2ed6b0..0000000
--- a/eclipse/JOSM (Java 7).launch	
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/JOSM/src/JOSM.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sourceLookupDirector>
<sourceContainers duplicates="false">
<container memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;javaProject name=&quot;JOSM&quo [...]
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7" path="1" type="4"/>
"/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath">
<memento exportedEntriesOnly="false" project="JOSM"/>
</runtimeClasspathEntry>
"/>
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<runtimeClasspathEntry internalArchive="/JOSM/bin2" path="3" type="2"/>
"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="JOSM"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--debug"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="JOSM"/>
-</launchConfiguration>
diff --git a/geticons.pl b/geticons.pl
index 4807ab7..ad93458 100755
--- a/geticons.pl
+++ b/geticons.pl
@@ -36,16 +36,12 @@ for my $arg (@ARGV ? @ARGV : @default)
 
       if(($l =~ /(?:icon-image|repeat-image|fill-image)\s*:\s*(\"?(.*?)\"?)\s*;/) && ($1 ne "none"))
       {
-        my $val = $2;
-        my $img = "styles/standard/$val";
-        $img = "styles/$val" if((!-f "images/$img") && -f "images/styles/$val");
-        $img = $val if((!-f "images/$img") && -f "images/$val");
+        my $img = $2;
         ++$icons{$img};
       }
       if($l =~ /ImageProvider(?:\.get)?\(\"([^\"]*?)\"(?:, ImageProvider.ImageSizes.[A-Z]+)?\)/)
       {
         my $i = $1;
-        $i = "styles/standard/$i" if $i eq "misc/no_icon";
         ++$icons{$i};
       }
       while($l =~ /\/\*\s*ICON\s*\*\/\s*\"(.*?)\"/g)
@@ -158,6 +154,37 @@ for($i = 1; my @ifiles = (glob("images".("/*" x $i).".png"), glob("images".("/*"
   for my $ifile (sort @ifiles)
   {
     $ifile =~ s/^images\///;
+    # svg comes after png due to the glob, so only check for svg's
+    if($ifile =~ /^(.*)\.svg$/)
+    {
+      if($haveicons{"$1.png"})
+      {
+        print STDERR "File $1 exists twice as .svg and .png.\n";
+      }
+      # check for unwanted svg effects
+      if(open FILE, "<","images/$ifile")
+      {
+        undef $/;
+        my $f = <FILE>;
+        close FILE;
+        while($f =~ /style\s*=\s*["']([^"']+)["']/g)
+        {
+          for my $x (split(/\s*;\s*/, $1))
+          {
+            print STDERR "Style starts with minus for $ifile: $x\n" if $x =~ /^-/;
+          }
+        }
+        if($f =~ /viewBox\s*=\s*["']([^"']+)["']/)
+        {
+          my $x = $1;
+          print STDERR "ViewBox has float values for $ifile: $x\n" if $x =~ /\./;
+        }
+      }
+      else
+      {
+        print STDERR "Could not open file $ifile: $1";
+      }
+    }
     $haveicons{$ifile} = 1;
   }
 }
diff --git a/i18n/po/af.po b/i18n/po/af.po
index fe750ce..dae994e 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:31+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:31+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: af\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/am.po b/i18n/po/am.po
index ef4b6f2..e7f55e2 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:32+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:32+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: am\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ar.po b/i18n/po/ar.po
index 7f3b2d4..2583d6c 100644
--- a/i18n/po/ar.po
+++ b/i18n/po/ar.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2015-10-08 23:09+0000\n"
 "Last-Translator: mourad101ee <mourad101ee at gmail.com>\n"
 "Language-Team: Arabic <ar at li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
 "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: 2016-07-12 04:32+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:32+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ar\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgstr "تجاهل URL ملف غيرصحيح التكوين: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "المعلم \"تحميل جبس\" لا يقبل إسم الملف أو عناون الملف"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "الخروج من JOSM"
-
-msgid "Continue, try anyway"
-msgstr "واصل,حاول على اية حال"
-
-msgid "Error"
-msgstr "خطأ"
-
 msgid "About"
 msgstr "حول"
 
@@ -237,6 +222,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "إضافة طبقة صور {0}"
 
+msgid "Error"
+msgstr "خطأ"
+
 msgid "Select image format for WMS layer"
 msgstr "تحديد بنية الصورة من أجل طبقة خدمة خرائط الويب"
 
@@ -519,8 +507,8 @@ msgstr "تنزيل الأجسام التي تشير الى الأجسام الم
 msgid "Duplicate"
 msgstr "نسخة مطابقة"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "تكرار التحديد بالنسخ واللصق الفوري."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "أخرُج"
@@ -1085,19 +1073,13 @@ msgstr ""
 msgid "Paste"
 msgstr "ألصِق"
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1106,16 +1088,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "التفضيلات..."
 
@@ -1817,6 +1789,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2841,7 +2816,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2894,6 +2869,9 @@ msgstr[2] "أغراض"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2926,9 +2904,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5606,12 +5581,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5625,6 +5594,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5808,6 +5783,28 @@ msgstr "المفتاح الجديد"
 msgid "New value"
 msgstr "القيمة الجديدة"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7661,11 +7658,6 @@ msgstr "حرّك الأعضاء المختارة حالياً إلى الأعل
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9152,13 +9144,6 @@ 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 ""
 
@@ -9174,6 +9159,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "إحفظ الطبقة"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12464,6 +12454,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13255,6 +13248,9 @@ msgstr "هل تريد السماح بذلك ؟"
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13966,6 +13962,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13992,6 +14000,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14003,21 +14018,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14161,64 +14164,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "لا تفعل أي شيء"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "بلّغ عن علّة"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "الشذوذ غيرال متوقع"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14552,9 +14569,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14579,9 +14593,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14603,7 +14614,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14654,7 +14665,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14729,7 +14743,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16015,9 +16032,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16156,7 +16170,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16391,17 +16406,21 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "سكة حديد"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16449,9 +16468,15 @@ msgstr "أزقات الإفتتاح"
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16864,8 +16889,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "الرمز البريدي"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17027,15 +17052,6 @@ msgstr "شيعي"
 msgid "sunni"
 msgstr "سنّي"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "منخفض"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18602,6 +18618,9 @@ msgstr "قطار نفقي"
 msgid "Tram"
 msgstr "ترام"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19105,9 +19124,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20311,6 +20327,9 @@ msgstr "مدرج ألعاب رياضية"
 msgid "Sports Centre"
 msgstr "مركز/نادي  رياضي"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20397,6 +20416,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20453,6 +20476,9 @@ msgstr "سباق الخيل"
 msgid "Gymnastics"
 msgstr "رياضة بدنية"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22309,6 +22335,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22408,6 +22443,9 @@ msgstr ""
 msgid "food"
 msgstr "مأكولات"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22590,6 +22628,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22739,9 +22789,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22897,6 +22944,18 @@ msgstr "جزيرة"
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23241,6 +23300,9 @@ msgstr ""
 msgid "City name"
 msgstr "إسم المدينة"
 
+msgid "Post code"
+msgstr "الرمز البريدي"
+
 msgid "Country code"
 msgstr "رمز البلد"
 
@@ -23957,6 +24019,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25638,6 +25703,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "منخفض"
+
 msgid "symbol"
 msgstr ""
 
@@ -27984,6 +28058,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29369,18 +29452,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29424,6 +29495,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29449,6 +29530,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29458,6 +29563,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "سكة حديد"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30599,6 +30707,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32203,6 +32314,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32246,9 +32363,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ast.po b/i18n/po/ast.po
index c8ed9f3..737b45a 100644
--- a/i18n/po/ast.po
+++ b/i18n/po/ast.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-01-23 20:31+0000\n"
-"Last-Translator: Xuacu Saturio <xuacusk8 at gmail.com>\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-09 15:33+0000\n"
+"Last-Translator: Don-vip <Unknown>\n"
 "Language-Team: Asturian <ast 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: 2016-07-12 04:33+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:34+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ast\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -98,7 +98,7 @@ msgid "Updating user interface"
 msgstr "Anovando interfaz d''usuariu"
 
 msgid "Failed to save default preferences."
-msgstr ""
+msgstr "Nun pudieron guardase les preferencies predeterminaes."
 
 msgid "Ignoring malformed URL: \"{0}\""
 msgstr "Inorando URL mal formada: \"{0}\""
@@ -112,24 +112,6 @@ msgstr "Inorando URL de ficheru mal formada: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "El parámetru \"downloadgps\" nun aceuta nomes o URLs de ficheros"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM rique la versión {0} de Java.</h2>Versión de Java detectada: "
-"{1}.<br>Puede <ul><li>actualizar el so Java (JRE) o</li><li>usar una versión "
-"anterior de JOSM (Java {2} compatible).</li></ul>Más información:"
-
-msgid "Exit JOSM"
-msgstr "Colar de JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Siguir, tentalo de toles maneres"
-
-msgid "Error"
-msgstr "Fallu"
-
 msgid "About"
 msgstr "Tocante a"
 
@@ -243,6 +225,9 @@ msgstr "Escueye nel mapa los elementos escoyíos na llista cimera."
 msgid "Add imagery layer {0}"
 msgstr "Amestar capa de imaxes {0}"
 
+msgid "Error"
+msgstr "Fallu"
+
 msgid "Select image format for WMS layer"
 msgstr "Escoyer formatu d''imaxe pa la capa WMS"
 
@@ -534,8 +519,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duplicar"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicar la seleición copiando y apegando nel intre."
+msgid "Duplicate selection."
+msgstr "Duplicar la esbilla."
 
 msgid "Exit"
 msgstr "Colar"
@@ -1163,23 +1148,14 @@ msgstr "Consulta de nivel superior: "
 msgid "Paste"
 msgstr "Apegar"
 
-msgid "Paste contents of paste buffer."
-msgstr "Pegar el conteníu de la memoria de pegáu."
+msgid "Paste contents of clipboard."
+msgstr "Apegar el conteníu del cartafueyu."
 
-msgid "Delete incomplete members?"
-msgstr "¿Desaniciar los miembros incompletos?"
+msgid "Paste at source position"
+msgstr "Apegar na posición de la fonte"
 
-msgid "Paste without incomplete members"
-msgstr "Pegar ensin los miembros incompletos"
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
-msgstr ""
-"Los datos copiaos contienen oxetos incompletos. Al pegar, los oxetos "
-"incompletos se desanicien. ¿Quies pegar los datos ensin los oxetos "
-"incompletos?"
+msgid "Paste contents of clipboard at the position they were copied from."
+msgstr "Apegar el conteníu del cartafueyu na posición de la que se copió."
 
 msgid "Paste Tags"
 msgstr "Pegar etiquetes"
@@ -1189,16 +1165,6 @@ msgstr ""
 "Aplicar les etiquetes guardaes na memoria de pegáu a tolos elementos "
 "seleicionaos."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Pegando {0} etiqueta"
-msgstr[1] "Pegando {0} etiquetes"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "a {0} oxetu"
-msgstr[1] "a {0} oxetos"
-
 msgid "Preferences..."
 msgstr "Preferencies…"
 
@@ -1610,7 +1576,7 @@ msgid "Where should the tags of the node be put?"
 msgstr "¿Ónde tienen de ponese les etiquetes del nuedu?"
 
 msgid "Where should the memberships of this node be put?"
-msgstr ""
+msgstr "¿Aú tendríen de ponese los miembros d''esti nuedu?"
 
 msgid "Unglued Node"
 msgstr "Nudu despegáu"
@@ -1943,6 +1909,9 @@ msgstr "Consultar y descargar cambeos..."
 msgid "Errors during download"
 msgstr "Fallos na descarga"
 
+msgid "Download Geo URL"
+msgstr "Descargar Geo URL"
+
 msgid "Download GPS"
 msgstr "Descargar GPS"
 
@@ -2382,6 +2351,8 @@ msgid ""
 "Are you sure that you want to move elements with attached ways that are "
 "hidden by filters?"
 msgstr ""
+"¿Tas seguru de que quies mover los elementos con víes asociaes que tán "
+"tapecíes por filtros?"
 
 msgid ""
 "You moved more than {0} element. Moving a large number of elements is often "
@@ -2462,6 +2433,8 @@ msgid ""
 "{0}Add selection to relation{1}: Verify every single relation to avoid "
 "damage!"
 msgstr ""
+"{0}Amestar esbilla a la rellación{1}: ¡Comprueba cada rellación individual "
+"pa evitar daños!"
 
 msgid "Add selection to {0} relation"
 msgid_plural "Add selection to {0} relations"
@@ -2509,10 +2482,10 @@ msgid "Confirmation"
 msgstr "Confirmación"
 
 msgid "List of recent relations"
-msgstr ""
+msgstr "Llista de rellaciones recién"
 
 msgid "Open recent relation"
-msgstr ""
+msgstr "Abrir rellación recién"
 
 msgid "Relation Editor: {0}"
 msgstr "Editor de rellaciones: {0}"
@@ -2618,13 +2591,13 @@ msgid "Also include incomplete and deleted objects in search."
 msgstr "Incluir tamién na gueta los oxetos incompletos o desaniciaos"
 
 msgid "standard"
-msgstr ""
+msgstr "estándar"
 
 msgid "regular expression"
 msgstr "espresión regular"
 
 msgid "MapCSS selector"
-msgstr ""
+msgstr "Selector MapCSS"
 
 msgid "add toolbar button"
 msgstr "añedir botón a la barra de ferramientes"
@@ -2853,8 +2826,8 @@ msgstr "Buscando"
 
 msgid "Searching in {0} object"
 msgid_plural "Searching in {0} objects"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Buscando en {0} oxetu"
+msgstr[1] "Buscando en {0} oxetos"
 
 msgctxt "search"
 msgid "CS"
@@ -2870,7 +2843,7 @@ msgstr "RX"
 
 msgctxt "search"
 msgid "CSS"
-msgstr ""
+msgstr "CSS"
 
 msgctxt "search"
 msgid "A"
@@ -3065,8 +3038,8 @@ msgstr "Camudar vía {0}"
 msgid "Change relation {0}"
 msgstr "Camudar rellación {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Camudaos nudos de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Desaniciar \"{0}\" pal nudu ''{1}''"
@@ -3117,6 +3090,9 @@ msgstr[1] "oxetos"
 msgid "Change relation member role for {0} {1}"
 msgstr "Modificar la función del miembru de la relación pa {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}'' esaniciáu"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Ríquese siquier un oxetu pa borrar, nun s''escoyó nengún."
 
@@ -3149,9 +3125,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Desaniciar {0} rellación"
 msgstr[1] "Desaniciar {0} rellaciones"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}'' esaniciáu"
-
 msgid "Delete confirmation"
 msgstr "Confirmación de desaniciu"
 
@@ -6051,12 +6024,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmar conbinacion"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>falta</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6078,6 +6045,12 @@ msgstr[1] ""
 "tener etiquetes non deseyaes.<br/>Si deseya siguir va amosáse-y un diálogu "
 "pa correxir les etiquetes en conflictu.<br/><br/>¿Deseya siguir?"
 
+msgid "<i>missing</i>"
+msgstr "<i>falta</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Escueya un valor"
 
@@ -6281,6 +6254,31 @@ msgstr "Clave nueva"
 msgid "New value"
 msgstr "Valor nuevu"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Pegando {0} etiqueta"
+msgstr[1] "Pegando {0} etiquetes"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "a {0} oxetu"
+msgstr[1] "a {0} oxetos"
+
+msgid "Delete incomplete members?"
+msgstr "¿Desaniciar los miembros incompletos?"
+
+msgid "Paste without incomplete members"
+msgstr "Pegar ensin los miembros incompletos"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Los datos copiaos contienen oxetos incompletos. Al pegar, los oxetos "
+"incompletos se desanicien. ¿Quies pegar los datos ensin los oxetos "
+"incompletos?"
+
 msgid "For selected objects only"
 msgstr "Namá pa oxetos escoyíos"
 
@@ -8267,13 +8265,6 @@ msgstr "Mover los miembros escoyíos escontra riba"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar les actualizaciones y pesllar el diálogu"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Los miembros pegaos de la memoria entemedia non pueden añedir porque nun tán "
-"incluyíos na capa actual"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9971,13 +9962,6 @@ 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"
 
@@ -9993,6 +9977,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Guardar capa"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Capa de Notes"
 
@@ -13663,6 +13652,9 @@ msgstr ""
 "Erru al abrir l´arquivu con estensión ''{2}'' y nome ''{3}'' nel arquivu zip "
 "''{0}''. La esceición foi: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Falló´l cambéu de nome del arquivu {0} pol de {1}."
 
@@ -14540,6 +14532,9 @@ msgstr "¿Deseya permitir esto?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmar l''acción del control remotu"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15440,6 +15435,18 @@ msgstr ""
 "oxetu.<br> <strong>Falló la descarga</strong> en casu de que tuviera "
 "intentando descargar esti oxetu <br><br>L´erru del mensaxe ye:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "llatitú"
+
+msgid "URL does not contain valid {0}"
+msgstr "La URL nun contien un {0} válidu"
+
+msgid "longitude"
+msgstr "llonxitú"
+
+msgid "zoom"
+msgstr "zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15472,6 +15479,13 @@ msgstr ""
 "Nun se pudo aportar al directoriu ''{0}'' por razones de seguridá. La "
 "esceición foi: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [por favor, teclee el so númberu]"
 
@@ -15485,21 +15499,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Abriendo URL: {0}"
 
-msgid "zoom"
-msgstr "zoom"
-
-msgid "latitude"
-msgstr "llatitú"
-
-msgid "longitude"
-msgstr "llonxitú"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "La URL nun contien {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "La URL nun contien un {0} válidu"
-
 msgid "reserved"
 msgstr "reserváu"
 
@@ -15672,84 +15674,80 @@ msgstr "Ignorando xeometría mal formada: {0}"
 msgid "Failed to load XML schema."
 msgstr "Erru al cargar l''esquema XML."
 
-msgid "Do nothing"
-msgstr "Nun facer na"
-
-msgid "Report Bug"
-msgstr "Informar de fallu"
+msgid "You have encountered a bug in JOSM"
+msgstr "Atopó un erru en JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Asocedió una esceición inesperada.<br> Esto siempres ye un erru de "
-"codificación. Si ta executando la postrera <br>versión de JOSM, por favor "
-"sía tan atenta de presentar un informe d''erru."
 
-msgid "Update JOSM"
-msgstr "Actualizar JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Un erru inesperáu asocedió. Esto ye debíu siempres a un erru de "
-"programación. <br><br> Sicasí, si tas utilizando una versión antigua de JOSM "
-"({0}), <br> en cuenta de usar la versión probada actual "
-"(<b>{1}</b>).<br><br><b>Por favor actualiza JOSM</br> antes d''unviar un "
-"informe d''erru."
+
+msgid "Report Bug"
+msgstr "Informar de fallu"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Suprimir otros mensaxes d''erru mientres esta sesión."
 
-msgid "Unexpected Exception"
-msgstr "Esceición inesperada"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Atopó un erru en JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Atopó un erru en JOSM. Antes d''informar d''un fallu asegúrese d''actualizar "
-"a la última versión de JOSM equí:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Tamién tendría d''actualizar los sos complementos. Si nenguna opción ayuda, "
-"por favor, presente un informe de erroren el nuesu sistema de siguimientu de "
-"fallos na siguiente dirección:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Ellí la información del erru yá tendrá de ser rellenada por usté. Por favor "
-"incluya información de cómo reproducir l''erru ya intente ufiertar tanto "
-"detalle como-y sía posible."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
 msgstr ""
-"Per otra parte, si nun funcionar, puede rellenar manualmente la información "
-"nesta URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(El testu yá foi copiáu al to portapapeles.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Actualizar JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -16094,9 +16092,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16121,9 +16116,6 @@ msgstr "OpenStreetMap (Estilu Alemán)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Traces"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Tresporte Públicu (ÖPNV)"
 
@@ -16145,7 +16137,7 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16196,7 +16188,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -16271,7 +16266,10 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -17643,10 +17641,6 @@ msgstr "Lleer y escribir los arquivos de filtru osmosis poly"
 msgid "Adds map printing to JOSM"
 msgstr "Añede la posibilidá d''impresión del mapa a JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr ""
-"Amiesta nueves proyecciones xeográfiques por aciu la biblioteca Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17817,8 +17811,9 @@ msgstr ""
 "Habilitar busca pa puntos de referencies (waypoints) importaos d''un arquivu "
 "gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Simplifica la vinculación d''oxetos OSM con artículos de Wikipedia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18054,17 +18049,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Electrificáu"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "llínea_de_contactu"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "non"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "sí"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "fierrocarril"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltaxe en voltios (V)"
@@ -18112,9 +18111,15 @@ msgstr "Horariu d''apertura"
 msgid "Wheelchairs"
 msgstr "Sielles de ruedes"
 
+msgid "yes"
+msgstr "sí"
+
 msgid "limited"
 msgstr "limitáu"
 
+msgid "no"
+msgstr "non"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -18527,7 +18532,7 @@ msgstr "forestal"
 msgid "Population"
 msgstr "Númberu d''habitantes"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Códigu postal"
 
 msgid "Website"
@@ -18690,15 +18695,6 @@ msgstr "chiita"
 msgid "sunni"
 msgstr "suní"
 
-msgid "high"
-msgstr "altu"
-
-msgid "medium"
-msgstr "mediu"
-
-msgid "low"
-msgstr "baxu"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20288,6 +20284,9 @@ msgstr "Metru"
 msgid "Tram"
 msgstr "Tranvía"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Vía p''autobús empuestu"
 
@@ -20793,9 +20792,6 @@ msgstr "Trolebús"
 msgid "Share taxi"
 msgstr "Taxi compartíu"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Ferry"
 
@@ -22001,6 +21997,9 @@ msgstr "Estadiu"
 msgid "Sports Centre"
 msgstr "Polideportivu"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Cancha de xuegu"
 
@@ -22087,6 +22086,10 @@ msgid "sports_centre"
 msgstr "Polideportivu"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "Estadiu"
 
@@ -22143,6 +22146,9 @@ msgstr "Carreres de caballos"
 msgid "Gymnastics"
 msgstr "Ximnasia"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -24001,6 +24007,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr "Peluquería/Barbería"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -24100,6 +24115,9 @@ msgstr "Bolses pa escrementos"
 msgid "food"
 msgstr "Alimentación"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -24282,6 +24300,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -24431,9 +24461,6 @@ msgstr "comunidá llingüística"
 msgid "ward"
 msgstr "Distritu"
 
-msgid "Postal Code"
-msgstr "Códigu postal"
-
 msgid "National Park"
 msgstr "Parque Nacional"
 
@@ -24598,6 +24625,18 @@ msgstr "Islla"
 msgid "Islet"
 msgstr "Isllote"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natural"
 
@@ -24957,6 +24996,9 @@ msgstr "Nome del llugar"
 msgid "City name"
 msgstr "Nome de la ciudá"
 
+msgid "Post code"
+msgstr "Códigu postal"
+
 msgid "Country code"
 msgstr "Códigu del país"
 
@@ -25673,6 +25715,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} ta obsoleto"
 
@@ -27541,6 +27586,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "altu"
+
+msgid "medium"
+msgstr "mediu"
+
+msgid "low"
+msgstr "baxu"
+
 msgid "symbol"
 msgstr "símbolu"
 
@@ -30034,6 +30088,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31515,18 +31578,6 @@ msgstr "Imprentación detenida"
 msgid "Printing has failed."
 msgstr "La imprentación falló."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} escoyíu"
-
-msgid "Selected: {0}"
-msgstr "Escoyíu: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Complementu Proj4J"
-
-msgid "Code"
-msgstr "Códigu"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31570,6 +31621,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31595,6 +31656,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31604,6 +31689,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "fierrocarril"
+
 msgid "Can''t parse a time from this string."
 msgstr "Non puede interpretase una hora con esta cadena de calteres."
 
@@ -32798,6 +32886,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Nun pué asitiase un nudu fora''l mundu."
 
@@ -34600,6 +34691,12 @@ msgstr ""
 "Llogra los enllaces interwiki de Wikipedia p''amestar delles etiquetes de "
 "denominación"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34647,9 +34744,6 @@ msgstr "Estaya"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Llogra una llista de tolos artículos de Wikipedia d''una categoría"
 
-msgid "Enter the Wikipedia category"
-msgstr "Introduza la categoría de Wikipedia"
-
 msgid "Clipboard"
 msgstr "Cartafueyu"
 
diff --git a/i18n/po/az.po b/i18n/po/az.po
index 792fb08..e9803f1 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:34+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:34+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -111,21 +111,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -233,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -508,7 +496,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1070,19 +1058,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1091,16 +1073,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1798,6 +1770,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2822,7 +2797,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/be.po b/i18n/po/be.po
index 7ecdfde..e8b27fa 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-06-17 12:12+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-05 12:13+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: 2016-07-12 04:35+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: be\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -116,25 +116,6 @@ msgstr "Неадпаведны URL да файла - ігнаруецца: \"{0}
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Параметр \"downloadgps\" не падтрымлівае імёны файлаў ці URLы"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2> JOSM патрабуецца Java версіі {0}. </h2> Выяўленая версія Java: {1}. "
-"<br> Вы можаце <ul> <li> абнавіць Java (JRE) або </ li> <li> выкарыстоўваць "
-"папярэднія (Java {2} сумяшчальныя) версіі JOSM. </li> </ul> Дадатковая "
-"інфармацыя:"
-
-msgid "Exit JOSM"
-msgstr "Выйсці з JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Усё роўна працягнуць"
-
-msgid "Error"
-msgstr "Памылка"
-
 msgid "About"
 msgstr "Аб праграме"
 
@@ -251,6 +232,9 @@ msgstr "Вылучыць на карце аб’екты, абраныя ў сп
 msgid "Add imagery layer {0}"
 msgstr "Дадаць пласт здымка {0}"
 
+msgid "Error"
+msgstr "Памылка"
+
 msgid "Select image format for WMS layer"
 msgstr "Выберыце фармат малюнка для WMS пласта"
 
@@ -539,8 +523,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Падвоіць"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Падвоіць выбранае імгненным капіпастам"
+msgid "Duplicate selection."
+msgstr "Дубляваць вылучанае."
 
 msgid "Exit"
 msgstr "Выхад"
@@ -967,7 +951,7 @@ msgid "Cannot move objects outside of the world."
 msgstr "Немагчыма пераносіць аб’екты па-за межы сьвету"
 
 msgid "Move Node..."
-msgstr "Перанесьці ноду"
+msgstr "Перанесці пункт..."
 
 msgid "Edit latitude and longitude of a node."
 msgstr "Правіць даўгату і шырату пункту"
@@ -1170,22 +1154,14 @@ msgstr "Запыт да Overpass: "
 msgid "Paste"
 msgstr "Уклеіць"
 
-msgid "Paste contents of paste buffer."
-msgstr "Уклеіць змест буфера абмену"
-
-msgid "Delete incomplete members?"
-msgstr "Выдаліць няскончаные складнікі?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Уклеіць без няскончаных складнікаў"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Капіяваныя дадзеныя ўтрымліваюць няпоўныя аб’екты. Пры ўстаўцы яны будуць "
-"выдаленыя. Вы хочаце ўставіць дадзеныя без няпоўных аб’ектаў?"
 
 msgid "Paste Tags"
 msgstr "Уклеіць Меткі"
@@ -1193,18 +1169,6 @@ msgstr "Уклеіць Меткі"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Прысвоіць меткі з буфера ўсім выбраным аб’ектам."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Уставіць {0} тэгаў"
-msgstr[1] "Уставіць {0} тэга"
-msgstr[2] "Уставіць {0} тэгаў"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "у {0} аб’ект"
-msgstr[1] "у {0} аб’екта"
-msgstr[2] "у {0} аб’ектаў"
-
 msgid "Preferences..."
 msgstr "Настаўленні..."
 
@@ -1962,6 +1926,9 @@ msgstr "Запытаць і запампаваць з сервера пакет
 msgid "Errors during download"
 msgstr "Памылкі пры запампоўцы з сервера"
 
+msgid "Download Geo URL"
+msgstr "Спампаваць Geo URL"
+
 msgid "Download GPS"
 msgstr "Спампаваць GPS дадзеныя"
 
@@ -2280,7 +2247,7 @@ msgid "Create areas"
 msgstr "Стварэнне вобласці"
 
 msgid "Extrude Dual alignment"
-msgstr "Падвойнае выраўноўванне пры выцісканьні"
+msgstr "Падвойнае выраўноўванне пры выцісканні"
 
 msgid ""
 "Drag a way segment to make a rectangle. Ctrl-drag to move a segment along "
@@ -2665,7 +2632,7 @@ msgid "MapCSS selector"
 msgstr "MapCSS-селектар"
 
 msgid "add toolbar button"
-msgstr "дадаць кнопку на панэлі інструмэнтаў"
+msgstr "дадаць кнопку на панэлі інструментаў"
 
 msgid "Invalid search expression"
 msgstr "Няправільны выраз для пошуку"
@@ -3097,8 +3064,8 @@ msgstr "Змяніць лінію {0}"
 msgid "Change relation {0}"
 msgstr "Змяніць дачыненне {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Змененыя пункты для {0}"
+msgid "Change nodes of {0}"
+msgstr "Змяніць пункты {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Выдаліць \"{0}\" для пункта ''{1}''"
@@ -3154,6 +3121,9 @@ msgstr[2] "аб’ектаў"
 msgid "Change relation member role for {0} {1}"
 msgstr "Змяніць ролю ўдзельніка дачынення для {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Выдалена {0}"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "DeleteCommand: Каб выдаліць, патрабуецца хоць бы адзін аб’ект, а атрымана "
@@ -3192,9 +3162,6 @@ msgstr[0] "Выдаліць {0} дачыненне"
 msgstr[1] "Выдаліць {0} дачыненні"
 msgstr[2] "Выдаліць {0} дачыненняў"
 
-msgid "Deleted ''{0}''"
-msgstr "Выдалена {0}"
-
 msgid "Delete confirmation"
 msgstr "Выдаліць пацверджанне"
 
@@ -5352,7 +5319,7 @@ msgid "Menu: {0}"
 msgstr "Меню: {0}"
 
 msgid "Main toolbar"
-msgstr "Асноўная панэль інструмэнтаў"
+msgstr "Асноўная панэль інструментаў"
 
 msgid ""
 "Toggles the visibility of the main toolbar (i.e., the horizontal toolbar)"
@@ -6090,12 +6057,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Пацверджанне аб’яднання"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>адсутнічае</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6122,6 +6083,12 @@ msgstr[2] ""
 "тэгі.<br/>Калі вы жадаеце працягнуць аб’яднанне, будзе паказаны дыялог для "
 "выпраўлення канфліктуючых тэгаў.<br/><br/>Жадаеце працягнуць?"
 
+msgid "<i>missing</i>"
+msgstr "<i>адсутнічае</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Абярыце значэнне"
 
@@ -6325,6 +6292,32 @@ msgstr "Новы ключ"
 msgid "New value"
 msgstr "Новае значэнне"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Уставіць {0} тэгаў"
+msgstr[1] "Уставіць {0} тэга"
+msgstr[2] "Уставіць {0} тэгаў"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "у {0} аб’ект"
+msgstr[1] "у {0} аб’екта"
+msgstr[2] "у {0} аб’ектаў"
+
+msgid "Delete incomplete members?"
+msgstr "Выдаліць няскончаные складнікі?"
+
+msgid "Paste without incomplete members"
+msgstr "Уклеіць без няскончаных складнікаў"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Капіяваныя дадзеныя ўтрымліваюць няпоўныя аб’екты. Пры ўстаўцы яны будуць "
+"выдаленыя. Вы хочаце ўставіць дадзеныя без няпоўных аб’ектаў?"
+
 msgid "For selected objects only"
 msgstr "Толькі для абраных аб’ектаў"
 
@@ -8331,13 +8324,6 @@ msgstr "Перамясціць выдзеленых удзельнікаў да
 msgid "Apply the updates and close the dialog"
 msgstr "Ужыць абнаўленні і зачыніць дыялог"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Элементы з буфера абмену не могуць быць дададзены таму, што яны не адносяцца "
-"да бягучага пласту"
-
 msgid "Relation Editor: Refresh"
 msgstr "Рэдактар дачыненняў: Абнавіць"
 
@@ -9946,6 +9932,7 @@ msgstr "наблізьце для загрузкі дадатковых квад
 
 msgid "increase tiles zoom level (change resolution) to see more detail"
 msgstr ""
+"павялічце маштаб квадратаў (зменіце разрознасць), каб убачыць больш дэталяў"
 
 msgid "No tiles at this zoom level"
 msgstr "Няма квадратаў на дадзеным маштабе"
@@ -10071,17 +10058,6 @@ 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 "Усе праекцыі падтрымліваюцца"
 
@@ -10097,6 +10073,12 @@ msgstr "Змяніце праекцыю зноў ці выдаліце плас
 msgid "Save Layer"
 msgstr "Захаваць пласт"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} нататка"
+msgstr[1] "{0} нататкі"
+msgstr[2] "{0} нататак"
+
 msgid "Notes layer"
 msgstr "Пласт нататак"
 
@@ -13739,6 +13721,9 @@ msgstr ""
 "Не атрымалася адкрыць файл з пашырэннем ''{2}'' і імем ''{3}'' у zip-файле "
 "''{0}''. Паўстала выключэнне: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Запытаны URL {0} не знойдзены"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Збой пераназвання файла {0} у {1}."
 
@@ -14625,6 +14610,9 @@ msgstr "Дазволіць дзеянне?"
 msgid "Confirm Remote Control action"
 msgstr "Пацвярджаць дзеянні Дыстанцыйнага кіравання"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "Наступныя ключы абавязковыя, але не былі ўказаны: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15560,6 +15548,18 @@ msgstr ""
 "аб''ект.<br><strong>Спампаваць не атрымалася,</strong> калі вы спрабавалі "
 "спампаваць гэты аб''ект.<br><br>Паведамленне пра памылку:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "шыраты"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL не ўтрымоўвае дакладнага значэння {0}"
+
+msgid "longitude"
+msgstr "даўгаты"
+
+msgid "zoom"
+msgstr "маштаба"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15591,6 +15591,17 @@ msgid ""
 msgstr ""
 "Няма доступу да каталога ''{0}'' па меркаваннях бяспекі. Памылка: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [калі ласка, увядзіце яго нумар]"
 
@@ -15604,21 +15615,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Адкрыццё URL: {0}"
 
-msgid "zoom"
-msgstr "маштаба"
-
-msgid "latitude"
-msgstr "шыраты"
-
-msgid "longitude"
-msgstr "даўгаты"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL не ўтрымоўвае {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL не ўтрымоўвае дакладнага значэння {0}"
-
 msgid "reserved"
 msgstr "зарэзервавана"
 
@@ -15790,83 +15789,92 @@ msgstr "Ігнараванне скажонай геаметрыі: {0}"
 msgid "Failed to load XML schema."
 msgstr "Немагчыма загрузіць XML схему."
 
-msgid "Do nothing"
-msgstr "Нічога не рабіць"
-
-msgid "Report Bug"
-msgstr "Паведаміць пра памылку"
+msgid "You have encountered a bug in JOSM"
+msgstr "Вы сутыкнуліся з памылкай у JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Адбылася нечаканая памылка.<br>Гэта заўсёды памылка праграмавання. Калі вы "
-"карыстаецеся апошняй<br>версіяй JOSM - не злічыце за працу, запоўніце, калі "
-"ласка, заяўку на выпраўленне памылкі (trac)."
+"Паўстала непрадбачаная выключная сітуацыя.\n"
+"Гэта заўсёды памылка праграмавання. Калі ў вас самая новая версія JOSM, "
+"адпраўце, калі ласка, справаздачу аб гэтай памылцы."
 
-msgid "Update JOSM"
-msgstr "Абнавіць JOSM"
+msgid "Debug information"
+msgstr "Адладкавыя інфармацыя"
+
+msgid "Manually report at:"
+msgstr "Адаслаць справаздачу ўручную на:"
+
+msgid "Is JOSM up to date?"
+msgstr "У вас апошняя версія JOSM?"
+
+msgid "Send bug report"
+msgstr "Адаслаць справаздачу пра памылку"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Паўстала непрадбачаная выключная сітуацыя. Гэта заўсёды памылка "
-"праграмавання.<br><br>Але ў вас старая версія JOSM ({0}),<br>а не бягучая "
-"стабільная версія (<b>{1}</b>).<br><br><b>Калі ласка, абновіце JOSM</b> "
-"перад тым, як прымеце рашэнне аб адпраўцы справаздачы пра памылку."
+"Калі ў вас найноўшая версія JOSM і модуляў, адпраўце, калі ласка, "
+"справаздачу пра памылку ў нашу сістэму асочвання памылак.\n"
+"Некаторая інфармацыя пра памылку павінна быць улучана ў справаздачу "
+"аўтаматычна. Дадайце звесткі пра тое, як узнавіць памылку і паспрабуйце "
+"зазначыць як мага больш падрабязнасцяў."
+
+msgid "Report Bug"
+msgstr "Паведаміць пра памылку"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Больш не паказваць памылкі ў гэтай сесіі"
 
-msgid "Unexpected Exception"
-msgstr "Нечаканая памылка"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Вы сутыкнуліся з памылкай у JOSM"
+msgid "Ignore this error."
+msgstr "Ігнараваць гэту памылку."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Вы выявілі памылку ў JOSM. Перш чым вы паведаміце нам пра яе, праверце што "
-"вы працуеце на апошняй версіі JOSM тут:"
+"Не атрымалася адкрыць справаздачу пра памылку. Калі ласка, паведаміце пра яе "
+"ўручную на гэтым вэб-сайце:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Вы таксама павінны абнавіць і модулі. Калі і гэта не дапаможа, паведаміце "
-"нам пра выяўленую памылку, скарыстаўшыся наступнай спасылкай:"
+msgid "Include the system status report."
+msgstr "Уключыць справаздачу пра стан сістэмы."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"Прадстаўленая ніжэй інфармацыя пра памылку ўжо падрыхтавана для вас. Калі "
-"ласка, дадайце інфармацыю пра тое, як узнавіць памылку і паспрабуйце апісаць "
-"гэта настолькі падрабязна, наколькі гэта магчыма."
+msgid "Include information about the data you were working on."
+msgstr "Уключыць інфармацыю пра даныя, з якімі вы працавалі."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr "Уключыць усе трасіроўкі стэка."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ваша бягучая версія JOSM: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM выконвае пошук абнаўленняў..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
-"Як альтэрнатыва, калі гэта не працуе, вы можаце ўручную ўпісаць інфармацыю "
-"ніжэй, па гэтым URL:"
+"Адбылася памылка пры праверцы актуальнасці версіі вашага экзэмпляра JOSM."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Тэкст ужо скапіяваны ў буфер абмену)"
+msgid "JOSM is up to date."
+msgstr "У вас найноўшая версія JOSM."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr "Ваш JOSM састарэў. Бягучая версія — {0}. Рэкамендуем абнавіць JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Не атрымалася адкрыць справаздачу пра памылку. Калі ласка, паведаміце пра яе "
-"ўручную на гэтым вэб-сайце:"
+"Перад адпраўкай справаздачы пра памылку пераканаецеся, што вы абнавілі JOSM "
+"да найноўшай версіі, тут:"
+
+msgid "Update JOSM"
+msgstr "Абнавіць JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16213,9 +16221,6 @@ msgstr "HDM (каманда па стварэнні карт гуманітар
 msgid "Mapbox Satellite"
 msgstr "Спадарожнікавыя здымкі Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16240,9 +16245,6 @@ msgstr "OpenStreetMap (нямецкі стыль)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "GPS-трэкі OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Грамадскі транспарт (ÖPNV)"
 
@@ -16264,8 +16266,8 @@ msgstr "Strava цеплавая велакарта"
 msgid "Strava running heatmap"
 msgstr "Strava цеплавая карта бегуноў"
 
-msgid "Strava both heatmap"
-msgstr ""
+msgid "Strava cycling and running heatmap"
+msgstr "Цёплакарта Strava для раварыстаў і бегуноў"
 
 msgid "Locator Overlay"
 msgstr "MapBox Locator (аверлэй)"
@@ -16315,8 +16317,11 @@ msgstr "OSM Inspector: Адрасы"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Межы (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Нацыянальны геаграфічны інстытут Аргентыны (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Аргенціна (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Аргенціна (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI чорна-белая 2.5м"
@@ -16390,8 +16395,11 @@ msgstr "VoGIS: Планы"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: вышыні і рэльеф мясцовасці"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) - аэрафотаздымка (пакрывае таксама рэгіён Брусэля)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Фландрыя) найноўшыя аэрафотаздымкі (зіма)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV аэрафота 10 см 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr - лічбавая выява (2013)"
@@ -17523,7 +17531,7 @@ msgstr ""
 "атрымлівайце абвесткі, калі хто-то з’яўляецца побач."
 
 msgid "Allows you to view a GeoJSON file as a layer."
-msgstr ""
+msgstr "Дазваляе загрузіць файл GeoJSON як пласт."
 
 msgid ""
 "Provides parts of the GeoTools library for other JOSM plugins. Not meant to "
@@ -17769,9 +17777,6 @@ msgstr "Чытанне і запіс файлаў osmosis poly"
 msgid "Adds map printing to JOSM"
 msgstr "Дадае магчымасць раздрукоўкі карты ў JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "Дадае праекцыі з Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17952,8 +17957,11 @@ msgstr "Хуткая запампоўка ўздоўж вялікага набо
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Пошук па шляхавых пунктах, імпартаваных з файлаў gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Спрашчае звязванне аб’ектаў OSM з артыкуламі Wikipedia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Спрашчае звязванне абʼектаў OSM з артыкуламі Вікіпедыі і элементамі "
+"вікідадзеных"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18190,15 +18198,19 @@ msgstr "стрэлкавы з''езд"
 msgid "Electrified"
 msgstr "Электрыфікаваная"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr "кантактны дрот"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "не"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "так"
 
+msgctxt "electrified"
 msgid "rail"
 msgstr "рэйка"
 
@@ -18248,9 +18260,15 @@ msgstr "Гадзіны працы"
 msgid "Wheelchairs"
 msgstr "Інвалідныя каляскі"
 
+msgid "yes"
+msgstr "так"
+
 msgid "limited"
 msgstr "абмежавана"
 
+msgid "no"
+msgstr "не"
+
 msgid "Brand"
 msgstr "Брэнд"
 
@@ -18663,7 +18681,7 @@ msgstr "ляснікоўства"
 msgid "Population"
 msgstr "Насельніцтва"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Паштовы індэкс"
 
 msgid "Website"
@@ -18830,15 +18848,6 @@ msgstr "шыіты"
 msgid "sunni"
 msgstr "суніты"
 
-msgid "high"
-msgstr "высокае"
-
-msgid "medium"
-msgstr "сярэдняе"
-
-msgid "low"
-msgstr "нізкае"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20429,6 +20438,9 @@ msgstr "Метрапалітэн"
 msgid "Tram"
 msgstr "Трамвайная лінія"
 
+msgid "Funicular"
+msgstr "Фунікулёр"
+
 msgid "Bus Guideway"
 msgstr "Аўтобусныя рэйкі"
 
@@ -20935,9 +20947,6 @@ msgstr "Тралейбус"
 msgid "Share taxi"
 msgstr "Маршрутнае таксі"
 
-msgid "Funicular"
-msgstr "Фунікулёр"
-
 msgid "Ferry"
 msgstr "Паром"
 
@@ -22141,6 +22150,9 @@ msgstr "Стадыён"
 msgid "Sports Centre"
 msgstr "Спартовы цэнтр"
 
+msgid "Fitness Centre"
+msgstr "Фітнес-цэнтр"
+
 msgid "Pitch"
 msgstr "Спартовае поле"
 
@@ -22227,6 +22239,10 @@ msgid "sports_centre"
 msgstr "спартовы цэнтр"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "фітнэс-цэнтр"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "стадыён"
 
@@ -22283,6 +22299,9 @@ msgstr "Конныя спаборніцтвы"
 msgid "Gymnastics"
 msgstr "Гімнастыка"
 
+msgid "fitness_centre"
+msgstr "фітнэс-цэнтр"
+
 msgid "Ice Skating"
 msgstr "Катанне на каньках"
 
@@ -24141,6 +24160,15 @@ msgstr "Табак"
 msgid "Hairdresser/Barber"
 msgstr "Цырульня"
 
+msgid "Female"
+msgstr "Жаночы"
+
+msgid "Male"
+msgstr "Мужчынскі"
+
+msgid "Unisex"
+msgstr "Абодва полы"
+
 msgid "Tattoo"
 msgstr "Татуяванне"
 
@@ -24240,6 +24268,9 @@ msgstr "пакеты для экскрыментаў"
 msgid "food"
 msgstr "прадукты харчавання"
 
+msgid "milk"
+msgstr "малако"
+
 msgid "newspapers"
 msgstr "газеты"
 
@@ -24422,6 +24453,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Урад"
 
+msgid "ministry"
+msgstr "міністэрства"
+
+msgid "prosecutor"
+msgstr "пракуратура"
+
+msgid "tax"
+msgstr "падатковая"
+
+msgid "register_office"
+msgstr "ЗАГС"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Страхаванне"
@@ -24571,9 +24614,6 @@ msgstr "моўная супольнасць"
 msgid "ward"
 msgstr "адміністрацыйны раён (ward)"
 
-msgid "Postal Code"
-msgstr "Паштовы індэкс"
-
 msgid "National Park"
 msgstr "Нацыянальны парк"
 
@@ -24732,6 +24772,18 @@ msgstr "Выспа"
 msgid "Islet"
 msgstr "Астравок"
 
+msgid "Reef"
+msgstr "Рыф"
+
+msgid "coral"
+msgstr "каралавы"
+
+msgid "oyster"
+msgstr "вустрычны"
+
+msgid "rock"
+msgstr "скальны"
+
 msgid "Nature"
 msgstr "Прырода"
 
@@ -25088,6 +25140,9 @@ msgstr "Назва месца"
 msgid "City name"
 msgstr "Горад"
 
+msgid "Post code"
+msgstr "Паштовы індэкс"
+
 msgid "Country code"
 msgstr "Код краіны"
 
@@ -25801,12 +25856,21 @@ msgid ""
 "underground. Remove {1} or add a tunnel tag if applicable. Also check "
 "crossing bridges and their {1} tags."
 msgstr ""
+"Доўгі водны шлях з {0}, але без тэга тунэля ці падземнага размяшчэння. "
+"Выдаліце {1} ці дадайце тэг tunnel, калі гэта актуальна. Праверце таксама  "
+"масты, якія перасякаюць водны шлях, і іх тэгі {1}."
 
 msgid ""
 "Short waterway with {0} but without a tag which defines it as tunnel or "
 "underground. Remove {1} or add a tunnel tag if applicable. Also check "
 "crossing bridges and their {1} tags."
 msgstr ""
+"Кароткі водны шлях з {0}, але без тэга тунэля ці падземнага размяшчэння. "
+"Выдаліце {1} ці дадайце тэг tunnel, калі гэта актуальна. Праверце таксама  "
+"масты, якія перасякаюць водны шлях, і іх тэгі {1}."
+
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} разам з {1} і {2}. Выдаліце {1} і {2}"
 
 msgid "{0} is deprecated"
 msgstr "{0} састарэлы"
@@ -25984,7 +26048,7 @@ msgstr ""
 "кірунак."
 
 msgid "Coastline inside {1}"
-msgstr ""
+msgstr "Берагавая лінія ўнутры {1}"
 
 msgid "abbreviated street name"
 msgstr "скарочанае пазначэнне вуліцы"
@@ -27698,6 +27762,15 @@ msgstr "50 м"
 msgid "100 m"
 msgstr "100 м"
 
+msgid "high"
+msgstr "высокае"
+
+msgid "medium"
+msgstr "сярэдняе"
+
+msgid "low"
+msgstr "нізкае"
+
 msgid "symbol"
 msgstr "знак"
 
@@ -28609,16 +28682,16 @@ msgid "Show users on map"
 msgstr "Паказаць карыстальнікаў на карце"
 
 msgid "GeoJSON file"
-msgstr ""
+msgstr "Файл GeoJSON"
 
 msgid "Loading json file..."
-msgstr ""
+msgstr "Загрузка json-файла..."
 
 msgid "Data Layer from GeoJSON: "
-msgstr ""
+msgstr "Пласт даных з GeoJSON: "
 
 msgid "Error loading geojson file {0}"
-msgstr ""
+msgstr "Памылка загрузкі файла GeoJSON {0}"
 
 msgid "Position only"
 msgstr "Толькі становішча"
@@ -29396,7 +29469,7 @@ msgid "Structure type:"
 msgstr "Тып структуры:"
 
 msgid "Offset into background:"
-msgstr ""
+msgstr "Зрух адносна падкладкі:"
 
 msgid "Indoor Mapping Helper"
 msgstr "Памочнік малявання ўнутраных памяшканняў"
@@ -29923,13 +29996,13 @@ msgid "Join Mapillary pictures"
 msgstr "Злучыць выявы Mapillary"
 
 msgid "Submit changeset"
-msgstr ""
+msgstr "Перадаць пакет правак"
 
 msgid "Submit the current changeset"
-msgstr ""
+msgstr "Перадаць бягучы пакет правак"
 
 msgid "Submit the current changeset to Mapillary"
-msgstr ""
+msgstr "Перадаць бягучы пакет правак у Mapillary"
 
 msgid "Upload pictures"
 msgstr "Адаслаць выявы"
@@ -29971,16 +30044,16 @@ msgid "Edit on website"
 msgstr "Рэдагаваць на сайце"
 
 msgid "Current Mapillary changeset"
-msgstr ""
+msgstr "Бягучы пакет правак Mapillary"
 
 msgid "Open Mapillary changeset dialog"
-msgstr ""
+msgstr "Адкрыць дыялог набору змен Mapillary"
 
 msgid "Mapillary changeset"
-msgstr ""
+msgstr "Пакет правак Mapillary"
 
 msgid "Submit"
-msgstr ""
+msgstr "Адправіць"
 
 msgid "Export all images"
 msgstr "Экспартаваць ўсе здымкі"
@@ -30190,6 +30263,15 @@ msgstr[2] "Павернута {0} выяў"
 msgid "2 images unjoined"
 msgstr "2 выявы раз''яднаныя"
 
+msgid "everything in the visible area"
+msgstr "усё ў бачнай вобласці"
+
+msgid "areas with downloaded OSM-data"
+msgstr "вобласці са спампаванымі дадзенымі OSM"
+
+msgid "only when manually requested"
+msgstr "толькі пры запыце ўручную"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30219,7 +30301,7 @@ msgid "Total Mapillary images: {0}"
 msgstr "Усяго здымкаў Mapillary: {0}"
 
 msgid "Submitting Mapillary Changeset"
-msgstr ""
+msgstr "Перадача пакета правак Mapillary"
 
 msgid "No images found"
 msgstr "Выявы не знойдзеныя"
@@ -30228,10 +30310,10 @@ msgid "Finished upload"
 msgstr "Адсылка скончана"
 
 msgid "You are not logged in, please log in to Mapillary in the preferences"
-msgstr ""
+msgstr "Не выкананы ўваход, увайдзіце ў Mapillary у Наладах"
 
 msgid "Not Logged in to Mapillary"
-msgstr ""
+msgstr "Не выкананы ўваход у Mapillary"
 
 msgid "Uploading: {0}"
 msgstr "Адсылаецца: {0}"
@@ -31657,94 +31739,128 @@ msgstr "Друк спынены"
 msgid "Printing has failed."
 msgstr "Збой друку."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} абрана"
-
-msgid "Selected: {0}"
-msgstr "Абрана: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Модуль Proj4J"
-
-msgid "Code"
-msgstr "Код"
-
 msgid "Add stop position"
-msgstr ""
+msgstr "Дадаць пазіцыю прыпынку"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
-msgstr ""
+msgstr "Жадаеце сцягнуць аб''екты, якія спасылаюцца на платформы і прыпынкі?"
 
 msgid "Remember my choice and do not ask me again in this session"
 msgstr "Запомніць мой выбар і больш не пытаць у гэтым сеансе"
 
 msgid "PT_Assistant Fetch Request"
-msgstr ""
+msgstr "Запыт загрузкі PT_Assistant"
 
 msgid ""
 "Route relations have incomplete members.\n"
 "They need to be downloaded to proceed with validation.\n"
 "Do you want to download them?"
 msgstr ""
+"Дачыненні маршрутаў маюць няпоўных удзельнікаў.\n"
+"Яны павінны быць загружаны, каб працягнуць праверку.\n"
+"Вы хочаце загрузіць іх?"
 
 msgid "PT_Assistant plugin found that this relation (id={0}) has errors:"
 msgstr ""
+"Модуль PT_Assistant выявіў, што ў гэтым дачыненні (id={0}) ёсць памылкі:"
 
 msgid "{0} direction error"
 msgid_plural "{0} direction errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0} памылка кірунку"
+msgstr[1] "{0} памылкі кірунку"
+msgstr[2] "{0} памылак кірунку"
 
 msgid "{0} road type error"
 msgid_plural "{0} road type errors"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0} памылка тыпу дарогі"
+msgstr[1] "{0} памылкі тыпу дарогі"
+msgstr[2] "{0} памылак тыпу дарогі"
 
 msgid "How do you want to proceed?"
-msgstr ""
+msgstr "Што вы выбераце для працягу?"
 
 msgid "PT_Assistant Proceed Request"
-msgstr ""
+msgstr "Запыт наступнага дзеяння PT_Assistant"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr ""
+msgstr "ГТ: месца прыпынку не ўваходзіць у склад дарогі"
 
 msgid "PT: Platform should not be part of a way"
+msgstr "ГТ: платформа не павiнна быць часткай дарогі"
+
+msgid "PT: Stop position or platform is not part of a stop area relation"
 msgstr ""
 
-msgid "Public Transport Assistant tests"
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
 msgstr ""
 
+msgid "PT_Assistant Message"
+msgstr "Паведамленне PT_Assistant"
+
+msgid "Public Transport Assistant tests"
+msgstr "Праверкі Памочніка грамадскага транспарту"
+
 msgid ""
 "Check if route relations are compatible with public transport version 2"
 msgstr ""
+"Правярае сумяшчальнасць дачыненняў маршрутаў з 2-й версіяй маршрутаў "
+"грамадскага транспарта"
 
 msgid "Fix error"
-msgstr ""
+msgstr "Выправіць памылку"
 
 msgid "PT: dummy test warning"
-msgstr ""
+msgstr "ГТ: фіктыўнае папярэджанне"
 
 msgid "PT: Route contains a gap that can be fixed by sorting"
-msgstr ""
+msgstr "ГТ: Маршрут утрымлівае разрыў, які можа быць ліквідаваны сартаваннем"
 
 msgid "PT: Relation member roles do not match tags"
-msgstr ""
+msgstr "ГТ: Ролі ўдзельніка дачынення не адпавядаюць тэгам"
 
 msgid "PT: Route should start and end with a stop_position"
-msgstr ""
+msgstr "ГТ: Маршрут павінен пачынацца і сканчацца stop_position"
 
 msgid "PT: First or last way needs to be split"
+msgstr "ГТ: Першую ці апошнюю лінію патрабуецца падзяліць"
+
+msgid "PT: Problem in the route segment"
+msgstr "ГТ: Праблема ў сегменце маршруту"
+
+msgid "PT: Stop not served"
 msgstr ""
 
-msgid "PT: Route type does not match the type of the road it passes on"
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
 msgstr ""
 
-msgid "PT: Road is under construction"
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
 msgstr ""
 
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
+msgid "PT: Route type does not match the type of the road it passes on"
+msgstr "ГТ: Тып маршруту не адпавядае тыпу дарогі, па якой ён праходзіць"
+
+msgid "PT: Road is under construction"
+msgstr "ГТ: Дарога яшчэ будуецца"
+
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
+"ГТ: Маршрут праходзіць па дарозе з аднабаковым рухам у зваротным кірунку"
+
+msgid "rail"
+msgstr "рэйка"
 
 msgid "Can''t parse a time from this string."
 msgstr "Немагчыма разабраць час з гэтай паслядоўнасці."
@@ -32151,10 +32267,10 @@ msgid "Complete multipolygon for way {0}"
 msgstr "Замкнуць мультыпалігон для лініі {0}"
 
 msgid "Two rings are equal, and this must not be."
-msgstr ""
+msgstr "Дзве акружнасці аднолькавыя, гэтага не павінна быць."
 
 msgid "Multipolygon from rings"
-msgstr ""
+msgstr "Мультыпалігон з акружнасцей"
 
 msgid "Node without ''house'' role found"
 msgstr "Знойдзены пункт без ролі ''house''"
@@ -32930,6 +33046,9 @@ msgstr "Нешта пайшло не так, паспрабуйце яшчэ р
 msgid "No change to upload!"
 msgstr "Няма зменаў для адсылкі!"
 
+msgid "The bounding box is too big."
+msgstr "Абмежавальная рамка занадта вялікая."
+
 msgid "Cannot place a node outside of the world."
 msgstr "Не атрымоўваецца змясціць пункт за межамі свету"
 
@@ -34738,10 +34857,10 @@ msgstr[1] "Перазапісаць ''{0}'' тэгі {1} з {2} новым зн
 msgstr[2] "Перазапісаць ''{0}'' тэгаў {1} з {2} новым значэннем ''{3}''?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Пошук элементаў Вікідадзеных"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Мэтавы ключ: "
 
 msgid "Add names from Wikipedia"
 msgstr "Дадаць назвы з Вікіпедыі"
@@ -34752,6 +34871,12 @@ msgstr ""
 "Атрымаць інтэрвікі спасылкі з Вікіпедыі для таго, каб дадаць некаторыя тэгі "
 "name"
 
+msgid "Search Wikipedia category"
+msgstr "Пошук катэгорыі Вікіпедыі"
+
+msgid "Load category"
+msgstr "Загрузка катэгорыі"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34782,13 +34907,14 @@ msgid "Not linked yet"
 msgstr "Спасылка яшчэ не створана"
 
 msgid "{0}: {1}"
-msgstr ""
+msgstr "{0}: {1}"
 
 msgid "Wikidata"
-msgstr ""
+msgstr "Вікідадзеныя"
 
 msgid "Fetches all coordinates from Wikidata in the current view"
 msgstr ""
+"Атрыманне з Вікідадзеных усіх каардынат для бачнай у акне вобласці карты"
 
 msgid "Fetches all coordinates from Wikipedia in the current view"
 msgstr ""
@@ -34800,9 +34926,6 @@ msgstr "Катэгорыя"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Атрыманне спісу ўсіх артыкулаў катэгорыі з Вікіпедыі"
 
-msgid "Enter the Wikipedia category"
-msgstr "Увядзіце катэгорыю Вікіпедыі"
-
 msgid "Clipboard"
 msgstr "Буфер абмену"
 
diff --git a/i18n/po/bg.po b/i18n/po/bg.po
index a4222e8..33621a4 100644
--- a/i18n/po/bg.po
+++ b/i18n/po/bg.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-05-28 11:14+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-05 14:02+0000\n"
 "Last-Translator: pl <Unknown>\n"
 "Language-Team: Bulgarian <bg 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: 2016-07-12 04:37+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:38+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: bg\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,25 +114,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Параметърът \"downloadgps\" не възприема имена на файлове или файлови URL."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM изисква версия на Java {0}.</h2>Открита версия на Java : "
-"{1}.<br>Вие можете или<ul><li>да обновите Вашата Java (JRE) или</li><li>да "
-"използвате по-ранна версия на JOSM (съвместима с Java {2}).</li></ul>За "
-"повече информация:"
-
-msgid "Exit JOSM"
-msgstr "Изход от програмата"
-
-msgid "Continue, try anyway"
-msgstr "Продължи все пак"
-
-msgid "Error"
-msgstr "Грешка"
-
 msgid "About"
 msgstr "За програмата"
 
@@ -242,6 +223,9 @@ msgstr "Изберете на картата всички обекти, избр
 msgid "Add imagery layer {0}"
 msgstr "Добавете слой с изображения {0}"
 
+msgid "Error"
+msgstr "Грешка"
+
 msgid "Select image format for WMS layer"
 msgstr "Изберете формат на изображение за WMS слоя"
 
@@ -524,9 +508,8 @@ msgstr "Свалете обекти свързани с избраните об
 msgid "Duplicate"
 msgstr "Дублиране"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
-"Създай копие на селектираните обекти чрез копиране и незабавно поставяне."
 
 msgid "Exit"
 msgstr "Изход"
@@ -1126,22 +1109,14 @@ msgstr "Грешка при обработка: "
 msgid "Paste"
 msgstr "Поставяне"
 
-msgid "Paste contents of paste buffer."
-msgstr "Поставяне на съдържанието на буфера"
-
-msgid "Delete incomplete members?"
-msgstr "Изтриване на непълни членове?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Поставяне без непълни членове"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Копираните данни съдържат непълни обекти. При поставяне, непълните обекти се "
-"премахват. Искате ли да поставите данните без непълните обекти?"
 
 msgid "Paste Tags"
 msgstr "Поставяне на маркери"
@@ -1149,16 +1124,6 @@ msgstr "Поставяне на маркери"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Приложи маркерите от буфера за копиране към всички избрани обекти."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Поставяне на {0} етикет"
-msgstr[1] "Поставяне на {0} етикета"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "към {0} обект"
-msgstr[1] "към {0} обекта"
-
 msgid "Preferences..."
 msgstr "Настройки…"
 
@@ -1888,6 +1853,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "Грешки при сваляне"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Сваляне GPS"
 
@@ -2948,7 +2916,7 @@ msgstr "Промяна на път {0}"
 msgid "Change relation {0}"
 msgstr "Промяна на релация {0}"
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -3000,6 +2968,9 @@ msgstr[1] "обекта"
 msgid "Change relation member role for {0} {1}"
 msgstr "Промяна ролята на релация за {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -3032,9 +3003,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Изтриване на {0} отношение"
 msgstr[1] "Изтриване на {0} отношения"
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr "Потвърждение за изтриване"
 
@@ -4157,7 +4125,7 @@ msgid "Multipolygon inner way is outside"
 msgstr ""
 
 msgid "Intersection between multipolygon ways"
-msgstr "Кръстосване на пътища във мултиполигон."
+msgstr "Кръстосване на пътища в мултиполигон."
 
 msgid "No useful role for multipolygon member"
 msgstr ""
@@ -5730,12 +5698,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>липсва</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5749,6 +5711,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>липсва</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5928,6 +5896,30 @@ msgstr "Нов ключ"
 msgid "New value"
 msgstr "Нова стойност"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Поставяне на {0} етикет"
+msgstr[1] "Поставяне на {0} етикета"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "към {0} обект"
+msgstr[1] "към {0} обекта"
+
+msgid "Delete incomplete members?"
+msgstr "Изтриване на непълни членове?"
+
+msgid "Paste without incomplete members"
+msgstr "Поставяне без непълни членове"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Копираните данни съдържат непълни обекти. При поставяне, непълните обекти се "
+"премахват. Искате ли да поставите данните без непълните обекти?"
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7673,7 +7665,7 @@ msgid "Download referring relations"
 msgstr ""
 
 msgid "There were {0} conflicts during import."
-msgstr "{0} конфликт(а) при въвеждането"
+msgstr "{0} конфликт(а) при импортирането"
 
 msgid "including immediate children of parent relations"
 msgstr "включително непосредствените наследници на родителските релации"
@@ -7784,11 +7776,6 @@ msgstr "Преместване на текущо избраните членов
 msgid "Apply the updates and close the dialog"
 msgstr "Прилагане на обновяването и затваряне на прозореца."
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9307,13 +9294,6 @@ 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 ""
 
@@ -9329,6 +9309,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Запис на слой"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12675,6 +12660,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13474,6 +13462,9 @@ msgstr "Желаете ли да разрешите това?"
 msgid "Confirm Remote Control action"
 msgstr "Потвърждение на действието на дистанционното управление"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14194,6 +14185,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr "геогр. ширина"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL не съдържа валиден {0}"
+
+msgid "longitude"
+msgstr "геогр. дължина"
+
+msgid "zoom"
+msgstr "увеличение"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14220,6 +14223,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14231,21 +14241,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr "увеличение"
-
-msgid "latitude"
-msgstr "геогр. ширина"
-
-msgid "longitude"
-msgstr "геогр. дължина"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URLне съдържа {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL не съдържа валиден {0}"
-
 msgid "reserved"
 msgstr ""
 
@@ -14389,66 +14387,80 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Не прави нищо"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Съобщаване за грешка"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
-msgstr "Обновяване на JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Неочаквана грешка"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Текста вече е кипиран в буфера за обмен на данни)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Обновяване на JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -14784,9 +14796,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -14811,9 +14820,6 @@ msgstr "OpenStreetMap (German Style)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Traces"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Public Transport (ÖPNV)"
 
@@ -14835,7 +14841,7 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14886,7 +14892,10 @@ msgstr "OSM Inspector: Addresses"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Boundaries (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14961,7 +14970,10 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16264,9 +16276,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16405,7 +16414,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16640,17 +16650,21 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "не"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "да"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "ЖП"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16698,9 +16712,15 @@ msgstr "Работно време"
 msgid "Wheelchairs"
 msgstr "Инвалидна количка"
 
+msgid "yes"
+msgstr "да"
+
 msgid "limited"
 msgstr "ограничен"
 
+msgid "no"
+msgstr "не"
+
 msgid "Brand"
 msgstr "Компания"
 
@@ -17113,7 +17133,7 @@ msgstr "горски път"
 msgid "Population"
 msgstr "Население"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Пощенски код"
 
 msgid "Website"
@@ -17276,15 +17296,6 @@ msgstr "Шийти"
 msgid "sunni"
 msgstr "Сунити"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "нисък"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -18851,6 +18862,9 @@ msgstr "Метро"
 msgid "Tram"
 msgstr "Трамвай"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "Направляван автобус"
 
@@ -19354,9 +19368,6 @@ msgstr "Тролейбус"
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr "Ферибот"
 
@@ -20560,6 +20571,9 @@ msgstr "Стадион"
 msgid "Sports Centre"
 msgstr "Спортен център"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Игрище"
 
@@ -20646,6 +20660,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20702,6 +20720,9 @@ msgstr "Конни надбягвания"
 msgid "Gymnastics"
 msgstr "Гимнастика"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22558,6 +22579,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr "Фризьорски салон"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22657,6 +22687,9 @@ msgstr "торби за екскременти"
 msgid "food"
 msgstr "храна"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22793,7 +22826,7 @@ msgid "Litecoin"
 msgstr ""
 
 msgid "Offices"
-msgstr ""
+msgstr "Офиси"
 
 msgctxt "office"
 msgid "Accountant"
@@ -22839,6 +22872,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22988,9 +23033,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr "Пощенски код"
-
 msgid "National Park"
 msgstr "Национален парк"
 
@@ -23146,6 +23188,18 @@ msgstr "Остров"
 msgid "Islet"
 msgstr "Скала"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Природа"
 
@@ -23492,6 +23546,9 @@ msgstr ""
 msgid "City name"
 msgstr "Име на град"
 
+msgid "Post code"
+msgstr "Пощенски код"
+
 msgid "Country code"
 msgstr "Код на държава"
 
@@ -24208,6 +24265,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} е остаряло"
 
@@ -25891,6 +25951,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "нисък"
+
 msgid "symbol"
 msgstr ""
 
@@ -28277,6 +28346,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29670,18 +29748,6 @@ msgstr "принтирането спря"
 msgid "Printing has failed."
 msgstr "Принтирането се провали"
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: избран {0}"
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29725,6 +29791,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29750,6 +29826,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29759,6 +29859,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "ЖП"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30905,6 +31008,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -31535,7 +31641,7 @@ msgid "Warning: failed to load icon for turn restriction type ''{0}''"
 msgstr ""
 
 msgid "please select a turn restriction type"
-msgstr "моля, въведете тип на забраната"
+msgstr "Моля, въведете тип на забраната"
 
 msgid ""
 "Select the vehicle types this turn restriction is <strong>not</strong> "
@@ -32509,6 +32615,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32552,9 +32664,6 @@ msgstr "Категория"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/bn.po b/i18n/po/bn.po
index 2a033dc..2d6eea4 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:36+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:36+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: bn\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "JOSM থেকে প্রস্থান করুন"
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "ত্রুটি"
-
 msgid "About"
 msgstr "সম্বন্ধে"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "ত্রুটি"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -512,7 +500,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1074,19 +1062,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1095,16 +1077,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1802,6 +1774,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2826,7 +2801,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2878,6 +2853,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2910,9 +2888,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5574,12 +5549,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5593,6 +5562,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5772,6 +5747,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7625,11 +7622,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9115,13 +9107,6 @@ 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 ""
 
@@ -9137,6 +9122,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12417,6 +12407,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13206,6 +13199,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13917,6 +13913,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13943,6 +13951,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13954,21 +13969,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14112,64 +14115,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14503,9 +14520,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14530,9 +14544,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14554,7 +14565,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14605,7 +14616,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14680,7 +14694,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15966,9 +15983,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16107,7 +16121,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16342,15 +16357,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16400,9 +16419,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16815,7 +16840,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16978,15 +17003,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18553,6 +18569,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19056,9 +19075,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20262,6 +20278,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20348,6 +20367,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20404,6 +20427,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22260,6 +22286,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22359,6 +22394,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22541,6 +22579,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22690,9 +22740,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22848,6 +22895,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23192,6 +23251,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23908,6 +23970,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25589,6 +25654,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27935,6 +28009,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29320,18 +29403,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29375,6 +29446,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29400,6 +29481,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29409,6 +29514,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30550,6 +30658,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32154,6 +32265,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32197,9 +32314,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/br.po b/i18n/po/br.po
index b986edb..a50fef3 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:37+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:37+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: br\n"
 
 msgid "License"
@@ -115,21 +115,6 @@ msgstr "Na ober van ouzh an URL kamm :  \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Fazi"
-
 msgid "About"
 msgstr "Diwar-benn"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Fazi"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/bs.po b/i18n/po/bs.po
index 1307b3d..7879c8f 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:36+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:36+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: bs\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgstr "Ignorisan loše formiran fajl URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametar \"downloadgps\" ne prihvata ime fajla ili URL fajla"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Napusti JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Nastavi, pokušaj bilo kako"
-
-msgid "Error"
-msgstr "Greška"
-
 msgid "About"
 msgstr "O"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Greška"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -512,7 +500,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1074,19 +1062,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1095,16 +1077,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1802,6 +1774,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2826,7 +2801,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2878,6 +2853,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2910,9 +2888,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5574,12 +5549,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5593,6 +5562,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5772,6 +5747,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7625,11 +7622,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9115,13 +9107,6 @@ 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 ""
 
@@ -9137,6 +9122,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12417,6 +12407,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13206,6 +13199,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13917,6 +13913,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13943,6 +13951,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13954,21 +13969,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14112,64 +14115,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14503,9 +14520,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14530,9 +14544,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14554,7 +14565,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14605,7 +14616,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14680,7 +14694,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15966,9 +15983,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16107,7 +16121,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16342,15 +16357,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16400,9 +16419,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16815,7 +16840,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16978,15 +17003,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18553,6 +18569,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19056,9 +19075,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20262,6 +20278,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20348,6 +20367,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20404,6 +20427,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22260,6 +22286,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22359,6 +22394,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22541,6 +22579,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22690,9 +22740,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22848,6 +22895,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23192,6 +23251,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23908,6 +23970,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25589,6 +25654,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27935,6 +28009,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29320,18 +29403,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29375,6 +29446,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29400,6 +29481,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29409,6 +29514,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30550,6 +30658,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32154,6 +32265,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32197,9 +32314,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ca.po b/i18n/po/ca.po
index a2590f2..894b2dd 100644
--- a/i18n/po/ca.po
+++ b/i18n/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-04-05 12:55+0000\n"
 "Last-Translator: pitort <pitort at eclipso.eu>\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: 2016-07-12 04:38+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:38+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ca\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,25 +114,6 @@ msgstr ""
 "El paràmetre \"downloadgps\" no accepta noms de fitxer ni adreces URL de "
 "fitxers"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM necessita la versió {0} de Java.</h2>Ha estat detectada la versió: "
-"{1}.<br>Podeu <ul><li>actualitzar la vostra versió de Java (JRE) o</li><li>o "
-"bé utilitzar una versió anterior del JOSM compatible amb Java "
-"{2}.</li></ul>Més informació:"
-
-msgid "Exit JOSM"
-msgstr "Surt del JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continua, intenteu-ho altre cop"
-
-msgid "Error"
-msgstr "S''ha produït un error"
-
 msgid "About"
 msgstr "Quant a..."
 
@@ -247,6 +228,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Afegeix la capa d''imatge {0}"
 
+msgid "Error"
+msgstr "S''ha produït un error"
+
 msgid "Select image format for WMS layer"
 msgstr "Seleccioneu el format d''imatge de la capa WMS"
 
@@ -536,8 +520,8 @@ msgstr "Baixa els objectes referits a un dels objectes seleccionats"
 msgid "Duplicate"
 msgstr "Duplica"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dupliqueu la selecció copiant i enganxant-la immediatament"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Surt"
@@ -1166,23 +1150,14 @@ msgstr "Consulta d''Overpass: "
 msgid "Paste"
 msgstr "Enganxa"
 
-msgid "Paste contents of paste buffer."
-msgstr "Enganxa el contingut de la memòria d''enganxat."
-
-msgid "Delete incomplete members?"
-msgstr "Voleu suprimir membres incomplets?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Enganxa sense els memebres incomplets"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Les dades que heu copiat contenen objectes incomplets. Aquests objectes no "
-"seran ignorats en fer l''operació d''enganxar. Voleu enganxar les dades "
-"copiades sense els objectes incomplets?"
 
 msgid "Paste Tags"
 msgstr "Enganxa les etiquetes"
@@ -1191,16 +1166,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "Aplica etiquetes de contingut en memòria a tots els elements seleccionats."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Enganxa {0} etiqueta"
-msgstr[1] "Enganxa {0} etiquetes"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "a {0} objecte"
-msgstr[1] "a {0} objectes"
-
 msgid "Preferences..."
 msgstr "Preferències..."
 
@@ -1961,6 +1926,9 @@ msgstr "Consultar i baixar conjunts de canvis ..."
 msgid "Errors during download"
 msgstr "Errors durant la baixada"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Baixa del GPS"
 
@@ -3083,8 +3051,8 @@ msgstr "Canvia via {0}"
 msgid "Change relation {0}"
 msgstr "Canvia relació {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Nodes modificats de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Suprimir \"{0}\" del node ''{1}''"
@@ -3135,6 +3103,9 @@ msgstr[1] "objectes"
 msgid "Change relation member role for {0} {1}"
 msgstr "Canvia el rol del membre per {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Suprimit  ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Com a mínim cal un objecte per poder esborrar, la col·lecció és buida"
@@ -3168,9 +3139,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Esborra {0} relació"
 msgstr[1] "Esborra {0} relacions"
 
-msgid "Deleted ''{0}''"
-msgstr "Suprimit  ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Confirma l''eliminació"
 
@@ -6091,12 +6059,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmació de combinació"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>manca</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6120,6 +6082,12 @@ msgstr[1] ""
 "continuar us mostrarem una finestra per tal que resolgueu les etiquetes "
 "conflictives.<br/><br/>Segur que voleu continuar?"
 
+msgid "<i>missing</i>"
+msgstr "<i>manca</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Seleccioneu un valor"
 
@@ -6326,6 +6294,31 @@ msgstr "Nova clau"
 msgid "New value"
 msgstr "Nou valor"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Enganxa {0} etiqueta"
+msgstr[1] "Enganxa {0} etiquetes"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "a {0} objecte"
+msgstr[1] "a {0} objectes"
+
+msgid "Delete incomplete members?"
+msgstr "Voleu suprimir membres incomplets?"
+
+msgid "Paste without incomplete members"
+msgstr "Enganxa sense els memebres incomplets"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Les dades que heu copiat contenen objectes incomplets. Aquests objectes no "
+"seran ignorats en fer l''operació d''enganxar. Voleu enganxar les dades "
+"copiades sense els objectes incomplets?"
+
 msgid "For selected objects only"
 msgstr "Només pels objectes seleccionats"
 
@@ -8339,13 +8332,6 @@ msgstr "Moure els membres seleccionats amunt"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar les actualitzacions i tancar la finestra"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Els membres provinents del portarretalls no poden ser afegits perquè no són "
-"presents a la capa actual"
-
 msgid "Relation Editor: Refresh"
 msgstr "Editor de relacions: Refresca"
 
@@ -10040,17 +10026,6 @@ 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 ""
-"Per a afegir una nova capa heu d''assignar com a mínim {0,number,#}MB de "
-"memòria a JOSM utilitzant el paràmetre -Xmx{0,number,#}M (vegeu "
-"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
-"Actualment teniu {1,number,#}MB memory allocated for JOSM"
-
 msgid "All projections are supported"
 msgstr "Se suporten totes les projeccions"
 
@@ -10066,6 +10041,11 @@ msgstr "Canvieu la projecció una altra vegada o suprimiu la capa."
 msgid "Save Layer"
 msgstr "Desa la capa"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Capa de notes"
 
@@ -13754,6 +13734,9 @@ msgstr ""
 "Ha fallat l''obertura del fitxer amb extensió ''{2}'' i nom ''{3}'' del zip "
 "''{0}''. L''excepció ha estat: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "No s''ha pogut canviar el nom del fitxer {0} a {1}."
 
@@ -14643,6 +14626,9 @@ msgstr "Voleu permetre això?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmar l''acció del control remot"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15554,6 +15540,18 @@ msgstr ""
 "objecte.<br> <strong>També fallarà la baixada</strong> d''aquest "
 "objecte.<br><br>El missatge d''error és:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitud"
+
+msgid "URL does not contain valid {0}"
+msgstr "l''URL no conté un {0} vàlid"
+
+msgid "longitude"
+msgstr "longitud"
+
+msgid "zoom"
+msgstr "ampliació"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15589,6 +15587,17 @@ msgstr ""
 "Ha fallat l''accés al directori ''{0}'' per raons de seguretat. L''excepció "
 "ha estat: {1}"
 
+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 ""
+"Per a afegir una nova capa heu d''assignar com a mínim {0,number,#}MB de "
+"memòria a JOSM utilitzant el paràmetre -Xmx{0,number,#}M (vegeu "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Actualment teniu {1,number,#}MB memory allocated for JOSM"
+
 msgid "{0}... [please type its number]"
 msgstr "{0}... [escriviu el nombre]"
 
@@ -15602,21 +15611,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Obrint l''URL: {0}"
 
-msgid "zoom"
-msgstr "ampliació"
-
-msgid "latitude"
-msgstr "latitud"
-
-msgid "longitude"
-msgstr "longitud"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "l''URL no conté {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "l''URL no conté un {0} vàlid"
-
 msgid "reserved"
 msgstr "reservat"
 
@@ -15789,83 +15786,80 @@ msgstr "Ignorant la geometria malformada: {0}"
 msgid "Failed to load XML schema."
 msgstr "Ha fallat la càrrega de l''esquema XML"
 
-msgid "Do nothing"
-msgstr "No facis res"
-
-msgid "Report Bug"
-msgstr "Informa d''un error"
+msgid "You have encountered a bug in JOSM"
+msgstr "Heu trobat un error dins JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Ha hagut una excepció no esperada.<br>Això sempre és a causa d''un error al "
-"codi del programa. Si esteu utilitzant<br>la darrera versió del JOSM, si us "
-"plau, considereu l''opció d''omplir un informe d''error."
 
-msgid "Update JOSM"
-msgstr "Actualitza JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Ha hagut una excepció inesperada. Això sempre és a causa d''un error de "
-"codificació.<br><br>No obstant això, esteu utilitzant una versió antiga del "
-"JOSM ({0}),<br>en comptes d''utilitzar la versió actual "
-"verificada(<b>{1}</b>).<br><br><b>Actualitzeu el JOSM</b> abans de "
-"considerar de reportar un error."
+
+msgid "Report Bug"
+msgstr "Informa d''un error"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "No tornar a mostrar la finestra d''error durant aquesta sessió."
 
-msgid "Unexpected Exception"
-msgstr "Excepció no esperada"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Heu trobat un error dins JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Heu trobat un error a JOSM. Abans d''emplenar el formulari per reportar "
-"l''error assegureu-vos que heu actualitzat JOSM a la darrera versió aquí:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Hauríeu d''actualitzar també els vostres connectors. Si el problema "
-"persisteix, ompliu un informe d''error al nostre lloc web:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"La informació sobre el problema que hi ha a sota ja ha estat inclosa. Si us "
-"plau, afegiu informació sobre la manera de reproduir el problema i aporteu "
-"el màxim possible de detalls."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
 msgstr ""
-"Alternativament, si no funciona, podeu omplir manualment la informació en "
-"aquesta adreça URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(El text ja ha estat copiat al vostre portaretalls.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Actualitza JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -16211,9 +16205,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satèl·lit"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16238,9 +16229,6 @@ msgstr "OpenStreetMap (Estil alemany)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap Tracks GPS"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Transport públic (ÖPNV)"
 
@@ -16262,7 +16250,7 @@ msgstr "Mapa ciclista Strava"
 msgid "Strava running heatmap"
 msgstr "Mapa de curses Strava"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16313,8 +16301,11 @@ msgstr "Inspector OSM: adreces"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "Inspector OSM: Fronteres (UE)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI blanc i negre 2.5m"
@@ -16388,8 +16379,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "Imatgeria aèria AGIV(laanderen) (cobreix la regió de Brussel·les)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr imatgeria digital (2013)"
@@ -17769,9 +17763,6 @@ msgstr "Llegeix i escriu fitxers de polifiltres osmosis"
 msgid "Adds map printing to JOSM"
 msgstr "Afegeix capacitats d''impresió de mapes a JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "Afegeix projeccions des de Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17954,8 +17945,9 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Habilita la cerca de fites importades d''un fitxer gpx"
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Simplifica l''enllaç d''objectes OSM als articles de la Viquipèdia."
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18189,17 +18181,21 @@ msgstr "de pas"
 msgid "Electrified"
 msgstr "Electrificada"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "catenària"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "no"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "sí"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "via fèrria"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltatge en volts (V)"
@@ -18247,9 +18243,15 @@ msgstr "Horari d''obertura"
 msgid "Wheelchairs"
 msgstr "Cadires de rodes"
 
+msgid "yes"
+msgstr "sí"
+
 msgid "limited"
 msgstr "limitat"
 
+msgid "no"
+msgstr "no"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -18662,7 +18664,7 @@ msgstr "forestal"
 msgid "Population"
 msgstr "Població"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Codi postal"
 
 msgid "Website"
@@ -18829,15 +18831,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunnita"
 
-msgid "high"
-msgstr "alt"
-
-msgid "medium"
-msgstr "mitjà"
-
-msgid "low"
-msgstr "baix"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20431,6 +20424,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tramvia"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Troleibús"
 
@@ -20938,9 +20934,6 @@ msgstr "Troleibús"
 msgid "Share taxi"
 msgstr "Taxi col·lectiu"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Transbordador"
 
@@ -22146,6 +22139,9 @@ msgstr "Estadi"
 msgid "Sports Centre"
 msgstr "Pavelló poliesportiu"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Pista poliesportiva"
 
@@ -22232,6 +22228,10 @@ msgid "sports_centre"
 msgstr "centre esportiu"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "estadi"
 
@@ -22288,6 +22288,9 @@ msgstr "Hipòdrom"
 msgid "Gymnastics"
 msgstr "Gimnàstica"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "Patinatge sobre gel"
 
@@ -24146,6 +24149,15 @@ msgstr "Tabac"
 msgid "Hairdresser/Barber"
 msgstr "Perruqueria/Barberia"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tatuatges"
 
@@ -24245,6 +24257,9 @@ msgstr "bosses per excrements"
 msgid "food"
 msgstr "menjar"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -24427,6 +24442,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Institució governamental"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Assegurances"
@@ -24576,9 +24603,6 @@ msgstr "comunitat lingüística"
 msgid "ward"
 msgstr "districte"
 
-msgid "Postal Code"
-msgstr "Codi postal"
-
 msgid "National Park"
 msgstr "Parc nacional"
 
@@ -24738,6 +24762,18 @@ msgstr "Illa"
 msgid "Islet"
 msgstr "Illot"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natura"
 
@@ -25094,6 +25130,9 @@ msgstr "Nom del lloc"
 msgid "City name"
 msgstr "Nom de la ciutat"
 
+msgid "Post code"
+msgstr "Codi postal"
+
 msgid "Country code"
 msgstr "Codi del país"
 
@@ -25815,6 +25854,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} és obsolet"
 
@@ -27708,6 +27750,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "alt"
+
+msgid "medium"
+msgstr "mitjà"
+
+msgid "low"
+msgstr "baix"
+
 msgid "symbol"
 msgstr "símbol"
 
@@ -30235,6 +30286,15 @@ msgstr[1] "{0} imatges girades"
 msgid "2 images unjoined"
 msgstr "2 imatges tretes"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31730,18 +31790,6 @@ msgstr "Impressió aturada"
 msgid "Printing has failed."
 msgstr "La impressió ha fallat"
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} seleccionat"
-
-msgid "Selected: {0}"
-msgstr "Seleccionat: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Connector Proj4J"
-
-msgid "Code"
-msgstr "Codi"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31785,6 +31833,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31810,6 +31868,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31819,6 +31901,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "via fèrria"
+
 msgid "Can''t parse a time from this string."
 msgstr "No és possible de llegir la hora d''aquesta cadena de text."
 
@@ -33019,6 +33104,9 @@ msgstr "Alguna cosa ha anat malament, torneu a provar"
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "No és possible de posar un node fora del Món."
 
@@ -34844,6 +34932,12 @@ msgstr ""
 "Obté els enllaços interwiki de la viquipèdia per tal d''afegir diverses "
 "etiquetes de nom"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34892,9 +34986,6 @@ msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 "Mostra una llista amb els articles d''una categoria de la Viquipèdia."
 
-msgid "Enter the Wikipedia category"
-msgstr "Indiqueu una categoria de la viquipèdia"
-
 msgid "Clipboard"
 msgstr "Porta-retalls"
 
diff --git a/i18n/po/ca at valencia.po b/i18n/po/ca at valencia.po
index 8b31b9a..1ae370c 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:14+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:18+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ca at valencia\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,21 +114,6 @@ msgstr ""
 "El paràmetre \"downloadgps\" no accepta noms de fitxer ni adreces URL de "
 "fitxers"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Ix del JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continua, intenteu-ho altre cop"
-
-msgid "Error"
-msgstr "S''ha produït un error"
-
 msgid "About"
 msgstr "Quant a..."
 
@@ -239,6 +224,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Afig la capa d''imatge {0}"
 
+msgid "Error"
+msgstr "S''ha produït un error"
+
 msgid "Select image format for WMS layer"
 msgstr "Seleccioneu el format d''imatge de la capa WMS"
 
@@ -523,8 +511,8 @@ msgstr "Baixa els objectes referits a un dels objectes seleccionats"
 msgid "Duplicate"
 msgstr "Duplica"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dupliqueu la selecció copiant i apegant-la immediatament"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Ix"
@@ -1151,23 +1139,14 @@ msgstr "Consulta d''Overpass: "
 msgid "Paste"
 msgstr "Apega"
 
-msgid "Paste contents of paste buffer."
-msgstr "Apega el contingut de la memòria d''apegat."
-
-msgid "Delete incomplete members?"
-msgstr "Voleu suprimir membres incomplets?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Apega sense els memebres incomplets"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Les dades que heu copiat contenen objectes incomplets. Estos objectes no "
-"seran ignorats en fer l''operació d''apegar. Voleu apegar les dades copiades "
-"sense els objectes incomplets?"
 
 msgid "Paste Tags"
 msgstr "Apega les etiquetes"
@@ -1176,16 +1155,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "Aplica etiquetes de contingut en memòria a tots els elements seleccionats."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Apega {0} etiqueta"
-msgstr[1] "Apega {0} etiquetes"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "a {0} objecte"
-msgstr[1] "a {0} objectes"
-
 msgid "Preferences..."
 msgstr "Preferències..."
 
@@ -1945,6 +1914,9 @@ msgstr "Consultar i descarregar conjunts de canvis ..."
 msgid "Errors during download"
 msgstr "Errors durant la descàrrega"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Descarrega GPS"
 
@@ -3043,8 +3015,8 @@ msgstr "Canvia via {0}"
 msgid "Change relation {0}"
 msgstr "Canvia relació {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Nodes modificats de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Suprimir \"{0}\" del node ''{1}''"
@@ -3095,6 +3067,9 @@ msgstr[1] "objectes"
 msgid "Change relation member role for {0} {1}"
 msgstr "Canvia el rol del membre per {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Suprimit  ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Com a mínim cal un objecte per poder esborrar, la col·lecció és buida"
@@ -3128,9 +3103,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Esborra {0} relació"
 msgstr[1] "Esborra {0} relacions"
 
-msgid "Deleted ''{0}''"
-msgstr "Suprimit  ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Confirma l''eliminació"
 
@@ -5970,12 +5942,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmació de combinació"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>manca</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5989,6 +5955,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>manca</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Seleccioneu un valor"
 
@@ -6174,6 +6146,31 @@ msgstr "Nova clau"
 msgid "New value"
 msgstr "Nou valor"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Apega {0} etiqueta"
+msgstr[1] "Apega {0} etiquetes"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "a {0} objecte"
+msgstr[1] "a {0} objectes"
+
+msgid "Delete incomplete members?"
+msgstr "Voleu suprimir membres incomplets?"
+
+msgid "Paste without incomplete members"
+msgstr "Apega sense els memebres incomplets"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Les dades que heu copiat contenen objectes incomplets. Estos objectes no "
+"seran ignorats en fer l''operació d''apegar. Voleu apegar les dades copiades "
+"sense els objectes incomplets?"
+
 msgid "For selected objects only"
 msgstr "Només pels objectes seleccionats"
 
@@ -8166,13 +8163,6 @@ msgstr "Moure els membres seleccionats amunt"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar les actualitzacions i tancar la finestra"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Els membres provinents del portarretalls no poden ser afegits perquè no són "
-"presents a la capa actual"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9866,13 +9856,6 @@ 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"
 
@@ -9888,6 +9871,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Guarda la capa"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -13555,6 +13543,9 @@ msgstr ""
 "Ha fallat l''obertura del fitxer amb extensió ''{2}'' i nom ''{3}'' del zip "
 "''{0}''. L''excepció ha estat: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "No s''ha pogut canviar el nom del fitxer {0} a {1}."
 
@@ -14437,6 +14428,9 @@ msgstr "Voleu permetre això?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmar l''acció del control remot"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15350,6 +15344,18 @@ msgstr ""
 "<strong>També fallarà la descàrrega</strong> d''este objecte.<br><br>El "
 "missatge d''error és:<br>{0}</html>"
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15385,6 +15391,13 @@ msgstr ""
 "Ha fallat l''accés al directori ''{0}'' per raons de seguretat. L''excepció "
 "ha estat: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [per favor escriviu el nombre]"
 
@@ -15398,21 +15411,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Obrint la URL: {0}"
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr "reservat"
 
@@ -15570,76 +15571,78 @@ msgstr "Ignorant la geometria malformada: {0}"
 msgid "Failed to load XML schema."
 msgstr "Ha fallat la càrrega de l''esquema XML"
 
-msgid "Do nothing"
-msgstr "No faces res"
-
-msgid "Report Bug"
-msgstr "Informa d''un error"
+msgid "You have encountered a bug in JOSM"
+msgstr "Heu trobat un error dins JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Ha hagut una excepció no esperada.<br>Això sempre és a causa d''un error al "
-"codi del programa. Si esteu utilitzant<br>la darrera versió de JOSM, si vos "
-"plau, considereu l''opció d''omplir un informe d''error."
 
-msgid "Update JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
+msgid "Report Bug"
+msgstr "Informa d''un error"
+
 msgid "Suppress further error dialogs for this session."
 msgstr "No tornar a mostrar la finestra d''error durant esta sessió."
 
-msgid "Unexpected Exception"
-msgstr "Excepció no esperada"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Heu trobat un error dins JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Heu trobat un error a JOSM. Abans d''emplenar el formulari per reportar "
-"l''error assegureu-vos que heu actualitzat JOSM a la darrera versió ací:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Hauríeu d''actualitzar també els vostres connectors. Si el problema "
-"persisteix, per favor, ompliu un informe d''error al nostre lloc web:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"La informació sobre el problema que hi ha a sota ja ha estat inclosa. Si vos "
-"plau, afegiu informació sobre la manera de reproduir el problema i aporteu "
-"el màxim possible de detalls."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
-"Alternativament, si no funciona, podeu omplir manualment la informació en "
-"esta adreça URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(El text ja ha estat copiat al vostre portaretalls.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -15988,9 +15991,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -16015,9 +16015,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -16039,7 +16036,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16090,7 +16087,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -16165,7 +16165,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -17518,9 +17521,6 @@ msgstr "Llig i escriu fitxers de polifiltres osmosis"
 msgid "Adds map printing to JOSM"
 msgstr "Afig capacitats d''impresió de mapes a JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "Afig projeccions des de Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17686,7 +17686,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Habilita la cerca de fites importades d''un fitxer gpx"
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -17921,17 +17922,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Electrificada"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "catenària"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "no"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "sí"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "via fèrria"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltatge en volts (V)"
@@ -17979,9 +17984,15 @@ msgstr "Horari d''obertura"
 msgid "Wheelchairs"
 msgstr "Cadires de rodes"
 
+msgid "yes"
+msgstr "sí"
+
 msgid "limited"
 msgstr "limitat"
 
+msgid "no"
+msgstr "no"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -18394,8 +18405,8 @@ msgstr "forestal"
 msgid "Population"
 msgstr "Població"
 
-msgid "Post code"
-msgstr "Codi postal"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Lloc web"
@@ -18557,15 +18568,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunnita"
 
-msgid "high"
-msgstr "alt"
-
-msgid "medium"
-msgstr "mitjà"
-
-msgid "low"
-msgstr "baix"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20147,6 +20149,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tramvia"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Troleibús"
 
@@ -20652,9 +20657,6 @@ msgstr "Troleibús"
 msgid "Share taxi"
 msgstr "Taxi col·lectiu"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Transbordador"
 
@@ -21858,6 +21860,9 @@ msgstr "Estadi"
 msgid "Sports Centre"
 msgstr "Pavelló poliesportiu"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Pista poliesportiva"
 
@@ -21944,6 +21949,10 @@ msgid "sports_centre"
 msgstr "centre esportiu"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "estadi"
 
@@ -22000,6 +22009,9 @@ msgstr "Hipòdrom"
 msgid "Gymnastics"
 msgstr "Gimnàstica"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23856,6 +23868,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -23955,6 +23976,9 @@ msgstr "bosses per excrements"
 msgid "food"
 msgstr "menjar"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -24137,6 +24161,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -24286,9 +24322,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -24444,6 +24477,18 @@ msgstr "Illa"
 msgid "Islet"
 msgstr "Illot"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natura"
 
@@ -24788,6 +24833,9 @@ msgstr ""
 msgid "City name"
 msgstr "Nom de la ciutat"
 
+msgid "Post code"
+msgstr "Codi postal"
+
 msgid "Country code"
 msgstr "Codi del país"
 
@@ -25504,6 +25552,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} és obsolet"
 
@@ -27347,6 +27398,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "alt"
+
+msgid "medium"
+msgstr "mitjà"
+
+msgid "low"
+msgstr "baix"
+
 msgid "symbol"
 msgstr "símbol"
 
@@ -29855,6 +29915,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31345,18 +31414,6 @@ msgstr "Impressió parada"
 msgid "Printing has failed."
 msgstr "La impressió ha fallat"
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} seleccionat"
-
-msgid "Selected: {0}"
-msgstr "Seleccionat: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Connector Proj4J"
-
-msgid "Code"
-msgstr "Codi"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31400,6 +31457,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31425,6 +31492,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31434,6 +31525,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "via fèrria"
+
 msgid "Can''t parse a time from this string."
 msgstr "No és possible de llegir la hora d''esta cadena de text."
 
@@ -32631,6 +32725,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "No és possible de posar un node fora del Món."
 
@@ -34441,6 +34538,12 @@ msgstr ""
 "Obté els enllaços interwiki de la viquipèdia per tal d''afegir diverses "
 "etiquetes de nom"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34489,9 +34592,6 @@ msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 "Mostra una llista amb els articles d''una categoria de la Viquipèdia."
 
-msgid "Enter the Wikipedia category"
-msgstr "Indiqueu una categoria de la viquipèdia"
-
 msgid "Clipboard"
 msgstr "Porta-retalls"
 
diff --git a/i18n/po/cs.po b/i18n/po/cs.po
index fe87c20..6b132a9 100644
--- a/i18n/po/cs.po
+++ b/i18n/po/cs.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-06-29 09:45+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-10 09:19+0000\n"
 "Last-Translator: Dalibor Jelínek <launchpad.net at dalibor.cz>\n"
 "Language-Team: Czech <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=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2016-07-12 04:38+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:39+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: cs\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,24 +113,6 @@ msgstr "Ignoruji poškozené URL souboru: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametr ''downloadgps'' neakceptuje jména souborů, ani URL souborů"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM potřebuje Javu verze {0}.</h2>Zjištěná verze Javy: {1}.<br>Můžete "
-"<ul><li>aktualizovat vaši Javu (JRE), nebo</li><li>použít starší verzi JOSM "
-"(kompatibilní s Javou {2}).</li></ul>Více informací:"
-
-msgid "Exit JOSM"
-msgstr "Ukončit JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Pokračovat, zkusit znovu"
-
-msgid "Error"
-msgstr "Chyba"
-
 msgid "About"
 msgstr "O aplikaci"
 
@@ -248,6 +230,9 @@ msgstr "Přidá vybrané prvky na mapě do výběru výše."
 msgid "Add imagery layer {0}"
 msgstr "Přidat vrstvu podkladových map {0}"
 
+msgid "Error"
+msgstr "Chyba"
+
 msgid "Select image format for WMS layer"
 msgstr "Zvolit formát obrazu vrstvy WMS"
 
@@ -535,8 +520,8 @@ msgstr "Stáhnout objekty odkazující na některý ze zvolených objektů"
 msgid "Duplicate"
 msgstr "Duplikovat"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplikovat výběr kopírováním a vložením."
+msgid "Duplicate selection."
+msgstr "Duplicitní výběr."
 
 msgid "Exit"
 msgstr "Konec"
@@ -1161,22 +1146,14 @@ msgstr "Dotaz Overpass: "
 msgid "Paste"
 msgstr "Vložit"
 
-msgid "Paste contents of paste buffer."
-msgstr "Vložit ze schránky"
+msgid "Paste contents of clipboard."
+msgstr "Vložit obsah schránky."
 
-msgid "Delete incomplete members?"
-msgstr "Smazat nekompletní členy?"
+msgid "Paste at source position"
+msgstr "Vložit na zdrojovou pozici"
 
-msgid "Paste without incomplete members"
-msgstr "Vložte bez nekompletních členů"
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
-msgstr ""
-"Kopírovaná data obsahují nekompletní objekty. Nekompletní objekty nebudou "
-"vloženy. Přejete si vložit data bez nekompletních objektů?"
+msgid "Paste contents of clipboard at the position they were copied from."
+msgstr "Vloží obsah schránky na pozici, odkud bylo kopírováno."
 
 msgid "Paste Tags"
 msgstr "Vložit značky"
@@ -1184,18 +1161,6 @@ msgstr "Vložit značky"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Použít značky objektů ve schránce na všechny označené objekty."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Vkládám {0} značku"
-msgstr[1] "Vkládám {0} značky"
-msgstr[2] "Vkládám {0} značek"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "do {0} objektu"
-msgstr[1] "do {0} objektů"
-msgstr[2] "do {0} objektů"
-
 msgid "Preferences..."
 msgstr "Nastavení..."
 
@@ -1944,6 +1909,9 @@ msgstr "Dotaz a stažení sad změn ..."
 msgid "Errors during download"
 msgstr "Chyby během stahování"
 
+msgid "Download Geo URL"
+msgstr "Stáhnout Geo URL"
+
 msgid "Download GPS"
 msgstr "Stáhnout GPS"
 
@@ -3071,8 +3039,8 @@ msgstr "Změnit cestu {0}"
 msgid "Change relation {0}"
 msgstr "Změnit relaci {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Změna uzlů {0}"
+msgid "Change nodes of {0}"
+msgstr "Změnit uzly {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Odstranit \"{0}\" pro uzel ''{1}''"
@@ -3128,6 +3096,9 @@ msgstr[2] "objekty"
 msgid "Change relation member role for {0} {1}"
 msgstr "Změnit roli člena relace {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Vymazáno ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Pro mazání je třeba vybrat alespoň jeden objekt, nemáte nic vybráno"
 
@@ -3164,9 +3135,6 @@ msgstr[0] "Smazat {0} relaci"
 msgstr[1] "Smazat {0} relace"
 msgstr[2] "Smazat {0} relací"
 
-msgid "Deleted ''{0}''"
-msgstr "Vymazáno ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Potvrďte smazání"
 
@@ -6044,12 +6012,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Potvrzení slučování"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>chybějící</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6076,6 +6038,12 @@ msgstr[2] ""
 "značky.<br/>Budete-li pokračovat, objeví se dialogové okno, ve kterém můžete "
 "opravit konflikt značek.<br/><br/>Chcete pokračovat?"
 
+msgid "<i>missing</i>"
+msgstr "<i>chybějící</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Vyberte hodnotu"
 
@@ -6278,6 +6246,32 @@ msgstr "Nový klíč"
 msgid "New value"
 msgstr "Nová hodnota"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Vkládám {0} značku"
+msgstr[1] "Vkládám {0} značky"
+msgstr[2] "Vkládám {0} značek"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "do {0} objektu"
+msgstr[1] "do {0} objektů"
+msgstr[2] "do {0} objektů"
+
+msgid "Delete incomplete members?"
+msgstr "Smazat nekompletní členy?"
+
+msgid "Paste without incomplete members"
+msgstr "Vložte bez nekompletních členů"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Kopírovaná data obsahují nekompletní objekty. Nekompletní objekty nebudou "
+"vloženy. Přejete si vložit data bez nekompletních objektů?"
+
 msgid "For selected objects only"
 msgstr "Pouze pro vybrané objekty"
 
@@ -8253,12 +8247,6 @@ msgstr "Přesunout zvolené členy nahoru"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplikovat změny a zavřít dialog"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Zapamatované členy nelze přidat, protože nejsou součástí aktuální vrstvy"
-
 msgid "Relation Editor: Refresh"
 msgstr "Editor relací: Občerstvit"
 
@@ -9963,17 +9951,6 @@ 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"
 
@@ -9989,6 +9966,12 @@ msgstr "Opět změňte projekci nebo ostraňte vrstvu."
 msgid "Save Layer"
 msgstr "Ulož vrstvu"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} poznámka"
+msgstr[1] "{0} poznámky"
+msgstr[2] "{0} poznámek"
+
 msgid "Notes layer"
 msgstr "Vrstva poznámek"
 
@@ -13597,6 +13580,9 @@ msgstr ""
 "Nepovedlo se otevřít soubor s příponou ''{2}'' a jménem ''{3}'' ze souboru "
 "ZIP ''{0}''. Došlo k výjimce: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Požadované URL {0} nebylo nalezeno"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Nepodařilo se přejmenovat soubor {0} na {1}."
 
@@ -14456,6 +14442,9 @@ msgstr "Chcete toto povolit?"
 msgid "Confirm Remote Control action"
 msgstr "Potvrdit akci vzdáleného ovládání"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "Následující klíče jsou povinné, ale nebyly poskytnuty: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15383,6 +15372,18 @@ msgstr ""
 "objekt.<br> <strong>Stahování selhalo</strong>, pokud jste se snažili nahrát "
 "tento objekt.<br><br>Chybová zpráva je:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "zeměpisná šířka"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL neobsahuje platné {0}"
+
+msgid "longitude"
+msgstr "zeměpisná délka"
+
+msgid "zoom"
+msgstr "zvětšení"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15415,6 +15416,17 @@ msgstr ""
 "Přístup do adresáře ''{0}'' se nezdařil kvůli zabezpečení. Došlo k výjimce: "
 "{1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}… [zadejte prosím jeho číslo]"
 
@@ -15428,21 +15440,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Otvírám URL: {0}"
 
-msgid "zoom"
-msgstr "zvětšení"
-
-msgid "latitude"
-msgstr "zeměpisná šířka"
-
-msgid "longitude"
-msgstr "zeměpisná délka"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL neobsahuje {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL neobsahuje platné {0}"
-
 msgid "reserved"
 msgstr "rezervované"
 
@@ -15616,83 +15616,90 @@ msgstr "Ignoruji zdeformovanou geometrii: {0}"
 msgid "Failed to load XML schema."
 msgstr "Nepodařilo se načíst XML schéma."
 
-msgid "Do nothing"
-msgstr "Pokračovat"
-
-msgid "Report Bug"
-msgstr "Nahlásit chybu"
+msgid "You have encountered a bug in JOSM"
+msgstr "Narazili jste na chybu v JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Nastala neočekávaná výjimka.<br>Tato chyba vždy znamená chybu v kódu. Pokud "
-"používáte poslední<verzi>verzi této aplikace, oznamte prosím tuto chybu "
-"autorům."
+"Došlo k neočekávané výjimce.\n"
+"Jedná se o chybu programu. Pokud používáte poslední verzi JOSM, pak buďte "
+"tak laskaví a zašlete hlášení o chybě."
 
-msgid "Update JOSM"
-msgstr "Aktualizujte JOSM"
+msgid "Debug information"
+msgstr "Ladící informace"
+
+msgid "Manually report at:"
+msgstr "Nahlásit ručně na:"
+
+msgid "Is JOSM up to date?"
+msgstr "Je JOSM aktuální?"
+
+msgid "Send bug report"
+msgstr "Poslat hlášení o chybě"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Došlo k neočekávané výjimce. Toto je vždy programátorská chyba. "
-"<br><br>Používáte nicméně starou verzi JOSM ({0})<br>místo současné "
-"otestované verze (<b>{1}</b>).<br><br><b>Prosím aktualizujte JOSM</b>, než "
-"nahlásíte tuto chybu."
+"Pokud používáte poslední verzi JOSM a doplňků, pak prosím vyplňte hlášení o "
+"chybě v našem sledovači chyb.\n"
+"Informace o chybě by již měly být předvyplněné. Prosím, doplňte informace "
+"jak chybu reprodukovat a snažte se poskytnout co nejvíce podrobností."
+
+msgid "Report Bug"
+msgstr "Nahlásit chybu"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Potlačit další chybová hlášení v tomto sezení."
 
-msgid "Unexpected Exception"
-msgstr "Neočekávaná výjimka"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Narazili jste na chybu v JOSM"
+msgid "Ignore this error."
+msgstr "Ignorovat tuto chybu."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Narazil(a) jste na chybu v JOSM. Než nahlásíte chybu, ověřte si na "
-"následující adrese že používáte nejnovější verzi JOSM:"
+"Založení hlášení chyby se nezdařilo. Prosím, nahlaste to ručně na této "
+"stránce:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Bylo by taktéž vhodné aktualizovat doplňky. Pokud žádný z těchto postupů "
-"nepomůže, nahlaste, prosím, chybu na této adrese:"
+msgid "Include the system status report."
+msgstr "Zahrnout zprávu o stavu systému."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"Níže uvedené podrobné informace o chybě by již měly být předvyplněné. "
-"Přidejte k nim také informaci, jak k chybě došlo a jak ji lze zreprodukovat "
-"(pokud to víte) a co nejvíce dalších podrobností."
+msgid "Include information about the data you were working on."
+msgstr "Zahrnout informace o datech, na kterých se pracovalo."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr ""
-"V případě, že toto nebude fungovat, můžete ručně vyplnit níže uvedené údaje "
-"na následující URL:"
+msgid "Include all stack traces."
+msgstr "Zahrnout stavy všech zásobníků."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Vaše aktuální verze JOSM je {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM hledá aktualizace..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Při kontrole, zda je vaše JOSM aktuální, došlo k chybě."
+
+msgid "JOSM is up to date."
+msgstr "JOSM je aktuální."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Text již byl zkopírován do schránky.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr "JOSM je zastaralé. Aktuální verze je {0}. Zkuste JOSM aktualizovat."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Založení hlášení chyby se nezdařilo. Prosím, nahlaste to ručně na této "
-"stránce:"
+"Předtím, než zašlete hlášení o chybě, tak se ujistěte, že používáte "
+"nejnovější verzi JOSM zde:"
+
+msgid "Update JOSM"
+msgstr "Aktualizujte JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16037,9 +16044,6 @@ msgstr "HDM (Humanitární tým OpenStreetMap)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16064,9 +16068,6 @@ msgstr "OpenStreetMap (německý styl)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap trasy GPS"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Veřejná doprava (ÖPNV)"
 
@@ -16088,8 +16089,8 @@ msgstr "Strava heatmap - jízda na kole"
 msgid "Strava running heatmap"
 msgstr "Strava heatmap - běh"
 
-msgid "Strava both heatmap"
-msgstr ""
+msgid "Strava cycling and running heatmap"
+msgstr "Strava cycling and running heatmap"
 
 msgid "Locator Overlay"
 msgstr "Překryvná vrstva Locator"
@@ -16139,8 +16140,11 @@ msgstr "OSM Inspector: Adresy"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Hranice (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Argentina (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Argentina (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI černobíle 2.5m"
@@ -16214,8 +16218,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV aerial imagery 10cm 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -17586,9 +17593,6 @@ msgstr "Čte a zapisuje soubory polygonálních filtrů osmosis"
 msgid "Adds map printing to JOSM"
 msgstr "Přidá do JOSM možnost tisku mapy"
 
-msgid "adds projections from Proj4J"
-msgstr "přidá projekce z Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17763,8 +17767,10 @@ msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 "Umožňuje vyhledávat trasové body (waypoint) importované ze souboru GPX."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Zjednodušuje linkování objektů OSM ke článkům Wikipedie"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Zjednodušuje spojování objektů OSM a článků na Wikipedii a položek Wikidat"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18000,15 +18006,19 @@ msgstr "kolejová spojka"
 msgid "Electrified"
 msgstr "Elektrifikováno"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "trolejové vedení"
+msgstr "trolej"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "ne"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "ano"
 
+msgctxt "electrified"
 msgid "rail"
 msgstr "kolejnice"
 
@@ -18058,9 +18068,15 @@ msgstr "Otevírací doba"
 msgid "Wheelchairs"
 msgstr "Invalidní vozíky"
 
+msgid "yes"
+msgstr "ano"
+
 msgid "limited"
 msgstr "omezené"
 
+msgid "no"
+msgstr "ne"
+
 msgid "Brand"
 msgstr "Značka"
 
@@ -18473,8 +18489,8 @@ msgstr "lesnictví"
 msgid "Population"
 msgstr "Počet obyvatel"
 
-msgid "Post code"
-msgstr "Poštovní směrovací číslo"
+msgid "Postal Code"
+msgstr "PSČ"
 
 msgid "Website"
 msgstr "Webové stránky"
@@ -18640,15 +18656,6 @@ msgstr "ší’itské"
 msgid "sunni"
 msgstr "sunnitské"
 
-msgid "high"
-msgstr "vysoké"
-
-msgid "medium"
-msgstr "střední"
-
-msgid "low"
-msgstr "nízké"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20236,6 +20243,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tramvaj"
 
+msgid "Funicular"
+msgstr "Pozemní lanovka"
+
 msgid "Bus Guideway"
 msgstr "Autobusová dráha"
 
@@ -20741,9 +20751,6 @@ msgstr "Trolejbus"
 msgid "Share taxi"
 msgstr "Sdílené taxi"
 
-msgid "Funicular"
-msgstr "Pozemní lanovka"
-
 msgid "Ferry"
 msgstr "Trajekt/přívoz"
 
@@ -21947,6 +21954,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Sportovní centrum"
 
+msgid "Fitness Centre"
+msgstr "Fitness centrum"
+
 msgid "Pitch"
 msgstr "Hřiště"
 
@@ -22033,6 +22043,10 @@ msgid "sports_centre"
 msgstr "sportovní centrum"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "fitness_centrum"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadion"
 
@@ -22089,6 +22103,9 @@ msgstr "Dostihy"
 msgid "Gymnastics"
 msgstr "Gymnastika"
 
+msgid "fitness_centre"
+msgstr "fitness_centrum"
+
 msgid "Ice Skating"
 msgstr "Brusklení na ledě"
 
@@ -23947,6 +23964,15 @@ msgstr "Tabák"
 msgid "Hairdresser/Barber"
 msgstr "Kadeřnictví/Holičství"
 
+msgid "Female"
+msgstr "Ženy"
+
+msgid "Male"
+msgstr "Muži"
+
+msgid "Unisex"
+msgstr "Unisex"
+
 msgid "Tattoo"
 msgstr "Tetovací salón"
 
@@ -24046,6 +24072,9 @@ msgstr "sáčky na výkaly"
 msgid "food"
 msgstr "jídlo"
 
+msgid "milk"
+msgstr "mléko"
+
 msgid "newspapers"
 msgstr "noviny"
 
@@ -24228,6 +24257,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Vládní úřad/ministerstvo"
 
+msgid "ministry"
+msgstr "ministerstvo"
+
+msgid "prosecutor"
+msgstr "žalobce"
+
+msgid "tax"
+msgstr "finanční úřad"
+
+msgid "register_office"
+msgstr "matrika"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Pojišťovna"
@@ -24377,9 +24418,6 @@ msgstr "jazyková komunita"
 msgid "ward"
 msgstr "volební obvod"
 
-msgid "Postal Code"
-msgstr "PSČ"
-
 msgid "National Park"
 msgstr "Národní park"
 
@@ -24538,6 +24576,18 @@ msgstr "Ostrov"
 msgid "Islet"
 msgstr "Ostrůvek"
 
+msgid "Reef"
+msgstr "Útes"
+
+msgid "coral"
+msgstr "korálový"
+
+msgid "oyster"
+msgstr "ústřicový"
+
+msgid "rock"
+msgstr "skalní"
+
 msgid "Nature"
 msgstr "Příroda"
 
@@ -24893,6 +24943,9 @@ msgstr "Název místa"
 msgid "City name"
 msgstr "Jméno města"
 
+msgid "Post code"
+msgstr "Poštovní směrovací číslo"
+
 msgid "Country code"
 msgstr "Kód země"
 
@@ -25619,6 +25672,9 @@ msgstr ""
 "nebo podzemní. Odstraňte {1}, nebo přidejte značku tunelu, pokud tam je. "
 "Také zkontrolujte mosty a jejich značky {1}."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} spolu s {1} a {2}. Ostraňte {1} a {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} je zavržen"
 
@@ -27494,6 +27550,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "vysoké"
+
+msgid "medium"
+msgstr "střední"
+
+msgid "low"
+msgstr "nízké"
+
 msgid "symbol"
 msgstr "symbol"
 
@@ -29733,13 +29798,13 @@ msgid "Join Mapillary pictures"
 msgstr "Sloučit obrázky Mapillary"
 
 msgid "Submit changeset"
-msgstr ""
+msgstr "Odeslat sadu změn"
 
 msgid "Submit the current changeset"
-msgstr ""
+msgstr "Odeslat aktuální sadu změn"
 
 msgid "Submit the current changeset to Mapillary"
-msgstr ""
+msgstr "Odeslat aktuální sadu změn na Mapillary"
 
 msgid "Upload pictures"
 msgstr "Nahrát obrázky na server"
@@ -29781,16 +29846,16 @@ msgid "Edit on website"
 msgstr "Upravit na webu"
 
 msgid "Current Mapillary changeset"
-msgstr ""
+msgstr "Aktuální sada změn Mapillary"
 
 msgid "Open Mapillary changeset dialog"
-msgstr ""
+msgstr "Otevřít dialog sady změn Mapillary"
 
 msgid "Mapillary changeset"
-msgstr ""
+msgstr "Sada změn Mapillary"
 
 msgid "Submit"
-msgstr ""
+msgstr "Odeslat"
 
 msgid "Export all images"
 msgstr "Exportovat všechny obrázky"
@@ -29999,6 +30064,15 @@ msgstr[2] "Otočeno {0} obrázků"
 msgid "2 images unjoined"
 msgstr "2 obrázky rozděleny"
 
+msgid "everything in the visible area"
+msgstr "vše ve viditelné oblasti"
+
+msgid "areas with downloaded OSM-data"
+msgstr "oblasti se staženými daty OSM"
+
+msgid "only when manually requested"
+msgstr "pouze pokud je ručně požadováno"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30028,7 +30102,7 @@ msgid "Total Mapillary images: {0}"
 msgstr "Celkem obrázků z Mapillary: {0}"
 
 msgid "Submitting Mapillary Changeset"
-msgstr ""
+msgstr "Odesílání sady změn Mapillary"
 
 msgid "No images found"
 msgstr "Nebyly nalezeny žádné obrázky"
@@ -30037,10 +30111,10 @@ msgid "Finished upload"
 msgstr "Nahrávání na server dokončeno"
 
 msgid "You are not logged in, please log in to Mapillary in the preferences"
-msgstr ""
+msgstr "Nejste přihlášeni, prosím, přihlaste se k Mapillary v předvolbách"
 
 msgid "Not Logged in to Mapillary"
-msgstr ""
+msgstr "Nepřihlášeno k Mapillary"
 
 msgid "Uploading: {0}"
 msgstr "Nahrávám na server: {0}"
@@ -31462,23 +31536,11 @@ msgstr "Tisk byl zastaven"
 msgid "Printing has failed."
 msgstr "Tisk selhal."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} vybráno"
-
-msgid "Selected: {0}"
-msgstr "Zvoleno: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Doplněk Proj4J"
-
-msgid "Code"
-msgstr "Kód"
-
 msgid "Add stop position"
-msgstr ""
+msgstr "Přidat místo zastavení"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
-msgstr ""
+msgstr "Chcete stáhnout prvky odkazující na nástupiště a místa zastavení?"
 
 msgid "Remember my choice and do not ask me again in this session"
 msgstr "Pamatuj si moje volbu a při tomto sezení se již neptej"
@@ -31518,10 +31580,20 @@ msgid "PT_Assistant Proceed Request"
 msgstr "PT_Assistant Požadavek na pokračování"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr ""
+msgstr "VD: Místo zastavení není na cestě"
 
 msgid "PT: Platform should not be part of a way"
-msgstr ""
+msgstr "VD: Nástupiště by nemělo být částí cesty"
+
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr "VD: Zastávka nebo nástupiště není součástí relace stop area"
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr "VD: Zastávka a její nástupiště mají rozdílnou relaci route"
+
+msgid "PT_Assistant Message"
+msgstr "Zpráva Asistenta VD"
 
 msgid "Public Transport Assistant tests"
 msgstr "Public Transport Assistant testy"
@@ -31550,6 +31622,32 @@ msgstr "VD: Trasa by měla začínat a končit stop_position"
 msgid "PT: First or last way needs to be split"
 msgstr "VD: První nebo poslední cesta by měla být rozdělena"
 
+msgid "PT: Problem in the route segment"
+msgstr "VD: Problém v segmentu trasy"
+
+msgid "PT: Stop not served"
+msgstr "VD: Zastávka není obsluhována"
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+"Stiskněte písmeno pro volbu opravy, nebo stiskněte Escape pro opuštění bez "
+"oprav"
+
+msgid "PT: Stop area relation has no stop position"
+msgstr "VD: Relace stop area nemá žádnou zastávku"
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr "VD: Relace stop area má několik zastávek"
+
+msgid "PT: Stop area relation has no platform"
+msgstr "VD: Relace stop area nemá nástupiště"
+
+msgid "PT: Stop area relation has several platforms"
+msgstr "VD: Relace stop area má několik nástupišť"
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr "VD: Typ trasy neodpovídá typu silnice, po které vede"
 
@@ -31557,7 +31655,10 @@ msgid "PT: Road is under construction"
 msgstr "VD: Silnice je ve výstavbě"
 
 msgid "PT: Route passes a oneway road in the wrong direction"
-msgstr ""
+msgstr "VD: Trasa probíhá jednosměrkou ve špatném směru"
+
+msgid "rail"
+msgstr "kolejnice"
 
 msgid "Can''t parse a time from this string."
 msgstr "Z tohoto řetězce nemohu načíst čas"
@@ -32743,6 +32844,9 @@ msgstr "Něco se nepodařilo, zkuste znovu"
 msgid "No change to upload!"
 msgstr "Žádná změna pro nahrání na server!"
 
+msgid "The bounding box is too big."
+msgstr "Ohraničující rámeček je příliš velký."
+
 msgid "Cannot place a node outside of the world."
 msgstr "Nemohu umístit uzel mimo svět."
 
@@ -34520,10 +34624,10 @@ msgstr[1] "Přepsat ''{0}'' značky {1} z {2} na novou hodnotu ''{3}''?"
 msgstr[2] "Přepsat ''{0}'' značek {1} z {2} na novou hodnotu ''{3}''?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Prohledávání položek Wikidat"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Cílový klíč: "
 
 msgid "Add names from Wikipedia"
 msgstr "Přidat názvy z Wikipedie"
@@ -34534,6 +34638,12 @@ msgstr ""
 "Načte z Wikipedie odkazy mezi různými jazyky, aby šlo přidat různé značky "
 "názvů"
 
+msgid "Search Wikipedia category"
+msgstr "Prohledat kategorii Wikipedie"
+
+msgid "Load category"
+msgstr "Načíst kategorii"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34564,13 +34674,13 @@ msgid "Not linked yet"
 msgstr "Ještě nepropojeno"
 
 msgid "{0}: {1}"
-msgstr ""
+msgstr "{0}: {1}"
 
 msgid "Wikidata"
-msgstr ""
+msgstr "Wikidata"
 
 msgid "Fetches all coordinates from Wikidata in the current view"
-msgstr ""
+msgstr "Stáhne všechny souřadnice z Wikidat v aktuálním pohledu"
 
 msgid "Fetches all coordinates from Wikipedia in the current view"
 msgstr "Načte všechny souřadnice z Wikipedie pro aktuálně zobrazenou oblast"
@@ -34581,9 +34691,6 @@ msgstr "Kategorie"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Načte seznam všech článků z Wikipedie pro zadanou kategorii"
 
-msgid "Enter the Wikipedia category"
-msgstr "Zadejte kategorii Wikipedie"
-
 msgid "Clipboard"
 msgstr "Schránka"
 
diff --git a/i18n/po/cy.po b/i18n/po/cy.po
index 39c12c3..c63377d 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:09+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:12+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: cy\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "Ynghylch"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -510,7 +498,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1072,19 +1060,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1093,16 +1075,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1800,6 +1772,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2824,7 +2799,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2876,6 +2851,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2908,9 +2886,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5572,12 +5547,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5591,6 +5560,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5770,6 +5745,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7623,11 +7620,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9113,13 +9105,6 @@ 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 ""
 
@@ -9135,6 +9120,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12415,6 +12405,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13204,6 +13197,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13915,6 +13911,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13941,6 +13949,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13952,21 +13967,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14110,64 +14113,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14501,9 +14518,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14528,9 +14542,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14552,7 +14563,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14603,7 +14614,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14678,7 +14692,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15964,9 +15981,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16105,7 +16119,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16340,15 +16355,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16398,9 +16417,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16813,7 +16838,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16976,15 +17001,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18551,6 +18567,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19054,9 +19073,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20260,6 +20276,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20346,6 +20365,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20402,6 +20425,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22258,6 +22284,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22357,6 +22392,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22539,6 +22577,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22688,9 +22738,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22846,6 +22893,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23190,6 +23249,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23906,6 +23968,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25587,6 +25652,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27933,6 +28007,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29318,18 +29401,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29373,6 +29444,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29398,6 +29479,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29407,6 +29512,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30548,6 +30656,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32152,6 +32263,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32195,9 +32312,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/da.po b/i18n/po/da.po
index 4f80a4c..54f87af 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-11 18:45+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-03 22:02+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: 2016-07-12 04:39+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:40+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: da_DK\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
@@ -114,24 +114,6 @@ msgstr "Ignorerer misformet fil-URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter \"downloadgps\" accepterer ikke filnavne eller fil-URL’er"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM kræver Java-version {0}.</h2>Detekteret Java-version:{1}<br>Du kan "
-"<ul> <li>opdatere din Java (JRE) eller</ li> <li> bruge en tidligere (Java "
-"{2} kompatibel) version af JOSM.</ li></ ul>Flere oplysninger:"
-
-msgid "Exit JOSM"
-msgstr "Afslut JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Fortsæt, prøv alligevel"
-
-msgid "Error"
-msgstr "Fejl"
-
 msgid "About"
 msgstr "Om"
 
@@ -247,6 +229,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Tilføj billedlag {0}"
 
+msgid "Error"
+msgstr "Fejl"
+
 msgid "Select image format for WMS layer"
 msgstr "Vælg billedformat for WMS laget"
 
@@ -537,8 +522,8 @@ msgstr "Hent objekter, som refererer til et af de valgte objekter"
 msgid "Duplicate"
 msgstr "Dupliker"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dupliker markering ved kopiering og umiddelbar indsættelse"
+msgid "Duplicate selection."
+msgstr "Dupliker markering."
 
 msgid "Exit"
 msgstr "Afslut"
@@ -1153,23 +1138,14 @@ msgstr "Overpass forespørgsel: "
 msgid "Paste"
 msgstr "Indsæt"
 
-msgid "Paste contents of paste buffer."
-msgstr "Indsæt indhold af udklipsholderen."
-
-msgid "Delete incomplete members?"
-msgstr "Slet ufuldstændige medlemmer?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Indsæt uden ufuldstændige medlemmer"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"De kopierede data indeholder ufuldstændige objekter. Når du indsætter den "
-"ufuldstændige objekter er fjernet. Ønsker du at indsætte data uden den "
-"ufuldstændige objekter?"
 
 msgid "Paste Tags"
 msgstr "Indsæt tags"
@@ -1177,16 +1153,6 @@ msgstr "Indsæt tags"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Tilføj tags i udklipsholderen til alle valgte elementer."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Indsætter {0} tag"
-msgstr[1] "Indsætter {0} tags"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "til {0} objekt"
-msgstr[1] "til {0} objekter"
-
 msgid "Preferences..."
 msgstr "Indstillinger..."
 
@@ -1931,6 +1897,9 @@ msgstr "Forespørg og download rettesæt ..."
 msgid "Errors during download"
 msgstr "Fejl under download"
 
+msgid "Download Geo URL"
+msgstr "Download Geo URL"
+
 msgid "Download GPS"
 msgstr "Download GPS"
 
@@ -3039,7 +3008,7 @@ msgstr "Ændre vej {0}"
 msgid "Change relation {0}"
 msgstr "Ændre relation {0}"
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr "Rettede punkter for {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -3091,6 +3060,9 @@ msgstr[1] "objekter"
 msgid "Change relation member role for {0} {1}"
 msgstr "Ændre relationsmedlemskabsrolle for {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Slettede \"{0}\""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Mindst et objekt at slette påkrævet. Har tom markering."
 
@@ -3123,9 +3095,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Slet {0} relation"
 msgstr[1] "Slet {0} relationer"
 
-msgid "Deleted ''{0}''"
-msgstr "Slettede \"{0}\""
-
 msgid "Delete confirmation"
 msgstr "Bekræftelse af sletning"
 
@@ -5982,12 +5951,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Bekræft kombinering"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>mangler</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6009,6 +5972,12 @@ msgstr[1] ""
 "objekt måske have uønskede tags.<br/>Hvis du ønsker at fortsætte, vises en "
 "dialog til at rette de modstridende tags.<br/><br/>Ønsker du at fortsætte?"
 
+msgid "<i>missing</i>"
+msgstr "<i>mangler</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Vælg en værdi"
 
@@ -6209,6 +6178,31 @@ msgstr "Ny nøgle"
 msgid "New value"
 msgstr "Ny værdi"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Indsætter {0} tag"
+msgstr[1] "Indsætter {0} tags"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "til {0} objekt"
+msgstr[1] "til {0} objekter"
+
+msgid "Delete incomplete members?"
+msgstr "Slet ufuldstændige medlemmer?"
+
+msgid "Paste without incomplete members"
+msgstr "Indsæt uden ufuldstændige medlemmer"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"De kopierede data indeholder ufuldstændige objekter. Når du indsætter den "
+"ufuldstændige objekter er fjernet. Ønsker du at indsætte data uden den "
+"ufuldstændige objekter?"
+
 msgid "For selected objects only"
 msgstr "Kun for de valgte elementer"
 
@@ -8180,13 +8174,6 @@ msgstr "Flyt de nu markerede medlemmer op"
 msgid "Apply the updates and close the dialog"
 msgstr "Tilføj opdateringerne og luk dialogboksen"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Medlemmer fra indsætbufferen kan ikke tilføjes da de ikke er inkluderet i "
-"den aktuelle lag"
-
 msgid "Relation Editor: Refresh"
 msgstr "Relationseditor: Opdater"
 
@@ -9849,17 +9836,6 @@ 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"
 
@@ -9875,6 +9851,11 @@ msgstr "Skift projektionen igen eller fjern laget."
 msgid "Save Layer"
 msgstr "Gem lag"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} note"
+msgstr[1] "{0} noter"
+
 msgid "Notes layer"
 msgstr "Notelag"
 
@@ -13474,6 +13455,9 @@ msgstr ""
 "Kunne ikke åbne fil med type ''{2}'' og navnedel ''{3}'' i zip-fil ''{0}''. "
 "Handlingen var: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Den anmodede webadresse {0} blev ikke fundet"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Kunne ikke omdøbe filen {0} til {1}."
 
@@ -14323,6 +14307,9 @@ msgstr "Vil du tillade dette?"
 msgid "Confirm Remote Control action"
 msgstr "Bekræft Fjernstyrings-handling"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "Følgende felter er obligatoriske, men er ikke indeholdt: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15217,6 +15204,18 @@ msgstr ""
 "<strong>Download fejlede</strong> hvis du prøvede at downloade dette "
 "objekt.<br><br>Fejlmeddelelsen er: <br>{0}</html>"
 
+msgid "latitude"
+msgstr "breddegrad"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL indeholder ikke gyldig {0}"
+
+msgid "longitude"
+msgstr "længdegrad"
+
+msgid "zoom"
+msgstr "zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15250,6 +15249,17 @@ msgstr ""
 "Kunne ikke få adgang til mappen ''{0}'' af sikkerhedsmæssige årsager. "
 "Handlingen var: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [indtast dens nummer]"
 
@@ -15263,21 +15273,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Åbner URL: {0}"
 
-msgid "zoom"
-msgstr "zoom"
-
-msgid "latitude"
-msgstr "breddegrad"
-
-msgid "longitude"
-msgstr "længdegrad"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL indeholder ikke {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL indeholder ikke gyldig {0}"
-
 msgid "reserved"
 msgstr "reserveret"
 
@@ -15447,82 +15445,92 @@ msgstr "Ignorerer misdannet geometri: {0}"
 msgid "Failed to load XML schema."
 msgstr "Kunne ikke indlæse XML skemaet."
 
-msgid "Do nothing"
-msgstr "Foretag intet"
-
-msgid "Report Bug"
-msgstr "Rapporter fejl"
+msgid "You have encountered a bug in JOSM"
+msgstr "Du er stødt på en fejl i JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"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."
+"Der opstod en uventet handling.\n"
+"Dette er altid en kodefejl. Hvis du bruger den nyeste version af JOSM, "
+"overvej da at indsende en fejlrapport."
 
-msgid "Update JOSM"
-msgstr "Opdater JOSM"
+msgid "Debug information"
+msgstr "Fejlsøgnings information"
+
+msgid "Manually report at:"
+msgstr "Manuelt rapporterer på:"
+
+msgid "Is JOSM up to date?"
+msgstr "Er JOSM opdateret?"
+
+msgid "Send bug report"
+msgstr "Send fejlrapport"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"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>Opdater JOSM</b> før indsendelse af en "
-"fejlrapport."
+"Hvis du bruger den nyeste version af JOSM og udvidelser, kan du indsende en "
+"fejlrapport i vores fejlrapporteringssystem.\n"
+"Her burde fejl-informationen allerede være udfyldt for dig. Tilføj "
+"informationer om hvordan fejlen kan genskabes, og giv så mange detaljer som "
+"muligt."
+
+msgid "Report Bug"
+msgstr "Rapporter fejl"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Undertryk yderligere fejldialoger for denne session."
 
-msgid "Unexpected Exception"
-msgstr "Uventet handling"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Du er stødt på en fejl i JOSM"
+msgid "Ignore this error."
+msgstr "Ignorer denne fejl."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Du har oplevet en fejl i JOSM. Inden du indberetter en fejlrapport, skal du "
-"være sikker på, at du har opdateret til den seneste version af JOSM her:"
+"Åbning af fejlrapport mislykkedes. Rapporter manuelt ved hjælp af denne "
+"hjemmeside:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Du bør også opdatere dine udvidelser. Hvis intet af dette hjælper, så opret "
-"en fejlrapport i vores fejlrapporteringssystem ved hjælp af dette link:"
+msgid "Include the system status report."
+msgstr "Medtag system statusrapporten."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"Her burde fejl-informationen nedenunder allerede være udfyldt for dig. "
-"Tilføj informationer om hvordan, fejlen kan reproduceres, og giv så mange "
-"detaljer som muligt."
+msgid "Include information about the data you were working on."
+msgstr "Medtag oplysninger om de data du arbejdede med."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr ""
-"Alternativt, hvis det ikke virker for dig, kan du manuelt udfylde "
-"informationerne nedenunder på denne URL:"
+msgid "Include all stack traces."
+msgstr "Medtag alle stak-oplysninger."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Teksten er allerede kopieret til din udklipsholder.)"
+msgid "Your current version of JOSM is {0}"
+msgstr "Din nuværende version af JOSM er {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM søger efter opdateringer..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Der opstod en fejl under tjek af om din JOSM instans er opdateret."
+
+msgid "JOSM is up to date."
+msgstr "JOSM er opdateret."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
+"JOSM er forældet. Den aktuelle version er {0}. Prøv at opdatere JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Åbning af fejlrapport mislykkedes. Rapporter venligst manuelt ved hjælp af "
-"denne hjemmeside:"
+"Før du indsender en fejlrapport sørg du har opdateret til den nyeste version "
+"af JOSM her:"
+
+msgid "Update JOSM"
+msgstr "Opdater JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -15868,9 +15876,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -15895,9 +15900,6 @@ msgstr "OpenStreetMap (German Style)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Traces"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Public Transport (ÖPNV)"
 
@@ -15919,8 +15921,8 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
-msgstr "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
+msgstr "Strava cycling and running heatmap"
 
 msgid "Locator Overlay"
 msgstr "Locator Overlay"
@@ -15970,8 +15972,11 @@ msgstr "OSM Inspector: Addresses"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Boundaries (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Argentina (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Argentina (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI black-and-white 2.5m"
@@ -16045,8 +16050,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV aerial imagery 10cm 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -17427,9 +17435,6 @@ msgstr "Læs og skriv osmosis poly filter filer"
 msgid "Adds map printing to JOSM"
 msgstr "Tilføje kortudskrivning til JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "tilføjer projektioner fra Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17606,8 +17611,10 @@ msgstr "Nem download langs et langt sæt af indbyrdes forbundne veje"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Muliggør søgning efter waypoint importeret fra gpx-fil."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Forenkler forbindelse af OSM objekter til Wikipedia-artikler"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Forenkler at knytte OSM objekter til Wikipedia artikler og Wikidata emner"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17783,7 +17790,7 @@ msgid "Embankment"
 msgstr "Vold"
 
 msgid "Incline"
-msgstr "Stigning"
+msgstr "Hældning"
 
 msgid "10%"
 msgstr "10%"
@@ -17843,15 +17850,19 @@ msgstr "krydsningsspor"
 msgid "Electrified"
 msgstr "Elektificeret"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr "køreledning"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "nej"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "ja"
 
+msgctxt "electrified"
 msgid "rail"
 msgstr "strømskinne"
 
@@ -17901,9 +17912,15 @@ msgstr "Åbningstider"
 msgid "Wheelchairs"
 msgstr "Kørestole"
 
+msgid "yes"
+msgstr "ja"
+
 msgid "limited"
 msgstr "begrænset"
 
+msgid "no"
+msgstr "nej"
+
 msgid "Brand"
 msgstr "Mærke"
 
@@ -18316,7 +18333,7 @@ msgstr "skovbrug"
 msgid "Population"
 msgstr "Befolkning"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Postnummer"
 
 msgid "Website"
@@ -18483,15 +18500,6 @@ msgstr "shiitisk"
 msgid "sunni"
 msgstr "sunnitisk"
 
-msgid "high"
-msgstr "høj"
-
-msgid "medium"
-msgstr "mellem"
-
-msgid "low"
-msgstr "lav"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20079,6 +20087,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Sporvogn"
 
+msgid "Funicular"
+msgstr "Kabelbane"
+
 msgid "Bus Guideway"
 msgstr "Styreskinne til bus"
 
@@ -20584,9 +20595,6 @@ msgstr "Trolleybus"
 msgid "Share taxi"
 msgstr "Deletaxi"
 
-msgid "Funicular"
-msgstr "Kabelbane"
-
 msgid "Ferry"
 msgstr "Færge"
 
@@ -20991,7 +20999,7 @@ msgid "Used for the water area only."
 msgstr "Anvendes kun til vandområdet."
 
 msgid "Fitness Station"
-msgstr "Fitness-station"
+msgstr "Motionsstation"
 
 msgid "Sauna"
 msgstr "Sauna"
@@ -21792,6 +21800,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Idrætscenter"
 
+msgid "Fitness Centre"
+msgstr "Motionscenter"
+
 msgid "Pitch"
 msgstr "Bane"
 
@@ -21878,6 +21889,10 @@ msgid "sports_centre"
 msgstr "sportshal"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "motionscenter"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadion"
 
@@ -21934,6 +21949,9 @@ msgstr "Hestevæddeløb"
 msgid "Gymnastics"
 msgstr "Gymnastik"
 
+msgid "fitness_centre"
+msgstr "motionscenter"
+
 msgid "Ice Skating"
 msgstr "Skøjteløb på is"
 
@@ -23792,6 +23810,15 @@ msgstr "Tobak"
 msgid "Hairdresser/Barber"
 msgstr "Frisør/Barber"
 
+msgid "Female"
+msgstr "Kvinde"
+
+msgid "Male"
+msgstr "Mand"
+
+msgid "Unisex"
+msgstr "Begge køn"
+
 msgid "Tattoo"
 msgstr "Tatovør"
 
@@ -23891,6 +23918,9 @@ msgstr "høm-høm-pose"
 msgid "food"
 msgstr "mad"
 
+msgid "milk"
+msgstr "mælk"
+
 msgid "newspapers"
 msgstr "aviser"
 
@@ -24073,6 +24103,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Regering"
 
+msgid "ministry"
+msgstr "ministerium"
+
+msgid "prosecutor"
+msgstr "anklager"
+
+msgid "tax"
+msgstr "skat"
+
+msgid "register_office"
+msgstr "registreringskontor"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Forsikring"
@@ -24222,9 +24264,6 @@ msgstr "sprogfællesskab"
 msgid "ward"
 msgstr "menighed"
 
-msgid "Postal Code"
-msgstr "Postnummer"
-
 msgid "National Park"
 msgstr "National Park"
 
@@ -24383,6 +24422,18 @@ msgstr "Ø"
 msgid "Islet"
 msgstr "Holm"
 
+msgid "Reef"
+msgstr "Rev"
+
+msgid "coral"
+msgstr "koral"
+
+msgid "oyster"
+msgstr "østers"
+
+msgid "rock"
+msgstr "klippe"
+
 msgid "Nature"
 msgstr "Natur"
 
@@ -24741,6 +24792,9 @@ msgstr "Stednavn"
 msgid "City name"
 msgstr "Bynavn"
 
+msgid "Post code"
+msgstr "Postnummer"
+
 msgid "Country code"
 msgstr "Landekode"
 
@@ -25467,6 +25521,9 @@ msgstr ""
 "under jorden. Fjern {1} eller tilføj et tunnel tag hvis relevant. Tjek også "
 "krydsende broer og deres {1} tags."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} sammen med {1} og {2}. Fjern {1} og {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} er forældet"
 
@@ -27332,6 +27389,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "høj"
+
+msgid "medium"
+msgstr "mellem"
+
+msgid "low"
+msgstr "lav"
+
 msgid "symbol"
 msgstr "symbol"
 
@@ -27394,7 +27460,7 @@ msgid ""
 "Invert the original black and white colors (and all intermediate greys). "
 "Useful for texts on dark backgrounds."
 msgstr ""
-"Inverter de originale sorte og hvide farver (og alle mellemliggende grå). "
+"Omvend de originale sorte og hvide farver (og alle mellemliggende grå). "
 "Nyttigt for tekster på sorte baggrunde."
 
 msgid "Allows multiple layers stacking"
@@ -28531,7 +28597,7 @@ msgid "Max. incline up (%, pos.)"
 msgstr "Maks. hældning op (%, pos.)"
 
 msgid "Maximum incline the vehicle can go up"
-msgstr "Maksimal stigning køretøjet kan køre op ad"
+msgstr "Maksimal hældning køretøjet kan køre op ad"
 
 msgid "Max. incline down (%, pos.)"
 msgstr "Maks. hældning ned (%, pos.)"
@@ -28699,7 +28765,7 @@ msgstr ""
 
 msgid ""
 "Inclines must be given as positive decimal numbers with followed by \"%\"."
-msgstr "Stigninger skal angives som positive decimaltal efterfulgt af \"%\"."
+msgstr "Hældninger skal angives som positive decimaltal efterfulgt af \"%\"."
 
 msgid "Tracktype grades must be given as integers between 0 and 5."
 msgstr "Kvaliteten af sportype skal gives som heltal mellem 0 og 5."
@@ -29810,6 +29876,15 @@ msgstr[1] "Drejede {0} billeder"
 msgid "2 images unjoined"
 msgstr "2 billeder adskilt"
 
+msgid "everything in the visible area"
+msgstr "alt i det synlige område"
+
+msgid "areas with downloaded OSM-data"
+msgstr "områder med downloadet OSM-data"
+
+msgid "only when manually requested"
+msgstr "kun ved manuel anmodet"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31266,18 +31341,6 @@ msgstr "Udskrivning stoppede"
 msgid "Printing has failed."
 msgstr "Udskrivning mislykkedes."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} valgt"
-
-msgid "Selected: {0}"
-msgstr "Valgte: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J udvidelse"
-
-msgid "Code"
-msgstr "Kode"
-
 msgid "Add stop position"
 msgstr "Tilføj stopposition"
 
@@ -31324,6 +31387,16 @@ msgstr "OT: Stop_position er ikke en del af en vej"
 msgid "PT: Platform should not be part of a way"
 msgstr "OT: Platform bør ikke være en del af en vej"
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr "OT_Assistent besked"
+
 msgid "Public Transport Assistant tests"
 msgstr "Offentlig transport assistent tests"
 
@@ -31350,6 +31423,30 @@ msgstr "OT: Rute skal starte og slutte med en stop_position"
 msgid "PT: First or last way needs to be split"
 msgstr "OT: første eller sidste vej skal deles"
 
+msgid "PT: Problem in the route segment"
+msgstr "OT: Problem i rutesegmentet"
+
+msgid "PT: Stop not served"
+msgstr "OT: Stop ikke serviceret"
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr "OT: Rute type passer ikke til den type af vej den passerer på"
 
@@ -31359,6 +31456,9 @@ msgstr "OT: Vej er under udførelse"
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr "OT: Rute passerer en ensrettet vej i den forkerte retning"
 
+msgid "rail"
+msgstr "strømskinne"
+
 msgid "Can''t parse a time from this string."
 msgstr "Kan ikke udlede en tid fra denne streng."
 
@@ -32545,6 +32645,9 @@ msgstr "Noget gik galt, prøv igen"
 msgid "No change to upload!"
 msgstr "Ingen ændring at uploade!"
 
+msgid "The bounding box is too big."
+msgstr "Afgrænsningsområdet er for stort."
+
 msgid "Cannot place a node outside of the world."
 msgstr "Kan ikke placere et punkt uden for verdenen."
 
@@ -34317,6 +34420,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "Henter interwiki links fra Wikipedia for at tilføje flere navne tags"
 
+msgid "Search Wikipedia category"
+msgstr "Søg Wikipedia kategori"
+
+msgid "Load category"
+msgstr "Indlæs kategori"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34364,9 +34473,6 @@ msgstr "Kategori"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Henter en liste over alle Wikipedia artikler fra en kategori"
 
-msgid "Enter the Wikipedia category"
-msgstr "Indtast Wikipedia kategorien"
-
 msgid "Clipboard"
 msgstr "Udklipsholder"
 
diff --git a/i18n/po/de.po b/i18n/po/de.po
index e89042c..28e522a 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-10 11:45+0000\n"
-"Last-Translator: Ettore Atalan <atalanttore at googlemail.com>\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-09 19:07+0000\n"
+"Last-Translator: holger (lp) <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: 2016-07-12 04:43+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:44+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: de\n"
 "X-Poedit-SearchPath-0: .\n"
 "X-Poedit-Basepath: /home/simon/src/josm.all/i18n\n"
@@ -40,7 +40,7 @@ msgid "{0}: unrecognized option ''{1}{2}''"
 msgstr "{0}: nicht erkannte Option »{1}{2}«"
 
 msgid "{0}: illegal option -- {1}"
-msgstr "{0}: unerlaubte Option -- {1}"
+msgstr "{0}: ungültige Option -- {1}"
 
 msgid "{0}: invalid option -- {1}"
 msgstr "{0}: ungültige Option -- {1}"
@@ -116,25 +116,6 @@ msgstr "Ungültige Dateiadresse wird ignoriert: »{0}«"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter »downloadgps« unterstützt keine Dateinamen oder Adressen."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM benötigt die Java-Version {0}.</h2>Erkannte Java-Version: "
-"{1}.<br>Sie können <ul><li>ihr Java (JRE) aktualisieren oder</li><li>eine "
-"frühere (zu Java {2} kompatible) Version von JOSM "
-"verwenden.</li></ul>Weitere Informationen:"
-
-msgid "Exit JOSM"
-msgstr "JOSM verlassen"
-
-msgid "Continue, try anyway"
-msgstr "Fortfahren, trotzdem versuchen"
-
-msgid "Error"
-msgstr "Fehler"
-
 msgid "About"
 msgstr "Über"
 
@@ -253,6 +234,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Hintergrundbildebene {0} hinzufügen"
 
+msgid "Error"
+msgstr "Fehler"
+
 msgid "Select image format for WMS layer"
 msgstr "Bildformat der WMS-Ebene wählen"
 
@@ -545,8 +529,8 @@ msgstr "Objekte mit Bezug auf eins der ausgewählten Objekte herunterladen"
 msgid "Duplicate"
 msgstr "Verdoppeln"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Auswahl durch Kopieren und sofortiges Einfügen verdoppeln."
+msgid "Duplicate selection."
+msgstr "Auswahl duplizieren."
 
 msgid "Exit"
 msgstr "Beenden"
@@ -1190,23 +1174,15 @@ msgstr "Overpass-Abfrage: "
 msgid "Paste"
 msgstr "Einfügen"
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr "Inhalt der Zwischenablage einfügen."
 
-msgid "Delete incomplete members?"
-msgstr "Unvollständige Elemente entfernen?"
-
-msgid "Paste without incomplete members"
-msgstr "Beim Einfügen die unvollständigen Elemente weglassen"
+msgid "Paste at source position"
+msgstr "Bei Quellposition einfügen"
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Die kopierten Daten enthalten unvollständige Objekte. Beim Einfügen werden "
-"die unvollständigen Objekte entfernt. Wollen Sie die Daten ausschließlich "
-"der unvollständigen Objekte einfügen?"
+"Inhalt der Zwischenablage an der Position einfügen, woher er kopiert wurde."
 
 msgid "Paste Tags"
 msgstr "Merkmale einfügen"
@@ -1215,16 +1191,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "Merkmale aus der Zwischenablage allen ausgewählten Elementen zuweisen."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "{0} Merkmal einfügen"
-msgstr[1] "{0} Merkmale einfügen"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "zu {0} Objekt"
-msgstr[1] "zu {0} Objekten"
-
 msgid "Preferences..."
 msgstr "Einstellungen …"
 
@@ -1992,6 +1958,9 @@ msgstr "Änderungssätze abfragen und herunterladen …"
 msgid "Errors during download"
 msgstr "Fehler beim Herunterladen"
 
+msgid "Download Geo URL"
+msgstr "Geo URI herunterladen"
+
 msgid "Download GPS"
 msgstr "GPS herunterladen"
 
@@ -3058,7 +3027,7 @@ msgid "Uploading modified notes"
 msgstr "Geänderte Hinweise werden hochgeladen"
 
 msgid "Note {0} failed: {1}"
-msgstr "OSM-Hinweis {0} fehlgeschlagen: {1}"
+msgstr "Hinweis {0} fehlgeschlagen: {1}"
 
 msgid "Notes failed to upload"
 msgstr "Hinweise konnten nicht hochgeladen werden"
@@ -3124,8 +3093,8 @@ msgstr "Linie {0} verändern"
 msgid "Change relation {0}"
 msgstr "Relation {0} verändern"
 
-msgid "Changed nodes of {0}"
-msgstr "Punkt von {0} geändert"
+msgid "Change nodes of {0}"
+msgstr "Knotenpunkte von {0} ändern"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "\"{0}\" vom Punkt \"{1}\" entfernen"
@@ -3176,6 +3145,9 @@ msgstr[1] "Objekte"
 msgid "Change relation member role for {0} {1}"
 msgstr "Ändere Rolle des Relationselements {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}'' gelöscht"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Mindestens ein Objekt zum Löschen wurde erwartet, es wurde jedoch eine leere "
@@ -3210,9 +3182,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "{0} Relation löschen"
 msgstr[1] "{0} Relationen löschen"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}'' gelöscht"
-
 msgid "Delete confirmation"
 msgstr "Löschbestätigung"
 
@@ -6128,12 +6097,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Verbindungsbestätigung"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>fehlend</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6159,6 +6122,12 @@ msgstr[1] ""
 "Beheben der widersprüchlichen Merkmale angezeigt.<br/><br/>Möchten Sie "
 "fortfahren?"
 
+msgid "<i>missing</i>"
+msgstr "<i>fehlend</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Wert wählen"
 
@@ -6362,6 +6331,31 @@ msgstr "Neuer Schlüssel"
 msgid "New value"
 msgstr "Neuer Wert"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "{0} Merkmal einfügen"
+msgstr[1] "{0} Merkmale einfügen"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "zu {0} Objekt"
+msgstr[1] "zu {0} Objekten"
+
+msgid "Delete incomplete members?"
+msgstr "Unvollständige Elemente entfernen?"
+
+msgid "Paste without incomplete members"
+msgstr "Beim Einfügen die unvollständigen Elemente weglassen"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Die kopierten Daten enthalten unvollständige Objekte. Beim Einfügen werden "
+"die unvollständigen Objekte entfernt. Wollen Sie die Daten ausschließlich "
+"der unvollständigen Objekte einfügen?"
+
 msgid "For selected objects only"
 msgstr "Nur für ausgewählte Objekte"
 
@@ -7813,7 +7807,7 @@ msgid "Adjust opacity of the layer."
 msgstr "Deckkraft der Ebene anpassen."
 
 msgid "Opacity"
-msgstr "Transparenz"
+msgstr "Deckkraft"
 
 msgid "Adjust gamma value of the layer."
 msgstr "Gammawert der Ebene anpassen."
@@ -8387,13 +8381,6 @@ msgstr "Ausgewählte Elemente nach oben schieben"
 msgid "Apply the updates and close the dialog"
 msgstr "Aktualisierungen anwenden und den Dialog schließen"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Elemente aus der Zwischenablage können nicht gefügt werden, da sie nicht "
-"Teil des aktuellen Layers sind."
-
 msgid "Relation Editor: Refresh"
 msgstr "Relationseditor: Aktualisieren"
 
@@ -10130,17 +10117,6 @@ 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"
 
@@ -10156,6 +10132,11 @@ msgstr "Ändern Sie die Projektion erneut oder entfernen Sie die Ebene."
 msgid "Save Layer"
 msgstr "Ebene speichern"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} Hinweis"
+msgstr[1] "{0} Hinweise"
+
 msgid "Notes layer"
 msgstr "Hinweisebene"
 
@@ -13869,6 +13850,9 @@ msgstr ""
 "Fehler beim Öffnen der Datei mit Endung ''{2}'' und Namensteil ''{3}'' in "
 "Zip-Datei ''{0}''. Die Fehlermeldung lautet: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Die angeforderte URL {0} wurde nicht gefunden"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Datei umbenennen von {0} in {1} fehlgeschlagen."
 
@@ -14775,6 +14759,11 @@ msgstr "Soll dies erlaubt werden?"
 msgid "Confirm Remote Control action"
 msgstr "Fernsteuerungsaktion bestätigen"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+"Die folgenden Schlüssel sind obligatorisch, wurden aber noch nicht "
+"bereitgestellt: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15700,6 +15689,18 @@ msgstr ""
 "fehlgeschlagen</strong>, falls versucht wurde, das Objekt "
 "herunterzuladen.<br><br>Die Fehlermeldung lautet:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "Breitengrad"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL enthält keinen gültigen {0}"
+
+msgid "longitude"
+msgstr "Längengrad"
+
+msgid "zoom"
+msgstr "Zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15735,6 +15736,17 @@ msgstr ""
 "Der Zugriff auf das Verzeichnis ''{0}'' wurde aus Sicherheitsgründen "
 "verweigert. Fehlermeldung: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0} … [Bitte Nummer eingeben]"
 
@@ -15748,21 +15760,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Öffne URL: {0}"
 
-msgid "zoom"
-msgstr "Zoom"
-
-msgid "latitude"
-msgstr "Breitengrad"
-
-msgid "longitude"
-msgstr "Längengrad"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL enthält nicht {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL enthält keinen gültigen {0}"
-
 msgid "reserved"
 msgstr "reserviert"
 
@@ -15937,86 +15937,95 @@ msgstr "Ungültige Geometrie wird ignoriert: {0}"
 msgid "Failed to load XML schema."
 msgstr "Laden des XML-Schemas fehlgeschlagen."
 
-msgid "Do nothing"
-msgstr "Keine Aktion"
-
-msgid "Report Bug"
-msgstr "Programmfehler melden"
+msgid "You have encountered a bug in JOSM"
+msgstr "Sie sind auf einen Fehler in JOSM gestoßen."
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Ein unerwarteter Fehler trat auf.<br>Dies ist immer ein Programmierfehler. "
-"Falls Sie die<br>aktuelle Version von JOSM einsetzen, würden wir<br>uns über "
-"einen Fehlerbericht freuen."
+"Eine unerwartete Ausnahme ist aufgetreten.\n"
+"Dies ist immer ein Programmierfehler. Wenn Sie die neueste Version von JOSM "
+"ausführen, seien Sie bitte freundlich und füllen einen Fehlerbericht aus."
 
-msgid "Update JOSM"
-msgstr "JOSM aktualisieren"
+msgid "Debug information"
+msgstr "Fehlersuchinformationen"
+
+msgid "Manually report at:"
+msgstr "Manuell melden bei:"
+
+msgid "Is JOSM up to date?"
+msgstr "Ist JOSM auf dem neuesten Stand?"
+
+msgid "Send bug report"
+msgstr "Fehlerbericht senden"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Ein unerwarteter Ausnahmefehler ist aufgetreten. Dies ist immer ein "
-"Programmierfehler. <br><br>Sie verwenden eine ältere Version von JOSM "
-"({0})<br> anstatt die aktuell geteste Version (<b>{1}</b>) zu verwenden: "
-"<br><br><b>Bitte aktualisieren Sie JOSM</b>, bevor Sie einen Fehlerbericht "
-"einreichen."
+"Wenn Sie die neueste Version von JOSM und der Erweiterungen verwenden, "
+"füllen Sie bitte einen Fehlerbericht im Bugtracker aus.\n"
+"Die Fehlerinformationen sollten bereits vorausgefüllt sein. Bitte "
+"beschreiben detailliert Sie, wie der Fehler nachvollzogen werden kann."
+
+msgid "Report Bug"
+msgstr "Programmfehler melden"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Weitere Fehlermeldungen für diese Sitzung unterdrücken."
 
-msgid "Unexpected Exception"
-msgstr "Unerwarteter Fehler"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Sie sind auf einen Fehler in JOSM gestoßen."
+msgid "Ignore this error."
+msgstr "Diesen Fehler ignorieren."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Sie haben einen Fehler in JOSM entdeckt. Bitte stellen Sie sicher, dass Sie "
-"mit der aktuellsten Version von JOSM arbeiten, bevor Sie einen Fehlerbericht "
-"einreichen:"
+"Automatisches Erstellen der Fehlermeldung fehlgeschlagen. Bitte melde den "
+"Fehler manuell mithilfe dieser Seite:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Sie sollten auch Ihre Erweiterungen aktualisieren. Falls auch das nicht "
-"hilft, reichen Sie bitte einen Fehlerbericht mit dem Formular unter der "
-"folgenden Adresse ein:"
+msgid "Include the system status report."
+msgstr "Systemstatusbericht miteinbeziehen."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Informationen über den entdeckten Fehler sollten bereits im Formular "
-"eingetragen sein. Bitte ergänzen Sie es mit Informationen, wie der Fehler "
-"reproduziert werden kann. Beschreiben Sie so detailliert wie möglich."
+"Informationen über die Daten, an denen Sie gearbeitet haben, miteinbeziehen."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr "Stapelspeicherzurückverfolgungen miteinbeziehen."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ihre aktuelle Version von JOSM ist {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM sucht nach Aktualisierungen..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
-"Falls dies nicht funktionieren sollte, können Sie alternativ dazu den "
-"Fehlerbericht im Formular unter der folgenden Adresse eintragen:"
+"Während der Überprüfung, ob Ihre JOSM-Instanz auf dem neuesten Stand ist, "
+"ist ein Fehler aufgetreten."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Der Text wurde bereits in Ihre Zwischenablage kopiert.)"
+msgid "JOSM is up to date."
+msgstr "JOSM ist auf dem neuesten Stand."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
+"JOSM ist nicht mehr aktuell. Die aktuelle Version ist {0}. Versuchen Sie, "
+"JOSM zu aktualisieren."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Automatisches Erstellen der Fehlermeldung fehlgeschlagen. Bitte melde den "
-"Fehler manuell mithilfe dieser Seite:"
+"Bevor Sie einen Fehlerbericht senden, stellen Sie sicher, dass Sie die "
+"neueste Version von JOSM verwenden:"
+
+msgid "Update JOSM"
+msgstr "JOSM aktualisieren"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16366,9 +16375,6 @@ msgstr "HDM (Humanitäres OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellitenbild"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16393,9 +16399,6 @@ msgstr "OpenStreetMap (Deutscher Stil)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS-Spuren"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Öffentlicher Personennahverkehr (ÖPNV)"
 
@@ -16412,13 +16415,13 @@ msgid "OpenPT Map (overlay)"
 msgstr "OpenPT-Karte (Einblendung)"
 
 msgid "Strava cycling heatmap"
-msgstr "Strava cycling heatmap"
+msgstr "Strava Radfahr-Heatmap"
 
 msgid "Strava running heatmap"
-msgstr "Strava running heatmap"
+msgstr "Strava Laufsport-Heatmap"
 
-msgid "Strava both heatmap"
-msgstr ""
+msgid "Strava cycling and running heatmap"
+msgstr "Strava Radfahr- und Laufsport-Heatmap"
 
 msgid "Locator Overlay"
 msgstr "Orientierungs-Overlay"
@@ -16468,8 +16471,11 @@ msgstr "OSM-Inspektor: Adressen"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM-Inspektor: Grenzen (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Nationales Geographisches Institut (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN (Nationales Institut für Geografie) Argentinien (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Argentinien (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI Schwarzweiß 2.5m"
@@ -16543,8 +16549,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV (Flandern) Luftbilder (deckt auch die Brüsseler Region mit ab)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Vlaanderen / Flandern) aktuellstes Luftbild (Winter)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV Luftbilder 10 cm 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr Zahlenbilder (2013)"
@@ -17934,9 +17943,6 @@ msgstr "Lesen und Schreiben von Osmosis Polygonfilterdateien"
 msgid "Adds map printing to JOSM"
 msgstr "Ergänzt JOSM um eine Kartendruckenfunktion"
 
-msgid "adds projections from Proj4J"
-msgstr "Ergänzt Projektionen von Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -18121,8 +18127,11 @@ msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 "Erlaubt die Suche nach einem aus einer GPX-Datei importierten Waypoint."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Vereinfacht das Verknüpfen von OSM-Objekten mit Wikipedia-Artikeln"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Vereinfacht das Verlinken von OSM-Objekten zu Wikipedia-Artikeln und "
+"Wikidata-Einträgen"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18358,17 +18367,21 @@ msgstr "Überleitgleis"
 msgid "Electrified"
 msgstr "Elektrifiziert"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "Fahrleitung"
+msgstr "Oberleitung"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "nein"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "ja"
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "Eisenbahn"
+msgstr "Stromschienensystem"
 
 msgid "Voltage in Volts (V)"
 msgstr "Spannung in Volt (V)"
@@ -18416,9 +18429,15 @@ msgstr "Öffnungszeiten"
 msgid "Wheelchairs"
 msgstr "Rollstuhl"
 
+msgid "yes"
+msgstr "ja"
+
 msgid "limited"
 msgstr "limitiert"
 
+msgid "no"
+msgstr "nein"
+
 msgid "Brand"
 msgstr "Marke"
 
@@ -18564,7 +18583,7 @@ msgid "pitch"
 msgstr "Spielfeld"
 
 msgid "sports_centre"
-msgstr "Sporthalle / Fitnesscenter"
+msgstr "Sporthalle"
 
 msgid "stadium"
 msgstr "Stadion"
@@ -18831,7 +18850,7 @@ msgstr "Forstwirtschaftlicher Verkehr gestattet"
 msgid "Population"
 msgstr "Einwohnerzahl"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Postleitzahl"
 
 msgid "Website"
@@ -18998,15 +19017,6 @@ msgstr "schiitisch"
 msgid "sunni"
 msgstr "sunnitisch"
 
-msgid "high"
-msgstr "hoch"
-
-msgid "medium"
-msgstr "mittel"
-
-msgid "low"
-msgstr "niedrig"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20602,6 +20612,9 @@ msgstr "U-Bahn"
 msgid "Tram"
 msgstr "Straßenbahn"
 
+msgid "Funicular"
+msgstr "Standseilbahn"
+
 msgid "Bus Guideway"
 msgstr "Spurbus"
 
@@ -21108,9 +21121,6 @@ msgstr "Trolleybus"
 msgid "Share taxi"
 msgstr "Sammeltaxi"
 
-msgid "Funicular"
-msgstr "Standseilbahn"
-
 msgid "Ferry"
 msgstr "Fähre"
 
@@ -22313,7 +22323,10 @@ msgid "Stadium"
 msgstr "Stadion"
 
 msgid "Sports Centre"
-msgstr "Sporthalle / Fitnesscenter"
+msgstr "Sporthalle"
+
+msgid "Fitness Centre"
+msgstr "Fitnessstudio"
 
 msgid "Pitch"
 msgstr "Spielfeld"
@@ -22401,6 +22414,10 @@ msgid "sports_centre"
 msgstr "Sportzentrum"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "Fitnessstudio"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "Stadion"
 
@@ -22457,6 +22474,9 @@ msgstr "Pferderennen"
 msgid "Gymnastics"
 msgstr "Gymnastik"
 
+msgid "fitness_centre"
+msgstr "Fitnessstudio"
+
 msgid "Ice Skating"
 msgstr "Eislaufen"
 
@@ -24315,6 +24335,15 @@ msgstr "Tabak"
 msgid "Hairdresser/Barber"
 msgstr "Friseur"
 
+msgid "Female"
+msgstr "Damen"
+
+msgid "Male"
+msgstr "Herren"
+
+msgid "Unisex"
+msgstr "Unisex"
+
 msgid "Tattoo"
 msgstr "Tätowierstudio"
 
@@ -24414,6 +24443,9 @@ msgstr "Hundekot-Tüten"
 msgid "food"
 msgstr "Essen"
 
+msgid "milk"
+msgstr "Milch"
+
 msgid "newspapers"
 msgstr "Zeitungen"
 
@@ -24596,6 +24628,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Regierung"
 
+msgid "ministry"
+msgstr "Ministerium"
+
+msgid "prosecutor"
+msgstr "Staatsanwaltschaft"
+
+msgid "tax"
+msgstr "Finanzamt"
+
+msgid "register_office"
+msgstr "Standesamt, Einwohnermeldeamt"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Versicherung"
@@ -24745,9 +24789,6 @@ msgstr "Sprachgemeinschaft"
 msgid "ward"
 msgstr "Stadtteil"
 
-msgid "Postal Code"
-msgstr "Postleitzahl"
-
 msgid "National Park"
 msgstr "Nationalpark"
 
@@ -24907,6 +24948,18 @@ msgstr "Insel"
 msgid "Islet"
 msgstr "Kleine Insel"
 
+msgid "Reef"
+msgstr "Riff"
+
+msgid "coral"
+msgstr "Korallen"
+
+msgid "oyster"
+msgstr "Austern"
+
+msgid "rock"
+msgstr "Felsen"
+
 msgid "Nature"
 msgstr "Natur"
 
@@ -25268,6 +25321,9 @@ msgstr "Ortsname (statt Straße)"
 msgid "City name"
 msgstr "Ort"
 
+msgid "Post code"
+msgstr "Postleitzahl"
+
 msgid "Country code"
 msgstr "Ländercode"
 
@@ -25951,7 +26007,7 @@ msgid "natural water used for swimming pool"
 msgstr "Merkmal natural=water für Schwimmingpool genutzt"
 
 msgid "sport without physical feature"
-msgstr "Sport ohne physische Merkmale"
+msgstr "Sport ohne physisches Merkmal"
 
 msgid "{0} should be on the node where {1} and {2} intersect"
 msgstr "{0} sollte auf einem Punkt liegen, wo sich {1} und {2} schneiden"
@@ -25997,6 +26053,9 @@ msgstr ""
 "einen Tunnel hinzu. Überprüfen Sie auch überquerende Brücken und deren {1} "
 "Merkmale."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} zusammen mit {1} und {2}. Entfernen Sie {1} und {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} ist veraltet"
 
@@ -26015,8 +26074,8 @@ msgid ""
 "{0}={1} is unspecific. Instead of ''{1}'' please give more information about "
 "what exactly should be fixed."
 msgstr ""
-"{0}={1} ist  unspezifisch. Anstatt von ''{1}'' geben Sie bitte konkret an, "
-"was behoben werden soll."
+"{0}={1} ist unbestimmt. Anstatt von ''{1}'' geben Sie bitte konkret an, was "
+"behoben werden soll."
 
 msgid ""
 "Wrong usage of {0} tag. Remove {1}, because it is clear that the name is "
@@ -26029,7 +26088,7 @@ msgid ""
 "{0} is unspecific. Instead use the key fixme with the information what "
 "exactly should be fixed in the value of fixme."
 msgstr ""
-"{0} ist unspezifisch. Nutze stattdessen den Schlüssel fixme mit der "
+"{0} ist unbestimmt. Verwenden Sie stattdessen den Schlüssel fixme mit der "
 "Information, was genau verbessert werden soll, im Wert von fixme."
 
 msgid "{0} is deprecated. Please use instead a multipolygon."
@@ -26061,11 +26120,11 @@ msgid ""
 "{0}={1} is unspecific. Please replace ''{1}'' by ''left'', ''right'' or "
 "''both''."
 msgstr ""
-"{0}={1} ist unspezifisch. Bitte ersetze ''{1}'' durch ''left'', ''right'' "
+"{0}={1} ist unbestimmt. Bitte ersetzen Sie ''{1}'' durch ''left'', ''right'' "
 "oder ''both''."
 
 msgid "Unspecific tag {0}"
-msgstr "Unspezifisches Merkmal {0}"
+msgstr "Unbestimmtes Merkmal {0}"
 
 msgid "Definition of {0} is unclear"
 msgstr "Definition von {0} ist unklar"
@@ -26114,7 +26173,7 @@ msgid "{0} on a way. Should be used in a relation"
 msgstr "{0} auf einer Linie. Sollte in einer Relation verwendet werden"
 
 msgid "{0} together with {1} on a node. Remove {0}."
-msgstr "{0} zusammen mit {1} auf einem Punkt. Entferne {0}."
+msgstr "{0} zusammen mit {1} auf einem Punkt. Entfernen Sie {0}."
 
 msgid "{0} on a node"
 msgstr "{0} auf einem Punkt"
@@ -27896,6 +27955,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "hoch"
+
+msgid "medium"
+msgstr "mittel"
+
+msgid "low"
+msgstr "niedrig"
+
 msgid "symbol"
 msgstr "Symbol"
 
@@ -30142,7 +30210,7 @@ msgid "Import pictures into sequence"
 msgstr "Bilder als Sequenz importieren"
 
 msgid "Import pictures into Mapillary layer in a sequence"
-msgstr "Bilder in die Mapillary-Ebene einer Sequenz importieren"
+msgstr "Bilder als eine Sequenz in die Mapillary-Ebene importieren"
 
 msgid "Join mode"
 msgstr "Verbindungsmodus"
@@ -30419,6 +30487,15 @@ msgstr[1] "{0} Bilder gedreht"
 msgid "2 images unjoined"
 msgstr "2 Bilder getrennt"
 
+msgid "everything in the visible area"
+msgstr "alles im sichtbaren Bereich"
+
+msgid "areas with downloaded OSM-data"
+msgstr "Gebiete mit heruntergeladenen OSM-Daten"
+
+msgid "only when manually requested"
+msgstr "nur wenn manuell angefordert"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31902,23 +31979,12 @@ msgstr "Durcken gestoppt"
 msgid "Printing has failed."
 msgstr "Durcken fehlgeschlagen."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} ausgewählt"
-
-msgid "Selected: {0}"
-msgstr "Ausgewählt: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J-Erweiterung"
-
-msgid "Code"
-msgstr "Kode"
-
 msgid "Add stop position"
 msgstr "Haltepunkt hinzufügen"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
 msgstr ""
+"Möchten Sie Verweise auf Plattformen und Haltepositionen herunterladen?"
 
 msgid "Remember my choice and do not ask me again in this session"
 msgstr "Meine Wahl merken und in dieser Sitzung nicht wieder danach fragen"
@@ -31937,6 +32003,7 @@ msgstr ""
 
 msgid "PT_Assistant plugin found that this relation (id={0}) has errors:"
 msgstr ""
+"PT_Assistant-Erweiterungen hat Fehler in dieser Relation (id={0}) gefunden:"
 
 msgid "{0} direction error"
 msgid_plural "{0} direction errors"
@@ -31960,6 +32027,17 @@ msgstr "PT: Haltepunkt ist nicht Teil eines Weges"
 msgid "PT: Platform should not be part of a way"
 msgstr "PT: Plattform sollte nicht Teil eines Weges sein"
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+"PT: Haltstelle oder Plattform ist nicht Teil einer Haltebereichrelation"
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr "PT_Assistant Meldung"
+
 msgid "Public Transport Assistant tests"
 msgstr "Öffentlicher Verkehr Assistent Tests"
 
@@ -31988,6 +32066,30 @@ msgstr "PT: Route sollte mit einem Halteplatz beginnen und enden"
 msgid "PT: First or last way needs to be split"
 msgstr "PT: Erster oder letzter Weg muss aufgeteilt werden"
 
+msgid "PT: Problem in the route segment"
+msgstr "PT: Problem in dem Routensegment"
+
+msgid "PT: Stop not served"
+msgstr "PT: Haltestelle nicht bedient"
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr "PT: Haltebereichrelation hat keine Haltestelle"
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr "PT: Haltebereichrelation hat mehrere Haltestellen"
+
+msgid "PT: Stop area relation has no platform"
+msgstr "PT: Haltebereichrelation hat keine Plattform"
+
+msgid "PT: Stop area relation has several platforms"
+msgstr "PT: Haltebereichrelation hat mehrere Plattformen"
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 "Öffentlicher Verkehr: Routentyp passt nicht zum Typ der Straße, auf der sie "
@@ -31999,6 +32101,9 @@ msgstr "PT: Straße ist im Bau"
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr "PT: Route führt in falscher Richtung über eine Einbahnstraße"
 
+msgid "rail"
+msgstr "Eisenbahn"
+
 msgid "Can''t parse a time from this string."
 msgstr "Von dieser Zeichenkette konnte keine Uhrzeit geparst werden."
 
@@ -33201,6 +33306,9 @@ msgstr "Etwas ging schief, versuchen Sie es noch einmal"
 msgid "No change to upload!"
 msgstr "Keine Änderung zum Hochladen!"
 
+msgid "The bounding box is too big."
+msgstr "Der Rahmen ist zu groß."
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 "Ein Punkt kann nicht außerhalb des heruntergeladenen Bereichs platziert "
@@ -35029,10 +35137,10 @@ msgstr[1] ""
 "''{0}'' Merkmale {1} von {2} mit neuem Wert ''{3}'' überschreiben?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Wikidata-Einträge suchen"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Zielschlüssel: "
 
 msgid "Add names from Wikipedia"
 msgstr "Namen aus Wikipedia hinzufügen"
@@ -35042,6 +35150,12 @@ msgid ""
 msgstr ""
 "Interwiki-Links zum Ergänzen von Namensmerkmalen von Wikipedia abrufen"
 
+msgid "Search Wikipedia category"
+msgstr "Wikipedia-Kategorie durchsuchen"
+
+msgid "Load category"
+msgstr "Kategorie laden"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -35090,9 +35204,6 @@ msgstr "Kategorie"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Lädt die Liste der Wikipedia-Artikel einer Kategorie"
 
-msgid "Enter the Wikipedia category"
-msgstr "Geben Sie die Wikipedia-Kategorie ein"
-
 msgid "Clipboard"
 msgstr "Zwischenablage"
 
diff --git a/i18n/po/de_DE.po b/i18n/po/de_DE.po
index d1ae347..6d6abf3 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:12+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:15+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Der Parameter \"downloadgps\" unterstützt keine Dateinamen oder URLs."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "JOSM Beenden"
-
-msgid "Continue, try anyway"
-msgstr "Fortfahren, trotzdem versuchen"
-
-msgid "Error"
-msgstr "Fehler"
-
 msgid "About"
 msgstr "Über"
 
@@ -239,6 +224,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Lufbild-Ebene {0} hinzufügen"
 
+msgid "Error"
+msgstr "Fehler"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -518,7 +506,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1080,19 +1068,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1101,16 +1083,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1808,6 +1780,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2832,7 +2807,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2884,6 +2859,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2916,9 +2894,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5580,12 +5555,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5599,6 +5568,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5778,6 +5753,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7631,11 +7628,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9121,13 +9113,6 @@ 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 ""
 
@@ -9143,6 +9128,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12423,6 +12413,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13212,6 +13205,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13923,6 +13919,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13949,6 +13957,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13960,21 +13975,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14118,64 +14121,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14512,9 +14529,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14539,9 +14553,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14563,7 +14574,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14614,7 +14625,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14689,7 +14703,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15975,9 +15992,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16116,7 +16130,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16351,15 +16366,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16409,9 +16428,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16824,7 +16849,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16987,15 +17012,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18562,6 +18578,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19065,9 +19084,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20271,6 +20287,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20357,6 +20376,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20413,6 +20436,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22269,6 +22295,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22368,6 +22403,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22550,6 +22588,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22699,9 +22749,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22857,6 +22904,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23201,6 +23260,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr "Ländercode"
 
@@ -23917,6 +23979,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25600,6 +25665,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27948,6 +28022,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29333,18 +29416,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29388,6 +29459,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29413,6 +29494,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29422,6 +29527,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30563,6 +30671,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32167,6 +32278,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32210,9 +32327,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/el.po b/i18n/po/el.po
index 9a5cb52..70e364d 100644
--- a/i18n/po/el.po
+++ b/i18n/po/el.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-01-25 09:17+0000\n"
 "Last-Translator: Aggelos Arnaoutis <angelosarn at hotmail.com>\n"
 "Language-Team: Greek <el 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: 2016-07-12 04:45+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:46+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: el\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,25 +113,6 @@ msgstr "Αγνοήθηκε κακοσχηματισμένο URL αρχείου:\
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Η παράμετρος \"downloadgps\" δεν δέχεται ονόματα ή URL αρχείων"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>Ο JOSM απαιτεί έκδοση Java {0}.</h2>Ανιχνεύθηκε έκδοση Java: "
-"{1}.<br>Μπορείτε να <ul><li>αναβαθμίσετε την Java (JRE) "
-"ή</li><li>χρησιμοποιήστε μια παλιότερη (συμβατή με Java {2}) έκδοση του "
-"JOSM.</li></ul>Περισσότερες πληρ:"
-
-msgid "Exit JOSM"
-msgstr "Έξοδος από το JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Συνέχεια, προσπάθεια οπωσδήποτε"
-
-msgid "Error"
-msgstr "Σφάλμα"
-
 msgid "About"
 msgstr "Περί"
 
@@ -242,6 +223,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Προσθήκη επιπέδου υπόβαθρου εικόνων {0}"
 
+msgid "Error"
+msgstr "Σφάλμα"
+
 msgid "Select image format for WMS layer"
 msgstr "Επιλέξτε μορφή εικόνας για το επίπεδο WMS"
 
@@ -528,8 +512,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Αντιγραφή"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Αντιγραφή επιλογής με αντιγραφή και άμεση επικόλληση."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Έξοδος"
@@ -1152,23 +1136,14 @@ msgstr ""
 msgid "Paste"
 msgstr "Επικόλληση"
 
-msgid "Paste contents of paste buffer."
-msgstr "Επικόλληση περιεχομένων πρόχειρου."
-
-msgid "Delete incomplete members?"
-msgstr "Διαγραφή ατελών μελών;"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Επικόληση χωρίς τα ημιτελή μέλη"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Τα αντιγραμμένα δεδομένα περιέχουν μη ολοκληρωμένα αντικείμενα. Κατά την "
-"επικόλληση τα μη ολοκληρωμένα αντικείμενα αφαιρούνται. Θέλετε να "
-"επικολλήσετε τα δεδομένα χωρίς τα μη ολοκληρωμένα αντικείμενα."
 
 msgid "Paste Tags"
 msgstr "Επικόλληση ετικετών"
@@ -1178,16 +1153,6 @@ msgstr ""
 "Εφαρμογή των ετικετών των περιεχομένων στο πρόχειρο σε όλα τα επιλεγμένα "
 "στοιχεία."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Επικόληση {0} ετικέτας"
-msgstr[1] "Επικόληση {0} ετικετών"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "σε {0} αντικείμενο"
-msgstr[1] "σε {0} αντικείμενα"
-
 msgid "Preferences..."
 msgstr "Προτιμήσεις..."
 
@@ -1934,6 +1899,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "Σφάλματα κατα τη διάρκεια της λήψης"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2988,7 +2956,7 @@ msgstr "Αλλαγή διαδρομής {0}"
 msgid "Change relation {0}"
 msgstr "Αλαγή σχέσης {0}"
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -3040,6 +3008,9 @@ msgstr[1] "αντικείμενα"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr "Διεγραμμένα ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -3072,9 +3043,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Διαγραφή {0} σχέσης"
 msgstr[1] "Διαγραφή {0} σχέσεων"
 
-msgid "Deleted ''{0}''"
-msgstr "Διεγραμμένα ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Επιβεβαίωση διαγραφής"
 
@@ -5795,12 +5763,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>λείπει</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5814,6 +5776,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>λείπει</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Επιλογή τιμής"
 
@@ -6001,6 +5969,31 @@ msgstr "Καινούργιο κλειδί"
 msgid "New value"
 msgstr "Καινούργια τιμή"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Επικόληση {0} ετικέτας"
+msgstr[1] "Επικόληση {0} ετικετών"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "σε {0} αντικείμενο"
+msgstr[1] "σε {0} αντικείμενα"
+
+msgid "Delete incomplete members?"
+msgstr "Διαγραφή ατελών μελών;"
+
+msgid "Paste without incomplete members"
+msgstr "Επικόληση χωρίς τα ημιτελή μέλη"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Τα αντιγραμμένα δεδομένα περιέχουν μη ολοκληρωμένα αντικείμενα. Κατά την "
+"επικόλληση τα μη ολοκληρωμένα αντικείμενα αφαιρούνται. Θέλετε να "
+"επικολλήσετε τα δεδομένα χωρίς τα μη ολοκληρωμένα αντικείμενα."
+
 msgid "For selected objects only"
 msgstr "Για επιλεγμένα αντικείμενα μόνο"
 
@@ -7886,13 +7879,6 @@ msgstr "Μετακίνηση των επιλεγμένων μελών πάνω"
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Τα μέλη από το πρόχειρο δεν μπορούν να προστεθούν επειδή δεν περιλαμβάνονται "
-"στο τρέχων επίπεδο"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9435,13 +9421,6 @@ 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 ""
 
@@ -9457,6 +9436,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Αποθήκευση Επιπέδου"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12778,6 +12762,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13578,6 +13565,9 @@ msgstr "Θέλετε να το επιτρέψετε;"
 msgid "Confirm Remote Control action"
 msgstr "Επιβεβαίωση ενέργειας Τηλεχειρισμού"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14310,6 +14300,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14336,6 +14338,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14347,21 +14356,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14505,64 +14502,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Καμία ενέργεια"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Αναφορά σφάλματος"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Μη Αναμενόμενη Εξαίρεση"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Το κείμενο έχει ήδη αντιγραφεί στο πρόχειρο σας.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14899,9 +14910,6 @@ msgstr "HDM (Ανθρωπιστική Ομάδα OpenStreetMap)"
 msgid "Mapbox Satellite"
 msgstr "Δορυφόρος MapBox"
 
-msgid "MapQuest Open Aerial"
-msgstr "Ανοιχτές αεροφωτογραφίες MapQuest"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -14926,9 +14934,6 @@ msgstr "OpenStreetMap (γερμανικό στιλ)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "Ίχνη GPS OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Δημόσια συγκοινωνία (ÖPNV)"
 
@@ -14950,7 +14955,7 @@ msgstr "Χάρτης θερμότητας ποδηλασίας Strava"
 msgid "Strava running heatmap"
 msgstr "Χάρτης θερμότητας τρεξίματος Strava"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15001,7 +15006,10 @@ msgstr "Επιθεωρητής OSM: Διευθύνσεις"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "Επιθεωρητής OSM: Σύνορα (ΕΕ)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15076,7 +15084,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16362,9 +16373,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16506,7 +16514,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16741,15 +16750,19 @@ msgstr ""
 msgid "Electrified"
 msgstr "Ηλεκτροκίνηση"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "όχι"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "ναι"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16799,9 +16812,15 @@ msgstr "Ώρες Λειτουργείας"
 msgid "Wheelchairs"
 msgstr "Αναπηρικά αμαξίδια"
 
+msgid "yes"
+msgstr "ναι"
+
 msgid "limited"
 msgstr "περιορισμένο"
 
+msgid "no"
+msgstr "όχι"
+
 msgid "Brand"
 msgstr "Μάρκα"
 
@@ -17214,8 +17233,8 @@ msgstr "δασικός"
 msgid "Population"
 msgstr "Πληθυσμός"
 
-msgid "Post code"
-msgstr "Ταχυδρομικός Κώδικας"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Ιστοσελίδα"
@@ -17377,15 +17396,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr "υψηλό"
-
-msgid "medium"
-msgstr "μεσαίο"
-
-msgid "low"
-msgstr "χαμηλό"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18952,6 +18962,9 @@ msgstr "Υπόγειος Σιδηρόδρομος"
 msgid "Tram"
 msgstr "Τραμ"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19455,9 +19468,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20661,6 +20671,9 @@ msgstr "Στάδιο"
 msgid "Sports Centre"
 msgstr "Αθλητικό Κέντρο"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20747,6 +20760,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20803,6 +20820,9 @@ msgstr "Αγώνες Ιππασίας"
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22659,6 +22679,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22758,6 +22787,9 @@ msgstr ""
 msgid "food"
 msgstr "φαγητό"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22940,6 +22972,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23089,9 +23133,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23247,6 +23288,18 @@ msgstr "Νησί"
 msgid "Islet"
 msgstr "Νησίδα"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Φύση"
 
@@ -23591,6 +23644,9 @@ msgstr ""
 msgid "City name"
 msgstr "Όνομα πόλης"
 
+msgid "Post code"
+msgstr "Ταχυδρομικός Κώδικας"
+
 msgid "Country code"
 msgstr "Κωδικός χώρας"
 
@@ -24307,6 +24363,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} είναι παρωχημένο"
 
@@ -25993,6 +26052,15 @@ msgstr "50 μ"
 msgid "100 m"
 msgstr "100 μ"
 
+msgid "high"
+msgstr "υψηλό"
+
+msgid "medium"
+msgstr "μεσαίο"
+
+msgid "low"
+msgstr "χαμηλό"
+
 msgid "symbol"
 msgstr ""
 
@@ -28363,6 +28431,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29750,18 +29827,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29805,6 +29870,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29830,6 +29905,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29839,6 +29938,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30983,6 +31085,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Δεν μπορεί να τοποθετηθεί κόμβος εκτός κόσμου."
 
@@ -32637,6 +32742,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32680,9 +32791,6 @@ msgstr "Κατηγορία"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr "Πρόχειρο"
 
diff --git a/i18n/po/en_AU.po b/i18n/po/en_AU.po
index 892016d..bc58750 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:11+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:14+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,24 +112,6 @@ msgstr "Ignoring malformed file URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-
-msgid "Exit JOSM"
-msgstr "Exit JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continue, try anyway"
-
-msgid "Error"
-msgstr "Error"
-
 msgid "About"
 msgstr "About"
 
@@ -244,6 +226,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Add imagery layer {0}"
 
+msgid "Error"
+msgstr "Error"
+
 msgid "Select image format for WMS layer"
 msgstr "Select image format for WMS layer"
 
@@ -531,8 +516,8 @@ msgstr "Download objects referring to one of the selected objects"
 msgid "Duplicate"
 msgstr "Duplicate"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Exit"
@@ -1145,23 +1130,14 @@ msgstr ""
 msgid "Paste"
 msgstr "Paste"
 
-msgid "Paste contents of paste buffer."
-msgstr "Paste contents of paste buffer."
-
-msgid "Delete incomplete members?"
-msgstr "Delete incomplete members?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Paste without incomplete members"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
 
 msgid "Paste Tags"
 msgstr "Paste Tags"
@@ -1169,16 +1145,6 @@ msgstr "Paste Tags"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Apply tags of contents of paste buffer to all selected items."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Pasting {0} tag"
-msgstr[1] "Pasting {0} tags"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "to {0} object"
-msgstr[1] "to {0} objects"
-
 msgid "Preferences..."
 msgstr "Preferences..."
 
@@ -1922,6 +1888,9 @@ msgstr "Query and download changesets ..."
 msgid "Errors during download"
 msgstr "Errors during download"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Download GPS"
 
@@ -3018,8 +2987,8 @@ msgstr "Change way {0}"
 msgid "Change relation {0}"
 msgstr "Change relation {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Changed nodes of {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Remove \"{0}\" for node ''{1}''"
@@ -3070,6 +3039,9 @@ msgstr[1] "objects"
 msgid "Change relation member role for {0} {1}"
 msgstr "Change relation member role for {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Deleted ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "At least one object to delete required, got empty collection"
 
@@ -3102,9 +3074,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Delete {0} relation"
 msgstr[1] "Delete {0} relations"
 
-msgid "Deleted ''{0}''"
-msgstr "Deleted ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Delete confirmation"
 
@@ -5919,12 +5888,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Combine confirmation"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>missing</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5946,6 +5909,12 @@ msgstr[1] ""
 "may have unwanted tags.<br/>If you want to continue, you are shown a "
 "dialogue to fix the conflicting tags.<br/><br/>Do you want to continue?"
 
+msgid "<i>missing</i>"
+msgstr "<i>missing</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Choose a value"
 
@@ -6142,6 +6111,31 @@ msgstr "New key"
 msgid "New value"
 msgstr "New value"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Pasting {0} tag"
+msgstr[1] "Pasting {0} tags"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "to {0} object"
+msgstr[1] "to {0} objects"
+
+msgid "Delete incomplete members?"
+msgstr "Delete incomplete members?"
+
+msgid "Paste without incomplete members"
+msgstr "Paste without incomplete members"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+
 msgid "For selected objects only"
 msgstr "For selected objects only"
 
@@ -8093,13 +8087,6 @@ msgstr "Move the currently selected members up"
 msgid "Apply the updates and close the dialog"
 msgstr "Apply the updates and close the dialogue"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9743,13 +9730,6 @@ 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"
 
@@ -9765,6 +9745,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Save Layer"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Notes layer"
 
@@ -13258,6 +13243,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -14074,6 +14062,9 @@ msgstr "Do you want to allow this?"
 msgid "Confirm Remote Control action"
 msgstr "Confirm Remote Control action"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14849,6 +14840,18 @@ msgstr ""
 "<strong>Downloading failed</strong> if you tried to download this "
 "object.<br><br>The error message is:<br>{0}</html>"
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14877,6 +14880,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14890,21 +14900,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -15056,76 +15054,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Do nothing"
+msgid "You have encountered a bug in JOSM"
+msgstr "You have encountered a bug in JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Report Bug"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Unexpected Exception"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
+msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
-"You should also update your plug-ins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(The text has already been copied to your clipboard.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -15463,9 +15463,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -15490,9 +15487,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15514,7 +15508,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15565,7 +15559,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15640,7 +15637,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16947,9 +16947,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17095,7 +17092,8 @@ msgstr "Easy downloading along a long set of interconnected ways"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -17332,17 +17330,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Electrified"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "contact_line"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "no"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "yes"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "rail"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -17390,9 +17392,15 @@ msgstr "Opening Hours"
 msgid "Wheelchairs"
 msgstr "Wheelchairs"
 
+msgid "yes"
+msgstr "yes"
+
 msgid "limited"
 msgstr "limited"
 
+msgid "no"
+msgstr "no"
+
 msgid "Brand"
 msgstr ""
 
@@ -17805,8 +17813,8 @@ msgstr "forestry"
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Post code"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17968,15 +17976,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunni"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "low"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -19543,6 +19542,9 @@ msgstr "Subway"
 msgid "Tram"
 msgstr "Tram"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "Bus Guideway"
 
@@ -20046,9 +20048,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -21252,6 +21251,9 @@ msgstr "Stadium"
 msgid "Sports Centre"
 msgstr "Sports Centre"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Pitch"
 
@@ -21338,6 +21340,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -21394,6 +21400,9 @@ msgstr "Horse Racing"
 msgid "Gymnastics"
 msgstr "Gymnastics"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23250,6 +23259,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -23349,6 +23367,9 @@ msgstr "excrement_bags"
 msgid "food"
 msgstr "food"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23531,6 +23552,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23680,9 +23713,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23838,6 +23868,18 @@ msgstr "Island"
 msgid "Islet"
 msgstr "Islet"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -24182,6 +24224,9 @@ msgstr ""
 msgid "City name"
 msgstr "City name"
 
+msgid "Post code"
+msgstr "Post code"
+
 msgid "Country code"
 msgstr "Country code"
 
@@ -24898,6 +24943,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -26597,6 +26645,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "low"
+
 msgid "symbol"
 msgstr "symbol"
 
@@ -28989,6 +29046,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30381,18 +30447,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -30436,6 +30490,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30461,6 +30525,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30470,6 +30558,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "rail"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -31616,6 +31707,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Cannot place a node outside of the world."
 
@@ -33232,6 +33326,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -33275,9 +33375,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/en_CA.po b/i18n/po/en_CA.po
index 984a0b6..0cc12de 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:13+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:16+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "Ignoring malformed file URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "About"
 
@@ -236,6 +221,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -515,7 +503,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1077,19 +1065,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1098,16 +1080,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1805,6 +1777,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2829,7 +2804,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2881,6 +2856,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2913,9 +2891,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5577,12 +5552,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5596,6 +5565,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5775,6 +5750,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7628,11 +7625,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9118,13 +9110,6 @@ 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 ""
 
@@ -9140,6 +9125,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12420,6 +12410,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13209,6 +13202,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13920,6 +13916,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13946,6 +13954,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13957,21 +13972,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14115,64 +14118,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14506,9 +14523,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14533,9 +14547,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14557,7 +14568,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14608,7 +14619,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14683,7 +14697,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15969,9 +15986,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16110,7 +16124,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16345,15 +16360,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16403,9 +16422,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16818,7 +16843,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16981,15 +17006,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18556,6 +18572,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19059,9 +19078,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20265,6 +20281,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20351,6 +20370,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20407,6 +20430,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22263,6 +22289,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22362,6 +22397,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22544,6 +22582,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22693,9 +22743,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22851,6 +22898,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23195,6 +23254,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23911,6 +23973,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25592,6 +25657,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27938,6 +28012,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29323,18 +29406,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29378,6 +29449,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29403,6 +29484,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29412,6 +29517,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30553,6 +30661,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32157,6 +32268,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32200,9 +32317,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/en_GB.po b/i18n/po/en_GB.po
index 33b07a1..a81f179 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-09 13:47+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-10 11:05+0000\n"
 "Last-Translator: Andi Chandler <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: 2016-07-12 05:10+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:13+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: de\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -115,24 +115,6 @@ msgstr "Ignoring malformed file URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter \"downloadgps\" does not accept file names or file URLs"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-
-msgid "Exit JOSM"
-msgstr "Exit JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continue, try anyway"
-
-msgid "Error"
-msgstr "Error"
-
 msgid "About"
 msgstr "About"
 
@@ -247,6 +229,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Add imagery layer {0}"
 
+msgid "Error"
+msgstr "Error"
+
 msgid "Select image format for WMS layer"
 msgstr "Select image format for WMS layer"
 
@@ -534,8 +519,8 @@ msgstr "Download objects referring to one of the selected objects"
 msgid "Duplicate"
 msgstr "Duplicate"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
+msgstr "Duplicate selection."
 
 msgid "Exit"
 msgstr "Exit"
@@ -1148,23 +1133,14 @@ msgstr "Overpass query: "
 msgid "Paste"
 msgstr "Paste"
 
-msgid "Paste contents of paste buffer."
-msgstr "Paste contents of paste buffer."
-
-msgid "Delete incomplete members?"
-msgstr "Delete incomplete members?"
+msgid "Paste contents of clipboard."
+msgstr "Paste contents of clipboard."
 
-msgid "Paste without incomplete members"
-msgstr "Paste without incomplete members"
+msgid "Paste at source position"
+msgstr "Paste at source position"
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
-msgstr ""
-"The copied data contains incomplete objects.  When pasting, the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
+msgstr "Paste contents of clipboard at the position they were copied from."
 
 msgid "Paste Tags"
 msgstr "Paste Tags"
@@ -1172,16 +1148,6 @@ msgstr "Paste Tags"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Apply tags of contents of paste buffer to all selected items."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Pasting {0} tag"
-msgstr[1] "Pasting {0} tags"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "to {0} object"
-msgstr[1] "to {0} objects"
-
 msgid "Preferences..."
 msgstr "Preferences..."
 
@@ -1925,6 +1891,9 @@ msgstr "Query and download changesets ..."
 msgid "Errors during download"
 msgstr "Errors during download"
 
+msgid "Download Geo URL"
+msgstr "Download Geo URL"
+
 msgid "Download GPS"
 msgstr "Download GPS"
 
@@ -3025,8 +2994,8 @@ msgstr "Change way {0}"
 msgid "Change relation {0}"
 msgstr "Change relation {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Changed nodes of {0}"
+msgid "Change nodes of {0}"
+msgstr "Change nodes of {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Remove \"{0}\" for node ''{1}''"
@@ -3077,6 +3046,9 @@ msgstr[1] "objects"
 msgid "Change relation member role for {0} {1}"
 msgstr "Change relation member role for {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Deleted ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "At least one object to delete required, got empty collection"
 
@@ -3109,9 +3081,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Delete {0} relation"
 msgstr[1] "Delete {0} relations"
 
-msgid "Deleted ''{0}''"
-msgstr "Deleted ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Delete confirmation"
 
@@ -5938,12 +5907,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Combine confirmation"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>missing</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5965,6 +5928,12 @@ msgstr[1] ""
 "may have unwanted tags.<br/>If you want to continue, you are shown a "
 "dialogue to fix the conflicting tags.<br/><br/>Do you want to continue?"
 
+msgid "<i>missing</i>"
+msgstr "<i>missing</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Choose a value"
 
@@ -6161,6 +6130,31 @@ msgstr "New key"
 msgid "New value"
 msgstr "New value"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Pasting {0} tag"
+msgstr[1] "Pasting {0} tags"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "to {0} object"
+msgstr[1] "to {0} objects"
+
+msgid "Delete incomplete members?"
+msgstr "Delete incomplete members?"
+
+msgid "Paste without incomplete members"
+msgstr "Paste without incomplete members"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"The copied data contains incomplete objects.  When pasting, the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+
 msgid "For selected objects only"
 msgstr "For selected objects only"
 
@@ -8127,13 +8121,6 @@ msgstr "Move the currently selected members up"
 msgid "Apply the updates and close the dialog"
 msgstr "Apply the updates and close the dialogue"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-
 msgid "Relation Editor: Refresh"
 msgstr "Relation Editor: Refresh"
 
@@ -9785,17 +9772,6 @@ 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"
 
@@ -9811,6 +9787,11 @@ msgstr "Change the projection again or remove the layer."
 msgid "Save Layer"
 msgstr "Save Layer"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} note"
+msgstr[1] "{0} notes"
+
 msgid "Notes layer"
 msgstr "Notes layer"
 
@@ -13391,6 +13372,9 @@ msgstr ""
 "Failed to open file with extension ''{2}'' and namepart ''{3}'' in zip file "
 "''{0}''. Exception was: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "The requested URL {0} was not found"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Failed to rename file {0} to {1}."
 
@@ -14240,6 +14224,9 @@ msgstr "Do you want to allow this?"
 msgid "Confirm Remote Control action"
 msgstr "Confirm Remote Control action"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "The following keys are mandatory, but have not been provided: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15126,6 +15113,18 @@ msgstr ""
 "<strong>Downloading failed</strong> if you tried to download this "
 "object.<br><br>The error message is:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitude"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL does not contain valid {0}"
+
+msgid "longitude"
+msgstr "longitude"
+
+msgid "zoom"
+msgstr "zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15157,6 +15156,17 @@ msgid ""
 msgstr ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [please type its number]"
 
@@ -15170,21 +15180,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Opening URL: {0}"
 
-msgid "zoom"
-msgstr "zoom"
-
-msgid "latitude"
-msgstr "latitude"
-
-msgid "longitude"
-msgstr "longitude"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL does not contain {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL does not contain valid {0}"
-
 msgid "reserved"
 msgstr "reserved"
 
@@ -15353,83 +15351,90 @@ msgstr "Ignoring malformed geometry: {0}"
 msgid "Failed to load XML schema."
 msgstr "Failed to load XML schema."
 
-msgid "Do nothing"
-msgstr "Do nothing"
-
-msgid "Report Bug"
-msgstr "Report Bug"
+msgid "You have encountered a bug in JOSM"
+msgstr "You have encountered a bug in JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 
-msgid "Update JOSM"
-msgstr "Update JOSM"
+msgid "Debug information"
+msgstr "Debug information"
+
+msgid "Manually report at:"
+msgstr "Manually report at:"
+
+msgid "Is JOSM up to date?"
+msgstr "Is JOSM up to date?"
+
+msgid "Send bug report"
+msgstr "Send bug report"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+
+msgid "Report Bug"
+msgstr "Report Bug"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Suppress further error dialogues for this session."
 
-msgid "Unexpected Exception"
-msgstr "Unexpected Exception"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "You have encountered a bug in JOSM"
+msgid "Ignore this error."
+msgstr "Ignore this error."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"You should also update your plug-ins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
+msgstr "Include the system status report."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
+msgstr "Include information about the data you were working on."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr "Include all stack traces."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Your current version of JOSM is {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM is searching for updates..."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "An error occured while checking if your JOSM instance is up to date."
+
+msgid "JOSM is up to date."
+msgstr "JOSM is up to date."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr "JOSM is out of date. The current version is {0}. Try updating JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+
+msgid "Update JOSM"
+msgstr "Update JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -15774,9 +15779,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -15801,9 +15803,6 @@ msgstr "OpenStreetMap (German Style)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Traces"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Public Transport (ÖPNV)"
 
@@ -15825,8 +15824,8 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
-msgstr "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
+msgstr "Strava cycling and running heatmap"
 
 msgid "Locator Overlay"
 msgstr "Locator Overlay"
@@ -15876,8 +15875,11 @@ msgstr "OSM Inspector: Addresses"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Boundaries (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Argentina (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Argentina (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI black-and-white 2.5m"
@@ -15951,8 +15953,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV aerial imagery 10cm 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -17318,9 +17323,6 @@ msgstr "Read and write osmosis poly filter files"
 msgid "Adds map printing to JOSM"
 msgstr "Adds map printing to JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "adds projections from Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17495,8 +17497,10 @@ msgstr "Easy downloading along a long set of interconnected ways"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Enables searching for waypoints imported from gpx file."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17732,15 +17736,19 @@ msgstr "crossover"
 msgid "Electrified"
 msgstr "Electrified"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr "contact_line"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "no"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "yes"
 
+msgctxt "electrified"
 msgid "rail"
 msgstr "rail"
 
@@ -17790,9 +17798,15 @@ msgstr "Opening hours"
 msgid "Wheelchairs"
 msgstr "Wheelchairs"
 
+msgid "yes"
+msgstr "yes"
+
 msgid "limited"
 msgstr "limited"
 
+msgid "no"
+msgstr "no"
+
 msgid "Brand"
 msgstr "Brand"
 
@@ -18205,8 +18219,8 @@ msgstr "forestry"
 msgid "Population"
 msgstr "Population"
 
-msgid "Post code"
-msgstr "Post code"
+msgid "Postal Code"
+msgstr "Postal Code"
 
 msgid "Website"
 msgstr "Website"
@@ -18372,15 +18386,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunni"
 
-msgid "high"
-msgstr "high"
-
-msgid "medium"
-msgstr "medium"
-
-msgid "low"
-msgstr "low"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -19968,6 +19973,9 @@ msgstr "Subway"
 msgid "Tram"
 msgstr "Tram"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Bus Guideway"
 
@@ -20473,9 +20481,6 @@ msgstr "Trolleybus"
 msgid "Share taxi"
 msgstr "Share taxi"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Ferry"
 
@@ -21680,6 +21685,9 @@ msgstr "Stadium"
 msgid "Sports Centre"
 msgstr "Sports Centre"
 
+msgid "Fitness Centre"
+msgstr "Fitness Centre"
+
 msgid "Pitch"
 msgstr "Pitch"
 
@@ -21766,6 +21774,10 @@ msgid "sports_centre"
 msgstr "sports_centre"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "fitness_centre"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadium"
 
@@ -21822,6 +21834,9 @@ msgstr "Horse Racing"
 msgid "Gymnastics"
 msgstr "Gymnastics"
 
+msgid "fitness_centre"
+msgstr "fitness_centre"
+
 msgid "Ice Skating"
 msgstr "Ice Skating"
 
@@ -23680,6 +23695,15 @@ msgstr "Tobacco"
 msgid "Hairdresser/Barber"
 msgstr "Hairdresser/Barber"
 
+msgid "Female"
+msgstr "Female"
+
+msgid "Male"
+msgstr "Male"
+
+msgid "Unisex"
+msgstr "Unisex"
+
 msgid "Tattoo"
 msgstr "Tattoo"
 
@@ -23779,6 +23803,9 @@ msgstr "excrement_bags"
 msgid "food"
 msgstr "food"
 
+msgid "milk"
+msgstr "milk"
+
 msgid "newspapers"
 msgstr "newspapers"
 
@@ -23961,6 +23988,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Government"
 
+msgid "ministry"
+msgstr "ministry"
+
+msgid "prosecutor"
+msgstr "prosecutor"
+
+msgid "tax"
+msgstr "tax"
+
+msgid "register_office"
+msgstr "register_office"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Insurance"
@@ -24110,9 +24149,6 @@ msgstr "linguistic_community"
 msgid "ward"
 msgstr "ward"
 
-msgid "Postal Code"
-msgstr "Postal Code"
-
 msgid "National Park"
 msgstr "National Park"
 
@@ -24272,6 +24308,18 @@ msgstr "Island"
 msgid "Islet"
 msgstr "Islet"
 
+msgid "Reef"
+msgstr "Reef"
+
+msgid "coral"
+msgstr "coral"
+
+msgid "oyster"
+msgstr "oyster"
+
+msgid "rock"
+msgstr "rock"
+
 msgid "Nature"
 msgstr "Nature"
 
@@ -24630,6 +24678,9 @@ msgstr "Place name"
 msgid "City name"
 msgstr "City name"
 
+msgid "Post code"
+msgstr "Post code"
+
 msgid "Country code"
 msgstr "Country code"
 
@@ -25356,6 +25407,9 @@ msgstr ""
 "underground. Remove {1} or add a tunnel tag if applicable. Also check "
 "crossing bridges and their {1} tags."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} together with {1} and {2}. Remove {1} and {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} is deprecated"
 
@@ -27215,6 +27269,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "high"
+
+msgid "medium"
+msgstr "medium"
+
+msgid "low"
+msgstr "low"
+
 msgid "symbol"
 msgstr "symbol"
 
@@ -29688,6 +29751,15 @@ msgstr[1] "Turned {0} images"
 msgid "2 images unjoined"
 msgstr "2 images unjoined"
 
+msgid "everything in the visible area"
+msgstr "everything in the visible area"
+
+msgid "areas with downloaded OSM-data"
+msgstr "areas with downloaded OSM-data"
+
+msgid "only when manually requested"
+msgstr "only when manually requested"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31140,23 +31212,11 @@ msgstr "Printing stopped"
 msgid "Printing has failed."
 msgstr "Printing has failed."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} selected"
-
-msgid "Selected: {0}"
-msgstr "Selected: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J Plugin"
-
-msgid "Code"
-msgstr "Code"
-
 msgid "Add stop position"
 msgstr "Add stop position"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
-msgstr ""
+msgstr "Do you want to download referrers of platforms and stop positions?"
 
 msgid "Remember my choice and do not ask me again in this session"
 msgstr "Remember my choice and do not ask me again in this session"
@@ -31193,10 +31253,21 @@ msgid "PT_Assistant Proceed Request"
 msgstr "PT_Assistant Proceed Request"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr ""
+msgstr "PT: Stop_position is not part of a way"
 
 msgid "PT: Platform should not be part of a way"
+msgstr "PT: Platform should not be part of a way"
+
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr "PT: Stop position or platform is not part of a stop area relation"
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
 msgstr ""
+"PT: Stop position and its related platform(s) have different route relations"
+
+msgid "PT_Assistant Message"
+msgstr "PT_Assistant Message"
 
 msgid "Public Transport Assistant tests"
 msgstr "Public Transport Assistant tests"
@@ -31224,6 +31295,30 @@ msgstr "PT: Route should start and end with a stop_position"
 msgid "PT: First or last way needs to be split"
 msgstr "PT: First or last way needs to be split"
 
+msgid "PT: Problem in the route segment"
+msgstr "PT: Problem in the route segment"
+
+msgid "PT: Stop not served"
+msgstr "PT: Stop not served"
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr "Type letter to select the fix variant or press Escape for no fix"
+
+msgid "PT: Stop area relation has no stop position"
+msgstr "PT: Stop area relation has no stop position"
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr "PT: Stop area relation has several stop positions"
+
+msgid "PT: Stop area relation has no platform"
+msgstr "PT: Stop area relation has no platform"
+
+msgid "PT: Stop area relation has several platforms"
+msgstr "PT: Stop area relation has several platforms"
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr "PT: Route type does not match the type of the road it passes on"
 
@@ -31233,6 +31328,9 @@ msgstr "PT: Road is under construction"
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr "PT: Route passes a oneway road in the wrong direction"
 
+msgid "rail"
+msgstr "rail"
+
 msgid "Can''t parse a time from this string."
 msgstr "Can''t parse a time from this string."
 
@@ -32413,6 +32511,9 @@ msgstr "Something went wrong, try again"
 msgid "No change to upload!"
 msgstr "No change to upload!"
 
+msgid "The bounding box is too big."
+msgstr "The bounding box is too big."
+
 msgid "Cannot place a node outside of the world."
 msgstr "Cannot place a node outside of the world."
 
@@ -34172,10 +34273,10 @@ msgstr[0] "Overwrite ''{0}'' tag {1} from {2} with new value ''{3}''?"
 msgstr[1] "Overwrite ''{0}'' tags {1} from {2} with new value ''{3}''?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Search Wikidata items"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Target key: "
 
 msgid "Add names from Wikipedia"
 msgstr "Add names from Wikipedia"
@@ -34185,6 +34286,12 @@ msgid ""
 msgstr ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 
+msgid "Search Wikipedia category"
+msgstr "Search Wikipedia category"
+
+msgid "Load category"
+msgstr "Load category"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34215,13 +34322,13 @@ msgid "Not linked yet"
 msgstr "Not linked yet"
 
 msgid "{0}: {1}"
-msgstr ""
+msgstr "{0}: {1}"
 
 msgid "Wikidata"
-msgstr ""
+msgstr "Wikidata"
 
 msgid "Fetches all coordinates from Wikidata in the current view"
-msgstr ""
+msgstr "Fetches all coordinates from Wikidata in the current view"
 
 msgid "Fetches all coordinates from Wikipedia in the current view"
 msgstr "Fetches all coordinates from Wikipedia in the current view"
@@ -34232,9 +34339,6 @@ msgstr "Category"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Fetches a list of all Wikipedia articles of a category"
 
-msgid "Enter the Wikipedia category"
-msgstr "Enter the Wikipedia category"
-
 msgid "Clipboard"
 msgstr "Clipboard"
 
diff --git a/i18n/po/eo.po b/i18n/po/eo.po
index b81a22e..95e783d 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:40+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:41+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: eo\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "Ignorado de nekorekta URL de dosiero: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Eraro"
-
 msgid "About"
 msgstr "Pri"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Eraro"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -511,7 +499,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duobligi"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1073,19 +1061,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Algluu"
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1094,16 +1076,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Agordoj..."
 
@@ -1801,6 +1773,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2825,7 +2800,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2877,6 +2852,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2909,9 +2887,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5573,12 +5548,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5592,6 +5561,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5771,6 +5746,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7624,11 +7621,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9114,13 +9106,6 @@ 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 ""
 
@@ -9136,6 +9121,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12416,6 +12406,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13209,6 +13202,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13920,6 +13916,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13946,6 +13954,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13957,21 +13972,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14115,64 +14118,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14506,9 +14523,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14533,9 +14547,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14557,7 +14568,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14608,7 +14619,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14683,7 +14697,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15969,9 +15986,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16110,7 +16124,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16345,15 +16360,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ne"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "jes"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16403,9 +16422,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "jes"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "ne"
+
 msgid "Brand"
 msgstr ""
 
@@ -16818,7 +16843,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16981,15 +17006,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18556,6 +18572,9 @@ msgstr ""
 msgid "Tram"
 msgstr "Tramo"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19059,9 +19078,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20265,6 +20281,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20351,6 +20370,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20407,6 +20430,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22263,6 +22289,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22362,6 +22397,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22544,6 +22582,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22693,9 +22743,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22851,6 +22898,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23195,6 +23254,9 @@ msgstr ""
 msgid "City name"
 msgstr "Urbo nomo"
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23911,6 +23973,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25592,6 +25657,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27938,6 +28012,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29323,18 +29406,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29378,6 +29449,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29403,6 +29484,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29412,6 +29517,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30553,6 +30661,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32157,6 +32268,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32200,9 +32317,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/es.po b/i18n/po/es.po
index 39c3165..1278f24 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-08 16:51+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-07-28 11:48+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: 2016-07-12 05:04+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:07+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: es\n"
 "X-Language: es_ES\n"
 "X-Source-Language: C\n"
@@ -114,24 +114,6 @@ msgstr "Ignorando URL de archivo incorrecta: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "El parámetro «downloadgps» no acepta nombres ni URL de archivos"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM requiere la versión {0} de Java.</h2>Versión de Java detectada: "
-"{1}.<br>Puede <ul><li>actualizar su Java (JRE) o</li><li>usar una versión "
-"anterior de JOSM (Java {2} compatible).</li></ul>Más información:"
-
-msgid "Exit JOSM"
-msgstr "Salir de JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continuar, intentar de todas formas"
-
-msgid "Error"
-msgstr "Error"
-
 msgid "About"
 msgstr "Acerca de"
 
@@ -245,6 +227,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Agregar capa de imágenes {0}"
 
+msgid "Error"
+msgstr "Error"
+
 msgid "Select image format for WMS layer"
 msgstr "Seleccionar formato de imagen para la capa WMS"
 
@@ -536,8 +521,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duplicar"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicar la selección mediante copiar y pegar de inmediato."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Salir"
@@ -1175,23 +1160,14 @@ msgstr "Consulat de paso elevado: "
 msgid "Paste"
 msgstr "Pegar"
 
-msgid "Paste contents of paste buffer."
-msgstr "Pegar los contenidos de la memoria de pegado"
-
-msgid "Delete incomplete members?"
-msgstr "¿Borrar los miembros incompletos?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Pegar sin los miembros incompletos"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Los datos copiados contienen objetos incompletos. Cuando se peguen, se "
-"eliminarán los objetos incompletos. ¿Quiere pegar los datos sin los objetos "
-"incompletos?"
 
 msgid "Paste Tags"
 msgstr "Pegar etiquetas"
@@ -1201,16 +1177,6 @@ msgstr ""
 "Aplicar las etiquetas guardadas en la memoria de pegado a todos los "
 "elementos seleccionados"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Pegando {0} etiqueta"
-msgstr[1] "Pegando {0} etiquetas"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "a {0} objeto"
-msgstr[1] "a {0} objetos"
-
 msgid "Preferences..."
 msgstr "Preferencias..."
 
@@ -1965,6 +1931,9 @@ msgstr "Consultar y descargar modificaciones..."
 msgid "Errors during download"
 msgstr "Errores durante la descarga"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Descargar GPS"
 
@@ -3093,8 +3062,8 @@ msgstr "Cambiar vía {0}"
 msgid "Change relation {0}"
 msgstr "Cambiar relación {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Nodos cambiados de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Eliminar \"{0}\" por nodo ''{1}''"
@@ -3145,6 +3114,9 @@ msgstr[1] "objetos"
 msgid "Change relation member role for {0} {1}"
 msgstr "Modificar la función del miembro de la relación para {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}'' eliminado"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Se requiere al menos un objeto para borrar,  no se ha seleccionado ninguno"
@@ -3178,9 +3150,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Eliminar {0} relación"
 msgstr[1] "Eliminar {0} relaciones"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}'' eliminado"
-
 msgid "Delete confirmation"
 msgstr "Confirmación antes de borrar"
 
@@ -6118,12 +6087,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmar conbinacion"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>falta</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6145,6 +6108,12 @@ msgstr[1] ""
 "puede tener etiquetas no deseadas.<br/>Si desea continuar se le mostrará un "
 "diálogo para corregir las etiquetas en conflicto.<br/><br/>¿Desea continuar?"
 
+msgid "<i>missing</i>"
+msgstr "<i>falta</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Elija un valor"
 
@@ -6350,6 +6319,31 @@ msgstr "Clave nueva"
 msgid "New value"
 msgstr "Nuevo valor"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Pegando {0} etiqueta"
+msgstr[1] "Pegando {0} etiquetas"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "a {0} objeto"
+msgstr[1] "a {0} objetos"
+
+msgid "Delete incomplete members?"
+msgstr "¿Borrar los miembros incompletos?"
+
+msgid "Paste without incomplete members"
+msgstr "Pegar sin los miembros incompletos"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Los datos copiados contienen objetos incompletos. Cuando se peguen, se "
+"eliminarán los objetos incompletos. ¿Quiere pegar los datos sin los objetos "
+"incompletos?"
+
 msgid "For selected objects only"
 msgstr "Sólo para objetos seleccionados"
 
@@ -8382,13 +8376,6 @@ msgstr "Mover los miembros seleccionados hacia arriba"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar las actualizaciones y cerrar el diálogo"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Los miembros pegados de la memoria intermedia no se pueden añadir porque no "
-"están incluidos en la capa actual"
-
 msgid "Relation Editor: Refresh"
 msgstr "Editor de relación: Actualizar"
 
@@ -9801,7 +9788,7 @@ msgid "Node ''{0}'' is already deleted. Skipping object in upload."
 msgstr "Nodo ''{0}'' está eliminado. Omitiendo objeto en la subida."
 
 msgid "Way ''{0}'' is already deleted. Skipping object in upload."
-msgstr "Vía ''{0}'' está elimada. Omitiendo objeto en la subida."
+msgstr "La vía ''{0}'' ya fue eliminada. Omitiendo el objeto en la subida."
 
 msgid "Relation ''{0}'' is already deleted. Skipping object in upload."
 msgstr "Relación ''{0}'' está eliminada. Omitiendo en la subida."
@@ -10110,17 +10097,6 @@ 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"
 
@@ -10136,6 +10112,11 @@ msgstr "Cambiar la proyección de nuevo o eliminar la capa."
 msgid "Save Layer"
 msgstr "Guardar capa"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Capa de notas"
 
@@ -13846,6 +13827,9 @@ msgstr ""
 "Error al abrir el archivo con extensión ''{2}'' y nombre ''{3}'' en el "
 "archivo zip ''{0}''. La excepción fue: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Falló el cambio de nombre del archivo {0} por el de {1}."
 
@@ -14739,6 +14723,9 @@ msgstr "¿Desea permitir esto?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmar la acción del control remoto"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15654,6 +15641,18 @@ msgstr ""
 "intentando descargar este objeto<br><br>El error del mensaje "
 "es:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitud"
+
+msgid "URL does not contain valid {0}"
+msgstr "La URL no contiene un {0} válido"
+
+msgid "longitude"
+msgstr "longitud"
+
+msgid "zoom"
+msgstr "ampliación"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15687,6 +15686,17 @@ msgstr ""
 "No se ha podido acceder al directorio ''{0}'' por razones de seguridad. La "
 "excepción fue: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [por favor, teclee su número]"
 
@@ -15700,21 +15710,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Abriendo URL: {0}"
 
-msgid "zoom"
-msgstr "ampliación"
-
-msgid "latitude"
-msgstr "latitud"
-
-msgid "longitude"
-msgstr "longitud"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "La URL no contiene {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "La URL no contiene un {0} válido"
-
 msgid "reserved"
 msgstr "reservado"
 
@@ -15887,85 +15885,81 @@ msgstr "Ignorando geometría mal formada: {0}"
 msgid "Failed to load XML schema."
 msgstr "Error al cargar el esquema XML."
 
-msgid "Do nothing"
-msgstr "No hacer nada"
-
-msgid "Report Bug"
-msgstr "Informar del error"
+msgid "You have encountered a bug in JOSM"
+msgstr "Ha encontrado un error en JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Ocurrió una excepción inesperada.<br> Esto siempre es un error de "
-"codificación. Si está ejecutando la última<br>versión de JOSM, por favor sea "
-"tan amable de presentar un informe de error."
 
-msgid "Update JOSM"
-msgstr "Actualizar JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Un error inesperado ocurrió. Esto es debido siempre a un error de "
-"programación. <br><br> Sin embargo, si estás utilizando una versión antigua "
-"de JOSM ({0}),<br> en vez de usar la versión probada actual "
-"(<b>{1}</b>).<br><br><b>Por favor actualiza JOSM</br> antes de enviar un "
-"informe de error."
+
+msgid "Report Bug"
+msgstr "Informar del error"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Suprimir otros mensajes de error durante esta sesión."
 
-msgid "Unexpected Exception"
-msgstr "Excepción inesperada"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Ha encontrado un error en JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Ha encontrado un error en JOSM. Antes de informar de un fallo asegúrese de "
-"haber actualizado a la última versión de JOSM aquí:"
+"Fallo al abrir el informe de error. Por favor, informe de forma manual "
+"utilizando este sitio web:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"También debería actualizar sus complementos. Si ninguna opción ayuda, por "
-"favor, presente un informe de erroren nuestro sistema de seguimiento de "
-"fallos en la siguiente dirección:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Allí la información del error ya deberá ser rellenada por usted.  Por favor "
-"incluya información de cómo reproducir el error e intente ofrecer tanto "
-"detalle como le sea posible."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
-"Por otra parte, si no funciona, puede rellenar manualmente la información en "
-"esta URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(El texto ya ha sido copiado a tu portapapeles.)"
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Fallo al abrir el informe de error. Por favor, informe de forma manual "
-"utilizando este sitio web:"
+
+msgid "Update JOSM"
+msgstr "Actualizar JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16314,9 +16308,6 @@ msgstr "HDM (Equipo Humanitario de OSM)"
 msgid "Mapbox Satellite"
 msgstr "Imagen Satelital Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16341,9 +16332,6 @@ msgstr "OpenStreetMap (estilo alemán)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "Trazas de GPS OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Transporte Público (ÖPNV)"
 
@@ -16365,8 +16353,8 @@ msgstr "Mapa de calor de ciclismo Strava"
 msgid "Strava running heatmap"
 msgstr "Mapa de calor para corredores de Strava"
 
-msgid "Strava both heatmap"
-msgstr "Mapa de calor de Strava (ambos)"
+msgid "Strava cycling and running heatmap"
+msgstr ""
 
 msgid "Locator Overlay"
 msgstr "Superponer ubicador"
@@ -16416,8 +16404,11 @@ msgstr "OSM Inspector: Direcciones"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Límites (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI blanco y negro 2.5m"
@@ -16491,9 +16482,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Alturas y terrenos"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
-"Imágenes aéreas AGIV(laanderen) , cubren también la región de Brusleas"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "Imágenes aéreas numéricas de URBISfr (2013)"
@@ -17896,9 +17889,6 @@ msgstr "Leer y escribir los archivos de filtro osmosis poly"
 msgid "Adds map printing to JOSM"
 msgstr "Añade la posibilidad de impresión del mapa a JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "Agrega nuevas proyecciones geográficas mediante la biblioteca Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -18084,8 +18074,9 @@ msgstr ""
 "Habilitar búsqueda para puntos de referencias (waypoints) importados de un "
 "archivo gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Simplifica la vinculación de objetos OSM con artículos de Wikipedia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18322,17 +18313,21 @@ msgstr "desvío"
 msgid "Electrified"
 msgstr "Electrificado"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "línea_de_contacto"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "no"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "sí"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "ferrocarril"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltaje en voltios (V)"
@@ -18380,9 +18375,15 @@ msgstr "Horario de apertura"
 msgid "Wheelchairs"
 msgstr "Sillas de ruedas"
 
+msgid "yes"
+msgstr "sí"
+
 msgid "limited"
 msgstr "limitado"
 
+msgid "no"
+msgstr "no"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -18566,7 +18567,7 @@ msgstr "baloncesto"
 
 msgctxt "sport"
 msgid "beachvolleyball"
-msgstr "Voleibol de playa"
+msgstr "voleibol de playa"
 
 msgctxt "sport"
 msgid "billiards"
@@ -18574,7 +18575,7 @@ msgstr "billar"
 
 msgctxt "sport"
 msgid "boules"
-msgstr "Deportes de bolas"
+msgstr "petanca"
 
 msgctxt "sport"
 msgid "bowls"
@@ -18658,7 +18659,7 @@ msgstr "motor"
 
 msgctxt "sport"
 msgid "pelota"
-msgstr "pelota"
+msgstr "pelota vasca"
 
 msgctxt "sport"
 msgid "racquet"
@@ -18795,7 +18796,7 @@ msgstr "forestal"
 msgid "Population"
 msgstr "Nº de habitantes"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Código postal"
 
 msgid "Website"
@@ -18963,15 +18964,6 @@ msgstr "chiita"
 msgid "sunni"
 msgstr "suní"
 
-msgid "high"
-msgstr "alto"
-
-msgid "medium"
-msgstr "medio"
-
-msgid "low"
-msgstr "profundidad"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -19494,7 +19486,7 @@ msgid "Public Service Vehicles (psv)"
 msgstr "Vehículos de servicio público (SP)"
 
 msgid "Tourist buses"
-msgstr "Ómnibus de turistas"
+msgstr "Autobús turístico"
 
 msgid "Max. speed Heavy Goods Vehicles (km/h)"
 msgstr "Velocidad máxima para vehículos pesados (km/h)"
@@ -19509,7 +19501,7 @@ msgid "Max. length (meters)"
 msgstr "Longitud máxima (metros)"
 
 msgid "Overtaking"
-msgstr "sobrepaso"
+msgstr "Adelantamiento permitido"
 
 msgctxt "overtaking"
 msgid "yes"
@@ -19517,15 +19509,15 @@ msgstr "sí"
 
 msgctxt "overtaking"
 msgid "both"
-msgstr "ambos"
+msgstr "en ambos sentidos"
 
 msgctxt "overtaking"
 msgid "forward"
-msgstr "adelante"
+msgstr "en el sentido de la vía"
 
 msgctxt "overtaking"
 msgid "backward"
-msgstr "retroceder"
+msgstr "en el sentido contrario de la vía"
 
 msgctxt "overtaking"
 msgid "no"
@@ -20571,6 +20563,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tranvía"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Vía para autobús guiado"
 
@@ -20924,7 +20919,7 @@ msgid "Clothes"
 msgstr "Ropas"
 
 msgid "anchors"
-msgstr "anclajes"
+msgstr "amarres"
 
 msgid "ground_slots"
 msgstr "ranuras en el suelo"
@@ -21078,9 +21073,6 @@ msgstr "Trolebús"
 msgid "Share taxi"
 msgstr "Taxi compartido"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Transbordador"
 
@@ -22289,6 +22281,9 @@ msgstr "Estadio"
 msgid "Sports Centre"
 msgstr "Polideportivo"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Cancha de juego"
 
@@ -22375,6 +22370,10 @@ msgid "sports_centre"
 msgstr "Polideportivo"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "Estadio"
 
@@ -22431,6 +22430,9 @@ msgstr "Carreras de caballos"
 msgid "Gymnastics"
 msgstr "Gimnasia"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "Patinaje sobre hielo"
 
@@ -24289,6 +24291,15 @@ msgstr "Tabaco"
 msgid "Hairdresser/Barber"
 msgstr "Peluquería/Barbería"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tatuaje"
 
@@ -24388,6 +24399,9 @@ msgstr "Bolsas para excrementos"
 msgid "food"
 msgstr "Alimentación"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr "Periódicos"
 
@@ -24570,6 +24584,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Gobierno"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Seguros"
@@ -24719,9 +24745,6 @@ msgstr "comunidad lingüística"
 msgid "ward"
 msgstr "Distrito"
 
-msgid "Postal Code"
-msgstr "Código postal"
-
 msgid "National Park"
 msgstr "Parque Nacional"
 
@@ -24886,6 +24909,18 @@ msgstr "Isla"
 msgid "Islet"
 msgstr "Islote"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natural"
 
@@ -25249,6 +25284,9 @@ msgstr "Nombre del lugar"
 msgid "City name"
 msgstr "Nombre de la ciudad"
 
+msgid "Post code"
+msgstr "Código postal"
+
 msgid "Country code"
 msgstr "Código del país"
 
@@ -25977,6 +26015,9 @@ msgstr ""
 "o paso subterráneo. Elimine {1} o agregue una etiqueta de túnel si procede. "
 "También puedes validar el cruce de puentes y sus {1} etiquetas."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} está obsoleto"
 
@@ -27888,6 +27929,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "alto"
+
+msgid "medium"
+msgstr "medio"
+
+msgid "low"
+msgstr "profundidad"
+
 msgid "symbol"
 msgstr "símbolo"
 
@@ -30416,6 +30466,15 @@ msgstr[1] "{0} imágenes giradas"
 msgid "2 images unjoined"
 msgstr "2 imágenes  separadas"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31908,23 +31967,12 @@ msgstr "Impresión detenida"
 msgid "Printing has failed."
 msgstr "La impresión ha fallado."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} seleccionado"
-
-msgid "Selected: {0}"
-msgstr "Seleccionado: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Complemento Proj4J"
-
-msgid "Code"
-msgstr "Código"
-
 msgid "Add stop position"
 msgstr "Añadir posición de parada"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
 msgstr ""
+"¿Desea descargar las referentes de plataformas y posiciones de paradas?"
 
 msgid "Remember my choice and do not ask me again in this session"
 msgstr "Recordar mi elección y no volver a preguntar en esta sesión"
@@ -31960,14 +32008,24 @@ msgid "How do you want to proceed?"
 msgstr "¿Cómo desea proceder?"
 
 msgid "PT_Assistant Proceed Request"
-msgstr ""
+msgstr "PT_Assistant procedió a la solicitud"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr ""
+msgstr "PT: La posición de parada no es parte de una vía"
 
 msgid "PT: Platform should not be part of a way"
+msgstr "PT: La plataforma no debe formar parte de una vía"
+
+msgid "PT: Stop position or platform is not part of a stop area relation"
 msgstr ""
 
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr "Mensaje de PT_Assistant"
+
 msgid "Public Transport Assistant tests"
 msgstr "Tests del Asistente de Transporte Público"
 
@@ -31996,6 +32054,30 @@ msgstr "PT: La ruta debe empezar y terminar con una posición de parada"
 msgid "PT: First or last way needs to be split"
 msgstr "PT: Es necesario dividir la primera o última vía"
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 "PT: El tipo de ruta no corresponde con el tipo de carretera por la que pasa"
@@ -32008,6 +32090,9 @@ msgstr ""
 "PT: La ruta pasa por una carretera de un único sentido en la dirección "
 "equivocada"
 
+msgid "rail"
+msgstr "ferrocarril"
+
 msgid "Can''t parse a time from this string."
 msgstr "No se puede deserializar una hora con esta cadena de caracteres."
 
@@ -33208,6 +33293,9 @@ msgstr "Ocurrió un error, inténtelo de nuevo"
 msgid "No change to upload!"
 msgstr "¡Sin cambios que subir!"
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "No se puede colocar un nodo fuera del mundo."
 
@@ -35033,10 +35121,10 @@ msgstr[1] ""
 "¿Sobrescribir las etiquetas ''{0}'' {1} de {2} con el nuevo valor ''{3}''?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Buscar elementos de Wikidata"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Clave objetivo: "
 
 msgid "Add names from Wikipedia"
 msgstr "Añadir nombres desde Wikipedia"
@@ -35047,6 +35135,12 @@ msgstr ""
 "Obtiene los enlaces interwiki de Wikipedia para agregar varias etiquetas de "
 "denominación"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -35077,13 +35171,13 @@ msgid "Not linked yet"
 msgstr "no enlazado aún"
 
 msgid "{0}: {1}"
-msgstr ""
+msgstr "{0}: {1}"
 
 msgid "Wikidata"
-msgstr ""
+msgstr "Wikidata"
 
 msgid "Fetches all coordinates from Wikidata in the current view"
-msgstr ""
+msgstr "Obtiene todas las coordenadas de Wikidata de la vista actual"
 
 msgid "Fetches all coordinates from Wikipedia in the current view"
 msgstr "Obtiene todas las coordenadas de Wikipedia para la vista actual"
@@ -35095,9 +35189,6 @@ msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 "Obtiene una lista de todos los artículos de Wikipedia de una categoría"
 
-msgid "Enter the Wikipedia category"
-msgstr "Introduzca la categoría de Wikipedia"
-
 msgid "Clipboard"
 msgstr "Portapapeles"
 
diff --git a/i18n/po/et.po b/i18n/po/et.po
index c1f183f..fe99827 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-01-02 11:25+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: 2016-07-12 04:41+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:42+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: et\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,24 +114,6 @@ msgstr ""
 "Parameetri \"downloadgps\" väärtuseks ei sobi failinimi või failile viitav "
 "URL"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM vajab Java versiooni {0}.</h2>Tuvastatud Java version: "
-"{1}.<br>Saate <ul><li>uuendada oma Java (JRE) või</li><li>kasutada varasemat "
-"(Java {2} ühilduvat) versiooni JOSMist.</li></ul>Lisainfo:"
-
-msgid "Exit JOSM"
-msgstr "Välju JOSMist"
-
-msgid "Continue, try anyway"
-msgstr "Jätka, proovi ikka"
-
-msgid "Error"
-msgstr "Viga"
-
 msgid "About"
 msgstr "Teave"
 
@@ -242,6 +224,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Lisa  aluskaart {0}"
 
+msgid "Error"
+msgstr "Viga"
+
 msgid "Select image format for WMS layer"
 msgstr "Vali WMS kihi pildivorming"
 
@@ -523,10 +508,8 @@ msgstr "Laadi alla ühele valitud objektidest viitavad objektid"
 msgid "Duplicate"
 msgstr "Tee koopia"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
-"Lõikepuhvrisse kopeerimise ja kohese kleepimise tagajärjel tekkinud "
-"topeltvalik."
 
 msgid "Exit"
 msgstr "Välju"
@@ -1108,23 +1091,14 @@ msgstr "Overpass päring: "
 msgid "Paste"
 msgstr "Kleebi"
 
-msgid "Paste contents of paste buffer."
-msgstr "Kleebi puhvri sisu."
-
-msgid "Delete incomplete members?"
-msgstr "Kas kustutan mittetäielikud liikmed?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Kleebi ilma mittetäielike liikmeteta"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Andmed lõikepuhvris sisaldavad mittetäielikke objekte.  Kleepimisel "
-"eemaldatakse mittetäielikud objektid. Kas soovid kleepida andmed ilma "
-"mittetäielike objektideta?"
 
 msgid "Paste Tags"
 msgstr "Kleebi sildid."
@@ -1132,16 +1106,6 @@ msgstr "Kleebi sildid."
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Lisa kõikidele valitud objektidele puhvris olevad sildid."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Kleebin {0} sildi"
-msgstr[1] "Kleebin {0} silti"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0} objektile"
-msgstr[1] "{0} objektile"
-
 msgid "Preferences..."
 msgstr "Eelistused..."
 
@@ -1863,6 +1827,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "Viga allalaadimisel"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "GPS allalaadimine"
 
@@ -2909,7 +2876,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2961,6 +2928,9 @@ msgstr[1] "objekti"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2993,9 +2963,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5668,12 +5635,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5687,6 +5648,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5867,6 +5834,31 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Kleebin {0} sildi"
+msgstr[1] "Kleebin {0} silti"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0} objektile"
+msgstr[1] "{0} objektile"
+
+msgid "Delete incomplete members?"
+msgstr "Kas kustutan mittetäielikud liikmed?"
+
+msgid "Paste without incomplete members"
+msgstr "Kleebi ilma mittetäielike liikmeteta"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Andmed lõikepuhvris sisaldavad mittetäielikke objekte.  Kleepimisel "
+"eemaldatakse mittetäielikud objektid. Kas soovid kleepida andmed ilma "
+"mittetäielike objektideta?"
+
 msgid "For selected objects only"
 msgstr "Ainult valitud objektid"
 
@@ -7738,11 +7730,6 @@ msgstr "Liiguta valitud liiget ülespoole"
 msgid "Apply the updates and close the dialog"
 msgstr "Sakenda uuendused ja sule dialoog"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9270,13 +9257,6 @@ 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 ""
 
@@ -9292,6 +9272,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Salvesta kiht"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12619,6 +12604,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13418,6 +13406,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14146,6 +14137,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14172,6 +14175,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14183,21 +14193,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr "reserveeritud"
 
@@ -14355,67 +14353,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr "XML-skeemi laadimine ebaõnnestus."
 
-msgid "Do nothing"
-msgstr "Ära tee midagi"
-
-msgid "Report Bug"
-msgstr "Teata veast"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Aset leidis ootamatu erandkäitumine.<br>See on alati programmi viga. Kui sa "
-"töötad JOSMi viimase<br>versiooniga, siis võiksid kaaluda veaaruande "
-"esitamist."
 
-msgid "Update JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
+msgid "Report Bug"
+msgstr "Teata veast"
+
 msgid "Suppress further error dialogs for this session."
 msgstr "Ära näita rohkem veateateid selle seansi ajal."
 
-msgid "Unexpected Exception"
-msgstr "Ootamatu erandolukord"
-
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Tekst on juba kopeeritud lõikepuhvrisse.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14751,9 +14760,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14778,9 +14784,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14802,7 +14805,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14853,7 +14856,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14928,7 +14934,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16221,9 +16230,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr "Lisab JOSMi kaartide trükkimise funktsiooni"
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16364,8 +16370,9 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Lihtsustab OSM objektide linkimist Wikipedia aktiklitega"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -16599,17 +16606,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Kasutab elektrit"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "kontaktliin"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ei"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "jah"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "raudtee"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Pinge voltides (V)"
@@ -16657,9 +16668,15 @@ msgstr "Avatud"
 msgid "Wheelchairs"
 msgstr "Ratastoolid"
 
+msgid "yes"
+msgstr "jah"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "ei"
+
 msgid "Brand"
 msgstr "Kaubamärk"
 
@@ -17072,8 +17089,8 @@ msgstr ""
 msgid "Population"
 msgstr "Elanikke"
 
-msgid "Post code"
-msgstr "Sihtnumber"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Veebileht"
@@ -17235,15 +17252,6 @@ msgstr "šiia"
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "madal"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -18810,6 +18818,9 @@ msgstr "Metroo"
 msgid "Tram"
 msgstr "Tramm"
 
+msgid "Funicular"
+msgstr "Köisraudtee"
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19313,9 +19324,6 @@ msgstr "Troll"
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr "Köisraudtee"
-
 msgid "Ferry"
 msgstr "Parvlaev"
 
@@ -20519,6 +20527,9 @@ msgstr "Staadion"
 msgid "Sports Centre"
 msgstr "Spordikeskus"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20605,6 +20616,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20661,6 +20676,9 @@ msgstr "Traavivõistlused"
 msgid "Gymnastics"
 msgstr "Võimlemine"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22517,6 +22535,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22616,6 +22643,9 @@ msgstr ""
 msgid "food"
 msgstr "toit"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22798,6 +22828,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22947,9 +22989,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23105,6 +23144,18 @@ msgstr "Saar"
 msgid "Islet"
 msgstr "Laid"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Loodus"
 
@@ -23449,6 +23500,9 @@ msgstr ""
 msgid "City name"
 msgstr "Linna nimi"
 
+msgid "Post code"
+msgstr "Sihtnumber"
+
 msgid "Country code"
 msgstr "Riigi kood"
 
@@ -24165,6 +24219,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25856,6 +25913,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "madal"
+
 msgid "symbol"
 msgstr ""
 
@@ -28208,6 +28274,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29601,18 +29676,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29656,6 +29719,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29681,6 +29754,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29690,6 +29787,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "raudtee"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30831,6 +30931,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32442,6 +32545,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32485,9 +32594,6 @@ msgstr "Kategooria"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Tõmbab alla kõikide Vikipeedia artiklite nimistu antud kategoorias"
 
-msgid "Enter the Wikipedia category"
-msgstr "Sisesta Vikipeedia kategooria"
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/eu.po b/i18n/po/eu.po
index 31ef7d6..023b311 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:35+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:35+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: eu\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,21 +114,6 @@ msgstr ""
 "\"downloadgps\" parametroak, \"gpsdeskargatu\" parametroak, ez ditu artxibo "
 "izenak onartzen ezta artxiboen URLak ere"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Irten JOSMtik"
-
-msgid "Continue, try anyway"
-msgstr "Jarraitu, saiatu edonola ere"
-
-msgid "Error"
-msgstr "Errorea"
-
 msgid "About"
 msgstr "Honi buruz"
 
@@ -239,6 +224,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Errorea"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -520,8 +508,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Bikoiztu"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Bikoiztu aukeratutakoa kopiatu eta berehala itsatsi erabiliz"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Irten"
@@ -1106,21 +1094,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Itsatsi"
 
-msgid "Paste contents of paste buffer."
-msgstr "Arbeleko edukiak itsatsi."
-
-msgid "Delete incomplete members?"
+msgid "Paste contents of clipboard."
 msgstr ""
-"Ezabatu datu guztiak eman ez dituzten bazkideak? Ezabatu profila osatu gabe "
-"dauzkatenak?"
 
-msgid "Paste without incomplete members"
-msgstr "Erantsi osatu gabeko bazkiderik gabe"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1129,16 +1109,6 @@ msgstr "Etiketak itsatsi"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Aukeraturiko elementu guztiei, arbeleko edukiaren etiketak aplikatu."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "{0} etiketa itsasten"
-msgstr[1] "{0} etiketa itsasten"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Hobespenak..."
 
@@ -1872,6 +1842,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "Deskarga iraun duen bitartean errore batzuk detektatu dira"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2935,8 +2908,8 @@ msgstr "Aldatu bidea  {0}"
 msgid "Change relation {0}"
 msgstr "Aldatu erlazioa {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "{0}tik aldatutako nodoak"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Ezabatu \"{0}\" hori ''{1}'' nodotik"
@@ -2987,6 +2960,9 @@ msgstr[1] "objektuak"
 msgid "Change relation member role for {0} {1}"
 msgstr "Aldatu erlazioko partaideen rola {0} {1} hauetarako"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}'' ezabatu da"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Gutxienez objektu bat beharko duzu ezabatzeko, zeure bilduman ez dago ezer"
@@ -3020,9 +2996,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Ezabatu {0} erlazioa"
 msgstr[1] "Ezabatu {0} erlazioak"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}'' ezabatu da"
-
 msgid "Delete confirmation"
 msgstr "Konfirmazioa ezabatu"
 
@@ -5759,12 +5732,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5778,6 +5745,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr "Aukeratu balio bat"
 
@@ -5957,6 +5930,30 @@ msgstr "Giltz berria"
 msgid "New value"
 msgstr "Balio berria"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "{0} etiketa itsasten"
+msgstr[1] "{0} etiketa itsasten"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+"Ezabatu datu guztiak eman ez dituzten bazkideak? Ezabatu profila osatu gabe "
+"dauzkatenak?"
+
+msgid "Paste without incomplete members"
+msgstr "Erantsi osatu gabeko bazkiderik gabe"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr "Aukeratutako objektuentzat soilik"
 
@@ -7813,11 +7810,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9303,13 +9295,6 @@ 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 ""
 
@@ -9325,6 +9310,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Geruza gorde"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12607,6 +12597,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13397,6 +13390,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14108,6 +14104,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14134,6 +14142,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14145,21 +14160,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14303,64 +14306,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14699,9 +14716,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14726,9 +14740,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14750,7 +14761,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14801,7 +14812,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14876,7 +14890,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16179,9 +16196,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16341,7 +16355,8 @@ msgstr "Elkar-konektaturiko bide luzeen deskarga erraza"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16578,17 +16593,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Elektrifikatua"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "kontaktu-bidea"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ez"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "bai"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "trenbidea"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16636,9 +16655,15 @@ msgstr "Irekiera-ordutegia"
 msgid "Wheelchairs"
 msgstr "Gurpil-aulkiak"
 
+msgid "yes"
+msgstr "bai"
+
 msgid "limited"
 msgstr "mugatua"
 
+msgid "no"
+msgstr "ez"
+
 msgid "Brand"
 msgstr ""
 
@@ -17051,8 +17076,8 @@ msgstr "baso"
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Posta-kodea"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17214,15 +17239,6 @@ msgstr "xii"
 msgid "sunni"
 msgstr "suni"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "baxua"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18789,6 +18805,9 @@ msgstr "Metroa"
 msgid "Tram"
 msgstr "Tranbia"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "Autobusarentzako bidea"
 
@@ -19292,9 +19311,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20498,6 +20514,9 @@ msgstr "Estadioa"
 msgid "Sports Centre"
 msgstr "Kiroldegia"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Kirol-zelaia"
 
@@ -20584,6 +20603,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20640,6 +20663,9 @@ msgstr "Zaldi-lasterketak"
 msgid "Gymnastics"
 msgstr "Gimnasia"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22496,6 +22522,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22595,6 +22630,9 @@ msgstr "gorotz-poltsa"
 msgid "food"
 msgstr "Elikadura"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22777,6 +22815,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22926,9 +22976,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23084,6 +23131,18 @@ msgstr "Irla"
 msgid "Islet"
 msgstr "Irlatxoa"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23428,6 +23487,9 @@ msgstr ""
 msgid "City name"
 msgstr "Hiriaren izena"
 
+msgid "Post code"
+msgstr "Posta-kodea"
+
 msgid "Country code"
 msgstr "Estatuaren kodea"
 
@@ -24144,6 +24206,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25825,6 +25890,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "baxua"
+
 msgid "symbol"
 msgstr ""
 
@@ -28171,6 +28245,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29561,18 +29644,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29616,6 +29687,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29641,6 +29722,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29650,6 +29755,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "trenbidea"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30791,6 +30899,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32403,6 +32514,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32446,9 +32563,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/fa.po b/i18n/po/fa.po
index ff5830f..a2d1ce5 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:58+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:01+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: fa\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "نادیده گرفتن فایل URL ناقص: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "پارامتر \"downloadgps\" نام ها یا آدرس های پرونده را نپذیرفت"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "خروج از JOSM"
-
-msgid "Continue, try anyway"
-msgstr "ادامه، به هر حال"
-
-msgid "Error"
-msgstr "خطا"
-
 msgid "About"
 msgstr "درباره"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "افزودن لایه تصویری {0}"
 
+msgid "Error"
+msgstr "خطا"
+
 msgid "Select image format for WMS layer"
 msgstr "انتخاب فرمت تصویر برای لایه WMS"
 
@@ -517,8 +505,8 @@ msgstr "دانلود اشیا بازگشت داده شده به یکی از اش
 msgid "Duplicate"
 msgstr "تکثیر کردن"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "تکثیر کردن انتخابی توسط کپی و چسباندن فوری"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "خروج"
@@ -1132,22 +1120,14 @@ msgstr ""
 msgid "Paste"
 msgstr "چسباندن"
 
-msgid "Paste contents of paste buffer."
-msgstr "چسباندن محتویات میانگیر چسبان"
-
-msgid "Delete incomplete members?"
-msgstr "حذف اعضای ناقص؟"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "چسباندن بدون اعضای ناقص"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"داده های کپی شده شامل اشیا ناقص اند. هنگام چسباندن اشیا ناقص پاک میشوند. "
-"میخواهید داده ها را بدون اشیا ناقص جایگذاری کنید؟"
 
 msgid "Paste Tags"
 msgstr "چسباندن برچسب ها"
@@ -1155,18 +1135,6 @@ msgstr "چسباندن برچسب ها"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "بکار بردن برچسب های میانگیر چسبان در همه ی موارد انتخابی."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-"چسباندن {0} برچسب\r\n"
-"چسباندن {0} برچسب"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-"به {0} شیئ\r\n"
-"به {0} شیئ"
-
 msgid "Preferences..."
 msgstr "ترجیحات..."
 
@@ -1868,6 +1836,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2892,7 +2863,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2944,6 +2915,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2976,9 +2950,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5639,12 +5610,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5658,6 +5623,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5837,6 +5808,32 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+"چسباندن {0} برچسب\r\n"
+"چسباندن {0} برچسب"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+"به {0} شیئ\r\n"
+"به {0} شیئ"
+
+msgid "Delete incomplete members?"
+msgstr "حذف اعضای ناقص؟"
+
+msgid "Paste without incomplete members"
+msgstr "چسباندن بدون اعضای ناقص"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"داده های کپی شده شامل اشیا ناقص اند. هنگام چسباندن اشیا ناقص پاک میشوند. "
+"میخواهید داده ها را بدون اشیا ناقص جایگذاری کنید؟"
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7690,11 +7687,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9185,13 +9177,6 @@ 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 ""
 
@@ -9207,6 +9192,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12487,6 +12477,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13276,6 +13269,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13987,6 +13983,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14013,6 +14021,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14024,21 +14039,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14182,64 +14185,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14573,9 +14590,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14600,9 +14614,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14624,7 +14635,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14675,7 +14686,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14750,7 +14764,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16036,9 +16053,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16177,7 +16191,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16412,15 +16427,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16470,9 +16489,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16885,7 +16910,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -17048,15 +17073,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18623,6 +18639,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19126,9 +19145,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20332,6 +20348,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20418,6 +20437,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20474,6 +20497,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22330,6 +22356,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22429,6 +22464,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22611,6 +22649,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22760,9 +22810,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22918,6 +22965,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23262,6 +23321,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23978,6 +24040,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25659,6 +25724,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -28005,6 +28079,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29390,18 +29473,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29445,6 +29516,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29470,6 +29551,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29479,6 +29584,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30620,6 +30728,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32224,6 +32335,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32267,9 +32384,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/fi.po b/i18n/po/fi.po
index 9c6ef2d..b0fb31d 100644
--- a/i18n/po/fi.po
+++ b/i18n/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-01-19 17:11+0000\n"
 "Last-Translator: Lauri Kytömaa <Unknown>\n"
 "Language-Team: Finnish <fi 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: 2016-07-12 04:42+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:43+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: fi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,24 +113,6 @@ msgstr "Ohitetaan virheellinen tiedosto-URL: ”{0}”"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametrin ”downloadgps” arvoksi ei kelpaa tiedoston URL eikä nimi."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM vaatii Java version {0}.</h2>Löydetty Java versio: {1}.<br>Voit "
-"<ul><li>päivittää Javan (JRE) tai</li><li>käyttää vanhempaa (Java {2} "
-"yhteensopivaa) JOSM-versiota.</li></ul>Lisää tietoa:"
-
-msgid "Exit JOSM"
-msgstr "Poistu JOSMista"
-
-msgid "Continue, try anyway"
-msgstr "Jatka, yritä silti"
-
-msgid "Error"
-msgstr "Virhe"
-
 msgid "About"
 msgstr "Tietoja"
 
@@ -246,6 +228,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Lisää kuvataso {0}"
 
+msgid "Error"
+msgstr "Virhe"
+
 msgid "Select image format for WMS layer"
 msgstr "Valitse WMS-tason kuvaformaatti"
 
@@ -530,8 +515,8 @@ msgstr "Lataa valittuihin objekteihin viittaavat objektit"
 msgid "Duplicate"
 msgstr "Monista"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Monistaa valinnan tekemällä peräkkäin toiminnot kopioi ja liitä."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Poistu"
@@ -1152,23 +1137,14 @@ msgstr "Overpass-hakulauseke: "
 msgid "Paste"
 msgstr "Liitä"
 
-msgid "Paste contents of paste buffer."
-msgstr "Liitä leikepöydän sisältö"
-
-msgid "Delete incomplete members?"
-msgstr "Poista keskeneräiset jäsenet?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Liitä ilman keskeneräisiä jäseniä?"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Kopioidut tiedot sisältävät vaillinaisia objekteja. Liitettäessä "
-"vaillinaiset objektit poistetaan. Haluatko liittää tiedot ilman vaillinaisia "
-"objekteja?"
 
 msgid "Paste Tags"
 msgstr "Liitä tagit"
@@ -1176,16 +1152,6 @@ msgstr "Liitä tagit"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Liitä valituille kohteille tagit leikepöydältä."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Liitetään {0} tagi"
-msgstr[1] "Liitetään {0} tagia"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0}-objektiin"
-msgstr[1] "{0}-objekteihin"
-
 msgid "Preferences..."
 msgstr "Asetukset..."
 
@@ -1936,6 +1902,9 @@ msgstr "Hae ja lataa muutoskokoelmia..."
 msgid "Errors during download"
 msgstr "Virheitä latauksen aikana"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Lataa GPS-pisteet"
 
@@ -3036,8 +3005,8 @@ msgstr "Muuta polkua {0}"
 msgid "Change relation {0}"
 msgstr "Muuta relaatiota {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Muuta kohteen {0} pistelistaa"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Poista \"{0}\" pisteestä \"{1}\""
@@ -3088,6 +3057,9 @@ msgstr[1] "objektia"
 msgid "Change relation member role for {0} {1}"
 msgstr "Vaihdetaan relaatiojäsenen {0} {1} rooli"
 
+msgid "Deleted ''{0}''"
+msgstr "Poistettiin \"{0}\""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Pitäisi olla ainakin yksi poistettava kohde, saatiin tyhjä kokoelma"
 
@@ -3120,9 +3092,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Poistetaan {0} relaatio"
 msgstr[1] "Poistetaan {0} relaatiota"
 
-msgid "Deleted ''{0}''"
-msgstr "Poistettiin \"{0}\""
-
 msgid "Delete confirmation"
 msgstr "Poiston vahvistus"
 
@@ -5913,12 +5882,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Yhdistämisen vahvistus"
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5932,6 +5895,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr "Valitse arvo"
 
@@ -6115,6 +6084,31 @@ msgstr "Uusi avain"
 msgid "New value"
 msgstr "Uusi arvo"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Liitetään {0} tagi"
+msgstr[1] "Liitetään {0} tagia"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0}-objektiin"
+msgstr[1] "{0}-objekteihin"
+
+msgid "Delete incomplete members?"
+msgstr "Poista keskeneräiset jäsenet?"
+
+msgid "Paste without incomplete members"
+msgstr "Liitä ilman keskeneräisiä jäseniä?"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Kopioidut tiedot sisältävät vaillinaisia objekteja. Liitettäessä "
+"vaillinaiset objektit poistetaan. Haluatko liittää tiedot ilman vaillinaisia "
+"objekteja?"
+
 msgid "For selected objects only"
 msgstr "Vain valittujen kohteiden"
 
@@ -8074,13 +8068,6 @@ msgstr "Siirrä valittuja jäseniä ylöspäin"
 msgid "Apply the updates and close the dialog"
 msgstr "Tee muutokset ja sulje tämä ikkuna"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Liitettäviä relaatiojäseniä ei voida lisätä, koska niitä ei löydy nykyisellä "
-"datatasolla."
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9742,13 +9729,6 @@ 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"
 
@@ -9764,6 +9744,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Tallenna kerros"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Karttailmoitustaso"
 
@@ -13181,6 +13166,9 @@ msgstr ""
 "Tiedoston avaaminen ei onnistunut pakatusta tiedostossa ''{0}''. Halutun "
 "tiedoston nimi oli ''{3}'' ja pääte ''{2}''. Poikkeus oli: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Tiedoston {0} nimen vaihtaminen ei onnistunut uudelle nimelle {1}."
 
@@ -14015,6 +14003,9 @@ msgstr "Sallitaanko tämä?"
 msgid "Confirm Remote Control action"
 msgstr "Varmista etähallinnan toimenpide"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14770,6 +14761,18 @@ msgstr ""
 "<strong>Lataus epäonnistui</strong> jos yritit ladata tämän "
 "karttakohteen.<br><br>Virheilmoitus on:<br>{0}</html>"
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14796,6 +14799,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14807,21 +14817,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr "varattu"
 
@@ -14977,79 +14975,78 @@ msgstr "Ohitetaan virheellinen muoto: {0}"
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Älä tee mitään"
-
-msgid "Report Bug"
-msgstr "Ilmoita ohjelmavirheestä"
+msgid "You have encountered a bug in JOSM"
+msgstr "JOSMissa on tapahtunut virhe"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Tapahtui odottamaton poikkeus.<br>Kyse on aina ohjelmointivirheestä. Jos "
-"käytät JOSMin uusinta<br>versiota, pyydämme sinua raportoimaan virheestä."
 
-msgid "Update JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Ohjelmassa ilmeni odottamaton poikkeus. Tämä johtuu "
-"ohjelmointivirheestä.<br><br>Käyttämäsi JOSM:n versio ({0}) ei ole "
-"uusin<br>ns. tested-versio (<b>{1}</b>).<br><br><b>Ole hyvä ja päivitä "
-"JOSM</b> ennen kuin ilmoitat virheestä JOSM:ssa."
+
+msgid "Report Bug"
+msgstr "Ilmoita ohjelmavirheestä"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Älä näytä virheilmoituksia enää tämän käyttökerran aikana."
 
-msgid "Unexpected Exception"
-msgstr "Odottamaton poikkeus"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "JOSMissa on tapahtunut virhe"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Olet törmännyt virheeseen JOSMissa. Varmista, ennen virheraportin "
-"lähettämistä, että käytät JOSMin uusinta versiota sivulta:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Myös liitännäiset tulisi päivittää. Jos kummastakaan keinosta ei ole hyötyä, "
-"lähetä raportti virheenseurantaamme osoitteessa:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Alla näkyvien virheeseen liittyvien tietojen pitäisi siirtyä valmiiksi "
-"raporttiin. Kerro lisäksi, miten virheen saa tapahtumaan, ja yritä selittää "
-"mahdollisimman yksityiskohtaisesti."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
 msgstr ""
-"Jos se ei onnistu, voit syöttää alla olevat tiedot vaihtoehtoisesti "
-"seuraavassa osoitteessa:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Teksti on jo kopioitu leikepöydälle)"
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -15387,9 +15384,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -15414,9 +15408,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15438,7 +15429,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15489,7 +15480,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15564,7 +15558,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16877,9 +16874,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr "Lisää JOSMiin kartan tulostustoiminnon"
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17029,9 +17023,9 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Hakutoiminto gpx-tiedostosta tuoduille reittipisteille."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
-"Työkalu karttakohteiden linkittämiseen helposti Wikipedia-artikkeleihin"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17265,15 +17259,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ei"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "kyllä"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -17323,9 +17321,15 @@ msgstr "Aukioloajat"
 msgid "Wheelchairs"
 msgstr "Esteetön (pyörätuoli)"
 
+msgid "yes"
+msgstr "kyllä"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "ei"
+
 msgid "Brand"
 msgstr ""
 
@@ -17738,8 +17742,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Postinumero"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Verkkosivu"
@@ -17901,15 +17905,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -19478,6 +19473,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Raitiotie"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19981,9 +19979,6 @@ msgstr "Johdinauto"
 msgid "Share taxi"
 msgstr "Kimppataksi"
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr "Lautta"
 
@@ -21187,6 +21182,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Urheilukeskus"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Kenttä"
 
@@ -21273,6 +21271,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -21329,6 +21331,9 @@ msgstr "Hevoskilpailu"
 msgid "Gymnastics"
 msgstr "Voimistelu"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23185,6 +23190,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -23284,6 +23298,9 @@ msgstr "koirankakkapusseja"
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23466,6 +23483,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23615,9 +23644,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23773,6 +23799,18 @@ msgstr "Saari"
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -24117,6 +24155,9 @@ msgstr ""
 msgid "City name"
 msgstr "Kunta"
 
+msgid "Post code"
+msgstr "Postinumero"
+
 msgid "Country code"
 msgstr "Maakoodi"
 
@@ -24834,6 +24875,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} ei ole enää suositeltu merkintätapa"
 
@@ -26553,6 +26597,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -28931,6 +28984,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30335,18 +30397,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -30390,6 +30440,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30415,6 +30475,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30424,6 +30508,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -31569,6 +31656,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Pistettä ei voi sijoittaa maailman ulkopuolelle."
 
@@ -33236,6 +33326,12 @@ msgstr ""
 "Hae Wikipedian artikkelista linkit eri kieliversioihin ja lisää kohteelle "
 "puuttuvat nimiversiot."
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -33281,9 +33377,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/fil.po b/i18n/po/fil.po
index eb28b31..618c28a 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:13+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:17+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: fil\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr "Ituloy, subukan pa din"
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "Patungkol"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/fo.po b/i18n/po/fo.po
index c9bfa90..4eb7698 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:41+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:42+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr "{0}: valmøguleiki ''{1}'' er tvítýddur"
@@ -111,21 +111,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Feilur"
-
 msgid "About"
 msgstr "Um"
 
@@ -233,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Feilur"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -508,7 +496,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1070,19 +1058,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1091,16 +1073,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1798,6 +1770,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2822,7 +2797,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/fr.po b/i18n/po/fr.po
index 99d56c2..e47f9cb 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-07 10:32+0000\n"
-"Last-Translator: Djam <specimail-forums at yahoo.fr>\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-09 15:32+0000\n"
+"Last-Translator: Don-vip <Unknown>\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: 2016-07-12 04:42+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:43+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: fr\n"
 "X-Poedit-Bookmarks: 1767,-1,-1,2669,-1,-1,-1,-1,-1,-1\n"
 
@@ -115,24 +115,6 @@ msgstr ""
 "Le paramètre \"downloadgps\" n’accepte ni les noms ni les adresses web de "
 "fichiers."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM requiert Java version {0}.</h2>Version de Java détectée: "
-"{1}.<br>Vous pouvez <ul><li>mettre à jour Java (JRE) ou</li><li>utiliser une "
-"version antérieure (compatible Java {2}) de JOSM.</li></ul>Plus d''info:"
-
-msgid "Exit JOSM"
-msgstr "Quitter JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continuer, essayer quand même"
-
-msgid "Error"
-msgstr "Erreur"
-
 msgid "About"
 msgstr "À propos"
 
@@ -246,6 +228,9 @@ msgstr "Sélectionner un objet"
 msgid "Add imagery layer {0}"
 msgstr "Ajouter le calque d’imagerie {0}"
 
+msgid "Error"
+msgstr "Erreur"
+
 msgid "Select image format for WMS layer"
 msgstr "Sélectionnez le format d''image pour le calque WMS"
 
@@ -536,8 +521,8 @@ msgstr "Télécharger les objets se référant à la sélection"
 msgid "Duplicate"
 msgstr "Dupliquer"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dupliquer la sélection par un copier-coller"
+msgid "Duplicate selection."
+msgstr "Dupliquer la sélection."
 
 msgid "Exit"
 msgstr "Quitter"
@@ -1171,22 +1156,15 @@ msgstr "Requête Overpass  : "
 msgid "Paste"
 msgstr "Coller"
 
-msgid "Paste contents of paste buffer."
-msgstr "Coller le contenu du presse-papier"
+msgid "Paste contents of clipboard."
+msgstr "Coller le contenu du presse-papiers"
 
-msgid "Delete incomplete members?"
-msgstr "Supprimer les membres incomplets ?"
-
-msgid "Paste without incomplete members"
-msgstr "Coller sans les membres incomplets"
+msgid "Paste at source position"
+msgstr "Coller à la position originale"
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Les données copiées contiennent des objets incomplets. Ils seront retirés "
-"lors du collage. Voulez-vous coller les données sans les objets incomplets ?"
+"Coller le contenu du presse-papiers à la position à laquelle il a été copié"
 
 msgid "Paste Tags"
 msgstr "Coller les attributs"
@@ -1194,16 +1172,6 @@ msgstr "Coller les attributs"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Appliquer les attributs du contenu du presse-papier à la sélection"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Collage de l’attribut {0}"
-msgstr[1] "Collage des attributs {0}"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "à {0} objet"
-msgstr[1] "à {0} objets"
-
 msgid "Preferences..."
 msgstr "Préférences…"
 
@@ -1954,6 +1922,9 @@ msgstr "Récupérer et télécharger les groupes de modifications…"
 msgid "Errors during download"
 msgstr "Des erreurs sont survenues lors du téléchargement."
 
+msgid "Download Geo URL"
+msgstr "Télécharger une Géo URL"
+
 msgid "Download GPS"
 msgstr "Téléchargement GPS"
 
@@ -3079,8 +3050,8 @@ msgstr "Modifier le chemin {0}"
 msgid "Change relation {0}"
 msgstr "Modifier la relation {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Nœuds changés parmi {0}"
+msgid "Change nodes of {0}"
+msgstr "Modifier les nœuds de {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Supprimer ''{0}'' du nœud ''{1}''"
@@ -3131,6 +3102,9 @@ msgstr[1] "objets"
 msgid "Change relation member role for {0} {1}"
 msgstr "Modifier le rôle du membre en {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}'' supprimé"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Au moins un objet à supprimer est requis. Actuellement, la collection est "
@@ -3165,9 +3139,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Supprimer {0} relation"
 msgstr[1] "Supprimer {0} relations"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}'' supprimé"
-
 msgid "Delete confirmation"
 msgstr "Confirmer la suppression"
 
@@ -4384,6 +4355,8 @@ msgid ""
 "With the currently used mappaint style(s) the style for outer way mismatches "
 "the area style"
 msgstr ""
+"Avec les styles de rendu actuellement utilisés, le style du chemin extérieur "
+"ne correspond pas au style de la surface"
 
 msgid "Area style on outer way"
 msgstr "Style de la zone sur la partie externe du chemin"
@@ -4507,7 +4480,7 @@ msgid "Route relation contains a gap"
 msgstr "La relation Route contien un vide"
 
 msgid "Stop position not part of route"
-msgstr ""
+msgstr "Le point d''arrêt ne fait pas partie de la route."
 
 msgid "Role verification problem"
 msgstr "Problème de vérification de rôle"
@@ -6074,12 +6047,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmation de combinaison"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>manquant</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6102,6 +6069,12 @@ msgstr[1] ""
 "may have unwanted tags.<br/>If you want to continue, you are shown a dialog "
 "to fix the conflicting tags.<br/><br/>Do you want to continue?"
 
+msgid "<i>missing</i>"
+msgstr "<i>manquant</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Choisir une valeur"
 
@@ -6308,6 +6281,30 @@ msgstr "Nouvelle clé"
 msgid "New value"
 msgstr "Nouvelle valeur"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Collage de l’attribut {0}"
+msgstr[1] "Collage des attributs {0}"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "à {0} objet"
+msgstr[1] "à {0} objets"
+
+msgid "Delete incomplete members?"
+msgstr "Supprimer les membres incomplets ?"
+
+msgid "Paste without incomplete members"
+msgstr "Coller sans les membres incomplets"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Les données copiées contiennent des objets incomplets. Ils seront retirés "
+"lors du collage. Voulez-vous coller les données sans les objets incomplets ?"
+
 msgid "For selected objects only"
 msgstr "Seulement pour la sélection"
 
@@ -6870,7 +6867,7 @@ msgid "configure the map painting style"
 msgstr "Configurer le coloriage de la carte"
 
 msgid "MapPaint"
-msgstr "MapPaint"
+msgstr "Rendu"
 
 msgid "On/Off"
 msgstr "On/Off"
@@ -8026,7 +8023,7 @@ msgid "Ignore key ''{0}''"
 msgstr "Ignorer la clé ''{0}''"
 
 msgid "Ignore tag ''{0}''"
-msgstr ""
+msgstr "Ignorer le tag ''{0}''"
 
 msgid "Edit ignore list"
 msgstr "Éditer la liste des éléments ignorés"
@@ -8303,13 +8300,6 @@ msgstr "Monter le membre"
 msgid "Apply the updates and close the dialog"
 msgstr "Appliquer les modifications et fermer la fenêtre"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Les membres du presse-papier ne peuvent pas être ajoutés parce qu’ils ne "
-"sont pas inclus dans ce calque"
-
 msgid "Relation Editor: Refresh"
 msgstr "Editeur de relation : actualiser"
 
@@ -9912,6 +9902,8 @@ msgstr "zoomer pour charger davantage de tuiles"
 
 msgid "increase tiles zoom level (change resolution) to see more detail"
 msgstr ""
+"augmenter le niveau de zoom des tuiles (changement de résolution) pour voir "
+"plus de détails"
 
 msgid "No tiles at this zoom level"
 msgstr "Pas de tuiles à ce niveau de zoom."
@@ -10033,17 +10025,6 @@ 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."
 
@@ -10051,7 +10032,7 @@ msgid "The layer {0} does not support the new projection {1}."
 msgstr "La couche {0} ne supporte pas la nouvelle projection {1}."
 
 msgid "Supported projections are: {0}"
-msgstr ""
+msgstr "Les projections supportées sont : {0}"
 
 msgid "Change the projection again or remove the layer."
 msgstr "Changer à nouveau la projection ou retirer la couche"
@@ -10059,6 +10040,11 @@ msgstr "Changer à nouveau la projection ou retirer la couche"
 msgid "Save Layer"
 msgstr "Enregistrer le calque"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} note"
+msgstr[1] "{0} notes"
+
 msgid "Notes layer"
 msgstr "Calque des notes"
 
@@ -10591,7 +10577,7 @@ msgid "No imagery layers"
 msgstr "Aucun calque d’’imagerie"
 
 msgid "HDOP"
-msgstr ""
+msgstr "HDOP"
 
 msgid "Time"
 msgstr "Heure"
@@ -10600,7 +10586,7 @@ msgid "Direction"
 msgstr "Sens"
 
 msgid "Velocity, {0}"
-msgstr ""
+msgstr "Vélocité, {0}"
 
 msgid "gps point"
 msgstr "point GPS"
@@ -10740,12 +10726,14 @@ msgstr "Sélectionner les styles de rendu de carte"
 
 msgid "Failed to load Mappaint styles from ''{0}''. Exception was: {1}"
 msgstr ""
-"Echec du chargement des styles Mappaint de ''{0}''. Lʼexception était: {1}"
+"Échec du chargement des styles de rendu de ''{0}''. Lʼexception était : {1}"
 
 msgid ""
 "JOSM does no longer support mappaint styles written in the old XML format.\n"
 "Please update ''{0}'' to MapCSS"
 msgstr ""
+"JOSM n''accepte plus les styles de rendu écrits à l''ancien format XML.\n"
+"Veuillez mettre à jour ''{0}'' avec MapCSS"
 
 msgid "loading style ''{0}''..."
 msgstr "Chargement du modèle ''{0}''…"
@@ -12052,7 +12040,7 @@ msgid "Reverse zoom with mouse wheel"
 msgstr "Inverser le zoom de la molette"
 
 msgid "Intermediate steps between native resolutions"
-msgstr ""
+msgstr "Étapes intermédiaires entre les résolutions natives"
 
 msgid "Show localized name in selection lists, if available"
 msgstr "Afficher les noms traduits dans la fenêtre de sélection"
@@ -12085,7 +12073,7 @@ msgstr ""
 "fonctionnalités comme le filtrage de fichiers"
 
 msgid "Check if you feel opposite direction more convenient"
-msgstr ""
+msgstr "Cochez si vous préférez la direction opposée"
 
 msgid ""
 "Divide intervals between native resolution levels to smaller steps if they "
@@ -13711,6 +13699,9 @@ msgstr ""
 "Impossible dʼouvrir le fichier avec lʼextension ''{2}'' et le nom ''{3}'' "
 "dans lʼarchive ZIP ''{0}''. Lʼexception était: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Impossible de renommer le fichier de {0} à {1}."
 
@@ -14638,6 +14629,9 @@ msgstr "Voulez-vous autoriser cela ?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmer l’action du contrôle à distance"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15548,6 +15542,18 @@ msgstr ""
 "avez essayé de télécharger cet objet. <br>Le message d’erreur est : "
 "<br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitude"
+
+msgid "URL does not contain valid {0}"
+msgstr "LʼURL ne contient pas {0} valide"
+
+msgid "longitude"
+msgstr "longitude"
+
+msgid "zoom"
+msgstr "zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15582,6 +15588,17 @@ msgstr ""
 "Impossible dʼaccéder au répertoire ''{0}'' pour des raisons de droit. "
 "Lʼexception était: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [veuillez saisir son nombre]"
 
@@ -15595,21 +15612,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Ouverture de lʼURL: {0}"
 
-msgid "zoom"
-msgstr "zoom"
-
-msgid "latitude"
-msgstr "latitude"
-
-msgid "longitude"
-msgstr "longitude"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "LʼURL ne contient pas {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "LʼURL ne contient pas {0} valide"
-
 msgid "reserved"
 msgstr "réservé"
 
@@ -15786,80 +15791,81 @@ msgstr "Géométrie malformée ignorée: {0}"
 msgid "Failed to load XML schema."
 msgstr "Impossible de charger le schéma XML."
 
-msgid "Do nothing"
-msgstr "Ne rien faire"
-
-msgid "Report Bug"
-msgstr "Rapporter l’erreur"
+msgid "You have encountered a bug in JOSM"
+msgstr "Vous avez rencontré une erreur dans JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Une erreur de codage est survenue.<br>Merci de remplir un rapport d’erreur "
-"si vous utilisez la dernière version de JOSM."
 
-msgid "Update JOSM"
-msgstr "Mise à jour de JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Une erreur de codage est survenue.<br><br>Cependant, vous utilisez une "
-"vieille version de JOSM ({0}),<br>au lieu d’utiliser la version stable "
-"courante (<b>{1}</b>).<br><br><b>Veuillez mettre à jour JOSM</b> avant de "
-"considérer de signaler un rapport d’erreur."
+
+msgid "Report Bug"
+msgstr "Rapporter l’erreur"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Masquer les prochaines fenêtres d’erreur pour cette session."
 
-msgid "Unexpected Exception"
-msgstr "Exception inattendue"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Vous avez rencontré une erreur dans JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Une erreur est survenue. Avant de remplir le rapport d’erreur, vérifiez que "
-"vous utilisez la dernière version de JOSM :"
+"L''ouverture du rapport de bug a échoué. Veuillez rapporter manuellement "
+"l''erreur à l''adresse :"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Vous devriez mettre à jour vos greffons. Si le problème persiste, merci de "
-"remplir un rapport d’erreur sur notre site :"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Le rapport devrait déjà être rempli. Merci d’ajouter une information sur la "
-"manière de reproduire l’erreur."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
 msgstr ""
-"Vous pouvez aussi remplir manuellement le rapport à cette adresse web :"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Le rapport a déjà été copié dans votre presse-papier.)"
+msgid "Your current version of JOSM is {0}"
+msgstr "Votre version actuelle de JOSM est la {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM recherche des mises à jour..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Une erreur est survenue pendant la vérification des mises à jour."
+
+msgid "JOSM is up to date."
+msgstr "JOSM est à jour."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"L''ouverture du rapport de bug a échoué. Veuillez rapporter manuellement "
-"l''erreur à l''adresse :"
+
+msgid "Update JOSM"
+msgstr "Mise à jour de JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16208,9 +16214,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Satellite Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16235,9 +16238,6 @@ msgstr "OpenStreetMap (Style allemand)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "Traces GPS OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "OSM MapQuest"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Transport Public (ÖPNV)"
 
@@ -16259,7 +16259,7 @@ msgstr "Carte de chaleur élo de Strava"
 msgid "Strava running heatmap"
 msgstr "Carte de chaleur piéton de Strava"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16310,8 +16310,11 @@ msgstr "OSM Inspector : Adresses"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector : Frontières (Europe)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Argentina (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Argentina (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI noir et blanc 2.5 m"
@@ -16350,7 +16353,7 @@ msgid "basemap.at Orthofoto"
 msgstr "basemap.at Orthophoto"
 
 msgid "Geoimage.at MaxRes"
-msgstr ""
+msgstr "Geoimage.at MaxRes"
 
 msgid "Graz: Basiskarte (base map)"
 msgstr "Graz : Basiskarte (carte de base)"
@@ -16385,8 +16388,11 @@ msgstr "VoGIS : Plan de zonage"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "Imagerie aérienne AGIV(laanderen), couvre la région de Bruxelles"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "Imagerie numérique URBISfr (2013)"
@@ -17070,7 +17076,7 @@ msgid "MSR Maps Urban"
 msgstr "MSR Carte urbaine"
 
 msgid "USGS Topographic Maps"
-msgstr ""
+msgstr "Cartes topographiques de l''USGS"
 
 msgid "USGS Large Scale Imagery"
 msgstr ""
@@ -17526,7 +17532,7 @@ msgstr ""
 "notifié quand quelqu’un se rapproche."
 
 msgid "Allows you to view a GeoJSON file as a layer."
-msgstr ""
+msgstr "Permet de visualiser une fichier GeoJSON dans un calque."
 
 msgid ""
 "Provides parts of the GeoTools library for other JOSM plugins. Not meant to "
@@ -17666,7 +17672,7 @@ msgstr ""
 "utilisant ce greffon."
 
 msgid "Allows the user to work with pictures hosted at mapillary.com"
-msgstr ""
+msgstr "Donne accès aux photos hébergées sur mapillary.com"
 
 msgid ""
 "Provide a measurement dialog and a layer to measure length and angle of "
@@ -17780,13 +17786,12 @@ msgstr "Lire et écrire les fichiers filtre osmosis poly"
 msgid "Adds map printing to JOSM"
 msgstr "Permet à JOSM d’imprimer des cartes"
 
-msgid "adds projections from Proj4J"
-msgstr "Ajoute des projections de Proj4V"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
 msgstr ""
+"Outils de validation et de réparation pour les transports en commun, "
+"conforme à la version 2 du système de tags pour les transports publics"
 
 msgid ""
 "This plugin simplifies the mapping and editing of public transport routes."
@@ -17960,9 +17965,11 @@ msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 "Permet la recherche de points de passage importés à partir d’un fichier gpx"
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
-"Facilite la mise en relation des éléments OSM avec leur article Wikipedia"
+"Simplifie la liaison entre les éléments OSM et les articles Wikipedia ou les "
+"entrées Wikidata"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17986,7 +17993,7 @@ msgid "concrete"
 msgstr "béton"
 
 msgid "concrete:plates"
-msgstr ""
+msgstr "dalles de béton préfabriquées"
 
 msgid "concrete:lanes"
 msgstr ""
@@ -18198,17 +18205,21 @@ msgstr "de croisement"
 msgid "Electrified"
 msgstr "Électrifié"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "par câble aérien"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "non"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "oui"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "par rail"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltage en Volts (V)"
@@ -18256,9 +18267,15 @@ msgstr "Horaires d’ouverture"
 msgid "Wheelchairs"
 msgstr "Accessible aux fauteuils roulants"
 
+msgid "yes"
+msgstr "oui"
+
 msgid "limited"
 msgstr "limité"
 
+msgid "no"
+msgstr "non"
+
 msgid "Brand"
 msgstr "Marque"
 
@@ -18671,7 +18688,7 @@ msgstr "véhicules forestiers"
 msgid "Population"
 msgstr "Population"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Code postal"
 
 msgid "Website"
@@ -18839,15 +18856,6 @@ msgstr "chiisme"
 msgid "sunni"
 msgstr "sunnisme"
 
-msgid "high"
-msgstr "Élevée"
-
-msgid "medium"
-msgstr "Moyenne"
-
-msgid "low"
-msgstr "Faible"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -19428,12 +19436,13 @@ msgstr "catégorie 1"
 
 msgid "Solid: paved or heavily compacted hardcore surface"
 msgstr ""
+"Revêtement dur de type asphalte ou composé de matériaux très compactés"
 
 msgid "grade2"
 msgstr "catégorie 2"
 
 msgid "Mostly Solid: gravel/rock with some soft material mixed in"
-msgstr ""
+msgstr "Gravier compact avec un peu de terre/sable"
 
 msgid "grade3"
 msgstr "catégorie 3"
@@ -20443,6 +20452,9 @@ msgstr "Métro"
 msgid "Tram"
 msgstr "Tramway"
 
+msgid "Funicular"
+msgstr "Funiculaire"
+
 msgid "Bus Guideway"
 msgstr "Bus guidé"
 
@@ -20949,9 +20961,6 @@ msgstr "Trolleybus"
 msgid "Share taxi"
 msgstr "Taxi partagé"
 
-msgid "Funicular"
-msgstr "Funiculaire"
-
 msgid "Ferry"
 msgstr "Ferry"
 
@@ -21047,11 +21056,11 @@ msgid "Plane Parking Position"
 msgstr "Aire de stationnement d’avion"
 
 msgid "Hangar"
-msgstr "Hangar"
+msgstr "Hangar (Aviation)"
 
 msgctxt "building"
 msgid "hangar"
-msgstr "hangar"
+msgstr "hangar (aviation)"
 
 msgctxt "building"
 msgid "yes"
@@ -22160,6 +22169,9 @@ msgstr "Stade"
 msgid "Sports Centre"
 msgstr "Centre sportif"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Terrain de sport"
 
@@ -22246,6 +22258,10 @@ msgid "sports_centre"
 msgstr "centre sportif"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stade"
 
@@ -22302,6 +22318,9 @@ msgstr "Course de chevaux"
 msgid "Gymnastics"
 msgstr "Gymnastique"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "Patinage sur glace"
 
@@ -24165,6 +24184,15 @@ msgstr "Tabac"
 msgid "Hairdresser/Barber"
 msgstr "Coiffeur/Barbier"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr "Unisexe"
+
 msgid "Tattoo"
 msgstr "Tatouages"
 
@@ -24264,6 +24292,9 @@ msgstr "sacs pour excrément"
 msgid "food"
 msgstr "alimentation"
 
+msgid "milk"
+msgstr "lait"
+
 msgid "newspapers"
 msgstr "presse"
 
@@ -24446,6 +24477,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Administration gouvernementale"
 
+msgid "ministry"
+msgstr "ministère"
+
+msgid "prosecutor"
+msgstr "procureur"
+
+msgid "tax"
+msgstr "impôt"
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Assurance"
@@ -24595,9 +24638,6 @@ msgstr "groupe linguistique"
 msgid "ward"
 msgstr "circonscription"
 
-msgid "Postal Code"
-msgstr "Code postal"
-
 msgid "National Park"
 msgstr "Parc National"
 
@@ -24757,6 +24797,18 @@ msgstr "Île"
 msgid "Islet"
 msgstr "Îlot"
 
+msgid "Reef"
+msgstr "Récif"
+
+msgid "coral"
+msgstr "corail"
+
+msgid "oyster"
+msgstr "huître"
+
+msgid "rock"
+msgstr "roche"
+
 msgid "Nature"
 msgstr "Nature"
 
@@ -25115,6 +25167,9 @@ msgstr "Nom du lieu"
 msgid "City name"
 msgstr "Ville"
 
+msgid "Post code"
+msgstr "Code postal"
+
 msgid "Country code"
 msgstr "Indicatif du pays"
 
@@ -25553,16 +25608,16 @@ msgid "natural"
 msgstr "nature"
 
 msgid "Walking Route"
-msgstr ""
+msgstr "Itinéraire de randonnée pédestre"
 
 msgid "Riding Route"
-msgstr ""
+msgstr "Itinéraire de randonnée équestre"
 
 msgid "ihn"
-msgstr ""
+msgstr "Itinéraire international"
 
 msgid "nhn"
-msgstr ""
+msgstr "Itinéraire national"
 
 msgid "rhn"
 msgstr "Itinéraire régionale"
@@ -25838,6 +25893,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} combiné à {1} et {2}. Retirer {1} et {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} est déprécié"
 
@@ -25936,7 +25994,7 @@ msgid "questionable key (ending with a number): {0}"
 msgstr "clé douteuse (termine par un numéro): {0}"
 
 msgid "The key {0} has an uncommon value."
-msgstr ""
+msgstr "La clé {0} possède une valeur peu courante."
 
 msgid "{0} on a node. Should be used on a way."
 msgstr "{0} sur un nœud. Devrait être employé sur un chemin."
@@ -26008,6 +26066,8 @@ msgid ""
 "Waterway ends without a connection to another waterway or the direction of "
 "the waterway is wrong."
 msgstr ""
+"Le cours d''eau s''arrête sans connexion à un autre cours d''eau ou le sens "
+"d''écoulement est improbable."
 
 msgid "Coastline inside {1}"
 msgstr ""
@@ -27745,6 +27805,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "Élevée"
+
+msgid "medium"
+msgstr "Moyenne"
+
+msgid "low"
+msgstr "Faible"
+
 msgid "symbol"
 msgstr "symbole"
 
@@ -28665,16 +28734,16 @@ msgid "Show users on map"
 msgstr "Afficher les utilisateurs sur la carte"
 
 msgid "GeoJSON file"
-msgstr ""
+msgstr "Fichier GeoJSON"
 
 msgid "Loading json file..."
-msgstr ""
+msgstr "Chargement du fichier json..."
 
 msgid "Data Layer from GeoJSON: "
 msgstr ""
 
 msgid "Error loading geojson file {0}"
-msgstr ""
+msgstr "Erreur lors du chargement du fichier geojson {0}"
 
 msgid "Position only"
 msgstr "Seulement la position"
@@ -30268,6 +30337,15 @@ msgstr[1] "{0} images tournées"
 msgid "2 images unjoined"
 msgstr "2 images désassemblées"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31754,18 +31832,6 @@ msgstr "L’impression a été arrêtée"
 msgid "Printing has failed."
 msgstr "L’’impression a échoué."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} sélectionné"
-
-msgid "Selected: {0}"
-msgstr "Sélectionné : {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J greffon"
-
-msgid "Code"
-msgstr "Code"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31809,6 +31875,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31834,6 +31910,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31843,6 +31943,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "par rail"
+
 msgid "Can''t parse a time from this string."
 msgstr "Impossible de lire l’heure depuis cette chaîne."
 
@@ -33051,6 +33154,9 @@ msgstr "Quelque chose a mal tourné, essayez à nouveau"
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Impossible de placer un nœud hors du monde."
 
@@ -34457,7 +34563,7 @@ msgid "Find primitives with these tags"
 msgstr "Trouvez les objets avec cet attribut"
 
 msgid "Multitag Background: highlight"
-msgstr ""
+msgstr "Mettre en avant l''arrière-plan doté de plusieurs étiquettes"
 
 msgid "Replace Geometry"
 msgstr "Remplacer la géométrie"
@@ -34925,6 +35031,12 @@ msgstr ""
 "Cherche les liens interwiki de Wikipedia pour ajouter plusieurs attributs de "
 "noms"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34972,9 +35084,6 @@ msgstr "Catégorie"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Récupère une liste de tous les articles Wikipédia d''une catégorie"
 
-msgid "Enter the Wikipedia category"
-msgstr "Entrer une catégorie Wikipédia"
-
 msgid "Clipboard"
 msgstr "Presse-papiers"
 
diff --git a/i18n/po/ga.po b/i18n/po/ga.po
index 29a24bb..c8e7713 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:44+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:45+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -111,21 +111,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Scoir JOSM"
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Earráid"
-
 msgid "About"
 msgstr "Maidir Leis"
 
@@ -233,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Earráid"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -508,7 +496,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1070,19 +1058,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1091,16 +1073,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1798,6 +1770,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2822,7 +2797,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/gl.po b/i18n/po/gl.po
index dae9092..34695ec 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-01-01 15:11+0000\n"
 "Last-Translator: Marcos Lans <Unknown>\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: 2016-07-12 04:44+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:46+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: gl\n"
 "X-Poedit-Language: Galician\n"
 
@@ -116,25 +116,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "O parámetro «downloadgps» non acepta nomes de ficheiros ou URL de ficheiro"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM necesita a versión {0} de Java.</h2> Detectouse a versión {1}.<br> "
-"Para poder usar JOSM:<ul>     <li>actualice a súa versión de Java (JRE), "
-"ou</li>     <li>use unha versión anterior de JSOM que sexa compatíbel coa "
-"versión {2} de Java.</li> </ul> Máis información:"
-
-msgid "Exit JOSM"
-msgstr "Saír de JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continuar, aínda así"
-
-msgid "Error"
-msgstr "Erro"
-
 msgid "About"
 msgstr "Sobre"
 
@@ -247,6 +228,9 @@ msgstr "Escoller no mapa os elementos escollidoss na lista superior."
 msgid "Add imagery layer {0}"
 msgstr "Engadir capa de imaxes {0}"
 
+msgid "Error"
+msgstr "Erro"
+
 msgid "Select image format for WMS layer"
 msgstr "Seleccionar un formato de imaxe para a capa WMS"
 
@@ -537,8 +521,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duplicar"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicar selección copiando e pegando inmediatamente."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Sair"
@@ -1172,23 +1156,14 @@ msgstr ""
 msgid "Paste"
 msgstr "Pegar"
 
-msgid "Paste contents of paste buffer."
-msgstr "Pegar os contidos do portapapeis."
-
-msgid "Delete incomplete members?"
-msgstr "Eliminar os membros incompletos?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Pega sin membros incompletos"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Os datos copiados conteñen obxectos incompletos. Ao pegar os datos, os "
-"obxectos incompletos elimínanse. Quere pegar os datos sen os obxectos "
-"incompletos?"
 
 msgid "Paste Tags"
 msgstr "Pegar as etiquetas"
@@ -1198,16 +1173,6 @@ msgstr ""
 "Aplicar as etiquetas dos contidos do portapapeis a todos os elementos "
 "seleccionados."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Pegando {0} tag"
-msgstr[1] "PEgando {0} tags"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "ao obxecto {0}"
-msgstr[1] "aos obxectos {0}"
-
 msgid "Preferences..."
 msgstr "Configuración…"
 
@@ -1946,6 +1911,9 @@ msgstr "Pedir e descargar conxuntos de cambios…"
 msgid "Errors during download"
 msgstr "Erros durante a descarga"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2999,8 +2967,8 @@ msgstr "Cambiar a vía {0}"
 msgid "Change relation {0}"
 msgstr "Cambiar relación {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Cambiados nodos de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Retirar «{0}» para o nodo «{1}»"
@@ -3051,6 +3019,9 @@ msgstr[1] "obxectos"
 msgid "Change relation member role for {0} {1}"
 msgstr "Cambiar a función do membro da relación para {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Eliminado «{0}»"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Polo menos requírese un obxecto para eliminar, obtívose unha colección "
@@ -3085,9 +3056,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Eliminar {0} relación"
 msgstr[1] "Eliminar {0} relacións"
 
-msgid "Deleted ''{0}''"
-msgstr "Eliminado «{0}»"
-
 msgid "Delete confirmation"
 msgstr "Eliminar confirmación"
 
@@ -5837,12 +5805,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5856,6 +5818,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr "Escolla un valor"
 
@@ -6039,6 +6007,31 @@ msgstr "Nova clave"
 msgid "New value"
 msgstr "Novo valor"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Pegando {0} tag"
+msgstr[1] "PEgando {0} tags"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "ao obxecto {0}"
+msgstr[1] "aos obxectos {0}"
+
+msgid "Delete incomplete members?"
+msgstr "Eliminar os membros incompletos?"
+
+msgid "Paste without incomplete members"
+msgstr "Pega sin membros incompletos"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Os datos copiados conteñen obxectos incompletos. Ao pegar os datos, os "
+"obxectos incompletos elimínanse. Quere pegar os datos sen os obxectos "
+"incompletos?"
+
 msgid "For selected objects only"
 msgstr "Soamente para os obxectos escollidos"
 
@@ -7952,13 +7945,6 @@ msgstr "Mover os membros actualmente seleccionados cara arriba"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar as actualizacións actuais e pecha o diálogo"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Os membros do portapapeis non poden engadirse porque non están incluídos na "
-"capa actual"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9490,13 +9476,6 @@ 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 ""
 
@@ -9512,6 +9491,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Gardar capa"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12880,6 +12864,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13695,6 +13682,9 @@ msgstr "Desexa permitir esto?"
 msgid "Confirm Remote Control action"
 msgstr "Confirma a acción do Control Remoto"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14441,6 +14431,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14468,6 +14470,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14479,21 +14488,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14637,66 +14634,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Non facer nada"
+msgid "You have encountered a bug in JOSM"
+msgstr "Atopou un fallo en JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Informar dun fallo"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Excepción Inesperada"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Atopou un fallo en JOSM"
+msgid "Include all stack traces."
+msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
-"Atopou un erro en JOMS. Antes de enviar un informe de fallo asegúrese de que "
-"ten a última versión de JOSM aqui:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(O texto xa foi copiado ao portapapeis.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -15032,9 +15041,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -15059,9 +15065,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15083,7 +15086,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15134,7 +15137,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15209,7 +15215,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16509,9 +16518,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16666,7 +16672,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16903,17 +16910,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Electrificado"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "liña_de_contacto"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "non"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "si"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "ferrocarril"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16961,9 +16972,15 @@ msgstr "Horario de apertura"
 msgid "Wheelchairs"
 msgstr "Sillas de rodas"
 
+msgid "yes"
+msgstr "si"
+
 msgid "limited"
 msgstr "limitado"
 
+msgid "no"
+msgstr "non"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -17376,8 +17393,8 @@ msgstr "forestal"
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Código postal"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Páxina web:"
@@ -17539,15 +17556,6 @@ msgstr "chiita"
 msgid "sunni"
 msgstr "suní"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "baixa"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -19115,6 +19123,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tranvía"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "Vía para autobús guiado"
 
@@ -19618,9 +19629,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20824,6 +20832,9 @@ msgstr "Estadio"
 msgid "Sports Centre"
 msgstr "Polideportivo"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Cancha de xogo"
 
@@ -20910,6 +20921,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20966,6 +20981,9 @@ msgstr "Carreira de cabalos"
 msgid "Gymnastics"
 msgstr "Ximnasia"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22822,6 +22840,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22921,6 +22948,9 @@ msgstr "Bolsas para excrementos"
 msgid "food"
 msgstr "Alimentación"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23103,6 +23133,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23252,9 +23294,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23410,6 +23449,18 @@ msgstr "Illa"
 msgid "Islet"
 msgstr "Illote"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natureza"
 
@@ -23754,6 +23805,9 @@ msgstr ""
 msgid "City name"
 msgstr "Nome da cidade"
 
+msgid "Post code"
+msgstr "Código postal"
+
 msgid "Country code"
 msgstr "Código do país"
 
@@ -24470,6 +24524,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -26160,6 +26217,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "baixa"
+
 msgid "symbol"
 msgstr "símbolo"
 
@@ -28518,6 +28584,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29909,18 +29984,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29964,6 +30027,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29989,6 +30062,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29998,6 +30095,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "ferrocarril"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -31141,6 +31241,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32760,6 +32863,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32803,9 +32912,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/he.po b/i18n/po/he.po
index db7b79d..9c7b7fd 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:46+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:48+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: he\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "מתעלם מ-URL לא תקין לקובץ: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "הפרמטר \"downloadgps\" אינו מקבל שמות קובץ או כתובות URL של קבצים"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "שגיאה"
-
 msgid "About"
 msgstr "אודות"
 
@@ -234,6 +219,9 @@ msgstr "הגדר את הפריטים הנבחרים שעל המפה לפריטי
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "שגיאה"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -512,8 +500,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "שכפל"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "שכפל את הבחירה על ידי העתקה והדבקה מיידית."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "יציאה"
@@ -1074,19 +1062,13 @@ msgstr ""
 msgid "Paste"
 msgstr "הדבק"
 
-msgid "Paste contents of paste buffer."
-msgstr "הדבק את תכני חוצץ ההדבקה."
-
-msgid "Delete incomplete members?"
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Paste without incomplete members"
+msgid "Paste at source position"
 msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1095,16 +1077,6 @@ msgstr "הדבק תגיות"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "החל תגיות של תוכן מחוצץ ההדבקה על כל הפריטים הנבחרים."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "מדביק תג {0}"
-msgstr[1] "מדביק תגים {0}"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "מאפיינים..."
 
@@ -1803,6 +1775,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2834,7 +2809,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2886,6 +2861,9 @@ msgstr[1] "עצמים"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2918,9 +2896,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5596,12 +5571,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5615,6 +5584,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5794,6 +5769,28 @@ msgstr "מפתח חדש"
 msgid "New value"
 msgstr "ערך חדש"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "מדביק תג {0}"
+msgstr[1] "מדביק תגים {0}"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7648,11 +7645,6 @@ msgstr "הזז את החברים הנבחרים מעלה"
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9139,13 +9131,6 @@ 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 ""
 
@@ -9161,6 +9146,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "שמור שכבה"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12451,6 +12441,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13242,6 +13235,9 @@ msgstr "האם אתה רוצה לאשר את זה?"
 msgid "Confirm Remote Control action"
 msgstr "אשר פעולת שלט רחוק"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13953,6 +13949,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13979,6 +13987,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13990,21 +14005,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14148,64 +14151,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "אל תעשה כלום"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "דווח על תקלה"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "שגיאה בלתי צפויה"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(הטקסט כבר הועתק ל-clipboard שלך)."
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14541,9 +14558,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14568,9 +14582,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14592,7 +14603,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14643,7 +14654,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14718,7 +14732,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16004,9 +16021,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16145,7 +16159,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16380,15 +16395,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "לא"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "כן"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16438,9 +16457,15 @@ msgstr "שעות פתיחה"
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "כן"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "לא"
+
 msgid "Brand"
 msgstr ""
 
@@ -16853,8 +16878,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "מיקוד"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17016,15 +17041,6 @@ msgstr "שיעי"
 msgid "sunni"
 msgstr "סוני"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18591,6 +18607,9 @@ msgstr "רכבת תחתית"
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19094,9 +19113,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20300,6 +20316,9 @@ msgstr "איצטדיון"
 msgid "Sports Centre"
 msgstr "מרכז ספורט"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20386,6 +20405,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20442,6 +20465,9 @@ msgstr "מירוץ סוסים"
 msgid "Gymnastics"
 msgstr "התעמלות"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22298,6 +22324,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22397,6 +22432,9 @@ msgstr "שקיות צואה"
 msgid "food"
 msgstr "מזון"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22579,6 +22617,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22728,9 +22778,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22886,6 +22933,18 @@ msgstr "אי"
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23230,6 +23289,9 @@ msgstr ""
 msgid "City name"
 msgstr "שם עיר"
 
+msgid "Post code"
+msgstr "מיקוד"
+
 msgid "Country code"
 msgstr "קוד מדינה"
 
@@ -23946,6 +24008,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25627,6 +25692,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27976,6 +28050,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29362,18 +29445,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29417,6 +29488,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29442,6 +29523,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29451,6 +29556,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30592,6 +30700,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32196,6 +32307,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32239,9 +32356,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/hi.po b/i18n/po/hi.po
index 8f98b47..a318c75 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:47+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:48+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: hi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "गलती"
-
 msgid "About"
 msgstr "परिचय"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "गलती"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/hr.po b/i18n/po/hr.po
index f886111..516ff2b 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-01-04 15:56+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: 2016-07-12 05:02+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:05+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: hr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,21 +114,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Parametar \"downloadgps\" ne prihvaća nazive datoteka ili URL-ove datoteka"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Zatvori JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Nastavite, pokušajte ponovno"
-
-msgid "Error"
-msgstr "Greška"
-
 msgid "About"
 msgstr "O programu"
 
@@ -238,6 +223,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Dodaj slikovni sloj {0}"
 
+msgid "Error"
+msgstr "Greška"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -517,8 +505,8 @@ msgstr "Preuzeti objekti odnose se na jedan od označenih objekta."
 msgid "Duplicate"
 msgstr "Dupliciraj"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dupliciraj izabrano sa KOPIRAJ i trenutnim PASTE"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Izlaz"
@@ -1114,23 +1102,14 @@ msgstr ""
 msgid "Paste"
 msgstr "Zalijepi"
 
-msgid "Paste contents of paste buffer."
-msgstr "Zalijepi sadržaj iz međuspremnika za zaljepljivanje (paste buffer)"
-
-msgid "Delete incomplete members?"
-msgstr "Izbrisati nepotpune članove?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Zalijepite bez nepotpunih članova"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Kopirani podaci sadržavaju nepotpune objekte. Kada lijepite (pasting) "
-"nepotpuni objekti se uklanjaju. Želite li zalijepiti podatke nepotpunih "
-"objekta?"
 
 msgid "Paste Tags"
 msgstr "Zalijepit oznake (tagove)"
@@ -1138,18 +1117,6 @@ msgstr "Zalijepit oznake (tagove)"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Primjeni oznake sadržaja iz međuspremnika na sve izabrane stavke."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Lijepim {0} tag"
-msgstr[1] "Lijepim {0} taga"
-msgstr[2] "Lijepim {0} taga"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "za {0} objekt"
-msgstr[1] "za {0} objekta"
-msgstr[2] "za {0} objekte"
-
 msgid "Preferences..."
 msgstr "Podešenja..."
 
@@ -1883,6 +1850,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "Pogreške tijekom preuzimanja"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2918,8 +2888,8 @@ msgstr "Promijeni put {0}"
 msgid "Change relation {0}"
 msgstr "Promijeni relaciju {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Promijeni točke od {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Ukloni \"{0}\" za točku ''{1}''"
@@ -2971,6 +2941,9 @@ msgstr[2] "objekti"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr "Izbrisan ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -3007,9 +2980,6 @@ msgstr[0] "Izbriši {0} relaciju"
 msgstr[1] "Izbriši {0} relacije"
 msgstr[2] "Izbriši {0} relacija"
 
-msgid "Deleted ''{0}''"
-msgstr "Izbrisan ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Potvrda brisanja"
 
@@ -5685,12 +5655,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>nedostaje</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5704,6 +5668,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>nedostaje</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Izaberi vrijednost"
 
@@ -5886,6 +5856,33 @@ msgstr ""
 msgid "New value"
 msgstr "Nova vrijednost"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Lijepim {0} tag"
+msgstr[1] "Lijepim {0} taga"
+msgstr[2] "Lijepim {0} taga"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "za {0} objekt"
+msgstr[1] "za {0} objekta"
+msgstr[2] "za {0} objekte"
+
+msgid "Delete incomplete members?"
+msgstr "Izbrisati nepotpune članove?"
+
+msgid "Paste without incomplete members"
+msgstr "Zalijepite bez nepotpunih članova"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Kopirani podaci sadržavaju nepotpune objekte. Kada lijepite (pasting) "
+"nepotpuni objekti se uklanjaju. Želite li zalijepiti podatke nepotpunih "
+"objekta?"
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7744,11 +7741,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9258,13 +9250,6 @@ 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 ""
 
@@ -9280,6 +9265,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Snimi sloj"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12564,6 +12554,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13353,6 +13346,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14064,6 +14060,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14090,6 +14098,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14101,21 +14116,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14259,64 +14262,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14650,9 +14667,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14677,9 +14691,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14701,7 +14712,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14752,7 +14763,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14827,7 +14841,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16113,9 +16130,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16254,7 +16268,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16489,15 +16504,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "Ne"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "Da"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16547,9 +16566,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr "Invalidska kolica"
 
+msgid "yes"
+msgstr "Da"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "Ne"
+
 msgid "Brand"
 msgstr ""
 
@@ -16962,7 +16987,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -17125,15 +17150,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18700,6 +18716,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19203,9 +19222,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20409,6 +20425,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20495,6 +20514,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20551,6 +20574,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22407,6 +22433,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22506,6 +22541,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22688,6 +22726,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22837,9 +22887,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22995,6 +23042,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23339,6 +23398,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -24055,6 +24117,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25736,6 +25801,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -28082,6 +28156,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29471,18 +29554,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr "Označeno: {0}"
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29526,6 +29597,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29551,6 +29632,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29560,6 +29665,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30701,6 +30809,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Ne mogu dodati točku van Svijeta"
 
@@ -32307,6 +32418,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32350,9 +32467,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ht.po b/i18n/po/ht.po
index 5b2022e..9c6a320 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:46+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:47+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/hu.po b/i18n/po/hu.po
index 14d1f52..200e9dc 100644
--- a/i18n/po/hu.po
+++ b/i18n/po/hu.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-06-14 20:17+0000\n"
 "Last-Translator: Szem <szem_net at freemail.hu>\n"
 "Language-Team: Hungarian <kde-l10n-hu at kde.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: 2016-07-12 04:47+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:49+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: hu\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -115,25 +115,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "A „downloadgps” paraméter nem fogad el fájlneveket vagy fájl URL-eket"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2> A JOSM futtatásához a {0} verziójú Java szükséges.</h2>Jelenlegi Java "
-"verzió: {1}.<br>Lehetőséged van <ul><li>frissíteni a Javat (JRE) "
-"vagy</li><li>használni a JOSM egy korábbi (Java {2} kompatibilis) "
-"verzióját.</li></ul>Bővebben:"
-
-msgid "Exit JOSM"
-msgstr "Kilépés a JOSM-ból"
-
-msgid "Continue, try anyway"
-msgstr "Folytatás, próbáljuk meg"
-
-msgid "Error"
-msgstr "Hiba"
-
 msgid "About"
 msgstr "Névjegy"
 
@@ -248,6 +229,9 @@ msgstr "Kiválasztja a térképen a fenti listában kijelölt elemeket."
 msgid "Add imagery layer {0}"
 msgstr "Légifelvétel réteg hozzáadása: {0}"
 
+msgid "Error"
+msgstr "Hiba"
+
 msgid "Select image format for WMS layer"
 msgstr "Válassz képformátumot a WMS réteghez"
 
@@ -536,8 +520,8 @@ msgstr "A kiválasztott objektumokhoz kapcsolódó egyéb objektumok letöltése
 msgid "Duplicate"
 msgstr "Kettőzés"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "A kijelölés kettőzése másolással, majd azonnali beillesztéssel."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Kilépés"
@@ -1169,23 +1153,14 @@ msgstr "Overpass lekérdezés: "
 msgid "Paste"
 msgstr "Beillesztés"
 
-msgid "Paste contents of paste buffer."
-msgstr "A vágólap tartalmának beillesztése."
-
-msgid "Delete incomplete members?"
-msgstr "Törlöd a félkész tagokat?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Beillesztés félkész tagok nélkül"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"A másolt adat félkész objektumokat tartalmaz. Beillesztésnél a félkész "
-"objektumok el lesznek távolítva. Szeretnéd beilleszteni az adatot a félkész "
-"objektumok nélkül?"
 
 msgid "Paste Tags"
 msgstr "Címkék beillesztése"
@@ -1195,16 +1170,6 @@ msgstr ""
 "A vágólapon található tartalmak címkéinek alkalmazása az összes kijelölt "
 "elemre."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "{0} címke beillesztése"
-msgstr[1] "{0} címke beillesztése"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0} objektumra"
-msgstr[1] "{0} objektumra"
-
 msgid "Preferences..."
 msgstr "Beállítások…"
 
@@ -1954,6 +1919,9 @@ msgstr "Módosításcsomag lekérdezés és letöltés"
 msgid "Errors during download"
 msgstr "Hibák letöltés közben"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "GPS letöltése"
 
@@ -3066,8 +3034,8 @@ msgstr "{0} vonal megváltoztatása"
 msgid "Change relation {0}"
 msgstr "{0} kapcsolat megváltoztatása"
 
-msgid "Changed nodes of {0}"
-msgstr "{0} pontjainak megváltoztatva"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "''{0}'' eltávolítva ''{1}'' pontról"
@@ -3118,6 +3086,9 @@ msgstr[1] "objektum"
 msgid "Change relation member role for {0} {1}"
 msgstr "Kapcsolattag szerepváltoztatás {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "\"{0}\" törölve"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Legalább egy törlendő objektum szükséges, üres kollekció érkezett"
 
@@ -3150,9 +3121,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "{0} kapcsolat törlése"
 msgstr[1] "{0} kapcsolat törlése"
 
-msgid "Deleted ''{0}''"
-msgstr "\"{0}\" törölve"
-
 msgid "Delete confirmation"
 msgstr "Törlés megerősítése"
 
@@ -5993,12 +5961,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Egyesítés jóváhagyása"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>hiányzik</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6022,6 +5984,12 @@ msgstr[1] ""
 "párbeszéd ablak fog segíteni az ütköző tagok javításában. "
 "<br/><br/>Szeretnéd folytatni?"
 
+msgid "<i>missing</i>"
+msgstr "<i>hiányzik</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Válassz egy értéket"
 
@@ -6220,6 +6188,31 @@ msgstr "Új kulcs"
 msgid "New value"
 msgstr "Új érték"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "{0} címke beillesztése"
+msgstr[1] "{0} címke beillesztése"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0} objektumra"
+msgstr[1] "{0} objektumra"
+
+msgid "Delete incomplete members?"
+msgstr "Törlöd a félkész tagokat?"
+
+msgid "Paste without incomplete members"
+msgstr "Beillesztés félkész tagok nélkül"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"A másolt adat félkész objektumokat tartalmaz. Beillesztésnél a félkész "
+"objektumok el lesznek távolítva. Szeretnéd beilleszteni az adatot a félkész "
+"objektumok nélkül?"
+
 msgid "For selected objects only"
 msgstr "Csak a kiválasztott objektumok"
 
@@ -8211,13 +8204,6 @@ msgstr "A kijelölt tagok mozgatása feljebb"
 msgid "Apply the updates and close the dialog"
 msgstr "Változtatások alkalmazása és a dialógusablak bezárása"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"A tagok nem adhatók hozzá a beillesztés pufferből, mert nem tagjai az "
-"aktuális rétegnek"
-
 msgid "Relation Editor: Refresh"
 msgstr "Kapcsolatszerkesztő: Frissítés"
 
@@ -9915,17 +9901,6 @@ 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"
 
@@ -9941,6 +9916,11 @@ msgstr "Módosítsd a vetületet, vagy távolítsd el a réteget."
 msgid "Save Layer"
 msgstr "Réteg mentése"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Jegyzetek réteg"
 
@@ -13580,6 +13560,9 @@ msgstr ""
 "A(z) ''{2}'' kiterjesztésű és ''{3}'' nevű fájl megnyitása meghiúsult a(z) "
 "''{0}'' zip fájlban. A kivétel: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "A(z) {0} fájl átnevezése {1}-re meghiúsult."
 
@@ -14458,6 +14441,9 @@ msgstr "Jóvá akarod ezt hagyni?"
 msgid "Confirm Remote Control action"
 msgstr "Távirányító aktivitás jóváhagyása"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15353,6 +15339,18 @@ msgstr ""
 "az objektumot.<br> <strong>A letöltés meghiúsult</strong> ha éppen letölteni "
 "próbáltad ezt az objektumot.<br><br>A hibaüzenet:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "szélességi fok"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL nem tartalmaz helyes {0}-t"
+
+msgid "longitude"
+msgstr "hosszúsági fok"
+
+msgid "zoom"
+msgstr "nagyítás"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15385,6 +15383,17 @@ msgstr ""
 "A(z) ''{0}'' könyvtárhoz való hozzáférésbiztonsági okokból meghiúsult. A "
 "kivétel ez volt: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [kérlek, gépeld be a számát]"
 
@@ -15398,21 +15407,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "URL megnyitása: {0}"
 
-msgid "zoom"
-msgstr "nagyítás"
-
-msgid "latitude"
-msgstr "szélességi fok"
-
-msgid "longitude"
-msgstr "hosszúsági fok"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "Az URL nem tartalmaz {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL nem tartalmaz helyes {0}-t"
-
 msgid "reserved"
 msgstr "fenntartott"
 
@@ -15591,83 +15588,81 @@ msgstr "Hibás formátumú geometria figyelmen kívül hagyása: {0}"
 msgid "Failed to load XML schema."
 msgstr "Nem sikerült betölteni az XML sémát."
 
-msgid "Do nothing"
-msgstr "Nincs művelet"
-
-msgid "Report Bug"
-msgstr "Hiba jelentése"
+msgid "You have encountered a bug in JOSM"
+msgstr "Egy hibával találkoztál a JOSM-ban"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Nem várt hiba (kivétel) történt.<br>Ez mindig programozási hibát jelent. Ha "
-"a JOSM legfrissebb változatát használod,<br>kérjük jelentsd be a hibát a "
-"weblapunkon."
 
-msgid "Update JOSM"
-msgstr "JOSM frissítés"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Nem várt hiba (kivétel) történt. Ez mindig programozási hibát "
-"jelent.<br><br>Mindazonáltal a JOSM egy régi verzióját futtatod({0}),<br>az "
-"aktuális tesztelt verzió helyett (<b>{1}</b>).<br><br><b>Kérlek, frissítsd a "
-"JOSM-t,</b> mielőtt hibabejelentésben gondolkodnál."
+
+msgid "Report Bug"
+msgstr "Hiba jelentése"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "További párbeszédablakok elhagyása ebben a munkamenetben."
 
-msgid "Unexpected Exception"
-msgstr "Nemvárt kivétel"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Egy hibával találkoztál a JOSM-ban"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Egy hibával találkoztál a JOSM-ban. Kérlek, győződj meg róla, hogy a JOSM "
-"legújabb verzióját használod; mielőtt egy hibajelentést küldenél ide:"
+"Nem sikerült hibajelentést nyitni. Kérlek, jelentsd a hibát manuálisan az "
+"alábbi weboldalon:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"A bővítményeket szintén frissíteni kellene. Ha egyik sem segít ezek közül, "
-"küldj egy hibajelentést a nyilvántartásunkba ezen a linken keresztül:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Az alábbiakban kellene már legyen kitöltött hibainformáció segítségül. "
-"Kérlek, ezt további információkkal bővítsd; hogyan is idézhető elő újra ez a "
-"hiba, próbáld az összes lehetséges részletet beküldeni."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
 msgstr ""
-"Alternatívaként, ha nem működik, akkor kézzel is be tudod tölteni az "
-"információkat a lenti URL-en:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(A szöveg átmásolása a vágólapra már megtörtént.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Nem sikerült hibajelentést nyitni. Kérlek, jelentsd a hibát manuálisan az "
-"alábbi weboldalon:"
+
+msgid "Update JOSM"
+msgstr "JOSM frissítés"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16013,9 +16008,6 @@ msgstr "HDM (Humanitárius OpenStreetMap Csapat)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox műholdkép"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Nyílt Légifelvétel"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16040,9 +16032,6 @@ msgstr "OpenStreetMap (Német stílusú)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Nyomvonalak"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Tömegközlekedés (ÖPNV)"
 
@@ -16064,7 +16053,7 @@ msgstr "Strava kerékpáros hőtérkép"
 msgid "Strava running heatmap"
 msgstr "Strava futó hőtérkép"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16115,8 +16104,11 @@ msgstr "OSM Inspector: lakcímek"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: közigazgatási határok (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI fekete-fehér 2.5m"
@@ -16190,8 +16182,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV (laanderen) légifelvétel (Brüsszel régiót is lefedi)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -17579,9 +17574,6 @@ msgstr "Osmosis poligon szűrő fájlok olvasása és írása"
 msgid "Adds map printing to JOSM"
 msgstr "Térképnyomtatást ad a JOSM-hoz"
 
-msgid "adds projections from Proj4J"
-msgstr "Vetületeket ad hozzá a Proj4J-ből"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17751,8 +17743,9 @@ msgstr "Nagy halom, hosszában kapcsolódó vonal könnyített letöltése."
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Lehetővé teszi GPX fájlból betöltött útpontok keresését."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Egyszerűsíti a Wikipedia cikkek behivatkozását az OSM objektumokba"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17988,17 +17981,21 @@ msgstr "vágányelágazás"
 msgid "Electrified"
 msgstr "Villamosítás"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "felsővezeték"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "nem"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "igen"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "sín"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Feszültség Volt-ban (V)"
@@ -18046,9 +18043,15 @@ msgstr "Nyitva tartás"
 msgid "Wheelchairs"
 msgstr "Kerekesszék"
 
+msgid "yes"
+msgstr "igen"
+
 msgid "limited"
 msgstr "korlátozott"
 
+msgid "no"
+msgstr "nem"
+
 msgid "Brand"
 msgstr "Márka"
 
@@ -18461,7 +18464,7 @@ msgstr "erdőgazdasági"
 msgid "Population"
 msgstr "Népesség"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Irányítószám"
 
 msgid "Website"
@@ -18628,15 +18631,6 @@ msgstr "síita"
 msgid "sunni"
 msgstr "szunnita"
 
-msgid "high"
-msgstr "magas"
-
-msgid "medium"
-msgstr "közepes"
-
-msgid "low"
-msgstr "alacsony"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20224,6 +20218,9 @@ msgstr "Metró"
 msgid "Tram"
 msgstr "Villamos"
 
+msgid "Funicular"
+msgstr "Sikló"
+
 msgid "Bus Guideway"
 msgstr "Buszsín"
 
@@ -20727,9 +20724,6 @@ msgstr "Trolibusz"
 msgid "Share taxi"
 msgstr "Megosztott taxi"
 
-msgid "Funicular"
-msgstr "Sikló"
-
 msgid "Ferry"
 msgstr "Komp"
 
@@ -21939,6 +21933,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Sportközpont"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Sportpálya"
 
@@ -22025,6 +22022,10 @@ msgid "sports_centre"
 msgstr "sportközpont"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadion"
 
@@ -22081,6 +22082,9 @@ msgstr "Lóverseny"
 msgid "Gymnastics"
 msgstr "Torna"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "Jégkorcsolya"
 
@@ -23943,6 +23947,15 @@ msgstr "Dohányáru"
 msgid "Hairdresser/Barber"
 msgstr "Fodrász/Borbély"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tetoválószalon"
 
@@ -24042,6 +24055,9 @@ msgstr "ürülékgyűjtő zacskó"
 msgid "food"
 msgstr "étel"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr "újság"
 
@@ -24224,6 +24240,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Állami intézmény"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Biztosító"
@@ -24373,9 +24401,6 @@ msgstr "Nyelvi közösség"
 msgid "ward"
 msgstr "ward"
 
-msgid "Postal Code"
-msgstr "Irányítószám"
-
 msgid "National Park"
 msgstr "Nemzeti park"
 
@@ -24533,6 +24558,18 @@ msgstr "Sziget"
 msgid "Islet"
 msgstr "Szigetecske"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Természet"
 
@@ -24892,6 +24929,9 @@ msgstr "Helységnév"
 msgid "City name"
 msgstr "Városnév"
 
+msgid "Post code"
+msgstr "Irányítószám"
+
 msgid "Country code"
 msgstr "Országkód"
 
@@ -25614,6 +25654,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} elavult"
 
@@ -27373,6 +27416,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "magas"
+
+msgid "medium"
+msgstr "közepes"
+
+msgid "low"
+msgstr "alacsony"
+
 msgid "symbol"
 msgstr "szimbólum"
 
@@ -29745,6 +29797,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31151,18 +31212,6 @@ msgstr "A nyomtatás megállt"
 msgid "Printing has failed."
 msgstr "A nyomtatás meghiúsult."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} kijelölt"
-
-msgid "Selected: {0}"
-msgstr "Kijelölt: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J bővítmény"
-
-msgid "Code"
-msgstr "Kód"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31206,6 +31255,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31231,6 +31290,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31240,6 +31323,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "sín"
+
 msgid "Can''t parse a time from this string."
 msgstr "Ebből a karakterláncból nem lehet időt bedolgozni."
 
@@ -32396,6 +32482,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Nem lehet pontot helyezni a világon kívülre."
 
@@ -34159,6 +34248,12 @@ msgstr ""
 "Interwiki linkek lekérése a Wikipédiából további név címkék hozzáadása "
 "céljából"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34206,9 +34301,6 @@ msgstr "Kategória"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Az egy kategóriába tartozó Wikipédia cikkeket listázza ki"
 
-msgid "Enter the Wikipedia category"
-msgstr "Wikipédia kategória megadása"
-
 msgid "Clipboard"
 msgstr "Vágólap"
 
diff --git a/i18n/po/hy.po b/i18n/po/hy.po
index df75e06..e566068 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:33+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:33+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: hy\n"
 
 msgid "Cancel"
@@ -115,21 +115,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ia.po b/i18n/po/ia.po
index 5281602..ffda33a 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:48+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:50+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ia\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "Circa"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/id.po b/i18n/po/id.po
index c29344a..1253567 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-03-10 03:36+0000\n"
 "Last-Translator: Ezagren <ezagren 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: 2016-07-12 04:49+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:51+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: id\n"
 "X-Language: id_ID\n"
 
@@ -113,24 +113,6 @@ msgstr "Mengabaikan file URL yang rusak: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter \"downloadgps\" tidak menerima nama file atau URL file"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM membutuhkan Java versi {0}.</h2>Versi Java terdeteksi: {1}.<br>Anda "
-"dapat <ul><li>memperbarui Javaan (JRE) anda atau</li><li>menggunakan versi "
-"lama (Java {2} yang kompatibel) untuk JOSM.</li></ul>More Info:"
-
-msgid "Exit JOSM"
-msgstr "Keluar JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Lanjutkan, tetap mencoba"
-
-msgid "Error"
-msgstr "Kesalahan"
-
 msgid "About"
 msgstr "Tentang"
 
@@ -243,6 +225,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Menambahkan Layer Citra {0}"
 
+msgid "Error"
+msgstr "Kesalahan"
+
 msgid "Select image format for WMS layer"
 msgstr "Pilih format gambar untuk layer WMS"
 
@@ -525,8 +510,8 @@ msgstr "Mengunduh objek yang mengacu pada satu objek yang dipilih"
 msgid "Duplicate"
 msgstr "Duplikat"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Gandakan pilihan dengan menyalin dan menempel dengan segera."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Keluar"
@@ -1143,23 +1128,14 @@ msgstr ""
 msgid "Paste"
 msgstr "Tempel"
 
-msgid "Paste contents of paste buffer."
-msgstr "Tempel isi dari buffer"
-
-msgid "Delete incomplete members?"
-msgstr "Hapus anggota yang belum lengkap?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Tempel tanpa anggota yang belum lengkap"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Data yang akan disalin mengandung objek yang belum lengkap. Ketika menempel, "
-"objek yang belum lengkap akan dihapus. Apakah anda mau menempel data tanpa "
-"objek yang belum lengkap?"
 
 msgid "Paste Tags"
 msgstr "Tempel Label"
@@ -1168,14 +1144,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "Terapkan label isi dari buffer yang ditempel untuk semua item yang dipilih."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Menempel {0} label"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "untuk {0} objek"
-
 msgid "Preferences..."
 msgstr "Preferensi..."
 
@@ -1922,6 +1890,9 @@ msgstr "query dan download set perubahan ..."
 msgid "Errors during download"
 msgstr "Gangguan saat mendownload"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Download GPS"
 
@@ -3009,8 +2980,8 @@ msgstr "Ubah way/garis {0}"
 msgid "Change relation {0}"
 msgstr "Ubah relasi {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Mengubah node/titik dari {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Hapus \"{0}\" untuk node ''{1}''"
@@ -3060,6 +3031,9 @@ msgstr[0] "objek"
 msgid "Change relation member role for {0} {1}"
 msgstr "Ubah peran anggota relasi untuk {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Dihapus \"{0}\""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Meminta setidaknya satu objek untuk dihapus, koleksi kosong"
 
@@ -3088,9 +3062,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "Hapus {0} relasi"
 
-msgid "Deleted ''{0}''"
-msgstr "Dihapus \"{0}\""
-
 msgid "Delete confirmation"
 msgstr "Konfirmasi penghapusan"
 
@@ -5865,12 +5836,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Gabungan konfirmasi"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>menghilang</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5884,6 +5849,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>menghilang</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Pilih value"
 
@@ -6064,6 +6035,29 @@ msgstr "Key baru"
 msgid "New value"
 msgstr "Value baru"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Menempel {0} label"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "untuk {0} objek"
+
+msgid "Delete incomplete members?"
+msgstr "Hapus anggota yang belum lengkap?"
+
+msgid "Paste without incomplete members"
+msgstr "Tempel tanpa anggota yang belum lengkap"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Data yang akan disalin mengandung objek yang belum lengkap. Ketika menempel, "
+"objek yang belum lengkap akan dihapus. Apakah anda mau menempel data tanpa "
+"objek yang belum lengkap?"
+
 msgid "For selected objects only"
 msgstr "Hanya untuk objek yang dipilih"
 
@@ -8004,13 +7998,6 @@ msgstr "Pindahkan member diatas yang terpilih"
 msgid "Apply the updates and close the dialog"
 msgstr "Terapkan pembaruan dan tutup dialog"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Anggota dari buffer yang ditempelkan tidak dapat ditambahkan karena mereka "
-"tidak termasuk dalam layer yang ada."
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9633,13 +9620,6 @@ 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"
 
@@ -9655,6 +9635,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Simpan Layer"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -13226,6 +13211,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Gagal mengubah nama file {0} ke {1}."
 
@@ -14063,6 +14051,9 @@ msgstr "Apakah anda ingin mengikuti ini?"
 msgid "Confirm Remote Control action"
 msgstr "Konfirmasi tindakan remote kontrol"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14886,6 +14877,18 @@ msgstr ""
 "ini.<br> <strong>Mengunduh gagal</strong> jika Anda mencoba untuk mengunduh "
 "objek ini.<br><br>Pesan kesalahan:<br>{0}</html>"
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14917,6 +14920,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr "{0}... [Harap ketik nomornya]"
 
@@ -14930,21 +14940,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -15099,76 +15097,78 @@ msgstr "Mengabaikan geometri cacat: {0}"
 msgid "Failed to load XML schema."
 msgstr "Gagal memuat skema XML."
 
-msgid "Do nothing"
-msgstr "Jangan lakukan apapun"
-
-msgid "Report Bug"
-msgstr "Laporkan Bug"
+msgid "You have encountered a bug in JOSM"
+msgstr "Anda mengalami bug di JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Pengecualian tak terduga terjadi.<br>Ini selalu kesalahan pengkodean. Jika "
-"Anda menjalankan versi terbaru<br>versi JOSM, harap mempertimbangkan dengan "
-"baik dan mengajukan laporan bug."
 
-msgid "Update JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
+msgid "Report Bug"
+msgstr "Laporkan Bug"
+
 msgid "Suppress further error dialogs for this session."
 msgstr "Menekan dialog kesalahan lebih lanjut untuk sesi ini."
 
-msgid "Unexpected Exception"
-msgstr "Pengecualian tak terduga"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Anda mengalami bug di JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Anda telah menemukan kesalahan pada JOSM. Sebelum Anda mengajukan laporan "
-"bug pastikan Anda memperbarui versi terbaru dari JOSM disini:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Anda juga harus memperbarui plugin Anda. Jika tidak membantu mereka harap "
-"mengajukan laporan bug di bugtracker kami menggunakan link ini:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Ada kesalahan informasi yang tersedia di bawah sehingga harus sudah diisi "
-"untuk Anda. Harap masukan informasi bagaimana mereproduksi kesalahan dan "
-"mencoba memasok sedetail mungkin."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
 msgstr ""
-"Alternatifnya, Jika itu tidak bekerja Anda dapat mengisi manual di informasi "
-"di bawah pada URL ini:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Teks telah disalin ke clipboard Anda.)"
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -15514,9 +15514,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -15541,9 +15538,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15565,7 +15559,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15616,7 +15610,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15691,7 +15688,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -17037,9 +17037,6 @@ msgstr "Membaca dan menulis berkas osmosis penyaring poli"
 msgid "Adds map printing to JOSM"
 msgstr "menambahkan percetakan peta ke JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "menambahkan proyeksi dari Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17200,7 +17197,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Memungkinkan mencari untuk mengimport titik dari berkas gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -17437,17 +17435,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Menimbulkan listrik"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "contact_line"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "tidak"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "ya"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "rel"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -17495,9 +17497,15 @@ msgstr "Jam Buka"
 msgid "Wheelchairs"
 msgstr "Kursi roda"
 
+msgid "yes"
+msgstr "ya"
+
 msgid "limited"
 msgstr "terbatas"
 
+msgid "no"
+msgstr "tidak"
+
 msgid "Brand"
 msgstr "Merek"
 
@@ -17910,8 +17918,8 @@ msgstr "perhutanan"
 msgid "Population"
 msgstr "Population"
 
-msgid "Post code"
-msgstr "Kode Pos"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Website"
@@ -18073,15 +18081,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunni"
 
-msgid "high"
-msgstr "tinggi"
-
-msgid "medium"
-msgstr "sedang"
-
-msgid "low"
-msgstr "rendah"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -19657,6 +19656,9 @@ msgstr "Kereta bawah tanah"
 msgid "Tram"
 msgstr "Trem"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Jalur Bus"
 
@@ -20160,9 +20162,6 @@ msgstr "Trem Bus"
 msgid "Share taxi"
 msgstr "Berbagi taksi"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Ferry"
 
@@ -21366,6 +21365,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Pusat Olahraga"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "lapangan"
 
@@ -21452,6 +21454,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -21508,6 +21514,9 @@ msgstr "Balap Kuda"
 msgid "Gymnastics"
 msgstr "Gimnastik"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23364,6 +23373,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -23463,6 +23481,9 @@ msgstr "excrement_bags"
 msgid "food"
 msgstr "makanan"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23645,6 +23666,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23794,9 +23827,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23952,6 +23982,18 @@ msgstr "Pulau"
 msgid "Islet"
 msgstr "Pulau kecil"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Alami"
 
@@ -24296,6 +24338,9 @@ msgstr ""
 msgid "City name"
 msgstr "Nama Kota"
 
+msgid "Post code"
+msgstr "Kode Pos"
+
 msgid "Country code"
 msgstr "Kode Negara"
 
@@ -25014,6 +25059,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} sudah usang"
 
@@ -26821,6 +26869,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "tinggi"
+
+msgid "medium"
+msgstr "sedang"
+
+msgid "low"
+msgstr "rendah"
+
 msgid "symbol"
 msgstr "simbol"
 
@@ -29297,6 +29354,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30745,18 +30811,6 @@ msgstr "Pencetakan dihentikan"
 msgid "Printing has failed."
 msgstr "Pencetakan gagal"
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} dipilih"
-
-msgid "Selected: {0}"
-msgstr "Pilih: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Plugin Proj4J"
-
-msgid "Code"
-msgstr "Kode"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -30800,6 +30854,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30825,6 +30889,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30834,6 +30922,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "rel"
+
 msgid "Can''t parse a time from this string."
 msgstr "Tidak bisa mengurai waktu dari string ini"
 
@@ -32022,6 +32113,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Tidak dapat menempatkan sebuah node/titik di luar permukaan bumi."
 
@@ -33819,6 +33913,12 @@ msgstr ""
 "Mengambil tautan didalam wiki dari Wikipedia untuk menambahkan beberapa tag "
 "nama."
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -33865,9 +33965,6 @@ msgstr "Kategori"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Mengambil seluruh daftar kategori artikel dari wikipedia"
 
-msgid "Enter the Wikipedia category"
-msgstr "Memasukkan kategori wikipedia"
-
 msgid "Clipboard"
 msgstr "Clipboard"
 
diff --git a/i18n/po/is.po b/i18n/po/is.po
index 697c554..11b64bf 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2015-11-06 00:32+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: 2016-07-12 04:48+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:49+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: is\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "Hunsa gallaða skráarslóð: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Hætta í JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Halda áfram, reyna samt"
-
-msgid "Error"
-msgstr "Villa"
-
 msgid "About"
 msgstr "Um JOSM..."
 
@@ -235,6 +220,9 @@ msgstr "Henda hlutum út úr vallistanum sem eru ekki valdir á honum."
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Villa"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -512,8 +500,8 @@ msgstr "Sækja hluti sem vitna í einn af völdum hlutum"
 msgid "Duplicate"
 msgstr "Tvöfalda"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Tvöfalda valið með því að afrita það og líma það aftur."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Hætta"
@@ -1074,19 +1062,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Líma"
 
-msgid "Paste contents of paste buffer."
-msgstr "Líma innihald klemmuborðsins."
-
-msgid "Delete incomplete members?"
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Paste without incomplete members"
+msgid "Paste at source position"
 msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1095,16 +1077,6 @@ msgstr "Líma eigindi"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Líma eigindi hluta á klemmuborðinu á alla valda hluti."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Stillingar"
 
@@ -1813,6 +1785,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "Villur þegar gögn voru sótt"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2839,7 +2814,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2891,6 +2866,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2923,9 +2901,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5592,12 +5567,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5611,6 +5580,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5790,6 +5765,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7647,11 +7644,6 @@ msgstr "Færa valda meðlimi upp"
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9147,13 +9139,6 @@ 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 ""
 
@@ -9169,6 +9154,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12461,6 +12451,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13251,6 +13244,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13965,6 +13961,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13991,6 +13999,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14002,21 +14017,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14160,64 +14163,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Gera ekkert"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Senda villutilkynningu"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Óvænt villa"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "Textinn hefur verið þegar verið afritaður"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14551,9 +14568,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14578,9 +14592,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14602,7 +14613,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14653,7 +14664,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14728,7 +14742,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16015,9 +16032,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16156,7 +16170,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16391,15 +16406,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "nei"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "já"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16449,9 +16468,15 @@ msgstr "Opnunartími"
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "já"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "nei"
+
 msgid "Brand"
 msgstr ""
 
@@ -16864,8 +16889,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Póstnúmer"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17027,15 +17052,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18602,6 +18618,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19105,9 +19124,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20311,6 +20327,9 @@ msgstr "Íþróttaleikvangur"
 msgid "Sports Centre"
 msgstr "Íþróttamiðstöð"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Völlur"
 
@@ -20397,6 +20416,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20453,6 +20476,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22309,6 +22335,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22408,6 +22443,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22590,6 +22628,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22739,9 +22789,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22897,6 +22944,18 @@ msgstr "Eyja"
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23241,6 +23300,9 @@ msgstr ""
 msgid "City name"
 msgstr "Nafn bæjar"
 
+msgid "Post code"
+msgstr "Póstnúmer"
+
 msgid "Country code"
 msgstr "Landskóði"
 
@@ -23957,6 +24019,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25638,6 +25703,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27984,6 +28058,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29369,18 +29452,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29424,6 +29495,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29449,6 +29530,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29458,6 +29563,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30599,6 +30707,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32203,6 +32314,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32246,9 +32363,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/it.po b/i18n/po/it.po
index 038d3b0..2d55511 100644
--- a/i18n/po/it.po
+++ b/i18n/po/it.po
@@ -4,16 +4,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm 20081003\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-05-10 13:53+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-07-30 09:58+0000\n"
 "Last-Translator: Don-vip <Unknown>\n"
 "Language-Team: Italian <talk-it at lists.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: 2016-07-12 04:49+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:51+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: it\n"
 "X-Language: it_IT\n"
 "X-Source-Language: en\n"
@@ -113,25 +113,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Il parametro \"downloadgps\" non accetta nomi di file o indirizzi URL di file"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM richiede la versione di Java {0}.</h2>Versione di Java rilevata: "
-"{1}.<br>Si può <ul><li>aggiornare Java (JRE) oppure</li><li>utilizzare una "
-"precedente (Java {2} compatibile) versione di JOSM.</li></ul>Maggiori "
-"informazioni:"
-
-msgid "Exit JOSM"
-msgstr "Esci da JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continua, prova comunque"
-
-msgid "Error"
-msgstr "Errore"
-
 msgid "About"
 msgstr "Informazioni"
 
@@ -247,6 +228,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Aggiungi livello di immagini aeree {0}"
 
+msgid "Error"
+msgstr "Errore"
+
 msgid "Select image format for WMS layer"
 msgstr "Seleziona il formato immagine per il livello WMS"
 
@@ -540,8 +524,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duplica"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplica la selezione copiando ed incollalo subito."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Esci"
@@ -1176,23 +1160,14 @@ msgstr "Interrogazione Overpass: "
 msgid "Paste"
 msgstr "Incolla"
 
-msgid "Paste contents of paste buffer."
-msgstr "Incolla il contenuto memorizzato"
-
-msgid "Delete incomplete members?"
-msgstr "Eliminare i membri incompleti?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Incolla senza i membri incompleti"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"I dati copiati contengono degli oggetti incompleti. Quando si copia gli "
-"oggetti incompleti vengono rimossi. Si desidera copiare i dati privi degli "
-"oggetti incompleti?"
 
 msgid "Paste Tags"
 msgstr "Incolla le etichette"
@@ -1200,16 +1175,6 @@ msgstr "Incolla le etichette"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Applica le etichette memorizzate a tutti gli elementi selezionati"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Incollo l''etichetta {0}"
-msgstr[1] "Incollo le etichette {0}"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "su {0} oggetto"
-msgstr[1] "su {0} oggetti"
-
 msgid "Preferences..."
 msgstr "Preferenze..."
 
@@ -1985,6 +1950,9 @@ msgstr "Interroga e scarica gruppi di modifiche ..."
 msgid "Errors during download"
 msgstr "Errore durante lo scaricamento"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Scarica GPS"
 
@@ -2522,7 +2490,7 @@ msgstr[0] "Aggiungi selezione a {0} relazione"
 msgstr[1] "Aggiungi selezione a {0} relazioni"
 
 msgid "Delete the selected relation"
-msgstr "Cancella le relazioni selezionate"
+msgstr "Cancellare la relazione selezionata"
 
 msgid "Download all members of the selected relations"
 msgstr "Scarica tutti i membri delle relazioni selezionate"
@@ -3119,8 +3087,8 @@ msgstr "Modifica percorso {0}"
 msgid "Change relation {0}"
 msgstr "Modifica relazione {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Nodi modificati di {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Rimuovi \"{0}\" per il nodo ''{1}''"
@@ -3171,6 +3139,9 @@ msgstr[1] "oggetti"
 msgid "Change relation member role for {0} {1}"
 msgstr "Cambiare il membro della relazione per {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Eliminato ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "È richiesta l''eliminazione di almeno un oggetto, ottenuta una collezione "
@@ -3205,9 +3176,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Elimina {0} relazione"
 msgstr[1] "Elimina {0} relazioni"
 
-msgid "Deleted ''{0}''"
-msgstr "Eliminato ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Conferma di cancellazione"
 
@@ -6136,12 +6104,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Conferma unione"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>mancante</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6165,6 +6127,12 @@ msgstr[1] ""
 "verrà visualizzata una finestra per la correzione delle etichette in "
 "conflitto.<br/><br/>Si desidera continuare?"
 
+msgid "<i>missing</i>"
+msgstr "<i>mancante</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Selezionare un valore"
 
@@ -6372,6 +6340,31 @@ msgstr "Nuova chiave"
 msgid "New value"
 msgstr "Nuovo valore"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Incollo l''etichetta {0}"
+msgstr[1] "Incollo le etichette {0}"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "su {0} oggetto"
+msgstr[1] "su {0} oggetti"
+
+msgid "Delete incomplete members?"
+msgstr "Eliminare i membri incompleti?"
+
+msgid "Paste without incomplete members"
+msgstr "Incolla senza i membri incompleti"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"I dati copiati contengono degli oggetti incompleti. Quando si copia gli "
+"oggetti incompleti vengono rimossi. Si desidera copiare i dati privi degli "
+"oggetti incompleti?"
+
 msgid "For selected objects only"
 msgstr "Solamente per gli oggetti selezionati"
 
@@ -8416,13 +8409,6 @@ msgstr "Sposta in alto i membri attualmente selezionati"
 msgid "Apply the updates and close the dialog"
 msgstr "Applica gli aggiornamenti e chiudi la finestra"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"I membri provenienti dagli appunti non possono essere aggiunti perché non "
-"sono presenti nel livello corrente"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -10156,13 +10142,6 @@ 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"
 
@@ -10178,6 +10157,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Salva livello"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Livello note"
 
@@ -10724,7 +10708,7 @@ msgid "Direction"
 msgstr "Direzione"
 
 msgid "Velocity, {0}"
-msgstr ""
+msgstr "Velocità, {0}"
 
 msgid "gps point"
 msgstr "punto GPS"
@@ -13915,6 +13899,9 @@ msgstr ""
 "Fallita l''apertura del file con estensione ''{2}'' e nome ''{3}'' nel file "
 "zip ''{0}''. L''eccezione è stata: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Fallita la rinominazione del file {0} in {1}."
 
@@ -14822,6 +14809,9 @@ msgstr "Si vuole permettere questo?"
 msgid "Confirm Remote Control action"
 msgstr "Conferma l''azione del controllo remoto"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15751,6 +15741,18 @@ msgstr ""
 "tentato di scaricare questo oggetto.<br><br>Il messaggio d''errore "
 "è:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitudine"
+
+msgid "URL does not contain valid {0}"
+msgstr "L''indirizzo URL non contiene un valido {0}"
+
+msgid "longitude"
+msgstr "longitudine"
+
+msgid "zoom"
+msgstr "ingrandimento"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15787,6 +15789,13 @@ msgstr ""
 "Fallito l''accesso alla cartella ''{0}'' per ragioni di sicurezza. "
 "L''eccezione è stata: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [si prega di digitare il suo numero]"
 
@@ -15800,21 +15809,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "URL in apertura: {0}"
 
-msgid "zoom"
-msgstr "ingrandimento"
-
-msgid "latitude"
-msgstr "latitudine"
-
-msgid "longitude"
-msgstr "longitudine"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "L''indirizzo URL non contiene {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "L''indirizzo URL non contiene un valido {0}"
-
 msgid "reserved"
 msgstr "riservato"
 
@@ -15988,85 +15985,82 @@ msgstr "Ignoro le dimensioni e la posizione malformata: {0}"
 msgid "Failed to load XML schema."
 msgstr "Fallito il caricamento dello schema XML."
 
-msgid "Do nothing"
-msgstr "Non fare niente"
-
-msgid "Report Bug"
-msgstr "Segnala bug"
+msgid "You have encountered a bug in JOSM"
+msgstr "Ci si è imbattuti in un bug di JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"È stata generata una eccezione inaspettata.<br>Questo è sempre un errore di "
-"programmazione. Se si sta utilizzando l''ultima<br>versione di JOSM, si "
-"prega gentilmente di effettuare una segnalazione per questo problema."
 
-msgid "Update JOSM"
-msgstr "Aggiorna JOSM"
+msgid "Debug information"
+msgstr "Informazioni di debug"
+
+msgid "Manually report at:"
+msgstr "Inviarle manualmente a:"
+
+msgid "Is JOSM up to date?"
+msgstr "JOSM è aggiornato?"
+
+msgid "Send bug report"
+msgstr "Invia la segnalazione su un bug"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"E'' avvenuto un errore inatteso. Questo è sempre un errore di "
-"codifica.<br><br>In ogni caso si sta eseguendo una vecchia versione di JOSM "
-"({0}),<br>invece di utilizzare la versione testata corrente "
-"(<b>{1}</b>).<br><br><b>Si prega di aggiornare JOSM</b> prima di pensare a "
-"riportare il problema."
+
+msgid "Report Bug"
+msgstr "Segnala bug"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Non mostrare più le finestre di errore in questa sessione."
 
-msgid "Unexpected Exception"
-msgstr "Eccezione inattesa"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Ci si è imbattuti in un bug di JOSM"
+msgid "Ignore this error."
+msgstr "Ignora quest''errore."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"È stato riscontrato un errore in JOSM. Prima di procedere con la "
-"segnalazione del problema, assicurarsi di aver aggiornato JOSM all''ultima "
-"versione che si trova qui:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Si dovrebbero aggiornare anche le proprie estensioni. Se nemmeno questo "
-"aiuta allora si prega di segnalare il problema nel nostro bugtracker "
-"utilizzando questo collegamento:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Le informazioni inerenti al problema sono state già riempite di seguito. Si "
-"prega di includere la procedura per riprodurre l''errore e di fornire il "
-"maggior numero di dettagli possibile."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
 msgstr ""
-"In alternativa, se non funziona, si possono riportare le informazioni "
-"manualmente su questo indirizzo URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Il testo è stato già copiato nei tuoi appunti)"
+msgid "Your current version of JOSM is {0}"
+msgstr "La versione di JOSM sul tuo computer è {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM sta cercando gli aggiornamenti..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr "JOSM è aggiornato."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
+"È in esecuzione una vecchia versione di JOSM . Quella più recente è la {0}. "
+"È consigliabile aggiornare JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Aggiorna JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -16414,9 +16408,6 @@ msgstr "HDM (gruppo OSM a scopo umanitario)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16441,9 +16432,6 @@ msgstr "OpenStreetMap (Stile tedesco)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "Tracce GPS OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Trasporto pubblico locale (TPL)"
 
@@ -16465,7 +16453,7 @@ msgstr "Mappa per il ciclismo di Strava (c)"
 msgid "Strava running heatmap"
 msgstr "Mappa per la corsa di Strava (c)"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16516,8 +16504,11 @@ msgstr "OSM Inspector: Indirizzi"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Boundaries (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI bianco-nero 2.5m"
@@ -16591,7 +16582,10 @@ msgstr "VoGIS: Piano di destinazione del terreno"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16709,7 +16703,7 @@ msgid "BD Carthage"
 msgstr "BD Carthage"
 
 msgid "BDOrtho IGN"
-msgstr ""
+msgstr "BDOrtho IGN"
 
 msgid "Bordeaux - 2012"
 msgstr "Bordeaux - 2012"
@@ -17973,9 +17967,6 @@ msgstr "Legge e scrive i file di filtro poly di osmosis"
 msgid "Adds map printing to JOSM"
 msgstr "Aggiunge a JOSM la stampa delle mappe"
 
-msgid "adds projections from Proj4J"
-msgstr "aggiungi proiezioni da Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -18157,8 +18148,9 @@ msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 "Abilita la ricerca di un punto del percorso importato da un file gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Semplifica il collegamento degli oggetti OSM agli articoli Wikipedia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18394,17 +18386,21 @@ msgstr "crossover"
 msgid "Electrified"
 msgstr "Elettrificazione"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "linea aerea"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr "no"
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "si"
+msgstr "sì"
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "terza rotaia"
+msgstr "ferrovia"
 
 msgid "Voltage in Volts (V)"
 msgstr "Tensione in Volt (V)"
@@ -18452,9 +18448,15 @@ msgstr "Orario di apertura"
 msgid "Wheelchairs"
 msgstr "Sedie a rotelle"
 
+msgid "yes"
+msgstr "si"
+
 msgid "limited"
 msgstr "limitato"
 
+msgid "no"
+msgstr "no"
+
 msgid "Brand"
 msgstr "Casa produttrice"
 
@@ -18867,7 +18869,7 @@ msgstr "forestale"
 msgid "Population"
 msgstr "Popolazione"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Codice postale"
 
 msgid "Website"
@@ -19034,15 +19036,6 @@ msgstr "sciita"
 msgid "sunni"
 msgstr "sunnita"
 
-msgid "high"
-msgstr "alto"
-
-msgid "medium"
-msgstr "medio"
-
-msgid "low"
-msgstr "basso"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20638,6 +20631,9 @@ msgstr "Metropolitana"
 msgid "Tram"
 msgstr "Tramvia"
 
+msgid "Funicular"
+msgstr "Funicolare"
+
 msgid "Bus Guideway"
 msgstr "Autobus a guida vincolata"
 
@@ -20871,7 +20867,7 @@ msgid "Scooter"
 msgstr ""
 
 msgid "Truck"
-msgstr ""
+msgstr "Camion"
 
 msgid "Number of Sockets:"
 msgstr ""
@@ -20895,7 +20891,7 @@ msgid "CHAdeMO"
 msgstr ""
 
 msgid "Tesla Supercharger"
-msgstr ""
+msgstr "Tesla Supercharger"
 
 msgid "Schuko"
 msgstr ""
@@ -20916,7 +20912,7 @@ msgid "NEMA 5-20"
 msgstr ""
 
 msgid "Authentication:"
-msgstr ""
+msgstr "Autenticazione:"
 
 msgid "Phone call"
 msgstr ""
@@ -20925,7 +20921,7 @@ msgid "Short message"
 msgstr ""
 
 msgid "NFC"
-msgstr ""
+msgstr "NFC"
 
 msgid "Membership card"
 msgstr ""
@@ -21143,9 +21139,6 @@ msgstr "Filobus"
 msgid "Share taxi"
 msgstr "Taxi condiviso"
 
-msgid "Funicular"
-msgstr "Funicolare"
-
 msgid "Ferry"
 msgstr "Traghetto"
 
@@ -22324,13 +22317,13 @@ msgid "Dunlop (Woods)"
 msgstr ""
 
 msgid "Schrader"
-msgstr ""
+msgstr "Schrader"
 
 msgid "Sclaverand (Presta)"
-msgstr ""
+msgstr "Francese (Presta)"
 
 msgid "Regina"
-msgstr ""
+msgstr "Regina"
 
 msgid "Advertising Column"
 msgstr "Colonna pubblicitaria"
@@ -22350,6 +22343,9 @@ msgstr "Stadio"
 msgid "Sports Centre"
 msgstr "Centro sportivo"
 
+msgid "Fitness Centre"
+msgstr "Palestra"
+
 msgid "Pitch"
 msgstr "Campo sportivo"
 
@@ -22387,7 +22383,7 @@ msgstr ""
 
 msgctxt "golf"
 msgid "Pin"
-msgstr ""
+msgstr "Bandierina"
 
 msgctxt "golf"
 msgid "Bunker"
@@ -22415,11 +22411,11 @@ msgstr "Fairway"
 
 msgctxt "golf"
 msgid "Rough"
-msgstr ""
+msgstr "Rough"
 
 msgctxt "golf"
 msgid "Driving range"
-msgstr ""
+msgstr "Area di pratica"
 
 msgid "Miniature Golf"
 msgstr "Minigolf"
@@ -22436,6 +22432,10 @@ msgid "sports_centre"
 msgstr "centro sportivo"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "palestra"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadio"
 
@@ -22492,6 +22492,9 @@ msgstr "Ippodromo"
 msgid "Gymnastics"
 msgstr "Ginnastica"
 
+msgid "fitness_centre"
+msgstr "palestra"
+
 msgid "Ice Skating"
 msgstr "Pattinaggio su ghiaccio"
 
@@ -24351,6 +24354,15 @@ msgstr "Tabacco"
 msgid "Hairdresser/Barber"
 msgstr "Parrucchiere/Barbiere"
 
+msgid "Female"
+msgstr "Femminile"
+
+msgid "Male"
+msgstr "Maschile"
+
+msgid "Unisex"
+msgstr "Unisex"
+
 msgid "Tattoo"
 msgstr "Tatuaggi"
 
@@ -24450,6 +24462,9 @@ msgstr "sacchetti per escrementi"
 msgid "food"
 msgstr "cibo"
 
+msgid "milk"
+msgstr "latte"
+
 msgid "newspapers"
 msgstr "giornali"
 
@@ -24632,6 +24647,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Governativo"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Assicurazione"
@@ -24781,9 +24808,6 @@ msgstr "comunità linguistica"
 msgid "ward"
 msgstr "distretto"
 
-msgid "Postal Code"
-msgstr "Codice postale"
-
 msgid "National Park"
 msgstr "Perco nazionale"
 
@@ -24943,6 +24967,18 @@ msgstr "Isola"
 msgid "Islet"
 msgstr "Isoletta"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natura"
 
@@ -25300,6 +25336,9 @@ msgstr "Località"
 msgid "City name"
 msgstr "Nome città"
 
+msgid "Post code"
+msgstr "Codice postale"
+
 msgid "Country code"
 msgstr "Codice nazione"
 
@@ -26021,6 +26060,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} è deprecata"
 
@@ -27921,6 +27963,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "alto"
+
+msgid "medium"
+msgstr "medio"
+
+msgid "low"
+msgstr "basso"
+
 msgid "symbol"
 msgstr "simbolo"
 
@@ -28632,7 +28683,7 @@ msgid "The strategy for finding what areas to request from the server."
 msgstr ""
 
 msgid "Download strategy"
-msgstr ""
+msgstr "Strategia di download"
 
 msgid ""
 "Suppress the progress monitor that is shown when downloading. If this option "
@@ -28832,10 +28883,10 @@ msgid "Show users on map"
 msgstr "Visualizza utenti sulla mappa"
 
 msgid "GeoJSON file"
-msgstr ""
+msgstr "File GeoJSON"
 
 msgid "Loading json file..."
-msgstr ""
+msgstr "Caricamento di file json..."
 
 msgid "Data Layer from GeoJSON: "
 msgstr ""
@@ -30195,7 +30246,7 @@ msgid "Start walk mode"
 msgstr ""
 
 msgid "Zoom to selected image"
-msgstr ""
+msgstr "Ingrandisci l''immagine selezionata"
 
 msgid "Zoom to the currently selected Mapillary image"
 msgstr ""
@@ -30207,7 +30258,7 @@ msgid "Approve upload on the website"
 msgstr ""
 
 msgid "View in website"
-msgstr ""
+msgstr "Visualizza nel sito"
 
 msgid "Copy key"
 msgstr ""
@@ -30216,7 +30267,7 @@ msgid "Copy key tag"
 msgstr ""
 
 msgid "Edit on website"
-msgstr ""
+msgstr "Modifica nel sito"
 
 msgid "Current Mapillary changeset"
 msgstr ""
@@ -30228,7 +30279,7 @@ msgid "Mapillary changeset"
 msgstr ""
 
 msgid "Submit"
-msgstr ""
+msgstr "Invia"
 
 msgid "Export all images"
 msgstr "Esporta tutte le immagini"
@@ -30422,8 +30473,8 @@ msgstr ""
 
 msgid "Moved {0} image"
 msgid_plural "Moved {0} images"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Spostata {0} immagine"
+msgstr[1] "Spostate {0} immagini"
 
 msgid "Turned {0} image"
 msgid_plural "Turned {0} images"
@@ -30433,6 +30484,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30448,10 +30508,10 @@ msgid "Mapillary login"
 msgstr ""
 
 msgid "Login successful, return to JOSM."
-msgstr ""
+msgstr "Autenticazione riuscita, ritorno a JOSM."
 
 msgid "Supported image formats (JPG and PNG)"
-msgstr ""
+msgstr "Formati grafici supportati (JPG e PNG)"
 
 msgid "Downloading Mapillary images"
 msgstr ""
@@ -31557,13 +31617,13 @@ msgid "Edit photo GPS data"
 msgstr ""
 
 msgid "Edit GPS data of selected photo."
-msgstr ""
+msgstr "Modifica i dati GPS della foto selezionata."
 
 msgid "Edit Photo GPS Data"
 msgstr ""
 
 msgid "Please select an image first."
-msgstr ""
+msgstr "Prima è necessario seelzionare un''immagine."
 
 msgid "No image selected"
 msgstr "Nessuna immagine selezionata"
@@ -31638,7 +31698,7 @@ msgid "Loading file failed: {0}"
 msgstr "Caricamento file fallito: {0}"
 
 msgid "Problem occurred"
-msgstr ""
+msgstr "Si è verificato un problema"
 
 msgid "Load World File Calibration..."
 msgstr "Carica file di calibrazione world..."
@@ -31922,18 +31982,6 @@ msgstr "Stampa fermata"
 msgid "Printing has failed."
 msgstr "La stampa è fallita."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} selezionato"
-
-msgid "Selected: {0}"
-msgstr "Selezionata: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Estensione Proj4J"
-
-msgid "Code"
-msgstr "Codice"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31966,7 +32014,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "How do you want to proceed?"
-msgstr ""
+msgstr "Vuoi continuare?"
 
 msgid "PT_Assistant Proceed Request"
 msgstr ""
@@ -31977,6 +32025,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31985,7 +32043,7 @@ msgid ""
 msgstr ""
 
 msgid "Fix error"
-msgstr ""
+msgstr "Correggi errore"
 
 msgid "PT: dummy test warning"
 msgstr ""
@@ -32002,6 +32060,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -32011,6 +32093,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "terza rotaia"
+
 msgid "Can''t parse a time from this string."
 msgstr "Impossibile interpretare un orario da questa stringa"
 
@@ -32281,13 +32366,13 @@ msgid "Public transport routes"
 msgstr ""
 
 msgid "Toggle direction arrows"
-msgstr ""
+msgstr "Passa alle frecce di direzione"
 
 msgid "Toggle reference labels"
 msgstr ""
 
 msgid "Visualize public transport routes"
-msgstr ""
+msgstr "Mostra i trasporti pubblici"
 
 msgid "Filters"
 msgstr "Filtri"
@@ -33186,10 +33271,10 @@ msgid "Tasks"
 msgstr ""
 
 msgid "Config"
-msgstr ""
+msgstr "Config"
 
 msgid "Activation"
-msgstr ""
+msgstr "Attivazione"
 
 msgid "tofix:Skip item"
 msgstr ""
@@ -33204,7 +33289,7 @@ msgid "Activate to-fix plugin."
 msgstr ""
 
 msgid "Maintenance server"
-msgstr ""
+msgstr "Server di manutenzione"
 
 msgid ""
 "<html>Something went wrong, please update the plugin or report an issue at "
@@ -33212,9 +33297,12 @@ msgid ""
 msgstr ""
 
 msgid "Something went wrong, try again"
-msgstr ""
+msgstr "Si è verificato un errore, riprova tra un attimo"
 
 msgid "No change to upload!"
+msgstr "Non ci sono cambiamenti da inviare!"
+
+msgid "The bounding box is too big."
 msgstr ""
 
 msgid "Cannot place a node outside of the world."
@@ -35072,6 +35160,12 @@ msgstr ""
 "Preleva i collegamenti interni da Wikipedia in modo da aggiungere ulteriori "
 "etichette per i nomi"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -35105,7 +35199,7 @@ msgid "{0}: {1}"
 msgstr ""
 
 msgid "Wikidata"
-msgstr ""
+msgstr "Wikidata"
 
 msgid "Fetches all coordinates from Wikidata in the current view"
 msgstr ""
@@ -35121,9 +35215,6 @@ msgstr "Categoria"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Preleva una lista di tutti gli articoli Wikipedia di una categoria"
 
-msgid "Enter the Wikipedia category"
-msgstr "Inserire la categoria Wikipedia"
-
 msgid "Clipboard"
 msgstr "Appunti"
 
diff --git a/i18n/po/ja.po b/i18n/po/ja.po
index 2ebc2b9..73c0647 100644
--- a/i18n/po/ja.po
+++ b/i18n/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-06-16 14:17+0000\n"
 "Last-Translator: Yasunari Yamashita <yasunari at yamasita.jp>\n"
 "Language-Team: Japanese <tr at openstreetmap.jp>\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: 2016-07-12 04:50+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:52+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "X-Poedit-Country: JAPAN\n"
 "Language: ja\n"
 "X-Poedit-Language: Japanese\n"
@@ -118,23 +118,6 @@ msgstr "不正な形式のファイルURL \"{0}\" を無視します。"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "パラメーター \"downloadgps\" がファイル名もしくはURLとして有効ではありません"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSMはJavaバージョン{0}が必要です。</h2>検出されたJavaのバージョンは{1}です。<br><ul><li>Java(JRE)をア"
-"ップデートするか</li><li>古い(Java{2}対応)バージョンのJOSMを使用してください。</li></ul>詳しくは:"
-
-msgid "Exit JOSM"
-msgstr "JOSMを終了"
-
-msgid "Continue, try anyway"
-msgstr "無視して続行"
-
-msgid "Error"
-msgstr "エラー"
-
 msgid "About"
 msgstr "バージョン情報"
 
@@ -241,6 +224,9 @@ msgstr "地図上の選択した要素を、上記リストの選択したアイ
 msgid "Add imagery layer {0}"
 msgstr "画像レイヤー {0} を追加"
 
+msgid "Error"
+msgstr "エラー"
+
 msgid "Select image format for WMS layer"
 msgstr "WMSレイヤーの画像形式を選択してください"
 
@@ -518,8 +504,8 @@ msgstr "ダウンロードオブジェクトは選択されたオブジェクト
 msgid "Duplicate"
 msgstr "複製"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "コピー後すぐに貼り付けで複製"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "終了"
@@ -1090,21 +1076,14 @@ msgstr "Overpassのクエリー: "
 msgid "Paste"
 msgstr "貼り付け"
 
-msgid "Paste contents of paste buffer."
-msgstr "貼り付けバッファの内容を貼り付け"
-
-msgid "Delete incomplete members?"
-msgstr "不完全なメンバーを削除しますか?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "不完全なメンバー以外を貼り付け"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"コピーしたデータには不完全なオブジェクトが含まれています。 不完全なオブジェクトは貼り付け時に削除されます。 不完全なオブジェクトを除いて貼り付けますか?"
 
 msgid "Paste Tags"
 msgstr "タグの貼り付け"
@@ -1112,14 +1091,6 @@ msgstr "タグの貼り付け"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "貼り付けバッファの中身に対するタグを、選択したすべての項目に適用します。"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "{0}件のタグを貼り付け"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0}件のオブジェクトへ"
-
 msgid "Preferences..."
 msgstr "設定..."
 
@@ -1821,6 +1792,9 @@ msgstr "変更セットをクエリー及びダウンロード..."
 msgid "Errors during download"
 msgstr "ダウンロード中にエラー"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "GPSをダウンロード"
 
@@ -2860,8 +2834,8 @@ msgstr "ウェイ {0} を変更"
 msgid "Change relation {0}"
 msgstr "リレーション {0} を変更"
 
-msgid "Changed nodes of {0}"
-msgstr "{0} の変更済みノード"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "ノード ''{1}'' の \"{0}\" を削除"
@@ -2907,6 +2881,9 @@ msgstr[0] "オブジェクト"
 msgid "Change relation member role for {0} {1}"
 msgstr "リレーションのメンバー{0}のロールを {1} に変更"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}''を削除"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "削除するオブジェクトが1つ以上必要です、空のコレクションを受け取りました"
 
@@ -2935,9 +2912,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "{0}件のリレーションを削除"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}''を削除"
-
 msgid "Delete confirmation"
 msgstr "削除確認"
 
@@ -5603,12 +5577,6 @@ msgstr[0] ""
 msgid "Combine confirmation"
 msgstr "結合の確認"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>欠落</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5624,6 +5592,12 @@ msgstr[0] ""
 "オブジェクトには予期しないタグが設定されることになります。<br/>継続した場合は、競合するタグを修正するダイアログが表示されます。<br/><br/>継"
 "続しますか?"
 
+msgid "<i>missing</i>"
+msgstr "<i>欠落</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "値を選択"
 
@@ -5807,6 +5781,27 @@ msgstr "新しいキー"
 msgid "New value"
 msgstr "新しい値"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "{0}件のタグを貼り付け"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0}件のオブジェクトへ"
+
+msgid "Delete incomplete members?"
+msgstr "不完全なメンバーを削除しますか?"
+
+msgid "Paste without incomplete members"
+msgstr "不完全なメンバー以外を貼り付け"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"コピーしたデータには不完全なオブジェクトが含まれています。 不完全なオブジェクトは貼り付け時に削除されます。 不完全なオブジェクトを除いて貼り付けますか?"
+
 msgid "For selected objects only"
 msgstr "選択したオブジェクトのみ表示"
 
@@ -7677,11 +7672,6 @@ msgstr "選択したメンバーを1つ上に移動します"
 msgid "Apply the updates and close the dialog"
 msgstr "更新を適用してダイアログを閉じる"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr "貼り付けバッファのメンバーは追加できません。現在のレイヤーに含まれていません"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9221,13 +9211,6 @@ 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 "投影法はすべてサポートされています"
 
@@ -9243,6 +9226,11 @@ msgstr "もう一度投影法を変更するか、レイヤーを削除するか
 msgid "Save Layer"
 msgstr "レイヤーを保存"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "メモレイヤー"
 
@@ -12622,6 +12610,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr "zipファイル''{0}''内にある名前''{3}''、拡張子''{2}''のファイルが開けません。例外: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "ファイル{0}の名前を{1}に変更できませんでした。"
 
@@ -13422,6 +13413,9 @@ msgstr "本当にこれを許可してよろしいですか?"
 msgid "Confirm Remote Control action"
 msgstr "リモート制御の指示を確認"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14177,6 +14171,18 @@ msgstr ""
 "このオブジェクトをダウンロードしようとしたのであれば<strong>ダウンロードは失敗</strong>です。<br><br>エラーメッセージ:<br>{"
 "0}</html>"
 
+msgid "latitude"
+msgstr "緯度"
+
+msgid "URL does not contain valid {0}"
+msgstr "URLが有効な{0}を含んでいません"
+
+msgid "longitude"
+msgstr "経度"
+
+msgid "zoom"
+msgstr "ズーム"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14205,6 +14211,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 msgstr "セキュリティのため''{0}''ディレクトリへのアクセスに失敗しました。例外: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [番号を入力してください]"
 
@@ -14216,21 +14229,9 @@ msgstr "URLのオープンに失敗。現在プラットフォームセットが
 msgid "Opening URL: {0}"
 msgstr "URL {0} を開きます"
 
-msgid "zoom"
-msgstr "ズーム"
-
-msgid "latitude"
-msgstr "緯度"
-
-msgid "longitude"
-msgstr "経度"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URLが{0}/{1}/{2}を含んでいません"
 
-msgid "URL does not contain valid {0}"
-msgstr "URLが有効な{0}を含んでいません"
-
 msgid "reserved"
 msgstr "予約"
 
@@ -14381,70 +14382,80 @@ msgstr "不正な形の図形 {0} を無視しました。"
 msgid "Failed to load XML schema."
 msgstr "XMLスキーマのロードに失敗。"
 
-msgid "Do nothing"
-msgstr "何もしない"
-
-msgid "Report Bug"
-msgstr "バグを報告する"
+msgid "You have encountered a bug in JOSM"
+msgstr "JOSMのバグです"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"予期せぬ例外が発生。<br>これはたいていコーディングエラーです。最新の<br>JOSMを実行している場合は、おおらかな気持ちでバグレポートをファイルして"
-"ください。"
 
-msgid "Update JOSM"
-msgstr "JOSMの更新"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"予期しない例外が発生しました。これはコーディングエラーです。<br><br>ただし、あなたはJOSMの最新のテスト済みバージョン(<b>{1}</b>)で"
-"はなく<br>古いバージョン({0})を実行しています。<br><br>バグを報告しようとする前に、<b>JOSMをアップデートしてください</b>。"
+
+msgid "Report Bug"
+msgstr "バグを報告する"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "このセッションにおいて、これ以降のエラーダイアログを抑制します。"
 
-msgid "Unexpected Exception"
-msgstr "予想外の例外"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "JOSMのバグです"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
-msgstr "JOSMでエラーが発生しました。バグレポートをファイルする前にJOSMの最新バージョンに更新したかどうかこちらで確認してください:"
+"Opening the bug report failed. Please report manually using this website:"
+msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr "プラグインも更新する必要があります。どちらも役に立たない場合はこのリンクを使ってバグトラッカーにバグレポートをファイルしてください:"
+msgid "Include the system status report."
+msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr "下記エラー情報には既にあなたのために情報が埋められています。エラーを再現するための情報をできるだけ詳細に追加してみてください。"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr "ちゃんと機能していない場合は、代わりに次のURLで手作業で情報を入力できます:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(テキストはクリップボードにコピーされています。)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "JOSMの更新"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -14778,9 +14789,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -14805,9 +14813,6 @@ msgstr "OpenStreetMap (German Style)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS トレース"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Public Transport (ÖPNV)"
 
@@ -14829,7 +14834,7 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14880,8 +14885,11 @@ msgstr "OSM Inspector: Addresses"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Boundaries (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI black-and-white 2.5m"
@@ -14955,8 +14963,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -16272,9 +16283,6 @@ msgstr "osmosis ポリフィルターファイルを読み書きする"
 msgid "Adds map printing to JOSM"
 msgstr "JOSMに地図印刷を追加"
 
-msgid "adds projections from Proj4J"
-msgstr "Proj4Jから投影法を追加します"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16424,8 +16432,9 @@ msgstr "長い相互接続されたウェイのセットに沿って簡単にダ
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "gpxファイルからのインポートされたウェイポイントを検索対象にします。"
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "OSMオブジェクトからWikipedia記事へのリンクを容易にします"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -16659,17 +16668,21 @@ msgstr "渡り線"
 msgid "Electrified"
 msgstr "電化状態"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "架線"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "いいえ"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "はい"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "第三軌条"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "電圧(V)"
@@ -16717,9 +16730,15 @@ msgstr "営業時間"
 msgid "Wheelchairs"
 msgstr "車いす"
 
+msgid "yes"
+msgstr "はい"
+
 msgid "limited"
 msgstr "制限"
 
+msgid "no"
+msgstr "いいえ"
+
 msgid "Brand"
 msgstr "ブランド(会社名)"
 
@@ -17132,7 +17151,7 @@ msgstr "林業用"
 msgid "Population"
 msgstr "人口"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "郵便番号"
 
 msgid "Website"
@@ -17295,15 +17314,6 @@ msgstr "シーア派"
 msgid "sunni"
 msgstr "スンニ派"
 
-msgid "high"
-msgstr "高"
-
-msgid "medium"
-msgstr "中"
-
-msgid "low"
-msgstr "低い"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -18872,6 +18882,9 @@ msgstr "地下鉄"
 msgid "Tram"
 msgstr "路面電車"
 
+msgid "Funicular"
+msgstr "ケーブルカー"
+
 msgid "Bus Guideway"
 msgstr "ガイドウェイバス"
 
@@ -19375,9 +19388,6 @@ msgstr "トロリーバス"
 msgid "Share taxi"
 msgstr "乗合タクシー"
 
-msgid "Funicular"
-msgstr "ケーブルカー"
-
 msgid "Ferry"
 msgstr "フェリー"
 
@@ -20581,6 +20591,9 @@ msgstr "スタジアム"
 msgid "Sports Centre"
 msgstr "スポーツセンター"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "競技場"
 
@@ -20667,6 +20680,10 @@ msgid "sports_centre"
 msgstr "スポーツセンター"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "スタジアム"
 
@@ -20723,6 +20740,9 @@ msgstr "競馬"
 msgid "Gymnastics"
 msgstr "体操"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "アイススケート"
 
@@ -22579,6 +22599,15 @@ msgstr "たばこ"
 msgid "Hairdresser/Barber"
 msgstr "理美容店"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "刺青"
 
@@ -22678,6 +22707,9 @@ msgstr "糞袋"
 msgid "food"
 msgstr "食品"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22860,6 +22892,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "政府機関"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "保険代理店"
@@ -23009,9 +23053,6 @@ msgstr "言語共同体"
 msgid "ward"
 msgstr "選挙区"
 
-msgid "Postal Code"
-msgstr "郵便番号"
-
 msgid "National Park"
 msgstr "国立公園"
 
@@ -23167,6 +23208,18 @@ msgstr "島"
 msgid "Islet"
 msgstr "小島"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "自然"
 
@@ -23512,6 +23565,9 @@ msgstr "地名"
 msgid "City name"
 msgstr "市町村名"
 
+msgid "Post code"
+msgstr "郵便番号"
+
 msgid "Country code"
 msgstr "国コード"
 
@@ -24228,6 +24284,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0}は推奨されていません"
 
@@ -26013,6 +26072,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "高"
+
+msgid "medium"
+msgstr "中"
+
+msgid "low"
+msgstr "低い"
+
 msgid "symbol"
 msgstr "シンボル"
 
@@ -28416,6 +28484,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29818,18 +29895,6 @@ msgstr "印刷中止"
 msgid "Printing has failed."
 msgstr "印刷に失敗しました。"
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0}を選択"
-
-msgid "Selected: {0}"
-msgstr "選択: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J プラグイン"
-
-msgid "Code"
-msgstr "コード"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29873,6 +29938,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29898,6 +29973,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29907,6 +30006,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "第三軌条"
+
 msgid "Can''t parse a time from this string."
 msgstr "この文字列から時刻を解釈できません。"
 
@@ -31060,6 +31162,9 @@ msgstr "失敗しました。もう一度試してください"
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "世界地図の範囲外にノードは置けません"
 
@@ -32742,6 +32847,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "該当するnameタグを追加するためにWikipediaからインターウィキリンクを探す"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32785,9 +32896,6 @@ msgstr "カテゴリ"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "カテゴリのWikipediaの全記事を検索"
 
-msgid "Enter the Wikipedia category"
-msgstr "Wikipediaカテゴリを入力してください"
-
 msgid "Clipboard"
 msgstr "クリップボード"
 
diff --git a/i18n/po/ka.po b/i18n/po/ka.po
index b7f495c..576ec11 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:43+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:44+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ka\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "პარამეტრი \"გადმოწერეgps\" არ იღებს ფაილის სახელსა და ლინკს"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "დახურე ჯოზემი"
-
-msgid "Continue, try anyway"
-msgstr "განაგრძე, მაინც სცადე"
-
-msgid "Error"
-msgstr "შეცდომა"
-
 msgid "About"
 msgstr "შესახებ"
 
@@ -236,6 +221,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "შეცდომა"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -514,7 +502,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr "გააკეთე დუბლირება."
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1076,19 +1064,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1097,16 +1079,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1804,6 +1776,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2828,7 +2803,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2880,6 +2855,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2912,9 +2890,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5576,12 +5551,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5595,6 +5564,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5774,6 +5749,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7627,11 +7624,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9117,13 +9109,6 @@ 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 ""
 
@@ -9139,6 +9124,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12419,6 +12409,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13208,6 +13201,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13919,6 +13915,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13945,6 +13953,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13956,21 +13971,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14114,64 +14117,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14505,9 +14522,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14532,9 +14546,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14556,7 +14567,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14607,7 +14618,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14682,7 +14696,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15968,9 +15985,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16109,7 +16123,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16344,15 +16359,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16402,9 +16421,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16817,7 +16842,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16980,15 +17005,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18555,6 +18571,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19058,9 +19077,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20264,6 +20280,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20350,6 +20369,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20406,6 +20429,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22262,6 +22288,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22361,6 +22396,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22543,6 +22581,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22692,9 +22742,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22850,6 +22897,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23194,6 +23253,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23910,6 +23972,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25591,6 +25656,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27937,6 +28011,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29322,18 +29405,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29377,6 +29448,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29402,6 +29483,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29411,6 +29516,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30552,6 +30660,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32156,6 +32267,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32199,9 +32316,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/km.po b/i18n/po/km.po
index c2f1e81..a88b9e4 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:50+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:53+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,24 +112,6 @@ msgstr "មិន​អើពើ URL ឯកសារ​មិន​ត្រឹ
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "ប៉ារ៉ាម៉ែត្រ \"downloadgps\" មិន​ព្រម​ទទួល​ឈ្មោះ​ឯកសារ ឬ​ឯកសារ URLs"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM ទាមទារ Java កំណែ {0} ។</h2>បាន​រក​ឃើញ Java កំណែ៖ {1} ។<br>អ្នក​អាច "
-"<ul><li>ធ្វើ​បច្ចុប្បន្នភាព Java (JRE) របស់​អ្នក ឬ</li><li>ប្រើ​កំណែ JOSM "
-"ថ្មី​ជាង (Java {2} ឆបគ្នា) ។</li></ul>ព័ត៌មាន​បន្ថែម៖"
-
-msgid "Exit JOSM"
-msgstr "ចាកចេញពី JOSM"
-
-msgid "Continue, try anyway"
-msgstr "បន្ត ដោយសាកល្បងម្ដងទៀត"
-
-msgid "Error"
-msgstr "កំហុស"
-
 msgid "About"
 msgstr "អំពី"
 
@@ -243,6 +225,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "បន្ថែម​ស្រទាប់​រូបភាព {0}"
 
+msgid "Error"
+msgstr "កំហុស"
+
 msgid "Select image format for WMS layer"
 msgstr "ជ្រើស​ទ្រង់ទ្រាយ​រូបភាព​សម្រាប់​ស្រទាប់ WMS"
 
@@ -524,8 +509,8 @@ msgstr "ទាញ​យក​វត្ថុ​ដោយ​យោង​ទៅ​
 msgid "Duplicate"
 msgstr "ស្ទួន"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "ស្ទួន​ជម្រើស​ដោយ​ចម្លង និង​បិទភ្ជាប់​ភ្លាមៗ។"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "ចាកចេញ"
@@ -1137,23 +1122,14 @@ msgstr ""
 msgid "Paste"
 msgstr "បិទ​ភ្ជាប់"
 
-msgid "Paste contents of paste buffer."
-msgstr "បិទភ្ជាប់​មាតិកា​នៃ​ទ្រនាប់​បិទភ្ជាប់។"
-
-msgid "Delete incomplete members?"
-msgstr "លុប​សមាជិក​ដែល​មិន​បាន​បញ្ចប់?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "បិទភ្ជាប់​ដោយ​គ្មាន​សមាជិក​ដែល​បាន​បញ្ចប់"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"ទិន្នន័យ​ថត​ចម្លង​មាន​វត្ថុ​ដែល​មិន​បាន​បញ្ចប់។ ពេល​បិទភ្ជាប់ "
-"វត្ថុ​ដែល​មិន​បាន​បញ្ចប់​នឹង​ត្រូវ​បាន​លុបចេញ។ "
-"តើ​អ្នក​ចង់​បិទភ្ជាប់​ទិន្នន័យ​ដោយ​គ្មាន​វត្ថុ​ដែល​បាន​បញ្ចប់?"
 
 msgid "Paste Tags"
 msgstr "បិទភ្ជាប់​ស្លាក"
@@ -1162,14 +1138,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "អនុវត្ត​ស្លាក​មាតិកា​នៃ​ទ្រនាប់​បិទភ្ជាប់​ទៅ​ធាតុ​ដែល​បាន​ជ្រើស​ទាំងអស់។"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "បិទភ្ជាប់​ស្លាក {0}"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "ទៅកាន់ {0} វត្ថុ"
-
 msgid "Preferences..."
 msgstr "ចំណង់​ចំណូល​ចិត្ត..."
 
@@ -1917,6 +1885,9 @@ msgstr "ជ្រើស និង​ទាញ​យក​សំណុំ​ផ
 msgid "Errors during download"
 msgstr "កំហុស​ពេល​ទាញ​យក"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "ទាញ​យក​ជីភីអេស"
 
@@ -3002,8 +2973,8 @@ msgstr "ប្ដូរ​ផ្លូវ {0}"
 msgid "Change relation {0}"
 msgstr "ប្ដូរ​ទំនាក់ទំនង {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "តំណ​ដែល​បាន​ប្ដូរ​ក្នុង​ចំណោម {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "លុប \"{0}\" សម្រាប់​តំណ ''{1}''"
@@ -3049,6 +3020,9 @@ msgstr[0] "វត្ថុ"
 msgid "Change relation member role for {0} {1}"
 msgstr "ប្ដូរ​តួនាទី​ធាតុ​ទំនាក់ទំនង​សម្រាប់ {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "បាន​លុប ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "បាន​ទាមទារ​វត្ថុ​យ៉ាង​ហោច​មួយ​ដើម្បី​លុប ទទួល​បាន​សម្រាំង​ទទេ"
 
@@ -3077,9 +3051,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "លុប​ទំនាក់ទំនង {0}"
 
-msgid "Deleted ''{0}''"
-msgstr "បាន​លុប ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "បញ្ជាក់​ការ​លុប"
 
@@ -5915,12 +5886,6 @@ msgstr[0] ""
 msgid "Combine confirmation"
 msgstr "ការ​បញ្ជាក់​ការ​ផ្សំ"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>បាត់</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5939,6 +5904,12 @@ msgstr[0] ""
 "អ្នក​នឹង​ឃើញ​ប្រអប់​បញ្ចូល​មួយ​ដើម្បី​កែ​ស្លាក​ដែល​ប៉ះទង្គិច។<br/><br/>តើ​អ្ន"
 "ក​ចង់​បន្ត​ឬ?"
 
+msgid "<i>missing</i>"
+msgstr "<i>បាត់</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "ជ្រើស​តម្លៃ"
 
@@ -6137,6 +6108,29 @@ msgstr "កូនសោ​ថ្មី"
 msgid "New value"
 msgstr "តម្លៃថ្មី"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "បិទភ្ជាប់​ស្លាក {0}"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "ទៅកាន់ {0} វត្ថុ"
+
+msgid "Delete incomplete members?"
+msgstr "លុប​សមាជិក​ដែល​មិន​បាន​បញ្ចប់?"
+
+msgid "Paste without incomplete members"
+msgstr "បិទភ្ជាប់​ដោយ​គ្មាន​សមាជិក​ដែល​បាន​បញ្ចប់"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"ទិន្នន័យ​ថត​ចម្លង​មាន​វត្ថុ​ដែល​មិន​បាន​បញ្ចប់។ ពេល​បិទភ្ជាប់ "
+"វត្ថុ​ដែល​មិន​បាន​បញ្ចប់​នឹង​ត្រូវ​បាន​លុបចេញ។ "
+"តើ​អ្នក​ចង់​បិទភ្ជាប់​ទិន្នន័យ​ដោយ​គ្មាន​វត្ថុ​ដែល​បាន​បញ្ចប់?"
+
 msgid "For selected objects only"
 msgstr "សម្រាប់តែ​វត្ថុ​ដែល​បាន​ជ្រើស​ប៉ុណ្ណោះ"
 
@@ -8117,13 +8111,6 @@ msgstr "ផ្លាស់ទី​សមាជិក​ដែល​បាន​
 msgid "Apply the updates and close the dialog"
 msgstr "អនុវត្ត​បច្ចុប្បន្នភាព រួច​បិទ​ប្រអប់"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"សមាជិក​មកពី​ទ្រនាប់​បិទភ្ជាប់​មិន​អាច​បន្ថែម​បាន​ទ "
-"ព្រោះ​ពួកគេ​មិន​ត្រូវ​បាន​បញ្ចូល​ក្នុង​ស្រទាប់​បច្ចុប្បន្ន"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9789,13 +9776,6 @@ 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 "បាន​គាំទ្រ​ចំណោល​ទាំងអស់"
 
@@ -9811,6 +9791,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "រក្សាទុក​ស្រទាប់"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "ចំណាំ​ស្រទាប់"
 
@@ -13454,6 +13439,9 @@ msgstr ""
 "និង​ផ្នែក​នៃ​ឈ្មោះ ''{3}'' នៅ​ក្នុង​ឯកសារ​បង្ហាប់ ''{0}'' ។ ករណី​លើកលែង​គឺ "
 "{1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ប្ដូរ​ឈ្មោះ​ឯកសារ {0} ទៅ {1} ។"
 
@@ -14337,6 +14325,9 @@ msgstr "តើ​អ្នក​ចង់​អនុញ្ញាត​វា​
 msgid "Confirm Remote Control action"
 msgstr "បញ្ជាក់​សកម្មភាព​គ្រប់គ្រង​ពី​ចម្ងាយ"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15203,6 +15194,18 @@ msgstr ""
 "<strong>ការ​ទាញ​យក​នឹង​បរាជ័យ</strong> "
 "បើ​អ្នក​ព្យាយាម​ទាញ​យក​វត្ថុ​នេះ។<br><br>សារ​កំហុស​គឺ៖<br>{0}</html>"
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15233,6 +15236,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -15244,21 +15254,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -15432,85 +15430,80 @@ msgstr "មិន​អើពើ​ធរណីមាត្រ​មិន​ត
 msgid "Failed to load XML schema."
 msgstr "បាន​បរាជ័យ​ក្នុង​ការ​ផ្ទុក​ដ្យាក្រាម XML ។"
 
-msgid "Do nothing"
-msgstr "កុំ​ធ្វើ​អ្វី​ទាំងអស់"
-
-msgid "Report Bug"
-msgstr "រាយការណ៍​កំហុស"
+msgid "You have encountered a bug in JOSM"
+msgstr "អ្នក​បាន​ជួប​បញ្ហា​របាយការណ៍​កំហុស​នី​ក្នុង JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"មាន​ករណី​មិន​រំពឹង​ទុក​បាន​កើតឡើង។<br>ជាទូទៅ​វា​ជា​កំហុស​ការ​សរសេរ​កូដ។ "
-"បើ​អ្នក​កំពុង​ប្រើ​កំណែ<br>ចុងក្រោយ​បំផុត​​របស់ JOSM, "
-"សូម​ចាត់ទុក​ថា​វា​ជា​ឯកសារ​របាយការណ៍​កំហុស។"
 
-msgid "Update JOSM"
-msgstr "ធ្វើ​បច្ចុប្បន្នភាព JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"មាន​ករណី​លើកលែង​មិន​រំពឹង​ទុក​បាន​កើតឡើង។ "
-"ជាទូទៅ​វា​ជា​កំហុស​ការ​សរសេរ​កូដ។<br><br>ទោះបីជា​អ្នក​កំពុង​ប្រើ​កំណែ​ចាស់​រប"
-"ស់ JOSM ({0}),<br>ជំនួស​ឲ្យ​ការ​ប្រើ​កំណែ​សាកល្បង​ថ្មី​ក៏ដោយ "
-"(<b>{1}</b>)។<br><br><b>សូម​ធ្វើ​បច្ចុប្បន្នភាព JOSM</b> "
-"មុន​នឹង​ចាត់ទុក​ថា​វា​ជា​ឯកសារ​របាយការណ៍​កំហុស។"
+
+msgid "Report Bug"
+msgstr "រាយការណ៍​កំហុស"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "ប្រអប់​កំហុស​ទប់ស្កាត់​សម្រាប់​សម័យ​នេះ។"
 
-msgid "Unexpected Exception"
-msgstr "ករណី​លើកលែង​មិន​រំពឹង​ទុក"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "អ្នក​បាន​ជួប​បញ្ហា​របាយការណ៍​កំហុស​នី​ក្នុង JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"អ្នក​បាន​ជួប​កំហុស​នៅ​ក្នុង JOSM ។ មុន​នឹង​ផ្ញើ​របាយការណ៍​កំហុស "
-"សូម​ប្រាកដ​ថា​អ្នក​បាន​ធ្វើ​បច្ចុប្បន្នភាព​ទៅ​កំណែ​ចុងក្រោយ​បំផុត​របស់ JOSM "
-"នៅ​ទីនេះ៖"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"អ្នក​ក៏​គួរតែ​ធ្វើ​បច្ចុប្បន្នភាព​កម្មវិធី​ជំនួយ​របស់​អ្នក​ផង​ដែរ។ "
-"បើ​វា​នៅតែ​មិន​អាច​ជួយ​បាន​ទៀត "
-"សូម​ផ្ញើ​របាយការណ៍​កំហុស​នៅ​ក្នុង​កម្មវិធី​តាមដាន​កំហុស​របស់​យើង​ដោយ​ប្រើ​តំណ"
-"​នេះ៖"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"ព័ត៌មាន​កំហុស​ដែល​បាន​ផ្ដល់​ខាងក្រោម​គួរតែ​បាន​បំពេញ​សម្រាប់​អ្នក។ "
-"សូម​រួមបញ្ចូល​ព័ត៌មាន​អំពី​មូលហេតុ​ដែល​នាំឲ្យ​កើត​មាន​កំហុស​ឡើងវិញ "
-"និង​ព្យាយាម​ផ្ដល់​ព័ត៌មាន​លម្អិត​ឲ្យ​បាន​ច្រើន​តាម​ដែល​អាច​ធ្វើ​ទៅ​បាន។"
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
-"ម្យ៉ាងទៀត​បើ​វា​មិន​បង្ហាញ​ទេ អ្នក​អាច​បំពេញ​វា​ដោយ​ដៃ​ដោយ​ប្រើ URL នេះ៖"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(អត្ថបទ​ត្រូវ​បាន​ចម្លង​ទៅ​ក្ដារ​តម្បៀត​ខ្ទាស់​របស់​អ្នក)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "ធ្វើ​បច្ចុប្បន្នភាព JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -15858,9 +15851,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -15885,9 +15875,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15909,7 +15896,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15960,7 +15947,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -16035,7 +16025,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -17405,9 +17398,6 @@ msgstr "អាន និង​សរសេរ​ឯកសារ​តម្រ
 msgid "Adds map printing to JOSM"
 msgstr "បន្ថែម​ការ​បោះពុម្ព​ផែនទី​ទៅ JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "បន្ថែម​ចំណោល​ពី Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17550,7 +17540,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -17785,15 +17776,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ទេ"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "បាទ/ចាស"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -17843,9 +17838,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "បាទ/ចាស"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "ទេ"
+
 msgid "Brand"
 msgstr ""
 
@@ -18258,7 +18259,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -18421,15 +18422,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -19996,6 +19988,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -20499,9 +20494,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -21705,6 +21697,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -21791,6 +21786,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -21847,6 +21846,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23703,6 +23705,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -23802,6 +23813,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23984,6 +23998,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -24133,9 +24159,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -24291,6 +24314,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -24635,6 +24670,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -25351,6 +25389,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -27032,6 +27073,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -29378,6 +29428,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30763,18 +30822,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -30818,6 +30865,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30843,6 +30900,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30852,6 +30933,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -31993,6 +32077,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "មិន​អាច​ដាក់​តំណ​នៅ​ក្រៅ​ផែនដី​បានទេ។"
 
@@ -33597,6 +33684,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -33640,9 +33733,6 @@ msgstr "ចំណាត់ថ្នាក់ក្រុម"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr "វាយបញ្ចូលចំណាត់ថ្នាក់ក្រុម Wikipedia"
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ko.po b/i18n/po/ko.po
index 8870098..ca5a7a2 100644
--- a/i18n/po/ko.po
+++ b/i18n/po/ko.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-04-01 12:42+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-05 12:36+0000\n"
 "Last-Translator: Myeongjin <aranet100 at gmail.com>\n"
 "Language-Team: Korean <ko 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=1; plural=0;\n"
-"X-Launchpad-Export-Date: 2016-07-12 04:52+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:54+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ko\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,28 +112,11 @@ msgstr "잘못된 파일 URL 무시: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "\"downloadgps\" 변수를 파일 이름이나 파일 URL에서 받아올 수 없습니다"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM은 자바 버전 {0}이 필요합니다.</h2>탐지된 자바 버전: {1}.<br><ul><li>자바(JRE)를 "
-"업데이트하거나</li><li>JOSM의 이른(자바 {2} 호환) 버전을 사용할 수 있습니다.</li></ul>자세한 정보:"
-
-msgid "Exit JOSM"
-msgstr "JOSM 종료"
-
-msgid "Continue, try anyway"
-msgstr "무시하고, 계속 시도"
-
-msgid "Error"
-msgstr "오류"
-
 msgid "About"
 msgstr "정보"
 
 msgid "Display the about screen."
-msgstr "화면에 대해 보여줍니다."
+msgstr "화면에 대해 표시합니다."
 
 msgid "Java OpenStreetMap Editor"
 msgstr "Java OpenStreetMap 편집기"
@@ -235,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "영상 레이어 {0} 추가"
 
+msgid "Error"
+msgstr "오류"
+
 msgid "Select image format for WMS layer"
 msgstr "WMS 레이어에 대한 그림 형식 선택"
 
@@ -254,7 +240,7 @@ msgid "Could not retrieve WMS layer list."
 msgstr "WMS 레이어 목록을 얻을 수 없습니다."
 
 msgid "Could not parse WMS layer list."
-msgstr "YMS 레이어 목록을 불러올 수 없었습니다."
+msgstr "WMS 레이어 목록을 구문 분석할 수 없었습니다."
 
 msgid "Add Node..."
 msgstr "노드 추가..."
@@ -510,7 +496,7 @@ msgstr "선택된 개체의 하나를 참조하는 개체 다운로드"
 msgid "Duplicate"
 msgstr "복제"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -748,7 +734,7 @@ msgid "URL"
 msgstr "URL"
 
 msgid "Jump there"
-msgstr "그곳으로 점프"
+msgstr "거기로 이동"
 
 msgid "Jump to Position"
 msgstr "위치로 가기"
@@ -831,10 +817,10 @@ msgid ""
 msgstr "병합할 두 개 이상의 노드를 선택하거나 다른 노드와 가까운 노드를 선택해 주십시오."
 
 msgid "Abort Merging"
-msgstr "병합 취소"
+msgstr "병합 중단"
 
 msgid "Click to abort merging nodes"
-msgstr "노드 병합을 취소하려면 클릭"
+msgstr "노드 병합을 중단하려면 클릭"
 
 msgid ""
 "Cannot merge nodes: Would have to delete way {0} which is still used by {1}"
@@ -903,7 +889,7 @@ msgid "New Layer"
 msgstr "새 레이어"
 
 msgid "Create a new map layer."
-msgstr "새 지도 레이어 생성"
+msgstr "새 지도 레이어를 만듭니다."
 
 msgid "URL Files"
 msgstr "URL 파일"
@@ -1067,19 +1053,13 @@ msgstr ""
 msgid "Paste"
 msgstr "붙여넣기"
 
-msgid "Paste contents of paste buffer."
-msgstr "클립보드의 내용을 붙여넣기"
-
-msgid "Delete incomplete members?"
-msgstr "완성되지 않은 멤버를 버리겠습니까?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
+msgid "Paste at source position"
 msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1088,14 +1068,6 @@ msgstr "Tag 붙여넣기"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "{0}개의 tag를 붙여넣는 중"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0} 오브젝트에"
-
 msgid "Preferences..."
 msgstr "설정..."
 
@@ -1791,6 +1763,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2816,7 +2791,7 @@ msgstr "way {0} 변경"
 msgid "Change relation {0}"
 msgstr "relation {0} 변경"
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2867,6 +2842,9 @@ msgstr[0] "대상"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2895,9 +2873,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "{0} relation 삭제"
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr "삭제 확인"
 
@@ -4671,7 +4646,7 @@ msgid "Set the language"
 msgstr ""
 
 msgid "Displays the JOSM version and exits"
-msgstr ""
+msgstr "JOSM 버전을 표시하고 나가기"
 
 msgid "Print debugging messages to console"
 msgstr ""
@@ -5554,12 +5529,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5573,6 +5542,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5752,6 +5727,26 @@ msgstr "새 key"
 msgid "New value"
 msgstr "새 값"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "{0}개의 tag를 붙여넣는 중"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0} 오브젝트에"
+
+msgid "Delete incomplete members?"
+msgstr "완성되지 않은 멤버를 버리겠습니까?"
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -6358,7 +6353,7 @@ msgid "Mini map"
 msgstr ""
 
 msgid "Displays a small map of the current edit location"
-msgstr ""
+msgstr "현재 편집 위치의 작은 지도 표시"
 
 msgid "List of notes"
 msgstr ""
@@ -6468,7 +6463,7 @@ msgid "Search for objects"
 msgstr ""
 
 msgid "Display the history of the selected objects."
-msgstr ""
+msgstr "선택된 개체의 역사를 표시합니다."
 
 msgid "Zoom to selection"
 msgstr ""
@@ -6591,16 +6586,16 @@ msgid "anonymous"
 msgstr ""
 
 msgid "Display the basic properties of the changeset"
-msgstr ""
+msgstr "바뀜집합의 기본 속성 표시"
 
 msgid "Display the tags of the changeset"
-msgstr ""
+msgstr "바뀜집합의 태그 표시"
 
 msgid "Content"
 msgstr ""
 
 msgid "Display the objects created, updated, and deleted by the changeset"
-msgstr ""
+msgstr "바뀜집합별 만들어지고, 업데이트되고, 삭제된 개체 표시"
 
 msgid "Discussion"
 msgstr ""
@@ -7325,7 +7320,7 @@ msgid "to add first suggestion without closing the dialog"
 msgstr ""
 
 msgid "Please enter the number of recently added tags to display"
-msgstr ""
+msgstr "표시할 최근 추가된 태그의 번호를 입력하세요."
 
 msgid "Please enter integer number between 0 and {0}"
 msgstr ""
@@ -7605,11 +7600,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -8781,10 +8771,10 @@ msgid "Click to return to the Upload Dialog"
 msgstr ""
 
 msgid "Abort"
-msgstr ""
+msgstr "중단"
 
 msgid "Click to abort uploading"
-msgstr ""
+msgstr "올리기를 중단하려면 클릭"
 
 msgid ""
 "The server reported that the current changeset was closed.<br>This is most "
@@ -8989,7 +8979,7 @@ msgid "Current zoom: {0}"
 msgstr ""
 
 msgid "Display zoom: {0}"
-msgstr ""
+msgstr "확대 표시: {0}"
 
 msgid "Pixel scale: {0}"
 msgstr ""
@@ -9100,13 +9090,6 @@ 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 ""
 
@@ -9122,6 +9105,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "layer 저장"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -10072,7 +10060,7 @@ msgid "<html>Retrieving an OAuth Request Token from ''{0}'' failed.</html>"
 msgstr ""
 
 msgid "Display Advanced OAuth Parameters"
-msgstr ""
+msgstr "고급 OAuth 변수 표시"
 
 msgid "Retrieve Request Token"
 msgstr ""
@@ -10486,13 +10474,13 @@ msgid "Settings for the audio player and audio markers."
 msgstr ""
 
 msgid "Display the Audio menu."
-msgstr ""
+msgstr "소리 메뉴를 표시합니다."
 
 msgid "Label audio (and image and web) markers."
 msgstr ""
 
 msgid "Display live audio trace."
-msgstr ""
+msgstr "실시간 소리 자취를 표시합니다."
 
 msgid "Explicit waypoints with valid timestamps."
 msgstr ""
@@ -10886,7 +10874,7 @@ msgid "Dynamic buttons in side menus"
 msgstr ""
 
 msgid "Display ISO dates"
-msgstr ""
+msgstr "ISO 날짜 표시"
 
 msgid "Use native file choosers (nicer, but do not support file filters)"
 msgstr ""
@@ -11192,7 +11180,7 @@ msgid "Notification at each save"
 msgstr ""
 
 msgid "When saving, display a small notification"
-msgstr ""
+msgstr "저장할 때, 작은 알림 표시"
 
 msgid "File backup"
 msgstr ""
@@ -11347,7 +11335,7 @@ msgstr ""
 msgid ""
 "Please click on <strong>Download list</strong> to download and display a "
 "list of available plugins."
-msgstr ""
+msgstr "사용할 수 있는 플러그인의 목록을 다운로드하고 표시하려면 <strong>목록 다운로드</strong>를 클릭하세요."
 
 msgid "{0}: Version {1} (local: {2})"
 msgstr ""
@@ -12402,6 +12390,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13191,6 +13182,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13902,6 +13896,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13928,6 +13934,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13939,21 +13952,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14097,64 +14098,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "아무 것도 하지 않음."
-
-msgid "Report Bug"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "의외의 예외"
+msgid "Suppress further error dialogs for this session."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14488,9 +14503,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14515,9 +14527,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14539,7 +14548,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14590,7 +14599,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14665,7 +14677,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15951,9 +15966,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16092,7 +16104,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16327,15 +16340,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16385,9 +16402,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16800,7 +16823,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16963,15 +16986,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18538,6 +18552,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19041,9 +19058,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20043,7 +20057,7 @@ msgid "Clock"
 msgstr ""
 
 msgid "Display"
-msgstr ""
+msgstr "표시"
 
 msgid "analog"
 msgstr ""
@@ -20247,6 +20261,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20333,6 +20350,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20389,6 +20410,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -21090,7 +21114,7 @@ msgid "Remote"
 msgstr ""
 
 msgid "Display:"
-msgstr ""
+msgstr "표시:"
 
 msgid "Analog"
 msgstr ""
@@ -22245,6 +22269,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22344,6 +22377,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22526,6 +22562,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22675,9 +22723,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22833,6 +22878,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23177,6 +23234,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23893,6 +23953,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -24185,13 +24248,13 @@ msgid "Less obtrusive node symbols at low zoom"
 msgstr ""
 
 msgid "Display street labels (at high zoom)"
-msgstr ""
+msgstr "(높은 수준의 확대에서) 거리 레이블 표시"
 
 msgid "Use alternative turn restriction icon set"
 msgstr ""
 
 msgid "Display fill colour of areas with place=*"
-msgstr ""
+msgstr "place=*로 구역의 채우기 색 표시"
 
 msgid "Areas are drawn with fill only around their inner edges"
 msgstr ""
@@ -24250,7 +24313,7 @@ msgid "Processing..."
 msgstr ""
 
 msgid "Aborted"
-msgstr ""
+msgstr "중단됨"
 
 msgid "Error executing the script: "
 msgstr ""
@@ -24816,7 +24879,7 @@ msgid "edit new tag"
 msgstr ""
 
 msgid "Display clock in 12h mode."
-msgstr ""
+msgstr "시계를 12시간 모드로 표시합니다."
 
 msgid "Choose key"
 msgstr ""
@@ -25574,6 +25637,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27920,6 +27992,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -28222,7 +28303,7 @@ msgstr ""
 msgid ""
 "Please click on <strong>Download list</strong> to download and display a "
 "list of available modules."
-msgstr ""
+msgstr "사용할 수 있는 모듈의 목록을 다운로드하고 표시하려면 <strong>목록 다운로드</strong>를 클릭하세요."
 
 msgid ""
 "The following module has been downloaded <strong>successfully</strong>:"
@@ -29305,18 +29386,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29360,6 +29429,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29385,6 +29464,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29394,6 +29497,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30183,7 +30289,7 @@ msgid "Delete nodes outside of downloaded data regions"
 msgstr ""
 
 msgid "No, abort"
-msgstr ""
+msgstr "아니오, 중단"
 
 msgid "Do you want to delete them anyway?"
 msgstr ""
@@ -30535,6 +30641,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32138,6 +32247,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32181,9 +32296,6 @@ msgstr "분류"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr "클립보드"
 
diff --git a/i18n/po/ky.po b/i18n/po/ky.po
index 7fade43..9b1c8bb 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:51+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:53+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -111,21 +111,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "JOSM'ден чыгуу"
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Ката"
-
 msgid "About"
 msgstr "Программа жөнүндө"
 
@@ -233,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Ката"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -508,7 +496,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1070,19 +1058,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1091,16 +1073,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1798,6 +1770,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2822,7 +2797,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/lb.po b/i18n/po/lb.po
index 955ce3e..385f226 100644
--- a/i18n/po/lb.po
+++ b/i18n/po/lb.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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-04-28 18:56+0000\n"
 "Last-Translator: Charel <ceilenbecker at gmail.com>\n"
 "Language-Team: Luxembourgish <lb 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: 2016-07-12 04:54+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:56+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr "{0}:D''Optioun \"{1}\" ass net eendeiteg"
@@ -111,21 +111,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -233,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -508,7 +496,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1070,19 +1058,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1091,16 +1073,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1798,6 +1770,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2822,7 +2797,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/lo.po b/i18n/po/lo.po
index e897b9d..31f6278 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:52+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:54+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "ຂ້າມຮູບແບບເອກະສານທີ່ບໍ່ຖ
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "ບັນຫາໃນການປະຕິບັດ"
-
 msgid "About"
 msgstr "ກ່ຽວກັບ"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "ບັນຫາໃນການປະຕິບັດ"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/lt.po b/i18n/po/lt.po
index 10779cf..212c040 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-05-27 19:35+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-07-27 07:42+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: 2016-07-12 04:53+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:55+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: lt\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,24 +113,6 @@ msgstr "Ignoruojamas blogai suformuotas failo URL: „{0}“"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametras \"downloadgps\" nepriima failo vardo arba failo URLs"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM reikalinga Java versija {0}.</h2>Aptikta Java versija: {1}.<br>Jūs "
-"galite <ul><li>atnaujinti savo  Java (JRE) arba</li><li>naudoti ankstesnę "
-"(Java {2} suderinamą) JOSM versiją.</li></ul>Daugiau informacijos:"
-
-msgid "Exit JOSM"
-msgstr "Paliekamas JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Tęsti, vis tiek bandyti"
-
-msgid "Error"
-msgstr "Klaida"
-
 msgid "About"
 msgstr "Apie"
 
@@ -249,6 +231,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Pridėti vaizdų sluoksnį {0}"
 
+msgid "Error"
+msgstr "Klaida"
+
 msgid "Select image format for WMS layer"
 msgstr "Parinkite WMS sluoksnio piešinio formatą"
 
@@ -537,8 +522,8 @@ msgstr "Atsiųsti objektus, kurie priklauso vienam iš pažymėtų objektų"
 msgid "Duplicate"
 msgstr "Dubliuoti"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dubliuoti pažymėjimą kopijuojant ir iš karto įdedant."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Baigti"
@@ -1155,22 +1140,14 @@ msgstr "Overpass užklausa: "
 msgid "Paste"
 msgstr "Įdėti"
 
-msgid "Paste contents of paste buffer."
-msgstr "Įdėti iškarpinės turinį."
-
-msgid "Delete incomplete members?"
-msgstr "Trinti nepilnus narius?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Įdėti be nepilnų narių"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Nukopijuotose duomenyse yra nepilnų objektų. Įdedant nepilni objektai "
-"pašalinami. Ar norite įdėti duomenis be nepilnų objektų?"
 
 msgid "Paste Tags"
 msgstr "Įdėti žymes"
@@ -1178,18 +1155,6 @@ msgstr "Įdėti žymes"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Pritaikyti iškarpinės turinio žymas visiems pažymėtiems objektams."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Įkeliama {0} žyma"
-msgstr[1] "Įkeliamos {0} žymos"
-msgstr[2] "Įkeliama {0} žymų"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "į {0} objektą"
-msgstr[1] "į {0} objektus"
-msgstr[2] "į {0} objektų"
-
 msgid "Preferences..."
 msgstr "Nuostatos..."
 
@@ -1946,6 +1911,9 @@ msgstr "Užklausti ir atsiųsti pakeitimus..."
 msgid "Errors during download"
 msgstr "Klaidos atsiuntimo metu"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Atsiųsti GPS"
 
@@ -3070,8 +3038,8 @@ msgstr "Keisti kelią {0}"
 msgid "Change relation {0}"
 msgstr "Keisti ryšį {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Pakeisti {0} taškai"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Išimti „{0}“ taškui „{1}“"
@@ -3127,6 +3095,9 @@ msgstr[2] "objektų"
 msgid "Change relation member role for {0} {1}"
 msgstr "Keisti ryšio nario rolę {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Ištrintas „{0}“"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Reikia bent vieno objekto ištrynimui, gautas tuščias rinkinys"
 
@@ -3163,9 +3134,6 @@ msgstr[0] "Šalinti {0} ryšį"
 msgstr[1] "Šalinti {0} ryšius"
 msgstr[2] "Šalinti {0} ryšių"
 
-msgid "Deleted ''{0}''"
-msgstr "Ištrintas „{0}“"
-
 msgid "Delete confirmation"
 msgstr "Šalinimo patvirtinimas"
 
@@ -5073,7 +5041,7 @@ msgid "Displays the JOSM version and exits"
 msgstr "Parodo JOSM versiją ir išsijungia"
 
 msgid "Print debugging messages to console"
-msgstr "Spausdinti tinkinimo pranešimus į konsolę"
+msgstr "Spausdinti derinimo pranešimus į konsolę"
 
 msgid "Skip loading plugins"
 msgstr "Nutraukti priedų įkėlimą"
@@ -5144,13 +5112,13 @@ msgstr ""
 "Įsitikinkite, kad įkeliate kokius nors duomenis, jei naudojate --selection"
 
 msgid "Printing debugging messages to console"
-msgstr "Tinkinimo pranešimai rašomi į konsolę"
+msgstr "Derinimo pranešimai rašomi į konsolę"
 
 msgid "Plugin loading skipped"
 msgstr "Priedų įkėlimas praleistas"
 
 msgid "Enabled detailed debug level (trace)"
-msgstr "Įjungtas detalus tinkinimo lygis (pėdsakai)"
+msgstr "Įjungtas detalus derinimo lygis (pėdsakai)"
 
 msgid "Initializing"
 msgstr "Inicijuojama"
@@ -6033,12 +6001,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Sujungimo patvirtinimas"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>trūksta</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6065,6 +6027,12 @@ msgstr[2] ""
 "nereikalingų žymų.<br/>Jei norite tęsti, jums bus parodytas dialogas, "
 "leidžiantis sutvarkyti žymas.<br/><br/>Ar norite tęsti?"
 
+msgid "<i>missing</i>"
+msgstr "<i>trūksta</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Pasirinkite reikšmę"
 
@@ -6265,6 +6233,32 @@ msgstr "Naujas raktas"
 msgid "New value"
 msgstr "Nauja reikšmė"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Įkeliama {0} žyma"
+msgstr[1] "Įkeliamos {0} žymos"
+msgstr[2] "Įkeliama {0} žymų"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "į {0} objektą"
+msgstr[1] "į {0} objektus"
+msgstr[2] "į {0} objektų"
+
+msgid "Delete incomplete members?"
+msgstr "Trinti nepilnus narius?"
+
+msgid "Paste without incomplete members"
+msgstr "Įdėti be nepilnų narių"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Nukopijuotose duomenyse yra nepilnų objektų. Įdedant nepilni objektai "
+"pašalinami. Ar norite įdėti duomenis be nepilnų objektų?"
+
 msgid "For selected objects only"
 msgstr "Tik pažymėtiems objektams"
 
@@ -6654,7 +6648,7 @@ msgid "map style"
 msgstr "žemėlapio stilius"
 
 msgid "edit counts"
-msgstr "redaguoti skaičius"
+msgstr "redagavimų skaičius"
 
 msgid "Styles Cache for \"{0}\":"
 msgstr "„{0}“ stilių podėlis:"
@@ -6707,9 +6701,9 @@ msgstr ""
 
 msgid "{0} user last edited the selection:"
 msgid_plural "{0} users last edited the selection:"
-msgstr[0] "{0} vartotojas paskutinis keitė pažymėjimą:"
-msgstr[1] "{0} vartotojai (-ų) paskutiniai keitė pažymėjimą:"
-msgstr[2] "{0} vartotojai (-ų) paskutiniai keitė pažymėjimą:"
+msgstr[0] "{0} naudotojas paskutinis keitė pažymėjimą:"
+msgstr[1] "{0} naudotojai paskutiniai keitė pažymėjimą:"
+msgstr[2] "{0} naudotojų paskutiniai keitė pažymėjimą:"
 
 msgid "mapcss"
 msgstr "mapcss"
@@ -7831,7 +7825,7 @@ msgid "Copy Value"
 msgstr "Kopijuoti Vertę"
 
 msgid "Copy the value of the selected tag to clipboard"
-msgstr "Kopijuoti parinktos žymės vertę į iškarpinę"
+msgstr "Kopijuoti pažymėtos žymos reikšmę į iškarpinę"
 
 msgid "Copy selected Key(s)/Value(s)"
 msgstr "Kopijuoti pažymėtus raktus/reikšmes"
@@ -7973,10 +7967,10 @@ msgid "The key ''{0}'' is already used"
 msgstr "Raktas „{0}“ jau naudojamas"
 
 msgid "Ignore key ''{0}''"
-msgstr "Nepaisyti rakto ''{0}''"
+msgstr "Ignoruoti raktą „{0}“"
 
 msgid "Ignore tag ''{0}''"
-msgstr "Nepaisyti žymos ''{0}''"
+msgstr "Ignoruoti žymą „{0}“"
 
 msgid "Edit ignore list"
 msgstr "Keisti ignoravimo sąrašą"
@@ -8255,12 +8249,6 @@ msgstr "Perkelti dabar pažymėtus narius aukštyn"
 msgid "Apply the updates and close the dialog"
 msgstr "Pritaikyti atnaujinimus ir užverti dialogą"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Negalima įkelti narių iš įkėlimo buferio, nes jų nėra dabartiniame sluoksnyje"
-
 msgid "Relation Editor: Refresh"
 msgstr "Ryšių tvarkytuvė: įkelti iš naujo"
 
@@ -9963,17 +9951,6 @@ 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 ""
-"Kad pridėti kitą sluoksnį, jūs turite naudoti bent {0,number,#}MB atminties "
-"į JOSM, naudojant -Xmx{0,number,#}M parinktį (žiūrėti "
-"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
-"Šiuo metu jūs turite {1,number,#}MB atminties, kuri naudojama JOSM"
-
 msgid "All projections are supported"
 msgstr "Palaikomos visos projekcijos"
 
@@ -9989,6 +9966,12 @@ msgstr "Pakeisti projekciją vėl arba pašalinti sluoksnį."
 msgid "Save Layer"
 msgstr "Išsaugoti sluoksnį"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} pastaba"
+msgstr[1] "{0} pastabos"
+msgstr[2] "{0} pastabų"
+
 msgid "Notes layer"
 msgstr "Pastabų sluoksnis"
 
@@ -11276,7 +11259,7 @@ msgid "Continue anyway"
 msgstr "Tęsti vis tiek"
 
 msgid "Ignore warning and install style anyway"
-msgstr "Ignoruoti įspėjimus ir įdiegiti stilių"
+msgstr "Ignoruoti įspėjimą ir vis tiek įdiegti stilių"
 
 msgid "Some entries have unmet dependencies:"
 msgstr "Kai kurie įrašai turi nenustatytų priklausomybių:"
@@ -13566,6 +13549,7 @@ msgstr ""
 msgid ""
 "Way with external ID ''{0}'' includes missing node with external ID ''{1}''."
 msgstr ""
+"Kelias su išoriniu ID „{0}“ turi trūkstamą tašką su išoriniu ID „{1}“."
 
 msgid "Deleted node {0} is part of way {1}"
 msgstr "Ištrintas taškas {0} yra dalis kelio {1}"
@@ -13605,6 +13589,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Nepavyko pervadinti failo {0} į {1}."
 
@@ -14217,7 +14204,7 @@ msgid "Reading error text failed."
 msgstr "Klaidos teksto skaitymas nepavyko."
 
 msgid "XML tag <user> is missing."
-msgstr "XML žyma <vartotojas> yra trūkstama."
+msgstr "Trūksta XML žymos <user>."
 
 msgid "Missing attribute ''{0}'' on XML tag ''{1}''."
 msgstr "Trūkstamas atributas ''{0}'' XML žymoje ''{1}''."
@@ -14281,7 +14268,7 @@ msgid ""
 msgstr ""
 
 msgid "Save user and password (unencrypted)"
-msgstr "Išsaugoti vartotoją ir slaptažodį (nešifruotą)"
+msgstr "Išsaugoti naudotojo vardą ir slaptažodį (nešifruotą)"
 
 msgid "<delete from {0} objects>"
 msgstr "<ištrinti iš {0} objectų (-o)>"
@@ -14433,6 +14420,9 @@ msgstr "Ar norite tai leisti?"
 msgid "Confirm Remote Control action"
 msgstr "Patvirtinti nuotolinio valdymo veiksmą"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14961,6 +14951,8 @@ msgid ""
 "<html>Failed to initialize communication with the OSM server {0}.<br>Check "
 "the server URL in your preferences and your internet connection."
 msgstr ""
+"<html>Nepavyko inicijuoti ryšio su OSM serveriu {0}.<br>Patikrinkite "
+"serverio URL nustatymuose ir interneto ryšį."
 
 msgid ""
 "<html>Failed to authenticate at the OSM server ''{0}''.<br>You are using "
@@ -15209,6 +15201,7 @@ msgid ""
 "<html>Communication with the OSM server ''{0}'' timed out. Please retry "
 "later.</html>"
 msgstr ""
+"<html>Baigėsi ryšio su OSM serveriu „{0}“ laikas. Bandykite vėliau.</html>"
 
 msgid "no error message available"
 msgstr "neprieinamas klaidos pranešimas"
@@ -15219,6 +15212,9 @@ msgid ""
 "message:<br><strong>Error code:<strong> {1}<br><strong>Error message "
 "(untranslated)</strong>: {2}</html>"
 msgstr ""
+"<html>Nepavyko ryšys su OSM serveriu „{0}“. Serveris atsakė<br>su šiuo "
+"klaidos kodu ir klaidos pranešimu:<br><strong>Klaidos kodas:<strong> "
+"{1}<br><strong>Klaidos pranešimas (neišverstas)</strong>: {2}</html>"
 
 msgid ""
 "<html>Closing of changeset <strong>{0}</strong> failed <br>because it has "
@@ -15271,6 +15267,8 @@ msgid ""
 "<html>Failed to download data. Its format is either unsupported, ill-formed, "
 "and/or inconsistent.<br><br>Details (untranslated): {0}</html>"
 msgstr ""
+"<html>Nepavyko atsiųsti duomenų. Duomenų formatas nepalaikomas, neteisingo "
+"formato ir/arba nenuoseklus.<br><br>Detalės (neišversta): {0}</html>"
 
 msgid "<html>Failed to download data.<br><br>Details: {0}</html>"
 msgstr "<html>Nepavyko atsisiųsti duomenų.<br><br>Detalės: {0}</html>"
@@ -15312,6 +15310,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr "platuma"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL neturi galimo {0}"
+
+msgid "longitude"
+msgstr "ilguma"
+
+msgid "zoom"
+msgstr "artinti"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15340,6 +15350,17 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 ""
+"Kad pridėti kitą sluoksnį, jūs turite naudoti bent {0,number,#}MB atminties "
+"į JOSM, naudojant -Xmx{0,number,#}M parinktį (žiūrėti "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Šiuo metu jūs turite {1,number,#}MB atminties, kuri naudojama JOSM"
+
 msgid "{0}... [please type its number]"
 msgstr ""
 
@@ -15353,21 +15374,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Atidaromas URL: {0}"
 
-msgid "zoom"
-msgstr "artinti"
-
-msgid "latitude"
-msgstr "platuma"
-
-msgid "longitude"
-msgstr "ilguma"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL neturi {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL neturi galimo {0}"
-
 msgid "reserved"
 msgstr "rezervuota"
 
@@ -15536,73 +15545,88 @@ msgstr "Ignoruojama blogai suformuota geometrija: {0}"
 msgid "Failed to load XML schema."
 msgstr "Nepavyko įkelti XML schemos."
 
-msgid "Do nothing"
-msgstr "Nieko nedaryti"
-
-msgid "Report Bug"
-msgstr "Pranešti apie klaidą"
+msgid "You have encountered a bug in JOSM"
+msgstr "Susidūrėte su JOSM klaida"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Įvyko išimtinė situacija.<br>Tai visuomet programavimo klaida. Jei naudojate "
-"naujausią<br>JOSM versiją, praneškite apie klaidą."
+"Įvyko išimtinė situacija.\n"
+"Tai visuomet programavimo klaida. Jei naudojate naujausią JOSM versiją, "
+"apsvarstykite galimybę pranešti apie klaidą."
 
-msgid "Update JOSM"
-msgstr "Atnaujinti JOSM"
+msgid "Debug information"
+msgstr "Derinimo informacija"
+
+msgid "Manually report at:"
+msgstr "Pranešti rankiniu būdu:"
+
+msgid "Is JOSM up to date?"
+msgstr "Ar JOSM naujausios versijos?"
+
+msgid "Send bug report"
+msgstr "Pranešti apie klaidą"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Įvyko išimtinė situacija.<br>Tai visuomet programavimo klaida.<br><br>Tačiau "
-"jūs naudojate seną JOSM versiją ({0}),<br>vietoje dabartinės ištestuotos "
-"versijos (<b>{1}</b>).<br><br><b>Atnaujinkite JOSM</b> prieš pranešdami apie "
-"klaidą."
+"Jei naudojate naujausias JOSM ir papildinių versijas, praneškite apie klaidą "
+"į mūsų klaidų sekimo sistemą.\n"
+"Ten informacija apie klaidą jau turėtų būti užpildyta. Įtraukite informaciją "
+"kaip atkartoti problemą ir stenkitės pateikti kiek įmanoma daugiau detalių."
+
+msgid "Report Bug"
+msgstr "Pranešti apie klaidą"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Nerodyti kitų klaidos dialogų langų šiame seanse."
 
-msgid "Unexpected Exception"
-msgstr "Išimtinė situacija"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Susidūrėte su JOSM klaida"
+msgid "Ignore this error."
+msgstr "Ignoruoti šią klaidą"
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Taip pat turėtumėte atnaujinti papildinius. Jei niekas nepadeda, praneškite "
-"apie klaidą mūsų klaidų sekimo sistemoje:"
+msgid "Include the system status report."
+msgstr "Įtraukti sistemos būsenos ataskaitą."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
+msgstr "Įtraukti informaciją apie duomenis prie kurių dirbote."
+
+msgid "Include all stack traces."
+msgstr "Įtraukti dėklo pėdsakus."
+
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Tekstas jau buvo nukopijuotas į jūsų iškarpinę.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Įvyko klaida tikrinant ar JOSM yra naujausios versijos."
+
+msgid "JOSM is up to date."
+msgstr "JOSM yra naujausios versijos."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
+"Prieš pranešdami apie klaidą įsitikinkite, kad atnaujinote JOSM į naujausią "
+"versiją čia:"
+
+msgid "Update JOSM"
+msgstr "Atnaujinti JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -15935,9 +15959,6 @@ msgstr "HDM (Humanitarinė OpenStreetMap komanda)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox palydovinis"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest atviros aeronuotraukos"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap (pritaikyta dviračiams)"
 
@@ -15962,9 +15983,6 @@ msgstr "OpenStreetMap (Vokiško stiliaus)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS trasos"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Viešasis transportas (ÖPNV)"
 
@@ -15986,7 +16004,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16037,7 +16055,10 @@ msgstr "OSM tikrintuvė: adresai"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM tikrintuvė: ribos (ES)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -16112,8 +16133,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) aeronuotraukos (taip pat apima Briuselio regioną)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr ""
@@ -17211,7 +17235,7 @@ msgstr "Randa ir sutaiso neteisingai pažymėtus adresus patogiu būdu."
 msgid ""
 "Talk with users editing the map nearby, be notified when someone comes close."
 msgstr ""
-"Kalbėkite su vartotojais, redaguojančiais žemėlapį šalia jūsų, būkite "
+"Kalbėkite su naudotojais, redaguojančiais žemėlapį šalia jūsų, būkite "
 "informuotas, jeigu kažkas prie jūsų artėja."
 
 msgid "Allows you to view a GeoJSON file as a layer."
@@ -17413,9 +17437,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr "Į JOSM prideda žemėlapių spausdinimą"
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17559,8 +17580,9 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Supaprastina OSM objektų susiejimą su Vikipedijos straipsniais"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17794,17 +17816,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Elektrifikavimas"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ne"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "taip"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "bėgiai"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Įtampa voltais (V)"
@@ -17852,9 +17878,15 @@ msgstr "Darbo valandos"
 msgid "Wheelchairs"
 msgstr "Neįgaliųjų vežimėliai"
 
+msgid "yes"
+msgstr "taip"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "ne"
+
 msgid "Brand"
 msgstr "Prekės ženklas"
 
@@ -18267,8 +18299,8 @@ msgstr ""
 msgid "Population"
 msgstr "Populiacija"
 
-msgid "Post code"
-msgstr "Pašto kodas"
+msgid "Postal Code"
+msgstr "Pašto kodai"
 
 msgid "Website"
 msgstr "Interneto svetainė"
@@ -18430,15 +18462,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr "aukštis"
-
-msgid "medium"
-msgstr "vidutinis"
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -20005,6 +20028,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tramvajus"
 
+msgid "Funicular"
+msgstr "Funikulierius"
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -20508,9 +20534,6 @@ msgstr "Troleibusas"
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr "Funikulierius"
-
 msgid "Ferry"
 msgstr "Keltas"
 
@@ -21255,7 +21278,7 @@ msgid "Baby Hatch/Safe Haven"
 msgstr "Gyvybės langelis/Saugus prieglobstis"
 
 msgid "Emergency Access Point"
-msgstr ""
+msgstr "Pagalbos prieigos taškas"
 
 msgid "Point Number"
 msgstr ""
@@ -21273,7 +21296,7 @@ msgid "Veterinary"
 msgstr "Veterinarija"
 
 msgid "Emergency"
-msgstr ""
+msgstr "Skubi pagalba"
 
 msgid "Ambulance Station"
 msgstr ""
@@ -21714,6 +21737,9 @@ msgstr "Stadionas"
 msgid "Sports Centre"
 msgstr "Sporto centras"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Aikštelė"
 
@@ -21800,6 +21826,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -21856,6 +21886,9 @@ msgstr "Žirgų lenktynės"
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22297,7 +22330,7 @@ msgstr ""
 
 msgctxt "entrance"
 msgid "emergency"
-msgstr ""
+msgstr "avarinis"
 
 msgctxt "entrance"
 msgid "staircase"
@@ -23712,6 +23745,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -23811,6 +23853,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23993,6 +24038,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -24142,9 +24199,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr "Pašto kodai"
-
 msgid "National Park"
 msgstr "Nacionalinis parkas"
 
@@ -24300,6 +24354,18 @@ msgstr "Sala"
 msgid "Islet"
 msgstr "Salelė"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Gamta"
 
@@ -24651,6 +24717,9 @@ msgstr "Vietovės pavadinimas"
 msgid "City name"
 msgstr "Miesto pavadinimas"
 
+msgid "Post code"
+msgstr "Pašto kodas"
+
 msgid "Country code"
 msgstr "Šalies kodas"
 
@@ -25367,6 +25436,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} pasenusi"
 
@@ -25690,7 +25762,7 @@ msgid "Do not zoom after import"
 msgstr ""
 
 msgid "Ignore hdop/vdop/pdop entries"
-msgstr ""
+msgstr "Ignoruoti hdop/vdop/pdop įrašus"
 
 msgid "Warn on missing audio files"
 msgstr ""
@@ -25725,6 +25797,9 @@ msgid ""
 "\n"
 "Error: {0}"
 msgstr ""
+"Nepavyko atsiųsti ir įdiegti numatytųjų komandų.\n"
+"\n"
+"Klaida: {0}"
 
 msgid "Processing..."
 msgstr ""
@@ -26042,7 +26117,7 @@ msgid "Show dialog with incomplete addresses"
 msgstr ""
 
 msgid "Include objects used for guesses"
-msgstr ""
+msgstr "Įtraukti objektus naudotus spėjimams"
 
 msgid "Fix street addresses"
 msgstr ""
@@ -26852,10 +26927,10 @@ msgid "Merge nodes with existing nodes"
 msgstr "Sulieti taškus su egzistuojančiais taškais"
 
 msgid "Debug"
-msgstr ""
+msgstr "Derinimas"
 
 msgid "Debugging mode will write images for each processing step."
-msgstr ""
+msgstr "Derinimo veiksena įrašys vaizdus kiekvienam apdorojimo žingsniui."
 
 msgid "Street Name:"
 msgstr "Gatvės Pavadinimas:"
@@ -27077,6 +27152,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "aukštis"
+
+msgid "medium"
+msgstr "vidutinis"
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr "simbolis"
 
@@ -29442,6 +29526,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29785,9 +29878,11 @@ msgid ""
 "All installed modules are up to date. JOSM does not have to download newer "
 "versions."
 msgstr ""
+"Visi įdiegti moduliai yra naujausių versijų. JOSM nereikia atsiųsti "
+"naujesnių versijų."
 
 msgid "Modules up to date"
-msgstr ""
+msgstr "Moduliai yra naujausių versijų"
 
 msgid "Configure the list of sites where modules are downloaded from"
 msgstr ""
@@ -30091,7 +30186,7 @@ msgstr ""
 "Nuostatos->Moduliai)"
 
 msgid "The module file ''{0}'' does not include a Manifest."
-msgstr ""
+msgstr "Modulio failas „{0}“ neturi manifesto."
 
 msgid "Invalid URL ''{0}'' in module {1}"
 msgstr ""
@@ -30224,7 +30319,7 @@ msgid "Take X and Y from selected node"
 msgstr ""
 
 msgid "Debug info"
-msgstr ""
+msgstr "Derinimo informacija"
 
 msgid "Merge close nodes"
 msgstr ""
@@ -30704,10 +30799,10 @@ msgid "PicLayer failed to load or import the image."
 msgstr ""
 
 msgid "Nothing in clipboard"
-msgstr ""
+msgstr "Iškarpinė tuščia"
 
 msgid "The clipboard data is not an image"
-msgstr ""
+msgstr "Iškarpinės duomenys – ne vaizdas"
 
 msgid "Warning: failed to handle zip file ''{0}''. Exception was: {1}"
 msgstr ""
@@ -30752,7 +30847,7 @@ msgid "Add new address point"
 msgstr ""
 
 msgid "Tags copied to clipboard."
-msgstr ""
+msgstr "Žymos nukopijuotos į iškarpinę."
 
 msgid "New address point added."
 msgstr ""
@@ -30838,18 +30933,6 @@ msgstr "Spausdinimas sustabdytas"
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J papildinys"
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -30893,6 +30976,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30918,6 +31011,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30927,6 +31044,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "bėgiai"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -32074,6 +32194,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Negalima padėti tašką už pasaulio ribų."
 
@@ -32533,7 +32656,7 @@ msgid "Vias:"
 msgstr ""
 
 msgid "Copy to the clipboard"
-msgstr ""
+msgstr "Kopijuoti į iškarpinę"
 
 msgid "Cannot find object with id ''{0}'' in layer ''{1}''"
 msgstr ""
@@ -32753,10 +32876,10 @@ msgid "Move the selected vias up by one position"
 msgstr ""
 
 msgid "Copy the selected vias to the clipboard"
-msgstr ""
+msgstr "Kopijuoti pažymėtus „via“ į iškarpinę"
 
 msgid "Insert ''via'' objects from the clipboard"
-msgstr ""
+msgstr "Įdėti „via“ objektus iš iškarpinės"
 
 msgid ""
 "Failed to retrieve OSM object with id {0} from dataset {1}. Cannot add it as "
@@ -33705,6 +33828,12 @@ msgstr ""
 "Ištraukiami interwiki ryšiai iš Wikipedijos, kad galima būtų pridėti kelias "
 "pavadinimų žymas"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -33748,9 +33877,6 @@ msgstr "Kategorija"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Gauna sąrašą visų Vikipedijos straipsnių kategorijoje"
 
-msgid "Enter the Wikipedia category"
-msgstr "Įveskite Vikipedijos kategoriją"
-
 msgid "Clipboard"
 msgstr "Iškarpinė"
 
diff --git a/i18n/po/lv.po b/i18n/po/lv.po
index 813c50d..d9a9685 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:53+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:55+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: lv\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr "Ignorēju sliktformētu faila URL: \"{0}"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametrs \"downloadgps\" nepieņem failu vārdus vai failu URL"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Iziet no JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Turpināt, neņemt vērā"
-
-msgid "Error"
-msgstr "Kļūda"
-
 msgid "About"
 msgstr "Par programmu"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Pievienot attēla slāni {0}"
 
+msgid "Error"
+msgstr "Kļūda"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -514,8 +502,8 @@ msgstr "Lejuplādēt viena iezīmētā objekta piesaistītos objektus"
 msgid "Duplicate"
 msgstr "Dublēt"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Dublēt iezīmēto kopējot un tūlīt ievietojot."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Iziet"
@@ -1082,19 +1070,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Ielīmēt"
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1103,16 +1085,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Uzstādījumi..."
 
@@ -1810,6 +1782,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2834,7 +2809,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2886,6 +2861,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2918,9 +2896,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5581,12 +5556,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5600,6 +5569,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5779,6 +5754,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7632,11 +7629,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9122,13 +9114,6 @@ 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 ""
 
@@ -9144,6 +9129,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Saglabāt slāni"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12424,6 +12414,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13217,6 +13210,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13928,6 +13924,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13954,6 +13962,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13965,21 +13980,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14123,64 +14126,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14514,9 +14531,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14541,9 +14555,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14565,7 +14576,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14616,7 +14627,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14691,7 +14705,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15977,9 +15994,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16118,7 +16132,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16353,15 +16368,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16411,9 +16430,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16826,7 +16851,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16989,15 +17014,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18564,6 +18580,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19067,9 +19086,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20273,6 +20289,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20359,6 +20378,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20415,6 +20438,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22271,6 +22297,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22370,6 +22405,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22552,6 +22590,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22701,9 +22751,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22859,6 +22906,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23203,6 +23262,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23919,6 +23981,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25600,6 +25665,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27946,6 +28020,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29331,18 +29414,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29386,6 +29457,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29411,6 +29492,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29420,6 +29525,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30561,6 +30669,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32165,6 +32276,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32208,9 +32325,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/mk.po b/i18n/po/mk.po
index 20b2fd7..33e8328 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:54+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:56+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: mk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Параметарот „downloadgps“ не прифаќа имиња и URL-адреси на податотеки"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Излези од JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Продолжи. Сепак обиди се"
-
-msgid "Error"
-msgstr "Грешка"
-
 msgid "About"
 msgstr "За нас"
 
@@ -237,6 +222,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Грешка"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -512,7 +500,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1074,19 +1062,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1095,16 +1077,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1802,6 +1774,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2826,7 +2801,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2878,6 +2853,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2910,9 +2888,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5574,12 +5549,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5593,6 +5562,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5772,6 +5747,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7625,11 +7622,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9115,13 +9107,6 @@ 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 ""
 
@@ -9137,6 +9122,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12418,6 +12408,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13207,6 +13200,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13918,6 +13914,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13944,6 +13952,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13955,21 +13970,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14113,64 +14116,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14504,9 +14521,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14531,9 +14545,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14555,7 +14566,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14606,7 +14617,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14681,7 +14695,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15967,9 +15984,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16108,7 +16122,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16343,15 +16358,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16401,9 +16420,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16816,7 +16841,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16979,15 +17004,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18554,6 +18570,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19057,9 +19076,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20263,6 +20279,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20349,6 +20368,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20405,6 +20428,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22261,6 +22287,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22360,6 +22395,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22542,6 +22580,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22691,9 +22741,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22849,6 +22896,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23193,6 +23252,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23909,6 +23971,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25590,6 +25655,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27936,6 +28010,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29321,18 +29404,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29376,6 +29447,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29401,6 +29482,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29410,6 +29515,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30551,6 +30659,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32155,6 +32266,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32198,9 +32315,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/mr.po b/i18n/po/mr.po
index cc76fc3..74d2473 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:55+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:57+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: mr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,24 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "प्रमाणक \"downloadgps\" संचिका नावे किंवा संचिका URLs स्वीकारत नाही"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM साठी जावा आवृत्ती {0} असणे आवश्यक आहे.</h2>आढळलेली जावा आवृत्ती: "
-"{1}.<br>आपण <ul><li>आपले जावा (JRE) अद्ययावत करू शकता अथवा</li><li>JOSM ची "
-"आधीची (जावा {2} शी सुसंगत) आवृत्ती वापरू शकता.</li></ul>अधिक माहिती:"
-
-msgid "Exit JOSM"
-msgstr "JOSM मधून बाहेर पडा"
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "परिचय"
 
@@ -239,6 +221,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr "WMS थरासाठी प्रतिमा प्रारूप निवडा"
 
@@ -519,7 +504,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1092,19 +1077,13 @@ msgstr ""
 msgid "Paste"
 msgstr "चिकटवा"
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1113,16 +1092,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1829,6 +1798,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2854,8 +2826,8 @@ msgstr "मार्ग {0} बदला"
 msgid "Change relation {0}"
 msgstr "संबंध {0} बदला"
 
-msgid "Changed nodes of {0}"
-msgstr "{0}च्या गाठी बदलल्या"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr ""
@@ -2906,6 +2878,9 @@ msgstr[1] "वस्तू"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2938,9 +2913,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5602,12 +5574,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5621,6 +5587,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5800,6 +5772,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7653,11 +7647,6 @@ msgstr "सध्या निवडलेले सदस्य वर सर
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9143,13 +9132,6 @@ 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 ""
 
@@ -9165,6 +9147,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "थर साठवा"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12456,6 +12443,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13245,6 +13235,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13956,6 +13949,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13982,6 +13987,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13993,21 +14005,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14151,64 +14151,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14542,9 +14556,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14569,9 +14580,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14593,7 +14601,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14644,7 +14652,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14719,7 +14730,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16005,9 +16019,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16146,7 +16157,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16381,15 +16393,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16439,9 +16455,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16854,7 +16876,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -17017,15 +17039,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18592,6 +18605,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19095,9 +19111,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20301,6 +20314,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20387,6 +20403,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20443,6 +20463,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22299,6 +22322,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22398,6 +22430,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22580,6 +22615,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22729,9 +22776,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22887,6 +22931,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23231,6 +23287,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23947,6 +24006,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25628,6 +25690,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27974,6 +28045,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29359,18 +29439,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29414,6 +29482,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29439,6 +29517,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29448,6 +29550,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30589,6 +30694,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32193,6 +32301,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32236,9 +32350,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ms.po b/i18n/po/ms.po
index 1095bb9..63c690a 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:55+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:58+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ms\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "Tentang"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/nb.po b/i18n/po/nb.po
index 37882a8..1f75372 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2015-11-28 16:18+0000\n"
 "Last-Translator: Magnus Meyer Hustveit <Unknown>\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: 2016-07-12 04:57+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:59+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: nb\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,24 +112,6 @@ msgstr "Overser feilutformet fil-URL: «{0}»"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parameter \"downloadgps\" støtter ikke filnavn eller fil baner"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM trenger Java versjon {0}.</h2>Funnet versjon: {1}.<br>Du kan "
-"<ul><li>oppdatere din Java (JRE), eller</li><li>bruke en tidligere (Java {2}-"
-"kompatibel) versjon av JOSM.</li></ul>Mer informasjon:"
-
-msgid "Exit JOSM"
-msgstr "Avslutt JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Fortsett, prøv allikevel"
-
-msgid "Error"
-msgstr "Feil"
-
 msgid "About"
 msgstr "Om"
 
@@ -243,6 +225,9 @@ msgstr "Sett valgte kartobjekt til det som er valgt i lista ovenfor."
 msgid "Add imagery layer {0}"
 msgstr "Legg til bildelag {0}"
 
+msgid "Error"
+msgstr "Feil"
+
 msgid "Select image format for WMS layer"
 msgstr "Velg bildeformat for WMS-lag"
 
@@ -530,8 +515,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Fordoble"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Fordoble utvalget ved å kopiere og umiddelbart lime inn."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Avslutt"
@@ -1097,19 +1082,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Lim inn"
 
-msgid "Paste contents of paste buffer."
-msgstr "Lim inn fra utklippstavla."
-
-msgid "Delete incomplete members?"
-msgstr "Slett ufulstendige medlemer?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
+msgid "Paste at source position"
 msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1118,16 +1097,6 @@ msgstr "Lim inn egenskaper"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Bruk egenskaper i utklippstavla på alle valgte element."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Innstillinger …"
 
@@ -1840,6 +1809,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2875,7 +2847,7 @@ msgstr "Endre linje {0}"
 msgid "Change relation {0}"
 msgstr "Endre relasjon {0}"
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2927,6 +2899,9 @@ msgstr[1] "objekter"
 msgid "Change relation member role for {0} {1}"
 msgstr "Endre rolle for relasjonsmedlem {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2959,9 +2934,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5665,12 +5637,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5684,6 +5650,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5863,6 +5835,28 @@ msgstr "Ny nøkkel"
 msgid "New value"
 msgstr "Ny verdi"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr "Slett ufulstendige medlemer?"
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7716,11 +7710,6 @@ msgstr "Flytt valgte medlem opp"
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9234,13 +9223,6 @@ 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 ""
 
@@ -9256,6 +9238,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Lagre lag"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12592,6 +12579,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13388,6 +13378,9 @@ msgstr "Vil du tillate dette?"
 msgid "Confirm Remote Control action"
 msgstr "Bekreft Remote Control handlinger"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14105,6 +14098,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14131,6 +14136,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14142,21 +14154,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14300,64 +14300,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Ikke gjør noe"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Rapporter feil"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "En uventet unntakstilstand"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Teksten har alt blitt kopiert til utklippstavlen din.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14695,9 +14709,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14722,9 +14733,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14746,7 +14754,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14797,7 +14805,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14872,7 +14883,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16171,9 +16185,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16314,7 +16325,8 @@ msgstr "Last enkelt ned data langs strekninger av sammenknyttede veier."
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16549,17 +16561,21 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "nei"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "ja"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "jernbane"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16607,9 +16623,15 @@ msgstr "Åpningstider"
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "ja"
+
 msgid "limited"
 msgstr "begrenset"
 
+msgid "no"
+msgstr "nei"
+
 msgid "Brand"
 msgstr ""
 
@@ -17022,8 +17044,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Postnummer"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17185,15 +17207,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunni"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "lav"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18760,6 +18773,9 @@ msgstr "T-bane"
 msgid "Tram"
 msgstr "Trikk"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "Busspor"
 
@@ -19263,9 +19279,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20469,6 +20482,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Sportssenter"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Bane"
 
@@ -20555,6 +20571,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20611,6 +20631,9 @@ msgstr "Hesteløp"
 msgid "Gymnastics"
 msgstr "Gymnastikk"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22467,6 +22490,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr "Frisør/barbersalong"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tatovering"
 
@@ -22566,6 +22598,9 @@ msgstr "hundeposer"
 msgid "food"
 msgstr "mat"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22748,6 +22783,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22897,9 +22944,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr "Nasjonalpark"
 
@@ -23055,6 +23099,18 @@ msgstr "Øy"
 msgid "Islet"
 msgstr "Holme"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natur"
 
@@ -23399,6 +23455,9 @@ msgstr ""
 msgid "City name"
 msgstr "By/sted"
 
+msgid "Post code"
+msgstr "Postnummer"
+
 msgid "Country code"
 msgstr "Landskode"
 
@@ -24115,6 +24174,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25804,6 +25866,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "lav"
+
 msgid "symbol"
 msgstr ""
 
@@ -28184,6 +28255,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29570,18 +29650,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29625,6 +29693,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29650,6 +29728,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29659,6 +29761,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "jernbane"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30804,6 +30909,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32410,6 +32518,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32453,9 +32567,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/nds.po b/i18n/po/nds.po
index 4cd3207..53b062e 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:56+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:58+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[0] "Objekt"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/nl.po b/i18n/po/nl.po
index d5067c9..2727b73 100644
--- a/i18n/po/nl.po
+++ b/i18n/po/nl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-06-26 12:48+0000\n"
 "Last-Translator: DiGro <Unknown>\n"
 "Language-Team: Dutch\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: 2016-07-12 04:40+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:40+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: nl\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -115,24 +115,6 @@ msgstr ""
 "Parameter \"downloadgps\" accepteert geen bestandsnamen of URL''s voor "
 "bestanden"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM vereist Java versie {0}.</h2>Waargenomen Java versie: {1}.<br>U "
-"kunt uw Java (JRE) <ul><li>bijwerken of</li><li>een eerdere (Java {2} "
-"compatibele) versie van JOSM gebruiken.</li></ul>Meer informatie:"
-
-msgid "Exit JOSM"
-msgstr "JOSM verlaten"
-
-msgid "Continue, try anyway"
-msgstr "Toch proberen door te gaan"
-
-msgid "Error"
-msgstr "Fout"
-
 msgid "About"
 msgstr "Over"
 
@@ -248,6 +230,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Afbeeldingslaag {0} toevoegen"
 
+msgid "Error"
+msgstr "Fout"
+
 msgid "Select image format for WMS layer"
 msgstr "Kies een afbeelding voor de WMS laag"
 
@@ -542,10 +527,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Dupliceren"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
-"Dupliceer selectie door kopiëren en direct plakken waar muisaanwijzer zich "
-"bevindt."
 
 msgid "Exit"
 msgstr "Afsluiten"
@@ -1185,23 +1168,14 @@ msgstr "Overpass query: "
 msgid "Paste"
 msgstr "Plakken"
 
-msgid "Paste contents of paste buffer."
-msgstr "Inhoud van de buffer plakken."
-
-msgid "Delete incomplete members?"
-msgstr "Onvolledige leden verwijderen?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Plakken zonder onvolledige leden"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"De gekopieerde gegevens bevatten incomplete objecten.  Bij het plakken "
-"worden de incomplete objecten verwijderd.  Wilt u de gegevens plakken zonder "
-"deze incomplete objecten?"
 
 msgid "Paste Tags"
 msgstr "Tags plakken"
@@ -1210,16 +1184,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "Pas tags van de inhoud van de buffer toe op alle geselecteerde items."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Plakken {0} tag"
-msgstr[1] "Plakken {0} tags"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "naar {0} object"
-msgstr[1] "naar {0} objecten"
-
 msgid "Preferences..."
 msgstr "Voorkeuren..."
 
@@ -1988,6 +1952,9 @@ msgstr "Zoekopdracht en downloaden wijzigingensets ..."
 msgid "Errors during download"
 msgstr "Fouten tijdens downloaden"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "GPS downloaden"
 
@@ -3111,8 +3078,8 @@ msgstr "Weg {0} wijzigen"
 msgid "Change relation {0}"
 msgstr "Relatie {0} wijzigen"
 
-msgid "Changed nodes of {0}"
-msgstr "{0} knopen werden gewijzigd"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Verwijder \"{0}\" voor knoop \"{1}\""
@@ -3163,6 +3130,9 @@ msgstr[1] "objecten"
 msgid "Change relation member role for {0} {1}"
 msgstr "Wijzig rol van lid van relatie voor {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "\"{0}\" verwijderd"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Ten minste één te verwijderen object vereist, kreeg lege verzameling"
 
@@ -3195,9 +3165,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Verwijder {0} relatie"
 msgstr[1] "Verwijder {0} relaties"
 
-msgid "Deleted ''{0}''"
-msgstr "\"{0}\" verwijderd"
-
 msgid "Delete confirmation"
 msgstr "Bevestig verwijderen"
 
@@ -6103,12 +6070,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Combineren bevestigen"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>ontbreekt</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6132,6 +6093,12 @@ msgstr[1] ""
 "hebben.<br/>Als u door wilt gaan worden in een dialoogvenster de "
 "conflicterende tags weergegeven om te repareren.<br/><br/>Wilt u doorgaan?"
 
+msgid "<i>missing</i>"
+msgstr "<i>ontbreekt</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Kies een waarde"
 
@@ -6336,6 +6303,31 @@ msgstr "Nieuwe sleutel"
 msgid "New value"
 msgstr "Nieuwe waarde"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Plakken {0} tag"
+msgstr[1] "Plakken {0} tags"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "naar {0} object"
+msgstr[1] "naar {0} objecten"
+
+msgid "Delete incomplete members?"
+msgstr "Onvolledige leden verwijderen?"
+
+msgid "Paste without incomplete members"
+msgstr "Plakken zonder onvolledige leden"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"De gekopieerde gegevens bevatten incomplete objecten.  Bij het plakken "
+"worden de incomplete objecten verwijderd.  Wilt u de gegevens plakken zonder "
+"deze incomplete objecten?"
+
 msgid "For selected objects only"
 msgstr "Alleen voor de geselecteerde objecten"
 
@@ -8375,13 +8367,6 @@ msgstr "De huidige geselecteerde leden omhoog verplaatsen"
 msgid "Apply the updates and close the dialog"
 msgstr "Voer de bijwerkingen door en sluit het dialoogvenster"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Leden in de buffer Plakken kunnen niet worden toegevoegd omdat ze geen deel "
-"uitmaken van de huidige laag"
-
 msgid "Relation Editor: Refresh"
 msgstr "Relatiebewerker: Vernieuwen"
 
@@ -10103,17 +10088,6 @@ 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 ""
-"Voor het toevoegen van een andere laag dient u tenminste {0,number,#}MB "
-"geheugen toe te wijzen aan JOSM met behulp van de optie -Xmx{0,number,#}M  "
-"(zie http://forum.openstreetmap.org/viewtopic.php?id=25677).Momenteel heeft "
-"u {1,number,#}MB geheugen toegewezen aan JOSM"
-
 msgid "All projections are supported"
 msgstr "Alle projecties worden ondersteund"
 
@@ -10129,6 +10103,11 @@ msgstr "Wijzig de projectie opnieuw of verwijder de laag."
 msgid "Save Layer"
 msgstr "Laag opslaan"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Laag met opmerkingen"
 
@@ -13835,6 +13814,9 @@ msgstr ""
 "Openen van bestand met extensie ''{2}'' en deel van naam ''{3}'' in zip-"
 "bestand ''{0}'' mislukt. Exceptie was: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Hernoemen van bestand {0} naar {1} mislukt."
 
@@ -14709,6 +14691,9 @@ msgstr "Wil je dit toestaan?"
 msgid "Confirm Remote Control action"
 msgstr "Bevestig actie van Afstandsbediening"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15619,6 +15604,18 @@ msgstr ""
 "u probeerde dit object te downloaden.<br><br>Het foutenbericht "
 "is:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "breedtegraad"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL bevat gene geldige {0}"
+
+msgid "longitude"
+msgstr "lengtegraad"
+
+msgid "zoom"
+msgstr "Zoomen"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15650,6 +15647,17 @@ msgid ""
 msgstr ""
 "Toegang tot map ''{0}'' mislukt om beveiligingsredenen. Exceptie was: {1}"
 
+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 ""
+"Voor het toevoegen van een andere laag dient u tenminste {0,number,#}MB "
+"geheugen toe te wijzen aan JOSM met behulp van de optie -Xmx{0,number,#}M  "
+"(zie http://forum.openstreetmap.org/viewtopic.php?id=25677).Momenteel heeft "
+"u {1,number,#}MB geheugen toegewezen aan JOSM"
+
 msgid "{0}... [please type its number]"
 msgstr "{0}... [typ het nummer]"
 
@@ -15663,21 +15671,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Openings-URL: {0}"
 
-msgid "zoom"
-msgstr "Zoomen"
-
-msgid "latitude"
-msgstr "breedtegraad"
-
-msgid "longitude"
-msgstr "lengtegraad"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL bevat geen {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL bevat gene geldige {0}"
-
 msgid "reserved"
 msgstr "gereserveerd"
 
@@ -15852,85 +15848,81 @@ msgstr "Negeren van niet goed gevormde geometrie: {0}"
 msgid "Failed to load XML schema."
 msgstr "Laden van XML-schema mislukt."
 
-msgid "Do nothing"
-msgstr "Niets doen"
-
-msgid "Report Bug"
-msgstr "Fout melden"
+msgid "You have encountered a bug in JOSM"
+msgstr "U bent een probleem tegengekomen in JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Er trad een onverwachte exceptie op.<br>Dit is altijd een fout in de "
-"codering. Indien u de laatste versie gebruikt van<br>JOSM, overweeg dan om "
-"aardig te zijn en een foutenrapport in te dienen."
 
-msgid "Update JOSM"
-msgstr "JOSM bijwerken"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Er trad een onverwachte fout op. Dit als altijd een fout in de "
-"codering.<br><br>Echter, u voert een oude versie van JOSM ({0}) uit,<br>in "
-"plaats van de huidige geteste versie te gebruiken "
-"(<b>{1}</b>).<br><br><b>Werk JOSM bij</b> vóórdat u overweegt een "
-"probleemrapport in te dienen."
+
+msgid "Report Bug"
+msgstr "Fout melden"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Onderdruk verdere dialoogvensters voor fouten voor deze sessie."
 
-msgid "Unexpected Exception"
-msgstr "Er is een onverwachte fout opgetreden"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "U bent een probleem tegengekomen in JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"U bent een fout tegengekomen in JOSM. Vóórdat u een foutenrapport indient, "
-"zorg er voor dat u hier bent bijgewerkt naar de laatste versie van JOSM:"
+"Openen van het bugrapport is mislukt. Rapporteer dit handmatig met behulp "
+"van deze website:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"U zou ook uw plug-ins moeten bijwerken. Als geen van beide helpt dien dan "
-"een foutenrapport in onze database in voor problemen met behulp van deze "
-"koppeling:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Daar zou de hieronder vermelde informatie over de fout al voor u moeten zijn "
-"ingevuld. Vermeld informatie over hoe de fout kan worden gereproduceerd en "
-"probeer zo veel mogelijk details te geven als mogelijk."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
 msgstr ""
-"Als alternatief: als dat niet werkt kunt u de onderstaande informatie "
-"handmatig invoeren bij deze URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(De tekst is reeds gekopieerd naar je klembord.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Openen van het bugrapport is mislukt. Rapporteer dit handmatig met behulp "
-"van deze website:"
+
+msgid "Update JOSM"
+msgstr "JOSM bijwerken"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16276,9 +16268,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox Satellite"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16303,9 +16292,6 @@ msgstr "OpenStreetMap (Duitse stijl)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS-sporen"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Public Transport (ÖPNV)"
 
@@ -16327,7 +16313,7 @@ msgstr "Strava fietsen heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava hardlopen heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16378,8 +16364,11 @@ msgstr "OSM Inspector: Adressen"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Grenzen (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI zwart-wit 2.5m"
@@ -16453,8 +16442,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) luchtfoto''s (bedekt ook de regio Brussel)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerieke afbeeldingen (2013)"
@@ -17856,9 +17848,6 @@ msgstr "Lees en schrijf osmosis poly filterbestanden"
 msgid "Adds map printing to JOSM"
 msgstr "Voegt afdrukken van kaarten in JOSM in"
 
-msgid "adds projections from Proj4J"
-msgstr "voegt projecties toe van Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -18048,9 +18037,9 @@ msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 "Schakelt zoeken in naar wegpunten die zijn geïmporteerd uit een GPX-bestand."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
-"Vereenvoudigt het koppelen van objecten van OSM aan artikelen van Wikipedia"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18286,17 +18275,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Elektrisch"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "bovenleiding"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "nee"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "ja"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "spoor"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltage in Volt (V)"
@@ -18344,9 +18337,15 @@ msgstr "Openingstijden"
 msgid "Wheelchairs"
 msgstr "Rolstoelen"
 
+msgid "yes"
+msgstr "ja"
+
 msgid "limited"
 msgstr "beperkt"
 
+msgid "no"
+msgstr "nee"
+
 msgid "Brand"
 msgstr "Merk"
 
@@ -18759,7 +18758,7 @@ msgstr "verkeer bosbouw"
 msgid "Population"
 msgstr "Populatie"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Postcode"
 
 msgid "Website"
@@ -18928,15 +18927,6 @@ msgstr "Sjiiet"
 msgid "sunni"
 msgstr "Soenniet"
 
-msgid "high"
-msgstr "hoog"
-
-msgid "medium"
-msgstr "medium"
-
-msgid "low"
-msgstr "laag"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20527,6 +20517,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tram"
 
+msgid "Funicular"
+msgstr "Kabelbaan"
+
 msgid "Bus Guideway"
 msgstr "Busbaan"
 
@@ -21033,9 +21026,6 @@ msgstr "Trolleybus"
 msgid "Share taxi"
 msgstr "Deeltaxi"
 
-msgid "Funicular"
-msgstr "Kabelbaan"
-
 msgid "Ferry"
 msgstr "Veerboot"
 
@@ -22241,6 +22231,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Sportcentrum"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Sportveld"
 
@@ -22327,6 +22320,10 @@ msgid "sports_centre"
 msgstr "sport_centrum"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadion"
 
@@ -22383,6 +22380,9 @@ msgstr "Paardenrennen"
 msgid "Gymnastics"
 msgstr "Turnen"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "Schaatsen"
 
@@ -24241,6 +24241,15 @@ msgstr "Tabak"
 msgid "Hairdresser/Barber"
 msgstr "Kapper/Barbier"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tattooshop"
 
@@ -24340,6 +24349,9 @@ msgstr "hondenpoepzakjes"
 msgid "food"
 msgstr "voedsel"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr "kranten"
 
@@ -24522,6 +24534,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Overheid"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Verzekering"
@@ -24671,9 +24695,6 @@ msgstr "taal_gemeenschap"
 msgid "ward"
 msgstr "zaal"
 
-msgid "Postal Code"
-msgstr "Postcode"
-
 msgid "National Park"
 msgstr "nationaal park"
 
@@ -24833,6 +24854,18 @@ msgstr "Eiland"
 msgid "Islet"
 msgstr "Klein eiland"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natuur"
 
@@ -25184,6 +25217,9 @@ msgstr "Woonplaatsnaam"
 msgid "City name"
 msgstr "Naam stad"
 
+msgid "Post code"
+msgstr "Postcode"
+
 msgid "Country code"
 msgstr "Landcode"
 
@@ -25911,6 +25947,9 @@ msgstr ""
 "definieert. Verwijder {1} of voeg een tag tunnel toe indien van toepassing. "
 "Controleer ook kruisende bruggen en hun {1} tags."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} is vervallen"
 
@@ -27815,6 +27854,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "hoog"
+
+msgid "medium"
+msgstr "medium"
+
+msgid "low"
+msgstr "laag"
+
 msgid "symbol"
 msgstr "symbool"
 
@@ -30334,6 +30382,15 @@ msgstr[1] "{0} afbeeldingen gedraaid"
 msgid "2 images unjoined"
 msgstr "2 afbeeldingen van elkaar losgemaakt"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31817,18 +31874,6 @@ msgstr "Afdrukken gestopt"
 msgid "Printing has failed."
 msgstr "Afdrukken is mislukt."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} geselecteerd"
-
-msgid "Selected: {0}"
-msgstr "Geselecteerd: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Plug-in Proj4J"
-
-msgid "Code"
-msgstr "Code"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31875,6 +31920,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr "Testen Assistent openbaar vervoer"
 
@@ -31901,6 +31956,30 @@ msgstr "PT: Route zou moeten beginnen en eindigen met een stop_position"
 msgid "PT: First or last way needs to be split"
 msgstr "PT: Eerste of laatste weg zou moeten wordne gesplitst"
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 "PT: Type route komt niet overeen met het type weg waar het overheen gaat"
@@ -31911,6 +31990,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "spoor"
+
 msgid "Can''t parse a time from this string."
 msgstr "Kan geen tijd parsen uit deze tekenreeks."
 
@@ -33110,6 +33192,9 @@ msgstr "Er ging iets mis, probeer opnieuw"
 msgid "No change to upload!"
 msgstr "Geen wijziging om te uploaden!"
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Kan geen knoop buiten de wereld plaatsen."
 
@@ -34953,6 +35038,12 @@ msgstr ""
 "Haalt interwiki-koppelingen op vanaf Wikipedia om diverse tags voor namen "
 "toe te voegen"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -35000,9 +35091,6 @@ msgstr "Categorie"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Haalt een lijst op van alle artikelen op Wikipedia van een categorie"
 
-msgid "Enter the Wikipedia category"
-msgstr "Voer de categorie voor Wikipedia in"
-
 msgid "Clipboard"
 msgstr "Klembord"
 
diff --git a/i18n/po/nn.po b/i18n/po/nn.po
index 0e146e4..8acdb4a 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:56+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:59+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: nn\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Feil"
-
 msgid "About"
 msgstr "Om"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Feil"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/oc.po b/i18n/po/oc.po
index 09d3612..2b215d1 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:57+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:00+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Lo paramètre \"downloadgps\" accèpta pas de noms de fichièr o d'URLs."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Quitar JOSM"
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "Error"
-
 msgid "About"
 msgstr "A prepaus"
 
@@ -237,6 +222,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Apondre lo calc d’imatjariá {0}"
 
+msgid "Error"
+msgstr "Error"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -516,7 +504,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duplicar"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1078,19 +1066,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Empegar"
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1099,16 +1081,6 @@ msgstr "Empegar los atributs"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Preferéncias..."
 
@@ -1806,6 +1778,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2830,7 +2805,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr "Modificar la relacion {0}"
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2882,6 +2857,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2914,9 +2892,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5578,12 +5553,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5597,6 +5566,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5776,6 +5751,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7629,11 +7626,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9119,13 +9111,6 @@ 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 ""
 
@@ -9141,6 +9126,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Salvar lo calc"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12423,6 +12413,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13212,6 +13205,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13923,6 +13919,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13949,6 +13957,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13960,21 +13975,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14118,64 +14121,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14509,9 +14526,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14536,9 +14550,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14560,7 +14571,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14611,7 +14622,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14686,7 +14700,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15972,9 +15989,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16113,7 +16127,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16348,15 +16363,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16406,9 +16425,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16821,7 +16846,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16984,15 +17009,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18559,6 +18575,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19062,9 +19081,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20268,6 +20284,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20354,6 +20373,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20410,6 +20433,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22266,6 +22292,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22365,6 +22400,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22547,6 +22585,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22696,9 +22746,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22854,6 +22901,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23198,6 +23257,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23914,6 +23976,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25595,6 +25660,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27941,6 +28015,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29326,18 +29409,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29381,6 +29452,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29406,6 +29487,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29415,6 +29520,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30556,6 +30664,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32160,6 +32271,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32203,9 +32320,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/pa.po b/i18n/po/pa.po
index 1a6e958..adbcc9a 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:58+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:00+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: pa\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "ਇਸ ਬਾਰੇ"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/pl.po b/i18n/po/pl.po
index 21ee5a2..c38c20f 100644
--- a/i18n/po/pl.po
+++ b/i18n/po/pl.po
@@ -2,22 +2,23 @@
 # PAWEŁ MADEJ <nysander at quanteam.pl>, 2008.
 # Nabuchodonozor <nabuchodonozor.2nd at gmail.com>, 2008.
 # MARCIN FLORYAN <mfloryan at mmsqaure.com>, 2008.
+# Piotr Sokół <psokol.l10n at gmail.com>, 2016.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-10 06:11+0000\n"
-"Last-Translator: Daniel Koć <daniel at xn--ko-wla.pl>\n"
-"Language-Team: Polish <josm-lang-pl at googlegroups.com>\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-11 06:36+0000\n"
+"Last-Translator: Piotr Sokół <Unknown>\n"
+"Language-Team: polski <>\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: 2016-07-12 04:59+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:01+0000\n"
+"X-Generator: Launchpad (build 18169)\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"
@@ -29,22 +30,22 @@ msgid "Lit"
 msgstr "Oświetlenie"
 
 msgid "{0}: option ''{1}'' is ambiguous"
-msgstr "{0}: opcja \"{1}\" jest niejednoznaczna"
+msgstr "{0}: opcja „{1}” jest niejednoznaczna"
 
 msgid "{0}: option ''--{1}'' does not allow an argument"
-msgstr "{0}: opcja \"--{1}\" nie zezwala na parametr"
+msgstr "{0}: opcja „--{1}” nie zezwala na parametr"
 
 msgid "{0}: option ''{1}{2}'' does not allow an argument"
-msgstr "{0}: opcja ''{1}{2}'' nie zezwala na parametr"
+msgstr "{0}: opcja „{1}{2}'' nie zezwala na parametr"
 
 msgid "{0}: option ''{1}'' requires an argument"
-msgstr "{0}: opcja ''{1}'' wymaga użycia parametru"
+msgstr "{0}: opcja „{1}” wymaga użycia parametru"
 
 msgid "{0}: unrecognized option ''--{1}''"
-msgstr "{0}: nierozpoznana opcja ''--{1}''"
+msgstr "{0}: nierozpoznana opcja „--{1}''"
 
 msgid "{0}: unrecognized option ''{1}{2}''"
-msgstr "{0}: nierozpoznana opcja ''{1}{2}''"
+msgstr "{0}: nierozpoznana opcja „{1}{2}''"
 
 msgid "{0}: illegal option -- {1}"
 msgstr "{0}: niedozwolona opcja -- {1}"
@@ -56,13 +57,13 @@ msgid "{0}: option requires an argument -- {1}"
 msgstr "{0}: opcja wymaga użycia parametru -- {1}"
 
 msgid "Invalid value {0} for parameter ''has_arg''"
-msgstr "Niepoprawna wartość {0} dla parametru ''has_arg''"
+msgstr "Nieprawidłowa wartość {0} dla parametru „has_arg''"
 
 msgid "Background Terms of Use"
 msgstr "Warunki korzystania z podkładu"
 
 msgid "Opening link not supported on current platform (''{0}'')"
-msgstr "Otwarcie łącza nie jest obsługiwane na tej platformie (\"{0}\")"
+msgstr "Otwarcie łącza nie jest obsługiwane na tej platformie („{0}”)"
 
 msgid "ERROR: {0}"
 msgstr "BŁĄD: {0}"
@@ -110,35 +111,16 @@ msgid "Failed to save default preferences."
 msgstr "Nie udało się zapisać domyślnych ustawień."
 
 msgid "Ignoring malformed URL: \"{0}\""
-msgstr "Pominięto nieprawidłowy adres URL: \"{0}\""
+msgstr "Pominięto nieprawidłowy adres URL: „{0}”"
 
 msgid "Warning"
 msgstr "Ostrzeżenie"
 
 msgid "Ignoring malformed file URL: \"{0}\""
-msgstr "Pominięto nieprawidłowy adres URL pliku: \"{0}\""
+msgstr "Pominięto nieprawidłowy adres URL pliku: „{0}”"
 
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
-msgstr "Parametr \"downloadgps\" nie przyjmuje nazw plików lub adresów URL"
-
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM do poprawnego działania wymaga Java w wersji {0}.</h2>Wykryto Java "
-"w wersji: {1}.<br>Możesz <ul><li>zaktualizować swoją wersję Java (JRE) "
-"albo</li><li>używać wcześniejszej (kompatybilnej z Java {2}) wersji "
-"JOSM.</li></ul>Więcej informacji:"
-
-msgid "Exit JOSM"
-msgstr "Zakończ JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Kontynuuj mimo to"
-
-msgid "Error"
-msgstr "Błąd"
+msgstr "Parametr „downloadgps” nie przyjmuje nazw plików lub adresów URL"
 
 msgid "About"
 msgstr "O programie"
@@ -159,7 +141,7 @@ msgid "Java Version {0}"
 msgstr "Wersja Javy {0}"
 
 msgid "Homepage"
-msgstr "Strona domowa"
+msgstr "Strona główna"
 
 msgid "Info"
 msgstr "Informacje"
@@ -189,10 +171,10 @@ msgid "Report bug"
 msgstr "Zgłoś błąd"
 
 msgid "Failed to locate resource ''{0}''."
-msgstr "Nie udało się zlokalizować zasobu ''{0}''."
+msgstr "Nie udało się zlokalizować zasobu „{0}”."
 
 msgid "Failed to load resource ''{0}'', error is {1}."
-msgstr "Nie udało się załadować zasobu ''{0}'', błąd: {1}."
+msgstr "Nie udało się wczytać zasobu „{0}”, błąd: {1}."
 
 msgid ""
 "You are about to launch {0} browser window.<br>This may both clutter your "
@@ -215,7 +197,7 @@ msgstr "Kontynuuj"
 
 msgid "Click to continue and to open {0} browser"
 msgid_plural "Click to continue and to open {0} browsers"
-msgstr[0] "Kliknij by kontynuować i otworzyć {0} przeglądarkę"
+msgstr[0] "Proszę kliknąć, aby kontynuować i otworzyć {0} przeglądarkę"
 msgstr[1] "Kliknij by kontynuować i otworzyć {0} przeglądarki"
 msgstr[2] "Kliknij by kontynuować i otworzyć {0} przeglądarek"
 
@@ -223,7 +205,7 @@ msgid "Cancel"
 msgstr "Anuluj"
 
 msgid "Click to abort launching external browsers"
-msgstr "Kliknij aby anulować uruchomienie zewnetrznych przeglądarek"
+msgstr "Proszę kliknąć, aby anulować uruchomienie zewnętrznych przeglądarek"
 
 msgid "Please select at least one already uploaded node, way, or relation."
 msgstr "Proszę wybrać co najmniej jeden węzeł, linię lub relację"
@@ -242,21 +224,24 @@ msgid ""
 "to.</html>"
 msgstr ""
 "<html>Nie ma warstw, z którymi można by połączyć warstwę "
-"źródłową<br>''{0}''<br>.</html>"
+"źródłową<br>„{0}”<br>.</html>"
 
 msgid "No target layers"
 msgstr "Brak warstw docelowych."
 
 msgid "Select"
-msgstr "Zaznacz"
+msgstr "Zaznaczanie"
 
 msgid ""
 "Set the selected elements on the map to the selected items in the list above."
-msgstr "Zaznacz na mapie elementy zaznaczone na powyższej liście."
+msgstr "Zaznacza na mapie elementy wskazane na powyższej liście"
 
 msgid "Add imagery layer {0}"
 msgstr "Dodaje warstwę podkładu {0}"
 
+msgid "Error"
+msgstr "Błąd"
+
 msgid "Select image format for WMS layer"
 msgstr "Wybierz format obrazu dla warsty WMS"
 
@@ -282,7 +267,7 @@ msgid "Add Node..."
 msgstr "Dodaj węzeł..."
 
 msgid "Add a node by entering latitude / longitude or easting / northing."
-msgstr "Dodaj węzeł podając długość i szerokość geograficzną."
+msgstr "Dodaje węzeł wprowadzając jego współrzędne geograficzne"
 
 msgid "Edit: {0}"
 msgstr "Edycja: {0}"
@@ -361,16 +346,16 @@ msgid "Information"
 msgstr "Informacje"
 
 msgid "Zoom to {0}"
-msgstr "Pokaż {0}"
+msgstr "Przybliż do {0}"
 
 msgid "Zoom the view to {0}."
-msgstr "Powiększ aby pokazać: {0}"
+msgstr "Przybliż widok do {0}"
 
 msgid "View: {0}"
 msgstr "Widok: {0}"
 
 msgid "No conflicts to zoom to"
-msgstr "Brak konfliktów, które można pokazać"
+msgstr "Brak konfliktów do przybliżenia"
 
 msgid "Changeset Manager"
 msgstr "Menedżer zestawów zmian"
@@ -412,8 +397,8 @@ msgid ""
 "The ways can not be combined in their current directions.  Do you want to "
 "reverse some of them?"
 msgstr ""
-"Linie nie mogą być połączone jeżeli są skierowane tak jak obecnie. Czy "
-"zmienić kierunek niektórych linii?"
+"Linie nie mogą być połączone jeżeli są skierowane tak jak obecnie. Odwrócić "
+"kierunek niektórych linii?"
 
 msgid ""
 "Could not combine ways<br>(They could not be merged into a single string of "
@@ -434,19 +419,19 @@ msgid "Please select at least two ways to combine."
 msgstr "Wybierz co najmniej dwie linie do połączenia."
 
 msgid "Copy"
-msgstr "Kopiuj"
+msgstr "Skopiuj"
 
 msgid "Copy selected objects to paste buffer."
 msgstr "Kopiuje zaznaczone obiekty do schowka"
 
 msgid "Please select something to copy."
-msgstr "Proszę wybrać coś do skopiowania."
+msgstr "Proszę wybrać obiekt do skopiowania."
 
 msgid "Copy Coordinates"
-msgstr "Kopiuj współrzędne"
+msgstr "Skopiuj współrzędne"
 
 msgid "Copy coordinates of selected nodes to clipboard."
-msgstr "Kopiuje współrzędne zaznaczonego węzła do schowka."
+msgstr "Kopiuje współrzędne zaznaczonego węzła do schowka"
 
 msgid "Create Circle"
 msgstr "Utwórz okrąg"
@@ -458,14 +443,14 @@ msgid ""
 "Please select exactly two or three nodes or one way with exactly two or "
 "three nodes."
 msgstr ""
-"Proszę wybrać dwa lub trzy węzły lub linię składającą się dokładnie z dwóch "
-"lub trzech węzłów."
+"Proszę wybrać dokładnie dwa lub trzy węzły bądź linię składającą się "
+"dokładnie z dwóch lub trzech węzłów."
 
 msgid "Those nodes are not in a circle. Aborting."
-msgstr "Te węzły nie są wewnąrz koła. Porzucam."
+msgstr "Te węzły nie znajdują się wewnątrz koła. Anulowanie."
 
 msgid "Update multipolygon"
-msgstr "Zaktualizuj wielokąt złożony"
+msgstr "Uaktualnij wielokąt złożony"
 
 msgid "Create multipolygon"
 msgstr "Utwórz wielokąt złożony"
@@ -474,7 +459,7 @@ msgid "No data loaded."
 msgstr "Nie wczytano żadnych danych."
 
 msgid "You must select at least one way."
-msgstr "Musisz zaznaczyć co najmniej jedną linię."
+msgstr "Należy zaznaczyć co najmniej jedną linię."
 
 msgid "Delete"
 msgstr "Usuń"
@@ -486,34 +471,32 @@ msgid "Delete Layer"
 msgstr "Usuń warstwę"
 
 msgid "Delete the active layer. Does not delete the associated file."
-msgstr "Usuń aktywną warstwę. Nie usuwa powiązanego pliku."
+msgstr "Usuwa aktywną warstwę, nie usuwając powiązanego pliku"
 
 msgid "Toggle dialogs panel"
-msgstr "Przełącz panel dialogowy"
+msgstr "Panel boczny"
 
 msgid "Toggle dialogs panel, maximize mapview"
-msgstr "Przełącz panel dialogowy, maksymalizuj widok mapy"
+msgstr "Przełącza widoczność panelu bocznego maksymalizując widok mapy"
 
 msgid "Distribute Nodes"
 msgstr "Rozmieść węzły"
 
 msgid "Distribute the selected nodes to equal distances along a line."
-msgstr ""
-"Rozmieszcza wybrane węzły tak by znajdowały się w równych odległościach na "
-"jednej linii."
+msgstr "Rozmieszcza wybrane węzły w równych odległościach wzdłuż prostej"
 
 msgid "Ignoring {0} nodes with null coordinates"
-msgstr "Zignorowane punkty {0} bez współrzędnych"
+msgstr "Ignorowanie {0} węzłów bez współrzędnych"
 
 msgid ""
 "Please select :\n"
 "* One no self-crossing way with at most two of its nodes;\n"
 "* Three nodes."
 msgstr ""
-"Wybierz:\n"
-"* Jedną linię, która nie krzyżuje się sama ze sobą i zawiera przynajmniej "
-"dwa węzły;\n"
-"* Trzy węzły."
+"Proszę wybrać:\n"
+"* jedną linię, która nie krzyżuje się sama ze sobą i zawiera przynajmniej "
+"dwa węzły,\n"
+"* trzy węzły."
 
 msgid "Download from OSM..."
 msgstr "Pobierz z OSM..."
@@ -525,8 +508,8 @@ msgid ""
 "<html>This action will require {0} individual<br>download requests. Do you "
 "wish<br>to continue?</html>"
 msgstr ""
-"<html>Ta akcja będzie wymagała {0} osobnych pobrań.<br>Czy "
-"kontynuować?</html>"
+"<html>To działanie będzie wymagało {0} osobnych żądań "
+"pobierania.<br>Kontynuować?</html>"
 
 msgid "Download data"
 msgstr "Pobiera dane"
@@ -538,19 +521,19 @@ msgid "Download object..."
 msgstr "Pobierz obiekt…"
 
 msgid "Download OSM object by ID."
-msgstr "Pobiera obiekt wg ID"
+msgstr "Pobiera obiekt wg identyfikatora"
 
 msgid "Download parent ways/relations..."
 msgstr "Pobierz nadrzędne linie/relacje..."
 
 msgid "Download objects referring to one of the selected objects"
-msgstr "Pobierz obiekty powiązane z jednym z wybranych obiektów."
+msgstr "Pobiera obiekty powiązane z jednym z wybranych obiektów"
 
 msgid "Duplicate"
 msgstr "Powiel"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Powiela zaznaczone obiekty."
+msgid "Duplicate selection."
+msgstr "Powiela zaznaczenie"
 
 msgid "Exit"
 msgstr "Zakończ"
@@ -559,43 +542,43 @@ msgid "Exit the application."
 msgstr "Kończy działanie programu"
 
 msgid "Expert Mode"
-msgstr "Tryb eksperta"
+msgstr "Tryb zaawansowany"
 
 msgid "Enable/disable expert mode"
-msgstr "Włącza/wyłącza tryb eksperta"
+msgstr "Przełącza tryb zaawansowany"
 
 msgid "Follow line"
 msgstr "Podążaj za linią"
 
 msgid "Continues drawing a line that shares nodes with another line."
-msgstr "Kontynuuje rysowanie linii wspóldziejącej węzły z inną linią."
+msgstr "Kontynuuje rysowanie linii współdzielącej węzły z inną linią"
 
 msgid "Follow"
 msgstr "Podążaj"
 
 msgid "Fullscreen view"
-msgstr "Widok pełnoekranowy"
+msgstr "Pełny ekran"
 
 msgid "Toggle fullscreen view"
-msgstr "Przełącza na pełny ekran"
+msgstr "Przełącza widok pełnoekranowy"
 
 msgid "Export to GPX..."
 msgstr "Eksportuj do GPX..."
 
 msgid "Export the data to GPX file."
-msgstr "Eksportuj dane do pliku GPX"
+msgstr "Eksportuje dane do pliku GPX"
 
 msgid "Nothing to export. Get some data first."
-msgstr "Nie ma nic do wyeksportowania. Utwórz jakieś obiekty."
+msgstr "Nie ma nic do wyeksportowania. Proszę najpierw pobrać jakieś dane."
 
 msgid "Export GPX file"
-msgstr "Eksportuj do pliku GPX"
+msgstr "Eksportowanie do pliku GPX"
 
 msgid "History"
 msgstr "Historia"
 
 msgid "Display history information about OSM ways, nodes, or relations."
-msgstr "Wyświetl historyczne informacje o liniach, węzłach i relacjach OSM."
+msgstr "Wyświetla historię zmian linii, węzłów lub relacji"
 
 msgid "Show history"
 msgstr "Pokaż historię"
@@ -606,7 +589,9 @@ msgstr "Historia (strona internetowa)"
 msgid ""
 "Display history information about OSM ways, nodes, or relations in web "
 "browser."
-msgstr "Wyświetl historie zmian węzłów, dróg, relacji (na stronie WWW)."
+msgstr ""
+"Wyświetla historię zmian linii, węzłów lub relacji w przeglądarce "
+"internetowej"
 
 msgid "New offset"
 msgstr "Nowe przesunięcie"
@@ -615,7 +600,7 @@ msgid "Adjust the position of this imagery layer"
 msgstr "Dopasuj położenie warstwy obrazu"
 
 msgid "Adjust imagery offset"
-msgstr "Dopasowuj przesunięcie warstwy podkładu"
+msgstr "Ustala przesunięcie warstwy podkładu"
 
 msgid ""
 "Use arrow keys or drag the imagery layer with mouse to adjust the imagery "
@@ -623,28 +608,29 @@ msgid ""
 "You can also enter east and north offset in the {0} coordinates.\n"
 "If you want to save the offset as bookmark, enter the bookmark name below"
 msgstr ""
-"Użyj klawiszy strzałek albo przesuń myszką warstwę zdjęć aby ją dopasować.\n"
-"Możesz również podać przesunięcie na wschód i północ we współrzędnych {0}.\n"
-"Jeśli chcesz zachować przesunięcie wpisz nazwę zakładki."
+"Proszę użyć klawiszy strzałek lub przeciągnąć warstwę myszką, aby dopasować\n"
+"przesunięcie podkładu. Można również wprowadzić wartości przesunięcia\n"
+"na wschód i północ we współrzędnych {0}. Aby zachować przesunięcie, proszę\n"
+"wprowadzić poniżej nazwę zakładki."
 
 msgid "Offset: "
 msgstr "Przesunięcie: "
 
 msgid "Bookmark name: "
-msgstr "Nazwa zakładki "
+msgstr "Nazwa zakładki: "
 
 msgid "Overwrite"
 msgstr "Zastąp"
 
 msgid "Offset bookmark already exists. Overwrite?"
-msgstr "Zakładka przesunięcia już istnieje. Czy ją zastąpić?"
+msgstr "Zakładka przesunięcia już istnieje. Zastąpić ją?"
 
 msgid "Advanced info"
 msgstr "Szczegółowe informacje"
 
 msgid ""
 "Display advanced object information about OSM nodes, ways, or relations."
-msgstr "Wyświetl szczegółowe informacje o węzłach, liniach lub relacjach."
+msgstr "Wyświetla szczegółowe informacje o węzłach, liniach lub relacjach."
 
 msgid "Advanced info (web)"
 msgstr "Szczegółowe informacje (WWW)"
@@ -652,7 +638,9 @@ msgstr "Szczegółowe informacje (WWW)"
 msgid ""
 "Display object information about OSM nodes, ways, or relations in web "
 "browser."
-msgstr "Wyświetl informacje o węzłach, liniach lub relacjach na stronie WWW."
+msgstr ""
+"Wyświetla informacje o węzłach, liniach lub relacjach w przeglądarce "
+"internetowej."
 
 msgid "Join overlapping Areas"
 msgstr "Połącz nakładające się obszary"
@@ -686,7 +674,7 @@ msgid "Are you really sure to continue?"
 msgstr "Kontynuować?"
 
 msgid "Please abort if you are not sure"
-msgstr "Przerwij jeśli nie jesteś pewien"
+msgstr "Proszę przerwać jeśli nie ma pewności"
 
 msgid "The selected area is incomplete. Continue?"
 msgstr "Wybrany obszar nie jest kompletny. Kontynuować?"
@@ -757,7 +745,7 @@ msgid "Removed Element from Relations"
 msgstr "Usuń element z relacji"
 
 msgid "Remove tags from inner ways"
-msgstr "Usunięto tagi z linii wewnętrznych"
+msgstr "Usuń znaczniki z linii wewnętrznych"
 
 msgid "Join Areas Function"
 msgstr "Funkcja łączenia obszarów"
@@ -778,16 +766,16 @@ msgid "No Shortcut"
 msgstr "Brak skrótu"
 
 msgid "Jump To Position"
-msgstr "Przejdź do pozycji"
+msgstr "Przejdź do położenia"
 
 msgid "Opens a dialog that allows to jump to a specific location"
-msgstr "Otwiera okno umożliwiające skok do wybranej pozycji"
+msgstr "Otwiera okno umożliwiające wyświetlenie wybranego położenia"
 
 msgid "Enter Lat/Lon to jump to position."
 msgstr "Wpisz Szerokość/Długość żeby przejść do pozycji"
 
 msgid "You can also paste an URL from www.openstreetmap.org"
-msgstr "Możesz też wkleić adres URL z www.openstreetmap.org"
+msgstr "Można też wkleić adres URL z www.openstreetmap.org"
 
 msgid "Latitude"
 msgstr "Szerokość"
@@ -796,28 +784,30 @@ msgid "Longitude"
 msgstr "Długość"
 
 msgid "Zoom (in metres)"
-msgstr "Zbliżenie (w metrach)"
+msgstr "Przybliżenie (w metrach)"
 
 msgid "URL"
-msgstr "URL"
+msgstr "Adres URL"
 
 msgid "Jump there"
 msgstr "Przejdź"
 
 msgid "Jump to Position"
-msgstr "Przejdź do pozycji"
+msgstr "Przechodzenie do położenia"
 
 msgid "Could not parse Latitude, Longitude or Zoom. Please check."
-msgstr "Błąd parsowania współrzędnych lub przybliżenia."
+msgstr ""
+"Nie można przetworzyć współrzędnych lub przybliżenia. Proszę sprawdzić "
+"wprowadzone dane."
 
 msgid "Unable to parse Lon/Lat"
-msgstr "Nie można parsować współrzędnych"
+msgstr "Nie można przetworzyć współrzędnych"
 
 msgid "Lasso Mode"
-msgstr "Tryb lasso"
+msgstr "Zaznaczanie w trybie lasso"
 
 msgid "Lasso selection mode: select objects within a hand-drawn region"
-msgstr "Zaznaczanie w trybie lasso: zaznacza obiekty zakreślone myszką"
+msgstr "Zaznacza obiekty zakreślone obszarem"
 
 msgid "Rectified Image..."
 msgstr "Obraz..."
@@ -829,16 +819,16 @@ msgid "Imagery: {0}"
 msgstr "Podkład: {0}"
 
 msgid "Custom WMS Link"
-msgstr "Link WMS"
+msgstr "Własny odnośnik WMS"
 
 msgid "Supported Rectifier Services:"
 msgstr "Obsługiwane serwisy rektyfikacyjne"
 
 msgid "Visit Homepage"
-msgstr "Odwiedź stronę domową"
+msgstr "Odwiedź stronę główną"
 
 msgid "WMS URL or Image ID:"
-msgstr "URL do WMS lub identyfikator obrazu:"
+msgstr "Adres URL WMS lub identyfikator obrazu:"
 
 msgid "Add Rectified Image"
 msgstr "Dodaj obraz"
@@ -847,19 +837,20 @@ msgid ""
 "Couldn''t match the entered link or id to the selected service. Please try "
 "again."
 msgstr ""
-"Wprowadzony link lub id nie pasuje do wybranej usługi. Spróbuj ponownie."
+"Nie można dopasować odnośnika lub identyfikatora do wybranej usługi. Proszę "
+"spróbować ponownie."
 
 msgid "No valid WMS URL or id"
-msgstr "Niepoprawny URL WMS lub id"
+msgstr "Nieprawidłowy adres URL WMS lub identyfikator"
 
 msgid "Merge layer"
-msgstr "Scal warstwy"
+msgstr "Połącz warstwy"
 
 msgid "Merge the current layer into another layer"
 msgstr "Łączy bieżącą warstwę z inną"
 
 msgid "Merging layers with different upload policies"
-msgstr "Scalanie warstw z różnymi politykami wysyłania"
+msgstr "Łączenie warstw z różnymi zasadami wysyłania"
 
 msgid ""
 "You are about to merge data between layers ''{0}'' and ''{1}''.<br /><br "
@@ -870,39 +861,40 @@ msgid ""
 "one by one, by using ''<i>Merge selection</i>''.<br /><br />Are you sure you "
 "want to continue?"
 msgstr ""
-"Chcesz połączyć warstwy ''{0}'' i ''{1}''.<br /><br />Mają one różną "
-"politykę wrzucania na serwer i nie powinny być łączone<br />Połączenie ich "
-"wymusi surowe zasady dla ''{1}''.<br /><br /><b>Nie jest to polecana metoda "
+"Chcesz połączyć warstwy „{0}” i „{1}”.<br /><br />Mają one różną politykę "
+"wrzucania na serwer i nie powinny być łączone<br />Połączenie ich wymusi "
+"surowe zasady dla ''{1}''.<br /><br /><b>Nie jest to polecana metoda "
 "łączenia takich danych</b>.<br />Powinieneś zamiast tego sprawdzić i każdy "
 "element, jeden po drugim, używając ''<i>Łączenia wybranych</i>''.<br /><br "
 "/>Jesteś pewny że chcesz kontynuować?"
 
 msgid "Ignore this hint and merge anyway"
-msgstr "Ignoruj wskazówkę  i scal"
+msgstr "Zignoruj wskazówkę i połącz"
 
 msgid "Merge Nodes"
 msgstr "Połącz węzły"
 
 msgid "Merge nodes into the oldest one."
-msgstr "Scala wybrane węzły z najstarszym."
+msgstr "Łączy wybrane węzły z najstarszym węzłem"
 
 msgid ""
 "Please select at least two nodes to merge or one node that is close to "
 "another node."
 msgstr ""
-"Wybierz przynajmniej dwa punkty do połączenia lub jeden punkty który leży "
-"blisko innego."
+"Proszę wybrać co najmniej dwa węzły do połączenia lub jeden węzeł, który "
+"leży blisko innego."
 
 msgid "Abort Merging"
-msgstr "Anuluj scalanie"
+msgstr "Anuluj łączenie"
 
 msgid "Click to abort merging nodes"
-msgstr "Kliknij aby anulować łączenie węzłów"
+msgstr "Przerywa łączenie węzłów"
 
 msgid ""
 "Cannot merge nodes: Would have to delete way {0} which is still used by {1}"
 msgstr ""
-"Błąd łączenia węzłów: należałoby usunąć linię {0} nadal używaną przez {1}"
+"Nie można połączyć węzłów: należałoby usunąć linię {0} nadal używaną przez "
+"{1}"
 
 msgid "Merge {0} node"
 msgid_plural "Merge {0} nodes"
@@ -914,10 +906,10 @@ msgid "Merge selection"
 msgstr "Połącz wybrane elementy"
 
 msgid "Merge the currently selected objects into another layer"
-msgstr "Łączy aktualnie wybrane obiekty w nową warstę."
+msgstr "Łączy aktualnie wybrane obiekty z nową warstwą"
 
 msgid "Merging too many objects with different upload policies"
-msgstr "Łączenie zbyt wielu obiektów z różnymi warunkami udostępniania"
+msgstr "Łączenie zbyt wielu obiektów z różnymi zasadami udostępniania"
 
 msgid ""
 "You are about to merge more than 1 object between layers ''{0}'' and "
@@ -925,19 +917,19 @@ msgid ""
 "data</b>.<br />You should instead check and merge each object, <b>one by "
 "one</b>.<br /><br />Are you sure you want to continue?"
 msgstr ""
-"Próbujesz połączyć więcej niż jeden element pomiędzy warstwami ''{0}'' i "
-"''{1}''.<br /><br /><b>Nie jest to polecana metoda łączenia tego typu "
+"Próbujesz połączyć więcej niż jeden element pomiędzy warstwami „{0}” i "
+"„{1}”.<br /><br /><b>Nie jest to polecana metoda łączenia tego typu "
 "danych.</b>.<br />Zamiast tego powinieneś sprawdzić i połączyć każdy element "
 "pojedyńczo, <b>jeden po drugim</b>.<br /><br />Chcesz kontynuować?"
 
 msgid "Mirror"
-msgstr "Odbicie lustrzane"
+msgstr "Utwórz lustrzane odbicie"
 
 msgid "Mirror selected nodes and ways."
-msgstr "Odwraca zaznaczone węzły i linie."
+msgstr "Tworzy lustrzane odbicie zaznaczonych węzłów i linii."
 
 msgid "Please select at least one node or way."
-msgstr "Wybierz co najmniej jeden węzeł lub linię."
+msgstr "Proszę wybrać co najmniej jeden węzeł lub linię."
 
 msgid "up"
 msgstr "do góry"
@@ -989,9 +981,12 @@ msgstr "Otwieranie plików"
 
 msgid "Cannot open {0} file with the file importer ''{1}''."
 msgid_plural "Cannot open {0} files with the file importer ''{1}''."
-msgstr[0] "Nie można otworzyć {0} pliku z plikiem importera ''{1}''."
-msgstr[1] "Nie można otworzyć {0} plików z plikiem importera ''{1}''."
-msgstr[2] "Nie można otworzyć {0} plików z plikiem importera ''{1}''."
+msgstr[0] ""
+"Nie można otworzyć {0} pliku za pomocą modułu importującego „{1}”."
+msgstr[1] ""
+"Nie można otworzyć {0} plików za pomocą modułu importującego „{1}”."
+msgstr[2] ""
+"Nie można otworzyć {0} plików za pomocą modułu importującego „{1}”."
 
 msgid ""
 "Cannot open {0} file because file does not exist or no suitable file "
@@ -1000,23 +995,24 @@ msgid_plural ""
 "Cannot open {0} files because files do not exist or no suitable file "
 "importer is available."
 msgstr[0] ""
-"Niemożna otworzyć pliku {0} ponieważ plik nie istnieje albo obsługa odczytu "
-"tego formatu nie jest dostepna."
+"Nie można otworzyć {0} pliku, ponieważ plik nie istnieje lub niedostępny "
+"jest odpowiedni moduł importujący."
 msgstr[1] ""
-"Niemożna otworzyć plików {0} ponieważ pliki nie istnieją albo obsługa "
-"odczytu tego formatu nie jest dostepna."
+"Nie można otworzyć {0} plików, ponieważ pliki nie istnieją lub niedostępny "
+"jest odpowiedni moduł importujący."
 msgstr[2] ""
-"Niemożna otworzyć plików {0} ponieważ pliki nie istnieją albo obsługa "
-"odczytu tego formatu nie jest dostepna."
+"Nie można otworzyć {0} plików, ponieważ pliki nie istnieją lub niedostępny "
+"jest odpowiedni moduł importujący."
 
 msgid "no importer"
-msgstr "nie ma obsługi odczytu tego formatu"
+msgstr "niedostępny moduł importujący"
 
 msgid "does not exist"
 msgstr "nie istnieje"
 
 msgid "<html>Cannot open directory ''{0}''.<br>Please select a file.</html>"
-msgstr "<html>Nie można otworzyć katalogu ''{0}''.<br>Wybierz plik.</html>"
+msgstr ""
+"<html>Nie można otworzyć katalogu „{0}”.<br>Proszę wybrać plik.</html>"
 
 msgid "Open file"
 msgstr "Otwórz plik"
@@ -1028,7 +1024,7 @@ msgstr[1] "Otwieranie {0} plików..."
 msgstr[2] "Otwieranie {0} plików..."
 
 msgid "Opening file ''{0}'' ..."
-msgstr "Otwieram plik \"{0}\" ..."
+msgstr "Otwieranie pliku „{0}” ..."
 
 msgid "Open Location..."
 msgstr "Otwórz adres..."
@@ -1040,25 +1036,25 @@ msgid "Separate Layer"
 msgstr "Osobna wartwa"
 
 msgid "Select if the data should be downloaded into a new layer"
-msgstr "Wybierz jeśli dane mają być załądowane do nowej warstwy"
+msgstr "Wczytuje dane do nowej warstwy"
 
 msgid "Enter URL to download:"
-msgstr "Podaj adres z którego pobrać dane:"
+msgstr "Proszę wprowadzić adres danych do pobrania:"
 
 msgid "Enter an URL from where data should be downloaded"
 msgstr "Wprowadź URL z którego powinny być pobierane dane"
 
 msgid "Download Location"
-msgstr "Pobierz dane."
+msgstr "Położenie pobierania"
 
 msgid "Download URL"
-msgstr "Adres URL"
+msgstr "Pobierz adres URL"
 
 msgid "Start downloading data"
-msgstr "Rozpocznij pobieranie danych"
+msgstr "Rozpoczyna pobieranie danych"
 
 msgid "Close dialog and cancel downloading"
-msgstr "Zamknij okno i porzuć pobieranie"
+msgstr "Zamyka okno i anuluje pobieranie"
 
 msgid "Download Data"
 msgstr "Pobierz dane"
@@ -1073,8 +1069,8 @@ msgid ""
 "Cannot open URL ''{0}''<br>The following download tasks accept the URL "
 "patterns shown:<br>{1}"
 msgstr ""
-"Nie można otworzyć adresu ''{0}''<br>Podane zadanie pobierania akceptuje "
-"tylko takie wzorce:<br>{1}"
+"Nie można otworzyć adresu „{0}”<br>Podane zadanie pobierania akceptuje tylko "
+"takie wzorce:<br>{1}"
 
 msgid ""
 "<h3>When one or more ways are selected, the shape is adjusted such, that all "
@@ -1090,38 +1086,38 @@ msgstr ""
 "naciśnij skrót dla Korekta prostopadłości / Cofnij. Domyślnie Shift-Q.)"
 
 msgid "Orthogonalize Shape"
-msgstr "Korekta prostopadłości"
+msgstr "Popraw prostopadłość"
 
 msgid "Move nodes so all angles are 90 or 180 degrees"
-msgstr "Przesuwa węzły tak że wszystkie kąty mają 90 lub 180 stopni"
+msgstr "Przesuwa węzły tak, by wszystkie kąty miały 90 lub 180 stopni"
 
 msgid "Orthogonalize Shape / Undo"
-msgstr "Ortogonalizuj kształt / cofnij"
+msgstr "Popraw prostopadłość / cofnij"
 
 msgid "Undo orthogonalization for certain nodes"
-msgstr "Cofa ortogonalizację wybranych węzłów"
+msgstr "Cofa poprawienie prostopadłości wybranych węzłów"
 
 msgid "Orthogonalize / Undo"
-msgstr "Ortogonalizuj / cofnij"
+msgstr "Popraw prostopadłość / cofnij"
 
 msgid ""
 "Orthogonalize Shape / Undo<br>Please select nodes that were moved by the "
 "previous Orthogonalize Shape action!"
 msgstr ""
 "Zamień na kąty proste / Cofnij<br>Proszę zaznaczyć węzły, które zostały "
-"przesunięte przez ostatnią operację \"Zamień na kąty proste\"!"
+"przesunięte przez ostatnią operację „Zamień na kąty proste\"!"
 
 msgid ""
 "<html>You are using the EPSG:4326 projection which might lead<br>to "
 "undesirable results when doing rectangular alignments.<br>Change your "
 "projection to get rid of this warning.<br>Do you want to continue?</html>"
 msgstr ""
-"<html>Używasz odwzorowania EPSG:4326 co może prowadzić<br>do niezamierzonych "
-"efektów przy wyrównywaniu obiektów.<br>Zmień odwzorowanie aby usunąć to "
-"ostrzeżenie.<br>Czy chcesz kontynuować?</html>"
+"<html>Używane jest odwzorowanie EPSG:4326 co może prowadzić<br>do "
+"niezamierzonych efektów podczas wyrównywania obiektów.<br>Proszę zmienić "
+"odwzorowanie, aby usunąć to ostrzeżenie.<br>Kontynuować?</html>"
 
 msgid "Orthogonalize"
-msgstr "Korekta prostopadłości"
+msgstr "Popraw prostopadłość"
 
 msgid "Usage"
 msgstr "Użycie"
@@ -1133,12 +1129,12 @@ msgid ""
 "<html>Please make sure all selected ways head in a similar direction<br>or "
 "orthogonalize them one by one.</html>"
 msgstr ""
-"<html>Proszę upewnij się, że wybrane linie mają ten sam kierunek "
-"(zwrot)<br>lub ortogonalizuj je osobno.</html>"
+"<html>Proszę upewnić się, że wybrane linie są zwrócone w tym samym "
+"kierunku<br>lub poprawić ich prostopadłość osobno.</html>"
 
 msgid "Please select ways with angles of approximately 90 or 180 degrees."
 msgstr ""
-"Proszę wybrać linie w których kąty w przybliżeniu mają 90 lub 180 stopni."
+"Proszę wybrać linie, których kąty w przybliżeniu mają 90 lub 180 stopni."
 
 msgid "Download from Overpass API ..."
 msgstr "Pobierz z Overpass API ..."
@@ -1150,7 +1146,7 @@ msgid "Builds an Overpass query using the Overpass Turbo query wizard"
 msgstr "Tworzy zapytanie Overpass używając kreatora zapytań Overpass Turbo"
 
 msgid "Build query"
-msgstr "Stwórz zapytanie"
+msgstr "Utwórz zapytanie"
 
 msgid "<html>The Overpass wizard could not parse the following query:"
 msgstr "<html>Kreator Overpass nie mógł przetworzyć następującego zapytania:"
@@ -1164,22 +1160,14 @@ msgstr "Zapytanie Overpass: "
 msgid "Paste"
 msgstr "Wklej"
 
-msgid "Paste contents of paste buffer."
-msgstr "Wkleja zawartość schowka."
-
-msgid "Delete incomplete members?"
-msgstr "Usunąć niekompletnych członków?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Wklej pomijając niekompletne"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Skopiowane dane zawierają niekompletne obiekty. Podczas wstawiania "
-"niekompletne obiekty są usuwane. Wstawić dane bez niekompletnych obiektów?"
 
 msgid "Paste Tags"
 msgstr "Wklej znaczniki"
@@ -1187,18 +1175,6 @@ msgstr "Wklej znaczniki"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Przypisz znaczniki ze schowka do zaznaczonych elementów."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Wklejam {0} tag"
-msgstr[1] "Wklejam {0} tagi"
-msgstr[2] "Wklejam {0} tagi"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "do obiektu {0}"
-msgstr[1] "do obiektów {0}"
-msgstr[2] "do obiektów {0}"
-
 msgid "Preferences..."
 msgstr "Ustawienia..."
 
@@ -1212,62 +1188,62 @@ msgid "Purge..."
 msgstr "Czyszczenie..."
 
 msgid "Forget objects but do not delete them on server when uploading."
-msgstr "Zapomina obiekty ale nie usuwa ich podczas wysyłania na serwer."
+msgstr "Zapomina obiekty, ale nie usuwa ich podczas wysyłania na serwer."
 
 msgid "Purge"
 msgstr "Wyczyść"
 
 msgid "Confirm Purging"
-msgstr "Potwierdź czyszczenie"
+msgstr "Czyszczenie"
 
 msgid ""
 "This operation makes JOSM forget the selected objects.<br> They will be "
 "removed from the layer, but <i>not</i> deleted<br> on the server when "
 "uploading."
 msgstr ""
-"Ta operacja spowoduje, że JOSM \"zapomni\" o wybranych obiektach.<br> "
-"Zostaną one usunięte z warstwy, ale <i>nie</i> zostaną skasowane na serwerze "
-"przy wrzucaniu danych."
+"Ta czynność spowoduje, że program zapomni o wybranych obiektach.<br> Zostaną "
+"one usunięte z warstwy, ale <i>nie</i> zostaną usunięte z serwera<br> "
+"podczas przesyłania danych."
 
 msgid ""
 "The following dependent objects will be purged<br> in addition to the "
 "selected objects:"
 msgstr ""
-"Następujące obiekty są zależne od wybranych obiektów i bedą również usunięte:"
+"Zostaną usunięte następujące obiekty zależne<br> poza zaznaczonymi obiektami:"
 
 msgid "Add to selection"
-msgstr "Dodaj do zaznaczenia"
+msgstr "Dodaje do zaznaczenia"
 
 msgid ""
 "Some of the objects are modified.<br> Proceed, if these changes should be "
 "discarded.</html>"
 msgstr ""
-"Obiekty zostały zmienione.<br> Kontynuuj, jest te zmiany maja zostac "
-"odrzucone.</html>"
+"Niektóre obiekty zostały zmodyfikowane.<br> Proszę kontynuować, jeśli te "
+"zmiany mają zostać odrzucone.</html>"
 
 msgid "Clear Undo/Redo buffer"
-msgstr "Czyści bufor operacji do wycofania."
+msgstr "Wyczyszczenie buforu cofania/ponawiania czynności"
 
 msgid "Redo"
-msgstr "Powtórz"
+msgstr "Ponów"
 
 msgid "Redo the last undone action."
-msgstr "Powtarza ostatnio wycofaną czynność."
+msgstr "Ponawia ostatnio wycofaną czynność."
 
 msgid "Redo ..."
 msgstr "Ponów ..."
 
 msgid "Redo {0}"
-msgstr "Ponów {0}"
+msgstr "Ponawia {0}"
 
 msgid "Rename layer"
 msgstr "Zmień nazwę warstwy"
 
 msgid "Also rename the file"
-msgstr "zmień także nazwę pliku"
+msgstr "Zmienienie także nazwy pliku"
 
 msgid "Could not rename file ''{0}''"
-msgstr "Nie mogłem przemianować pliku ''{0}''"
+msgstr "Nie można zmienić nazwy pliku „{0}”"
 
 msgid "Report a ticket to JOSM bugtracker"
 msgstr "Wyślij zgłoszenie do JOSM bugtracker"
@@ -1279,7 +1255,7 @@ msgid "Restart the application."
 msgstr "Uruchamia program ponownie"
 
 msgid "Click to restart later."
-msgstr "Kliknij, aby zrestartować później."
+msgstr "Umożliwia ponowne uruchomienie programu później"
 
 msgid "Reverse way"
 msgstr "Odwróć kierunek linii"
@@ -1300,13 +1276,13 @@ msgid "Save the current data."
 msgstr "Zapisuje bieżące dane."
 
 msgid "File {0} exists. Overwrite?"
-msgstr "Plik {0} już istnieje. Nadpisać?"
+msgstr "Plik {0} już istnieje. Zastąpić go?"
 
 msgid "No Exporter found! Nothing saved."
-msgstr "Nie zapisano! Nie ma obsługi zapisu tego formatu."
+msgstr "Nie odnaleziono modułu eksportującego! Nie zapisano."
 
 msgid "File exists. Overwrite?"
-msgstr "Plik istnieje. Nadpisać?"
+msgstr "Plik istnieje. Zastąpić go?"
 
 msgid "Save As..."
 msgstr "Zapisz jako..."
@@ -1327,7 +1303,7 @@ msgid "Search for notes"
 msgstr "Wyszukaj uwagi"
 
 msgid "You must enter a search term"
-msgstr "Musisz wpisać szukane hasło"
+msgstr "Należy wprowadzić szukaną frazę"
 
 msgid "Select All"
 msgstr "Zaznacz wszystko"
@@ -1355,7 +1331,7 @@ msgid "Open session"
 msgstr "Otwórz sesję"
 
 msgid "Loading session ''{0}''"
-msgstr "Wczytywanie sesji ''{0}''"
+msgstr "Wczytywanie sesji „{0}”"
 
 msgid "Data Error"
 msgstr "Błąd danych"
@@ -1364,8 +1340,7 @@ msgid "IO Error"
 msgstr "Błąd wejścia/wyjścia"
 
 msgid "<html>Could not load session file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr ""
-"<html>Nie można załadować pliku sesji ''{0}''.<br>Błąd:<br>{1}</html>"
+msgstr "<html>Nie można wczytać pliku sesji „{0}”.<br>Błąd:<br>{1}</html>"
 
 msgid "Save Session As..."
 msgstr "Zapisz sesję jako..."
@@ -1383,7 +1358,7 @@ msgid "Save session"
 msgstr "Zapisz sesję"
 
 msgid "<html>Could not save session file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Nie można zapisać pliku sesji ''{0}''.<br>Błąd:<br>{1}</html>"
+msgstr "<html>Nie można zapisać pliku sesji „{0}”.<br>Błąd:<br>{1}</html>"
 
 msgid "Save Session"
 msgstr "Zapisz sesję"
@@ -1395,22 +1370,22 @@ msgid "Layers"
 msgstr "Warstwy"
 
 msgid "No exporter for this layer"
-msgstr "Brak eksportera dla tej warstwy"
+msgstr "Brak modułu eksportującego dla tej warstwy"
 
 msgid "Show Status Report"
-msgstr "Wyświetl raport konfiguracji"
+msgstr "Wyświetl raport stanu"
 
 msgid ""
 "Show status report with useful information that can be attached to bugs"
 msgstr ""
-"Pokazuje raport zawierający użyteczne informacje, które mogą być dołączone "
-"do informacji o błędzie."
+"Wyświetla raport zawierający użyteczne informacje, które mogą być dołączone "
+"do informacji o błędzie"
 
 msgid "Help: {0}"
 msgstr "Pomoc: {0}"
 
 msgid "Status Report"
-msgstr "Raport konfiguracji"
+msgstr "Raport stanu"
 
 msgid "Copy to clipboard and close"
 msgstr "Skopiuj do schowka i zamknij"
@@ -1425,7 +1400,7 @@ msgid "Delete unnecessary nodes from a way."
 msgstr "Usuwa zbędne węzły z linii."
 
 msgid "Please select at least one way to simplify."
-msgstr "Wybierz przynajmniej jedną linię do uproszczenia."
+msgstr "Proszę wybrać przynajmniej jedną linię do uproszczenia."
 
 msgid "Yes"
 msgstr "Tak"
@@ -1438,9 +1413,7 @@ msgstr "Anuluj operację"
 
 msgid ""
 "The selection contains {0} ways. Are you sure you want to simplify them all?"
-msgstr ""
-"Zaznaczenie zawiera {0} linie. Jesteś pewien, że chcesz je wszystkie "
-"uprościć?"
+msgstr "Zaznaczenie zawiera {0} linii. Uprościć je wszystkie?"
 
 msgid "Simplify ways?"
 msgstr "Uprościć linie?"
@@ -1538,13 +1511,13 @@ msgstr[1] "Rozdziel linię {0} na {1} części"
 msgstr[2] "Rozdziel linię {0} na {1} części"
 
 msgid "Toggle GPX Lines"
-msgstr "Przełącz linie łączące punktu GPX"
+msgstr "Przełącz linie łączące punkty GPX"
 
 msgid "Draw lines between raw gps points."
 msgstr "Rysuj linie pomiędzy punktami GPS."
 
 msgid "Toggles the global setting ''{0}''."
-msgstr "Przełącza ustawienie globalne \"{0}\"."
+msgstr "Przełącza ustawienie globalne „{0}”."
 
 msgid "Encourage/discourage upload"
 msgstr "Popieraj/zniechęcaj wysyłanie"
@@ -1571,7 +1544,7 @@ msgid "Select either:"
 msgstr "Wybierz przynajmniej:"
 
 msgid "* One tagged node, or"
-msgstr "* Jeden węzęł z tagami lub"
+msgstr "* Jeden węzeł ze znacznikami lub"
 
 msgid "* One node that is used by more than one way, or"
 msgstr "* Jeden węzeł który jest użyty przez więcej niż jedną linię lub"
@@ -1585,7 +1558,7 @@ msgstr ""
 msgid ""
 "* One way that has one or more nodes that are used by more than one way, or"
 msgstr ""
-"* Jedną linię która ma jeden lub więcej węzłów użyty przez więcej niż jedną "
+"* Jedną linię, która ma jeden lub więcej węzłów użyty przez więcej niż jedną "
 "drogę, lub"
 
 msgid ""
@@ -1637,9 +1610,9 @@ msgstr[2] "Rozdzielić na {0} węzłów"
 
 msgid "Dupe {0} node into {1} nodes"
 msgid_plural "Dupe {0} nodes into {1} nodes"
-msgstr[0] "Duplikuj węzeł {0} w {1} wezłów."
-msgstr[1] "Duplikuj węzły {0} w {1} wezłów."
-msgstr[2] "Duplikuj węzły {0} w {1} wezłów."
+msgstr[0] "Rozdziel {0} węzeł na {1} węzłów."
+msgstr[1] "Rozdziel {0} węzły na {1} węzłów."
+msgstr[2] "Rozdziel {0} węzłów na {1} węzłów."
 
 msgid "Unglue confirmation"
 msgstr "Potwierdzenie rozdzielenia"
@@ -1651,7 +1624,7 @@ msgid ""
 msgstr ""
 "Próbujesz rozdzielić węzły poza pobranym obszarem.<br>Może to spowodować "
 "problem, bo węzły te mogą być używane przez inne obiekty, które nie są teraz "
-"widoczne.<br>Czy na pewno chcesz je rozdzielić?"
+"widoczne.<br>Rozdzielić je?"
 
 msgid ""
 "You are about to unglue incomplete objects.<br>This will cause problems "
@@ -1659,7 +1632,7 @@ msgid ""
 msgstr ""
 "Próbujesz rozdzielić obiekty które nie są kompletne.<br>Może to spowodować "
 "problem, bo obiekty te nie są teraz widoczne w ich prawidłowej "
-"formie.<br>Czy napewno chcesz rozdzielić?"
+"formie.<br>Rozdzielić je?"
 
 msgid "Unglueing affected {0} relation: {1}"
 msgid_plural "Unglueing affected {0} relations: {1}"
@@ -1674,13 +1647,13 @@ msgstr[1] "Należy upewnić się, że relacje nie została złamane!"
 msgstr[2] "Należy upewnić się, że relacje nie została złamane!"
 
 msgid "Disconnect Node from Way"
-msgstr "Odłącz punkt od linii"
+msgstr "Odłącz węzeł od linii"
 
 msgid "Disconnect nodes from a way they currently belong to"
-msgstr "Odłącz punkty od linii, do której należą"
+msgstr "Odłącza wezły od linii, do której należą"
 
 msgid "Select at least one node to be disconnected."
-msgstr "Wybierz przynajmniej jeden węzeł do rozłączenia"
+msgstr "Proszę wybrać przynajmniej jeden węzeł do rozłączenia"
 
 msgid "Selected node cannot be disconnected from anything."
 msgid_plural "Selected nodes cannot be disconnected from anything."
@@ -1718,7 +1691,7 @@ msgid "Unselect all objects."
 msgstr "Odznacza wszystkie obiekty."
 
 msgid "Update data"
-msgstr "Aktualizuj dane"
+msgstr "Uaktualnij dane"
 
 msgid "Updates the objects in the active data layer from the server."
 msgstr "Pobiera z serwera najnowszą wersję obiektów na aktywnej warstwie."
@@ -1762,7 +1735,7 @@ msgid ""
 "''{0}''.<br>You have to resolve them first.</html>"
 msgstr ""
 "<html>Dane do wysłania uczestniczą w konflikcie w warstwie "
-"''{0}''.<br>Najpierw musisz go rozstrzygnąć.</html>"
+"„{0}”.<br>Najpierw musisz go rozstrzygnąć.</html>"
 
 msgid "Upload discouraged"
 msgstr "Wysyłanie odradzane"
@@ -1773,7 +1746,7 @@ msgid ""
 "require you subsequently have to revert your changes, or force other "
 "contributors to.<br /><br />Are you sure you want to continue?"
 msgstr ""
-"Zamierzasz przesłać dane z warstwy ''{0}''.<br /><br />Przesyłanie danych z "
+"Zamierzasz przesłać dane z warstwy „{0}”.<br /><br />Przesyłanie danych z "
 "tej warstwy jest <b>odradzane</b>. Jeśli kontynuujesz <br />być może będzie "
 "to wymagało wycofania twoich zmian.<br /><br />Jesteś pewien, że chcesz "
 "kontynuować?"
@@ -1806,7 +1779,7 @@ msgid "Checking parents for deleted objects"
 msgstr "Sprawdzanie rodziców usuwanych obiektów"
 
 msgid "Reading parents of ''{0}''"
-msgstr "Doczytuję rodziców \"{0}\""
+msgstr "Doczytuję rodziców „{0}”"
 
 msgid "Checking for deleted parents in the local dataset"
 msgstr "Sprawdzanie usuniętych rodziców w lokalnych danych."
@@ -1962,6 +1935,9 @@ msgstr "Odpytaj i pobierz zestawy zmian..."
 msgid "Errors during download"
 msgstr "Błędy w czasie pobierania"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Pobiera GPS"
 
@@ -1975,7 +1951,7 @@ msgid "Markers from {0}"
 msgstr "Znaczniki z {0}"
 
 msgid "Download OSM Notes"
-msgstr "Pobierz Uwagi OSM"
+msgstr "Pobierz uwagi OSM"
 
 msgid "Downloading Notes"
 msgstr "Pobieranie uwag"
@@ -2139,31 +2115,31 @@ msgid "Error during download"
 msgstr "Błąd podczas pobierania"
 
 msgid "Add a new Note"
-msgstr "Wprowadź nową uwagę"
+msgstr "Dodaj nową uwagę"
 
 msgid "Add note mode"
 msgstr "Dodaj tryb uwag"
 
 msgid "Click the location where you wish to create a new note"
-msgstr "Kliknij gdzie chcesz dodać uwagę"
+msgstr "Proszę wskazać położenia nowej uwagi"
 
 msgid "Create new note"
-msgstr "Stwórz nową uwagę"
+msgstr "Utwórz nową uwagę"
 
 msgid "Create note"
-msgstr "Stwórz uwagę"
+msgstr "Utwórz uwagę"
 
 msgid "Enter a detailed comment to create a note"
-msgstr "Wprowadź szczegółówy opis do uwagi"
+msgstr "Proszę wprowadzić szczegółowy opis, aby utworzyć uwagę"
 
 msgid "You must enter a comment to create a new note"
-msgstr "Aby dodać uwagę musisz wprowadzić opis"
+msgstr "Należy wprowadzić opis, aby utworzyć nową uwagę"
 
 msgid "Delete Mode"
-msgstr "Tryb kasowania"
+msgstr "Tryb usuwania"
 
 msgid "Delete nodes or ways."
-msgstr "Usuwanie węzłów lub linii."
+msgstr "Usuwa węzły lub linie"
 
 msgid "Mode: {0}"
 msgstr "Tryb: {0}"
@@ -2176,13 +2152,13 @@ msgstr ""
 "usuwaniu linii. Ctrl: usuwa powiązane obiekty."
 
 msgid "Draw"
-msgstr "Rysuj"
+msgstr "Rysowanie"
 
 msgid "Draw nodes"
-msgstr "Tworzenie węzłów i linii."
+msgstr "Rysuje węzły i linie"
 
 msgid "Mode: Draw Angle snapping"
-msgstr "Tryb: Przyciąganie kątów"
+msgstr "Tryb: przyciąganie do kątów"
 
 msgid "Backspace in Add mode"
 msgstr "Backspace w trybie dodawania"
@@ -2227,13 +2203,13 @@ msgid "Continue way from last node."
 msgstr "Kontynuuj linię od ostatniego węzła."
 
 msgid "Angle snapping active."
-msgstr "Przyciąganie kątów włączone"
+msgstr "Przyciąganie do kątów włączone"
 
 msgid "Finish drawing."
 msgstr "Zakończ rysowanie."
 
 msgid "Toggle snapping by {0}"
-msgstr "Włącz przeciąganie o {0}"
+msgstr "Przyciąganie o {0}"
 
 msgid "Show helper geometry"
 msgstr "Włącz pomocną geometrię"
@@ -2242,16 +2218,16 @@ msgid "Snap to node projections"
 msgstr "Przyciąganie do węzłów projekcji"
 
 msgid "Disable"
-msgstr "Zablokuj"
+msgstr "Wyłącz"
 
 msgid "0,90,..."
-msgstr "0,90,..."
+msgstr "0, 90..."
 
 msgid "0,45,90,..."
-msgstr "0,45,90,..."
+msgstr "0, 45, 90..."
 
 msgid "0,30,45,60,90,..."
-msgstr "0,30,45,60,90,..."
+msgstr "0, 30, 45, 60, 90..."
 
 msgid "FIX"
 msgstr "Napraw"
@@ -2275,13 +2251,13 @@ msgid "Switch dual alignment mode while extruding"
 msgstr "Przełącz tryb przesuwania jednoczesnego podczas wytłaczania"
 
 msgid "Extrude"
-msgstr "Wytłocz"
+msgstr "Wyciąganie"
 
 msgid "Create areas"
-msgstr "Tworzenie obszarów."
+msgstr "Tworzy obszary"
 
 msgid "Extrude Dual alignment"
-msgstr "Wytłocz z przesuwaniem jednoczesnym"
+msgstr "Wyciągnij z przesuwaniem jednoczesnym"
 
 msgid ""
 "Drag a way segment to make a rectangle. Ctrl-drag to move a segment along "
@@ -2310,19 +2286,19 @@ msgid "Draw a rectangle of the desired size, then release the mouse button."
 msgstr "Narysuj prostokąt pożądanych rozmiarów i zwolnij przycisk myszy."
 
 msgid "Extrude: main line"
-msgstr "Wytłocz: linia główna"
+msgstr "Wyciąganie: linia główna"
 
 msgid "Extrude: helper line"
-msgstr "Wytłocz: linia pomocnicza"
+msgstr "Wyciąganie: linia pomocnicza"
 
 msgid "Extrude Way"
-msgstr "Wytłocz linię"
+msgstr "Wyciągnij linię"
 
 msgid "Improve Way Accuracy"
-msgstr "Popraw dokładność linii"
+msgstr "Poprawianie dokładności linii"
 
 msgid "Improve Way Accuracy mode"
-msgstr "Tryb poprawiania dokładności linii"
+msgstr "Przełącza tryb poprawiania dokładności linii"
 
 msgid "improve way accuracy helper line"
 msgstr "linia pomocnicza do poprawniania dokładności"
@@ -2361,13 +2337,13 @@ msgstr[1] "Dodaj nowy węzeł do {0} linii"
 msgstr[2] "Dodaj nowy węzeł do {0} linii"
 
 msgid "Cannot delete node that has tags"
-msgstr "Nie można usunąć węzła zawierającego tagi"
+msgstr "Nie można usunąć węzła zawierającego znaczniki"
 
 msgid "Parallel"
-msgstr "Rysuj równolegle"
+msgstr "Rysowanie równoległe"
 
 msgid "Make parallel copies of ways"
-msgstr "Tworzenie równoległych kopii linii"
+msgstr "Tworzy równoległe kopie linii"
 
 msgid "make parallel helper line"
 msgstr "tworzy równoległą linię pomocniczą"
@@ -2377,7 +2353,7 @@ msgid ""
 "a parallel copy (Alt toggles tag preservation)"
 msgstr ""
 "Wybierz linie jak w trybie wyboru. Przeciągnij wybraną linię lub linie by "
-"utworzyć równoległą kopię (Alt przełącza zachowywanie tagów)"
+"utworzyć równoległą kopię (Alt przełącza zachowywanie znaczników)"
 
 msgid "Hold Ctrl to toggle snapping"
 msgstr "Przytrzymaj Ctrl by włączyć przeciąganie"
@@ -2398,14 +2374,13 @@ msgid ""
 msgstr ""
 
 msgid "Select, move, scale and rotate objects"
-msgstr "Zaznaczanie, przesuwanie, skalowanie i obracanie obiektów"
+msgstr "Zaznacza, przesuwa, skaluje i obrac obiekty"
 
 msgid ""
 "Are you sure that you want to move elements with attached ways that are "
 "hidden by filters?"
 msgstr ""
-"Czy jesteś pewien, że chcesz przenieść elementy z dołączonymi liniami, które "
-"są ukryte przez filtry?"
+"Przesunąć elementy z dołączonymi liniami, które są ukryte przez filtry?"
 
 msgid ""
 "You moved more than {0} element. Moving a large number of elements is often "
@@ -2416,26 +2391,26 @@ msgid_plural ""
 "an error.\n"
 "Really move them?"
 msgstr[0] ""
-"Przesunąłeś więcej niż {0} element. Przesuwanie dużej liczby elementów jest "
+"Przesunięto więcej niż {0} element. Przesuwanie dużej liczby elementów jest "
 "często błędem.\n"
-"Naprawdę chcesz je przesunąć?"
+"Przesunąć te elementy?"
 msgstr[1] ""
-"Przesunąłeś więcej niż {0} elementy. Przesuwanie dużej liczby elementów jest "
+"Przesunięto więcej niż {0} elementy. Przesuwanie dużej liczby elementów jest "
 "często błędem.\n"
-"Naprawdę chcesz je przesunąć?"
+"Przesunąć te elementy?"
 msgstr[2] ""
-"Przesunąłeś więcej niż {0} elementów. Przesuwanie dużej liczby elementów "
+"Przesunięto więcej niż {0} elementów. Przesuwanie dużej liczby elementów "
 "jest często błędem.\n"
-"Naprawdę chcesz je przesunąć?"
+"Przesunąć te elementy?"
 
 msgid "Move elements"
-msgstr "Więcej elementów"
+msgstr "Przesuń elementy"
 
 msgid "Move them"
 msgstr "Przesuń je"
 
 msgid "Undo move"
-msgstr "Anuluj przesunięcie"
+msgstr "Anuluj przesuwanie"
 
 msgid "Release the mouse button to select the objects in the rectangle."
 msgstr "Zwolnij przycisk myszki, aby zaznaczyć obiekty w kwadracie."
@@ -2467,10 +2442,10 @@ msgstr[1] "Dodaj i przesuń wirtualny nowy węzeł do {0} linii"
 msgstr[2] "Dodaj i przesuń wirtualny nowy węzeł do {0} linii"
 
 msgid "Zoom"
-msgstr "Przybliż"
+msgstr "Przybliżanie"
 
 msgid "Zoom and move map"
-msgstr "Powiększa i przesuwa mapę"
+msgstr "Przybliża i przesuwa mapę"
 
 msgid ""
 "Zoom by dragging or Ctrl+. or Ctrl+,; move with Ctrl+up, left, down, right; "
@@ -2550,7 +2525,7 @@ msgid "Open recent relation"
 msgstr "Otwórz aktualną relację"
 
 msgid "Relation Editor: {0}"
-msgstr "Edytor Relacji: {0}"
+msgstr "Edytor relacji: {0}"
 
 msgid "Select in relation list"
 msgstr "Zaznacz na liście relacji"
@@ -2694,38 +2669,38 @@ msgid "Baker Street"
 msgstr "Osiedle Sikorskiego"
 
 msgid "''Baker'' and ''Street'' in any key"
-msgstr "\"Osiedle\" i \"Sikorskiego\" w dowolnym kluczu"
+msgstr "\"Osiedle” i „Sikorskiego” w dowolnym kluczu"
 
 msgid "\"Baker Street\""
 msgstr "\"Osiedle Sikorskiego\""
 
 msgid "''Baker Street'' in any key"
-msgstr "\"Osiedle Sikorskiego\" w dowolnym kluczu"
+msgstr "\"Osiedle Sikorskiego” w dowolnym kluczu"
 
 msgid "basics"
 msgstr "podstawowe"
 
 msgid "''valuefragment'' anywhere in ''key''"
-msgstr "\"fragmentwartości\" gdziekolwiek w \"kluczu\""
+msgstr "\"fragmentwartości” gdziekolwiek w „kluczu\""
 
 msgid "''valuefragment'' nowhere in ''key''"
-msgstr "\"fragmentwartości\" nigdzie w kluczu"
+msgstr "\"fragmentwartości” nigdzie w kluczu"
 
 msgid "''key'' with exactly ''value''"
-msgstr "\"klucz\" z dokładną \"wartością\""
+msgstr "\"klucz” z dokładną „wartością\""
 
 msgid "''key'' with any value"
-msgstr "\"klucz\" z dowolną wartością"
+msgstr "\"klucz” z dowolną wartością"
 
 msgid "''value'' in any key"
-msgstr "\"wartość\" w dowolnym kluczu"
+msgstr "\"wartość” w dowolnym kluczu"
 
 msgid "matches if ''key'' exists"
-msgstr "pasuje jeśli \"klucz\" istnieje"
+msgstr "pasuje jeśli „klucz” istnieje"
 
 msgid "matches if ''key'' is greater than ''value'' (analogously, less than)"
 msgstr ""
-"pasuje jeśli \"klucz\" jest większy niż \"wartość\" (analogicznie, niecały)"
+"pasuje jeśli „klucz” jest większy niż „wartość” (analogicznie, niecały)"
 
 msgid ""
 "to quote operators.<br>Within quoted strings the <b>\"</b> and <b>\\</b> "
@@ -2864,16 +2839,16 @@ msgstr ""
 "obiekty (i wszystkie jego węzły linii / członków relacji) w pobranym obszarze"
 
 msgid "No match found for ''{0}''"
-msgstr "Nie znaleziono nic szukając ''{0}''"
+msgstr "Nie znaleziono nic szukając „{0}”"
 
 msgid "Nothing added to selection by searching for ''{0}''"
-msgstr "Nic nie zostało dodane do zaznaczenia szukając \"{0}\""
+msgstr "Nic nie zostało dodane do zaznaczenia szukając „{0}”"
 
 msgid "Nothing removed from selection by searching for ''{0}''"
-msgstr "Nic nie zostało usunięte z zaznaczenia szukając \"{0}\""
+msgstr "Nic nie zostało usunięte z zaznaczenia szukając „{0}”"
 
 msgid "Nothing found in selection by searching for ''{0}''"
-msgstr "Nic nie zostało znalezione w zaznaczeniu szukając \"{0}\""
+msgstr "Nic nie zostało znalezione w zaznaczeniu szukając „{0}”"
 
 msgid "Found {0} matches"
 msgstr "Znaleziono {0} pasujących."
@@ -2912,7 +2887,7 @@ msgid ""
 "\n"
 "{2}"
 msgstr ""
-"Wyrażenie regularne \"{0}\" zawiera błąd składni w pozycji {1}, pełny opis "
+"Wyrażenie regularne „{0}” zawiera błąd składni w pozycji {1}, pełny opis "
 "błędu:\n"
 "\n"
 "{2}"
@@ -2922,12 +2897,12 @@ msgid ""
 "\n"
 "{1}"
 msgstr ""
-"Wyrażenie \"{0}\" zawiera błąd skłani. Pełny opis błędu:\n"
+"Wyrażenie „{0}” zawiera błąd skłani. Pełny opis błędu:\n"
 "\n"
 "{1}"
 
 msgid "Cannot parse timestamp ''{0}''"
-msgstr "Nie można przetworzyć datownika''{0}''"
+msgstr "Nie można przetworzyć datownika„{0}”"
 
 msgid "Expecting {0} after {1}"
 msgstr "Spodziewane {0} po  {1}"
@@ -2975,15 +2950,14 @@ msgid "Missing operator for NOT"
 msgstr "Brak parametru dla NOT"
 
 msgid "Automatically truncating value of tag ''{0}'' on deleted object {1}"
-msgstr ""
-"Automatyczne wycinanie wartości tagu ''{0}'' z usuniętego obiektu {1}"
+msgstr "Automatyczne wycinanie wartości tagu „{0}” z usuniętego obiektu {1}"
 
 msgid ""
 "Length of value for tag ''{0}'' on object {1} exceeds the max. allowed "
 "length {2}. Values length is {3}."
 msgstr ""
-"Długość wartości tagu ''{0}'' na obiekcie {1} przekracza max dozwolona "
-"długość {2}. Długość wartości to {3}."
+"Długość wartości tagu „{0}” na obiekcie {1} przekracza max dozwolona długość "
+"{2}. Długość wartości to {3}."
 
 msgid "Precondition Violation"
 msgstr "Naruszenie warunku wstępnego"
@@ -3092,32 +3066,32 @@ msgstr "Zmień linię {0}"
 msgid "Change relation {0}"
 msgstr "Zmień relację {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Zmieniono węzły {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
-msgstr "Usunięto  \"{0}\" w węźle ''{1}''"
+msgstr "Usunięto  „{0}” w węźle „{1}”"
 
 msgid "Remove \"{0}\" for way ''{1}''"
-msgstr "Usunięto \"{0}\" w linii ''{1}''"
+msgstr "Usunięto „{0}” w linii „{1}”"
 
 msgid "Remove \"{0}\" for relation ''{1}''"
-msgstr "Usunięto \"{0}\" w relacji ''{1}''"
+msgstr "Usunięto „{0}” w relacji „{1}”"
 
 msgid "Set {0}={1} for node ''{2}''"
-msgstr "Ustawiono {0}={1} dla węzła \"{2}\""
+msgstr "Ustawiono {0}={1} dla węzła „{2}\""
 
 msgid "Set {0}={1} for way ''{2}''"
-msgstr "Ustawiono {0}={1} dla linii \"{2}\""
+msgstr "Ustawiono {0}={1} dla linii „{2}\""
 
 msgid "Set {0}={1} for relation ''{2}''"
-msgstr "Ustawiono {0}={1} dla relacji \"{2}\""
+msgstr "Ustawiono {0}={1} dla relacji „{2}\""
 
 msgid "Remove \"{0}\" for {1} object"
 msgid_plural "Remove \"{0}\" for {1} objects"
-msgstr[0] "Usuń \"{0}\" dla {1} obiektu"
-msgstr[1] "Usuń \"{0}\" dla {1} objektów"
-msgstr[2] "Usuń \"{0}\" dla {1} objektów"
+msgstr[0] "Usuń „{0}” dla {1} obiektu"
+msgstr[1] "Usuń „{0}” dla {1} obiektów"
+msgstr[2] "Usuń „{0}” dla {1} obiektów"
 
 msgid "Set {0}={1} for {2} object"
 msgid_plural "Set {0}={1} for {2} objects"
@@ -3138,7 +3112,7 @@ msgstr[1] "Ustaw {0} tagów dla {1} objektów"
 msgstr[2] "Ustaw {0} tagów dla {1} objektów"
 
 msgid "Replace \"{0}\" by \"{1}\" for"
-msgstr "Zamień \"{0}\" na \"{1}\" dla"
+msgstr "Zamień „{0}” na „{1}” dla"
 
 msgid "object"
 msgid_plural "objects"
@@ -3149,6 +3123,9 @@ msgstr[2] "obiektów"
 msgid "Change relation member role for {0} {1}"
 msgstr "Zmień rolę elementu relacji {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Usunięto „{0}”"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Pzynajmniej jeden obiekt potrzebny, aby usunąć, otrzymano puste zaznaczenie"
@@ -3186,9 +3163,6 @@ msgstr[0] "Usunięto {0} relację"
 msgstr[1] "Usunięto {0} relacje"
 msgstr[2] "Usunięto {0} relacji"
 
-msgid "Deleted ''{0}''"
-msgstr "Usunięto \"{0}\""
-
 msgid "Delete confirmation"
 msgstr "Potwierdź usunięcie."
 
@@ -3278,8 +3252,8 @@ msgid ""
 "<html>Layer ''{0}'' already has a conflict for object<br>''{1}''.<br>This "
 "conflict cannot be added.</html>"
 msgstr ""
-"<html>Na warstwie ''{0}'' już jest konflikt na "
-"obiekcie<br>''{1}''.<br>Konflikt nie może być dodany.</html>"
+"<html>Na warstwie „{0}” już jest konflikt na obiekcie<br>„{1}”.<br>Konflikt "
+"nie może być dodany.</html>"
 
 msgid "Double conflict"
 msgstr "Podwójny konflikt"
@@ -3288,16 +3262,14 @@ msgid ""
 "Layer ''{0}'' does not exist any more. Cannot remove conflict for object "
 "''{1}''."
 msgstr ""
-"Warstwa ''{0}'' już nie istnieje. Nie można usunąć konfliktu dla obiektu "
-"''{1}''."
+"Warstwa „{0}” już nie istnieje. Nie można usunąć konfliktu dla obiektu „{1}”."
 
 msgid "Add conflict for ''{0}''"
-msgstr "Dodaj konflikt do obiektu \"{0}\""
+msgstr "Dodaj konflikt do obiektu „{0}”"
 
 msgid ""
 "Cannot undo command ''{0}'' because layer ''{1}'' is not present any more"
-msgstr ""
-"Nie można wycofać operacji ''{0}'' ponieważ warstwy ''{1}'' już nie ma"
+msgstr "Nie można wycofać operacji „{0}” ponieważ warstwy „{1}” już nie ma"
 
 msgid "Resolve conflicts in coordinates in {0}"
 msgstr "Rozwiąż konflikt we współżednych w {0}"
@@ -3309,13 +3281,13 @@ msgid "Resolve conflicts in deleted state in {0}"
 msgstr "Rozwiąż konflikty z usuniętego stanu w {0}"
 
 msgid "Set the ''modified'' flag for node {0}"
-msgstr "Ustaw flagę \"zmodifikowano\" w węźle {0}"
+msgstr "Ustaw flagę „zmodyfikowano” w węźle {0}"
 
 msgid "Set the ''modified'' flag for way {0}"
-msgstr "Ustaw flagę \"zmodifikowano\" w linii {0}"
+msgstr "Ustaw flagę „zmodyfikowano” w linii {0}"
 
 msgid "Set the ''modified'' flag for relation {0}"
-msgstr "Ustaw flagę \"zmodifikowano\" w relacji {0}"
+msgstr "Ustaw flagę „zmodyfikowano” w relacji {0}"
 
 msgid "Resolve conflicts in member list of relation {0}"
 msgstr "Rozwiąż konflikt w liscie członków relacji {0}"
@@ -3362,9 +3334,9 @@ msgid_plural ""
 "of these tags are defined by its direction:<br/>{1}Do you really want to "
 "change the way direction, thus its semantic meaning?</html>"
 msgstr[0] ""
-"<html>Zamierzasz odwrócić drogę''{0}'',<br/> dla której znaczenie tagu "
-"''{1}'' zależy od kierunku.<br/>Czy na pewno chcesz zmienić jej kierunek, a "
-"więc także jej znaczenie?</html>"
+"<html>Zamierzasz odwrócić drogę „{0}'',<br/> dla której znaczenie tagu „{1}” "
+"zależy od kierunku.<br/>Czy na pewno chcesz zmienić jej kierunek, a więc "
+"także jej znaczenie?</html>"
 msgstr[1] ""
 "<html>Zamierzasz odwrócić drogę''{0}'',<br/> dla której znaczenie poniższych "
 "tagów zależy od kierunku.<br/>{1} Czy na pewno chcesz zmienić jej kierunek, "
@@ -3431,10 +3403,10 @@ msgid "Unable to delete archived backup file {0}"
 msgstr "Nie można usunąć zarchiwizowanego pliku kopii zapasowej {0}"
 
 msgid "Illegal latitude value ''{0}''"
-msgstr "Niewłaściwa wartość szerokości geograficznej \"{0}\""
+msgstr "Niewłaściwa wartość szerokości geograficznej „{0}”"
 
 msgid "Illegal longitude value ''{0}''"
-msgstr "Niewłaściwa wartość długości geograficznej \"{0}\""
+msgstr "Niewłaściwa wartość długości geograficznej „{0}”"
 
 msgid "Question"
 msgstr "Pytanie"
@@ -3485,13 +3457,13 @@ msgid ""
 "Failed to initialize preferences. Preference directory ''{0}'' is not a "
 "directory."
 msgstr ""
-"Nie udało się zainicjować preferencji. Katalog \"{0}\" nie jest katalogiem."
+"Nie udało się zainicjować preferencji. Katalog „{0}” nie jest katalogiem."
 
 msgid ""
 "<html>Failed to initialize preferences.<br>Preference directory ''{0}'' is "
 "not a directory.</html>"
 msgstr ""
-"<html>Nie udało się zainicjować preferencji.<br>Katalog preferencji ''{0}'' "
+"<html>Nie udało się zainicjować preferencji.<br>Katalog preferencji „{0}'' "
 "nie jest katalogiem.</html>"
 
 msgid ""
@@ -3510,12 +3482,12 @@ msgstr ""
 
 msgid "Missing preference file ''{0}''. Creating a default preference file."
 msgstr ""
-"Brak pliku z ustawieniami ''{0}''. Tworzenie pliku z ustawieniami domyślnymi."
+"Brak pliku z ustawieniami „{0}”. Tworzenie pliku z ustawieniami domyślnymi."
 
 msgid ""
 "Replacing existing preference file ''{0}'' with default preference file."
 msgstr ""
-"Zamiana istniejącego pliku z ustawieniami ''{0}'' na plik z ustawieniami "
+"Zamiana istniejącego pliku z ustawieniami „{0}'' na plik z ustawieniami "
 "domyślnymi."
 
 msgid ""
@@ -3552,7 +3524,7 @@ msgid "Layer: {0}"
 msgstr "Warstwa: {0}"
 
 msgid "Failed to persist preferences to ''{0}''"
-msgstr "Nie udało się zapisać preferencji w ''{0}''"
+msgstr "Nie udało się zapisać preferencji w „{0}''"
 
 msgid ""
 "Try enabling IPv6 network, prefering IPv6 over IPv4 (only works on early "
@@ -3565,16 +3537,16 @@ msgid "Preference setting {0} has been removed since it is no longer used."
 msgstr "Ustawienie {0} zostało usunięte, ponieważ nie jest już używane."
 
 msgid "Metric"
-msgstr "metryczny"
+msgstr "Metryczny"
 
 msgid "Chinese"
-msgstr "chiński"
+msgstr "Chiński"
 
 msgid "Imperial"
-msgstr "imperialny"
+msgstr "Imperialny"
 
 msgid "Nautical Mile"
-msgstr "mile morskie"
+msgstr "Mile morskie"
 
 msgid "UNKNOWN"
 msgstr "NIEZNANA"
@@ -3583,14 +3555,13 @@ msgid "Error reading revision info from revision file: {0}"
 msgstr "Błąd odczytu informacji z pliku aktualizacji wersji: {0}"
 
 msgid "Unexpected JOSM version number in revision file, value is ''{0}''"
-msgstr ""
-"Nieoczekiwany numer wersji JOSM w pliku wersji, wartość wynosi \"{0}\""
+msgstr "Nieoczekiwany numer wersji JOSM w pliku wersji, wartość wynosi „{0}”"
 
 msgid "The revision file ''/REVISION'' is missing."
-msgstr "Brak pliku wersji ''/REVISION''."
+msgstr "Brak pliku wersji „/REVISION”."
 
 msgid "Already registered a conflict for primitive ''{0}''."
-msgstr "Konflikt dla elementu ''{0}'' jest juz zarejestrowany."
+msgstr "Konflikt dla elementu „{0}'' jest juz zarejestrowany."
 
 msgid "Decimal Degrees"
 msgstr "Stopnie dziesiętne"
@@ -3625,8 +3596,8 @@ msgstr "Aktualizacja domyślnych wpisów"
 
 msgid "Projection ''{0}'' is not found, bookmark ''{1}'' is not usable"
 msgstr ""
-"Odwzorowanie \"{0}\" nie zostało znalezione, zakładka \"{1}\" nie może "
-"zostać użyta"
+"Odwzorowanie „{0}” nie zostało znalezione, zakładka „{1}” nie może zostać "
+"użyta"
 
 msgid "HTTP error {0} when loading tiles"
 msgstr "Błąd HTTP {0} podczas pobierania kafelków"
@@ -3726,13 +3697,13 @@ msgid "Missing merge target of type {0} with id {1}"
 msgstr "Brakuje celu do złączenia typu {0} z identyfikatorem {1}"
 
 msgid "Conflict in ''visible'' attribute for object of type {0} with id {1}"
-msgstr "Konflikt w \"widocznych\" atrybutach na obiekcie typu {0} o id {1}."
+msgstr "Konflikt w „widocznych” atrybutach na obiekcie typu {0} o id {1}."
 
 msgid "Merging data..."
 msgstr "Scalanie danych..."
 
 msgid "Test ''{0}'' completed in {1}"
-msgstr "Test \"{0}\" kompletny w {1}"
+msgstr "Test „{0}” kompletny w {1}"
 
 msgid "Cannot add a way with only {0} nodes."
 msgstr "Nie można dodać linii zawierającej tylko {0} węzłów."
@@ -3800,18 +3771,18 @@ msgstr "Uzupełnij węzeł {0} z pustymi współrzędnymi na linii {1}"
 
 msgid ""
 "Cannot compare primitive with ID ''{0}'' to primitive with ID ''{1}''."
-msgstr "Nie można porównać elementu z ID ''{0}'' do elementu z ID ''{1}''."
+msgstr "Nie można porównać elementu z ID „{0}'' do elementu z ID „{1}”."
 
 msgid "Parameter {0} not in range 0..{1}. Got ''{2}''."
-msgstr "Parametr {0} nie jest w zakresie 0..{1}. Obecnie \"{2}\"."
+msgstr "Parametr {0} nie jest w zakresie 0..{1}. Obecnie „{2}”."
 
 msgid "Failed to load map renderer class ''{0}''. The class wasn''t found."
-msgstr "Błąd ładowania klasy rendera mapy \"{0}\". Klasa nie znaleziona."
+msgstr "Błąd ładowania klasy rendera mapy „{0}”. Klasa nie znaleziona."
 
 msgid ""
 "Can''t activate map renderer class ''{0}'', because the class wasn''t found."
 msgstr ""
-"Nie można aktywować klasy rendera mapy \"{0}\". Klasa nie zastała znaleziona."
+"Nie można aktywować klasy rendera mapy „{0}”. Klasa nie zastała znaleziona."
 
 msgid "Activating the standard map renderer instead."
 msgstr "Aktywowanie standardowego rendera mapy w zamian."
@@ -3820,14 +3791,14 @@ msgid ""
 "Can''t activate map renderer class ''{0}'', because it isn''t a subclass of "
 "''{1}''."
 msgstr ""
-"Nie można aktywować klasy rendera mapy \"{0}\", ponieważ to nie jest "
-"podklasa \"{1}\"."
+"Nie można aktywować klasy rendera mapy „{0}”, ponieważ to nie jest podklasa "
+"„{1}”."
 
 msgid ""
 "Can''t activate map renderer class ''{0}'', because it isn''t registered as "
 "map renderer."
 msgstr ""
-"Nie można aktywować klasy rendera mapy \"{0}\", ponieważ nie jest ona "
+"Nie można aktywować klasy rendera mapy „{0}”, ponieważ nie jest ona "
 "zarejestrowana jako render mapy."
 
 msgid "Wireframe Map Renderer"
@@ -3882,47 +3853,47 @@ msgid "areatext"
 msgstr "obszar tekstowy"
 
 msgid "Expected element ''{0}'', but got ''{1}''"
-msgstr "Oczekiwany element ''{0}'',ale otrzymano ''{1}''"
+msgstr "Oczekiwany element „{0}'', ale otrzymano „{1}”"
 
 msgid "value expected"
 msgstr "spodziewana wartość"
 
 msgid "UTM projection (''+proj=utm'') requires ''+zone=...'' parameter."
-msgstr "Projekcja UTM (''+proj=utm'') wymaga parametru ''+zone=...''."
+msgstr "Projekcja UTM (''+proj=utm'') wymaga parametru „+zone=...”."
 
 msgid "Expected integer value in range 1-60 for ''+zone=...'' parameter."
 msgstr ""
-"Dla parametru ''+zone=...'' spodziewana jest wartość całkowita z zakresu 1-60"
+"Dla parametru „+zone=...'' spodziewana jest wartość całkowita z zakresu 1-60"
 
 msgid "No unit found for: {0}"
 msgstr "Żadna jednostka nie została znaleziona dla: {0}"
 
 msgid "Parameter must begin with a ''+'' character (found ''{0}'')"
-msgstr "Parametr musi zaczynać się znakiem \"+\" (znaleziono \"{0}\")"
+msgstr "Parametr musi zaczynać się znakiem „+” (znaleziono „{0}”)"
 
 msgid "Unknown parameter: ''{0}''."
-msgstr "Nieznany parameter: ''{0}''."
+msgstr "Nieznany parameter: „{0}”."
 
 msgid "Value expected for parameter ''{0}''."
-msgstr "Przewidywana wartość dla paramteru \"{0}\"."
+msgstr "Przewidywana wartość dla paramteru „{0}”."
 
 msgid "No value expected for parameter ''{0}''."
-msgstr "Brak przewidzianej wartości dla parametru \"{0}\"."
+msgstr "Brak przewidzianej wartości dla parametru „{0}”."
 
 msgid "Unexpected parameter format (''{0}'')"
-msgstr "Nieoczekiwany format parametru (\"{0}\")"
+msgstr "Nieoczekiwany format parametru („{0}”)"
 
 msgid "Value ''{0}'' for option +init not supported."
-msgstr "Wartość \"{0}\" dla opcji +int nie obsługiwana."
+msgstr "Wartość „{0}” dla opcji +int nie obsługiwana."
 
 msgid "Ellipsoid ''{0}'' not supported."
-msgstr "Elipsoida \"{0}\" nie obsługiwana."
+msgstr "Elipsoida „{0}” nie obsługiwana."
 
 msgid "Combination of ellipsoid parameters is not supported."
 msgstr "Kombinacja parametrów elipsoidy nie jest osbługiwana."
 
 msgid "Unknown datum identifier: ''{0}''"
-msgstr "Nieznany identyfikator punktu odniesienia: ''{0}''"
+msgstr "Nieznany identyfikator punktu odniesienia: „{0}''"
 
 msgid "Ellipsoid required (+ellps=* or +a=*, +b=*)"
 msgstr "Elipsoida wymaga (+ellps=* lub +a=*, +b=*)"
@@ -3933,34 +3904,32 @@ msgstr ""
 msgid ""
 "Unexpected number of arguments for parameter ''towgs84'' (must be 3 or 7)"
 msgstr ""
-"Nieoczekiwana liczba argumentów dla parametru \"towgs84\" (musi być 3 lub 7)"
+"Nieoczekiwana liczba argumentów dla parametru „towgs84” (musi być 3 lub 7)"
 
 msgid "Unable to parse value of parameter ''towgs84'' (''{0}'')"
-msgstr "Nie można zanalizować wartości parametru ''towgs84'' (''{0}'')"
+msgstr "Nie można zanalizować wartości parametru „towgs84'' (''{0}'')"
 
 msgid "Projection required (+proj=*)"
 msgstr "Wymagana projekcja (+proj=*)"
 
 msgid "Unknown projection identifier: ''{0}''"
-msgstr "Nieznany identyfikator projektu: ''{0}''"
+msgstr "Nieznany identyfikator projektu: „{0}''"
 
 msgid "Unexpected number of arguments for parameter ''+bounds'' (must be 4)"
-msgstr ""
-"Nieoczekiwana liczba argumentów dla parametru \"+bounds\" (musi być 4)"
+msgstr "Nieoczekiwana liczba argumentów dla parametru „+bounds” (musi być 4)"
 
 msgid "Unknown parameter ''{0}''"
 msgstr "Nieznany parametr {0}"
 
 msgid "Expected number argument for parameter ''{0}''"
-msgstr "Oczekiwana liczba argumentów dla parametru \"{0}\""
+msgstr "Oczekiwana liczba argumentów dla parametru „{0}”"
 
 msgid "Unable to parse value ''{1}'' of parameter ''{0}'' as number."
-msgstr "Błąd analizowania wartości \"{1}\" parametru \"{0}\" jako liczby."
+msgstr "Błąd analizowania wartości „{1}” parametru „{0}” jako liczby."
 
 msgid ""
 "Unable to parse value ''{1}'' of parameter ''{0}'' as coordinate value."
-msgstr ""
-"Błąd analizowania wartości \"{1}\" parametru \"{0}\" jako współrzędne."
+msgstr "Błąd analizowania wartości „{1}” parametru „{0}” jako współrzędne."
 
 msgid "Custom Projection"
 msgstr "Własna projekcja"
@@ -3975,7 +3944,7 @@ msgid "Albers Equal Area"
 msgstr ""
 
 msgid "Parameter ''{0}'' required."
-msgstr "Parametr ''{0}'' jest wymagany."
+msgstr "Parametr „{0}'' jest wymagany."
 
 msgid "standard parallels are opposite"
 msgstr "standardowe paralele są przeciwne"
@@ -4005,7 +3974,7 @@ msgid "Unsuitable parameters ''{0}'' and ''{1}'' for two point method."
 msgstr ""
 
 msgid "Illegal value for parameter ''{0}'': {1}"
-msgstr "Niedozwolona wartość parametru ''{0}'': {1}"
+msgstr "Niedozwolona wartość parametru „{0}'': {1}"
 
 msgid "error in initialization"
 msgstr "błąd inicjalizacji"
@@ -4090,7 +4059,7 @@ msgid "House number without street"
 msgstr "Numer domu bez nazwy ulicy"
 
 msgid "House number ''{0}'' duplicated"
-msgstr "Numer domu ''{0}'' zduplikowany"
+msgstr "Numer domu „{0}'' zduplikowany"
 
 msgid "Duplicate house numbers"
 msgstr "Zduplikowane numery domów"
@@ -4146,10 +4115,10 @@ msgid "Conditional Keys"
 msgstr "Klucze Warunkowe"
 
 msgid "Tests for the correct usage of ''*:conditional'' tags."
-msgstr "Test na właściwe użycie tagów \"*:conditional\"."
+msgstr "Test na właściwe użycie znaczników „*:conditional”."
 
 msgid "Does not match pattern ''restriction value @ condition''"
-msgstr "Nie pasuje do wzorca \"wartość ograniczenia @ warunek\""
+msgstr "Nie pasuje do wzorca „wartość ograniczenia @ warunek\""
 
 msgid "{0} is not a valid restriction value"
 msgstr "{0} nie jest prawidłową wartością ograniczenia"
@@ -4359,7 +4328,7 @@ msgid "No outer way for multipolygon"
 msgstr "Brak zewnętrznej linii wielokąta złożonego"
 
 msgid "Role for ''{0}'' should be ''{1}''"
-msgstr "Rola dla ''{0}'' powinna być ''{1}''"
+msgstr "Rola dla „{0}'' powinna być „{1}”"
 
 msgid "No area style for multipolygon"
 msgstr "Brak stylu dla obszaru wielokąta złożonego"
@@ -4419,9 +4388,9 @@ msgid ""
 "to some ''name:*'' attribute and not a composition of ''name:*'' attributes, "
 "e.g., Italia - Italien - Italy."
 msgstr ""
-"Ten test wyszukuje obiekty wielojęzyczne, których atrybut ''name'' nie jest "
-"równy innym atrybutom ''name:*'' i zbiorom atrybutów ''name:*'', na "
-"przykład, Italia - Italien - Włochy."
+"Ten test wyszukuje obiekty wielojęzyczne, których atrybut „name'' nie jest "
+"równy innym atrybutom „name:*'' i zbiorom atrybutów „name:*'', na przykład, "
+"Italia - Italien - Włochy."
 
 msgid "Missing name:*={0}. Add tag with correct language key."
 msgstr "Brakujący tag name:*={0}. Dodaj tag z prawidłowym kodem języka."
@@ -4605,7 +4574,7 @@ msgid "Suspicious tag/value combinations"
 msgstr "Podejrzana kombinacja tag/wartość"
 
 msgid "Key ''{0}'' invalid."
-msgstr "Klucz ''{0}'' jest nieprawidłowy."
+msgstr "Klucz „{0}'' jest nieprawidłowy."
 
 msgid "Tag value contains character with code less than 0x20"
 msgstr "Wartość tagu zawiera znaki o kodzie mniejszym niż 0x20"
@@ -4635,25 +4604,25 @@ msgid "Property values contain HTML entity"
 msgstr "Wartość zawiera kody HTML"
 
 msgid "Key ''{0}'' looks like ''{1}''."
-msgstr "Klucz ''{0}'' wygląda jak ''{1}''."
+msgstr "Klucz „{0}'' wygląda jak „{1}”."
 
 msgid "Misspelled property key"
 msgstr "Błędny klucz podmiotu"
 
 msgid "Key ''{0}'' not in presets."
-msgstr "Klucz \"{0}\" nie występuje w szablonach"
+msgstr "Klucz „{0}” nie występuje w szablonach"
 
 msgid "Presets do not contain property key"
 msgstr "Szablony nie zawierają danego klucza"
 
 msgid "Value ''{0}'' for key ''{1}'' looks like ''{2}''."
-msgstr "Wartość ''{0}'' dla klucza ''{1}'' przypomina ''{2}''."
+msgstr "Wartość „{0}'' dla klucza „{1}” przypomina „{2}”."
 
 msgid "Misspelled property value"
 msgstr "Literówka w podanej wartości"
 
 msgid "Value ''{0}'' for key ''{1}'' not in presets."
-msgstr "Wartość \"{0}\" dla klucza \"{1}\" nie występuje w szablonach."
+msgstr "Wartość „{0}” dla klucza „{1}” nie występuje w szablonach."
 
 msgid "Presets do not contain property value"
 msgstr "Szablony nie zawierają danej wartości"
@@ -4690,7 +4659,7 @@ msgid "Check for FIXMES."
 msgstr "Wyszukaj FIXME"
 
 msgid "Looks for nodes or ways with FIXME in any property value."
-msgstr "Wyszukaj węzły i linie z \"FIXME\" w dowolnej właściwości."
+msgstr "Wyszukaj węzły i linie z „FIXME” w dowolnej właściwości."
 
 msgid "Fix tags"
 msgstr "Napraw tagi"
@@ -4705,10 +4674,10 @@ msgid "Could not find warning level"
 msgstr "Nie znaleziono etykiety ostrzeżenia"
 
 msgid "Illegal expression ''{0}''"
-msgstr "Błędne wyrażenie \"{0}\""
+msgstr "Błędne wyrażenie „{0}”"
 
 msgid "Illegal regular expression ''{0}''"
-msgstr "Błędne wyrażenie regularne \"{0}\""
+msgstr "Błędne wyrażenie regularne „{0}”"
 
 msgid "Turnrestrictions"
 msgstr "Ograniczenia skrętu"
@@ -4723,46 +4692,46 @@ msgid "Unknown member type"
 msgstr "Nieznany rodzaj elementu"
 
 msgid "More than one \"from\" way found"
-msgstr "Znaleziono więcej niż jedną linię \"from\""
+msgstr "Znaleziono więcej niż jedną linię „from\""
 
 msgid "More than one \"to\" way found"
-msgstr "Znaleziono więcej niż jedną linię \"to\""
+msgstr "Znaleziono więcej niż jedną linię „to\""
 
 msgid "More than one \"via\" node found"
-msgstr "Więcej niż jeden węzeł w roli \"przez\""
+msgstr "Więcej niż jeden węzeł w roli „przez\""
 
 msgid "Cannot mix node and way for role \"via\""
-msgstr "Węzeł i linia nie mogą być razem w roli \"przez\"."
+msgstr "Węzeł i linia nie mogą być razem w roli „przez”."
 
 msgid "No \"from\" way found"
-msgstr "Nie znaleziono linii \"from\""
+msgstr "Nie znaleziono linii „from\""
 
 msgid "No \"to\" way found"
-msgstr "Nie znaleziono linii z rolą \"to\""
+msgstr "Nie znaleziono linii z rolą „to\""
 
 msgid "\"from\" way equals \"to\" way"
 msgstr ""
 
 msgid "No \"via\" node or way found"
-msgstr "Nie znaleziono linii lub węzła z rolą \"via\""
+msgstr "Nie znaleziono linii lub węzła z rolą „via\""
 
 msgid "The \"from\" way does not start or end at a \"via\" node."
-msgstr "Linia \"from\" nie rozpoczyna się lub nie kończy w węźle\"via\"."
+msgstr "Linia „from” nie rozpoczyna się lub nie kończy w węźle\"via”."
 
 msgid "Superfluous turnrestriction as \"to\" way is oneway"
 msgstr "Zbędne ograniczenie skrętu w linię jednokierunkową"
 
 msgid "The \"to\" way does not start or end at a \"via\" node."
-msgstr "Linia \"to\" nie rozpoczyna się lub nie kończy w węźle \"via\"."
+msgstr "Linia „to” nie rozpoczyna się lub nie kończy w węźle „via”."
 
 msgid "The \"from\" and the first \"via\" way are not connected."
-msgstr "Linia \"z\" nie jest połączona z pierwszą linią \"przez\"."
+msgstr "Linia „z” nie jest połączona z pierwszą linią „przez”."
 
 msgid "The \"via\" ways are not connected."
-msgstr "Linie \"przez\" nie są połączone."
+msgstr "Linie „przez” nie są połączone."
 
 msgid "The last \"via\" and the \"to\" way are not connected."
-msgstr "Ostatnia linia \"przez\" nie jest połączona z linią \"do\"."
+msgstr "Ostatnia linia „przez” nie jest połączona z linią „do”."
 
 msgid "Unclosed Ways"
 msgstr "Niezamknięte linie"
@@ -4851,19 +4820,19 @@ msgid "No tags"
 msgstr "Bez tagów"
 
 msgid "Has tag containing ''fixme'' or ''FIXME''"
-msgstr "Posiada tagi zawierające ''fixme'' lub ''FIXME''"
+msgstr "Posiada tagi zawierające „fixme'' lub „FIXME''"
 
 msgid "Has key ''note'' or ''comment'' or ''description''"
-msgstr "Posiada klucz ''note'', ''comment'' lub ''description''"
+msgstr "Posiada klucz „note'', „comment'' lub „description''"
 
 msgid "Has key ''created_by'' or ''converted_by''"
-msgstr "Posiada klucz ''created_by'' lub ''converted_by''"
+msgstr "Posiada klucz „created_by'' lub „converted_by''"
 
 msgid "Has key ''watch''"
-msgstr "Posiada klucz ''watch''"
+msgstr "Posiada klucz „watch''"
 
 msgid "Has key ''source''"
-msgstr "Posiada klucz ''source''"
+msgstr "Posiada klucz „source''"
 
 msgid "Untagged, empty and one node ways"
 msgstr "Nieoznaczone, puste i jednowęzłowe linie"
@@ -4997,14 +4966,14 @@ msgid "Conflict"
 msgstr "Konflikt"
 
 msgid "Authentication Failed"
-msgstr "Uwierzytelnienie nie powiodło się"
+msgstr "Nieudane uwierzytelnianie"
 
 msgid "Access to redacted version ''{0}'' of {1} {2} is forbidden."
 msgstr ""
-"Dostęp do zredagowanej wersji ''{0}'' elementu {1} {2} jest zabroniony."
+"Dostęp do zredagowanej wersji „{0}” elementu {1} {2} jest zabroniony."
 
 msgid "Authorisation Failed"
-msgstr "Autoryzacja nie powiodła się"
+msgstr "Nieudane nadawanie uprawnień"
 
 msgid "Client Time Out"
 msgstr "Czas oczekiwania"
@@ -5013,7 +4982,7 @@ msgid "Bandwidth Limit Exceeded"
 msgstr "Przekroczono limit przepustowości"
 
 msgid "Communication with OSM server failed"
-msgstr "Połączenie z serwerem OSM nie powiodło się"
+msgstr "Nie udało się nawiązać połączenia z serwerem OSM"
 
 msgid "Authentication failed"
 msgstr "Błąd uwierzytelniania"
@@ -5028,7 +4997,7 @@ msgstr[1] "Obiekty usunięte"
 msgstr[2] "Obiektów usuniętych"
 
 msgid "Show help information"
-msgstr "Pokazuje informację pomocy"
+msgstr "Wyświetla informację pomocy"
 
 msgid "Downloading \"Message of the day\""
 msgstr "Pobieranie wiadomości dnia"
@@ -5043,7 +5012,7 @@ msgid "Click to close the dialog"
 msgstr "Kliknij aby zamknąć"
 
 msgid "Imagery offset"
-msgstr "Przesunięcie warstwy obrazu"
+msgstr "Przesunięcie podkładu"
 
 msgctxt "menu"
 msgid "Imagery"
@@ -5054,7 +5023,7 @@ msgid "Offset"
 msgstr "Przesunięcie"
 
 msgid "Expected non-empty value for parameter ''{0}'', got ''{1}''"
-msgstr "Wartość parametru ''{0}'' nie może być pusta, jest ''{1}''"
+msgstr "Wartość parametru „{0}” nie może być pusta, jest „{1}”"
 
 msgid "usage"
 msgstr "użycie"
@@ -5072,7 +5041,7 @@ msgid "Download the bounding box"
 msgstr "Pobierz dane z obszaru edycji"
 
 msgid "Download the location at the URL (with lat=x&lon=y&zoom=z)"
-msgstr "Pobierz lokalizację jako adres URL (lat=x&lon=y&zoom=z)"
+msgstr "Pobierz położenie jako adres URL (lat=x&lon=y&zoom=z)"
 
 msgid "Open a file (any file type that can be opened with File/Open)"
 msgstr "Otwórz plik (każdy typ jaki może być otwarty poprzez Plik/Otwórz)"
@@ -5108,7 +5077,7 @@ msgid "Print debugging messages to console"
 msgstr "Drukuj wiadomości debugowania do konsoli"
 
 msgid "Skip loading plugins"
-msgstr "Pomiń ładowanie wtyczek"
+msgstr "Pomiń wczytywanie wtyczek"
 
 msgid "Disable access to the given resource(s), separated by comma"
 msgstr "Wyłącz dostęp do danego zasobu(-ów), oddzielone przecinkiem"
@@ -5204,8 +5173,8 @@ msgid ""
 "''{0}'' is not a valid value for argument ''{1}''. Possible values are {2}, "
 "possibly delimited by commas."
 msgstr ""
-"''{0}'' nie jest prawidłową wartością dla argumentu ''{1}''. Możliwe "
-"wartości:  {2}, ewentualnie oddzielonych od siebie przecinkami."
+"''{0}'' nie jest prawidłową wartością dla argumentu „{1}”. Możliwe wartości: "
+" {2}, ewentualnie oddzielonych od siebie przecinkami."
 
 msgid ""
 "JOSM is running in offline mode. This resource will not be available: {0}"
@@ -5336,12 +5305,13 @@ msgstr "Główny pasek narzędziowy"
 msgid ""
 "Toggles the visibility of the main toolbar (i.e., the horizontal toolbar)"
 msgstr ""
+"Przełącza widoczność głównego paska narzędziowego (np. poziomego paska)"
 
 msgid "Edit toolbar"
-msgstr "Pasek narzędzi"
+msgstr "Pasek narzędziowy edycji"
 
 msgid "Toggles the visibility of the edit toolbar (i.e., the vertical tool)"
-msgstr "Włącza/wyłącza boczny pasek narzędzi"
+msgstr "Przełącza widoczność bocznego paska narzędziowego"
 
 msgid "Preset preferences"
 msgstr "Ustawienia szablonów"
@@ -5363,16 +5333,16 @@ msgid "Do not hide toolbar"
 msgstr "Nie ukrywaj paska narzędzi"
 
 msgid "Hide this button"
-msgstr "Ukryj ten przycisk."
+msgstr "Ukryj przycisk"
 
 msgid "Click the arrow at the bottom to show it again."
 msgstr "Kliknij na dole aby pokazać to ponownie."
 
 msgid "Hide edit toolbar"
-msgstr "Schowaj pasek narzędzi"
+msgstr "Ukryj pasek narzędzi"
 
 msgid "Hide or show this toggle button"
-msgstr "Ukryj albo pokaż ten przycisk wyboru"
+msgstr "Przełącza wyświetlanie tego przycisku"
 
 msgid "Move right"
 msgstr "Przesuń w prawo"
@@ -5439,7 +5409,7 @@ msgid "User:"
 msgstr "Użytkownik:"
 
 msgid "Do not hide status bar"
-msgstr "Nie ukrywaj paska statusu"
+msgstr "Nie ukrywaj paska stanu"
 
 msgid "The northing at the mouse pointer."
 msgstr ""
@@ -5475,22 +5445,22 @@ msgid "Select note sorting method"
 msgstr "Wybierz metodę sortowania uwag"
 
 msgid "Click to cancel the current operation"
-msgstr "Kliknij aby przerwać trwającą operację"
+msgstr "Przerywa aktualne działanie"
 
 msgid "In background"
 msgstr "W tle"
 
 msgid "Click to run job in background"
-msgstr "Kilknij aby uruchomić pracę w tle"
+msgstr "Uruchamia działanie w tle"
 
 msgid " ({0})"
 msgstr " ({0})"
 
 msgid "{0} completed in {1}"
-msgstr "zakończono {0} z {1}"
+msgstr "ukończono {0} z {1}"
 
 msgid "Enlarge"
-msgstr "Powiększ"
+msgstr "Przybliż"
 
 msgid "Shrink"
 msgstr "Zmniejsz"
@@ -5499,17 +5469,17 @@ msgid ""
 "<html>Please select a <strong>range of OSM tiles</strong> at a given zoom "
 "level.</html>"
 msgstr ""
-"<html>Wybierz <strong>zakres kafelków OSM</strong> przy danym "
-"powiększeniu.</html>"
+"<html>Proszę wybrać <strong>zakres kafelków OSM</strong> dla danego stopnia "
+"przybliżenia.</html>"
 
 msgid "Zoom level:"
-msgstr "Poziom przybliżenia:"
+msgstr "Stopień przybliżenia:"
 
 msgid "from tile"
-msgstr "od kafelka"
+msgstr "Kafelek początkowy"
 
 msgid "up to tile"
-msgstr "aż do kafelka"
+msgstr "Kafelek końcowy"
 
 msgid ""
 "<html>Alternatively you may enter a <strong>tile address</strong> for a "
@@ -5517,12 +5487,16 @@ msgid ""
 "addresses in the format <i>zoom,x,y</i> or <i>zoom;x;y</i> are valid "
 "too.</html>"
 msgstr ""
+"<html>Aby pobrać jeden kafelek można wprowadzić <strong>adres "
+"kafelka</strong> w formacie <i>stopień-przybliżenia/x/y</i>, np. "
+"<i>15/256/223</i>. Użycie znaku rozdzielającego „,” lub „;” w formacie "
+"adresu jest również prawidłowe."
 
 msgid "Tile address:"
 msgstr "Adres kafelka:"
 
 msgid "Apply the tile address"
-msgstr "Zastosuj adres kafelka"
+msgstr "Wprowadza adres kafelka"
 
 msgid "Please enter a tile address"
 msgstr "Proszę wprowadzić adres kafelka"
@@ -5535,7 +5509,8 @@ msgstr "Proszę wprowadzić index kafelka"
 
 msgid "The current value isn''t a valid tile index for the given zoom level"
 msgstr ""
-"Wprowadzona wartość dla kafelka nie jest poprawna dla podanego powiększenia."
+"Wprowadzona wartość dla kafelka nie jest poprawna dla podanego stopnia "
+"przybliżenia"
 
 msgid "Conflict background: no conflict"
 msgstr "Konflikt tła: brak konfilktu"
@@ -5646,7 +5621,7 @@ msgid "Properties"
 msgstr "Właściwości"
 
 msgid "Tags"
-msgstr "Tagi"
+msgstr "Znaczniki"
 
 msgid "Nodes"
 msgstr "Węzły"
@@ -5655,13 +5630,13 @@ msgid "Members"
 msgstr "Członkowie"
 
 msgid "No pending tag conflicts to be resolved"
-msgstr "Brak oczekujących konflitów do rozwiązania"
+msgstr "Brak oczekujących konfliktów do rozwiązania"
 
 msgid "Tags({0} conflict)"
 msgid_plural "Tags({0} conflicts)"
-msgstr[0] "Tagi({0} konflikt)"
-msgstr[1] "Tagi({0} konflikty)"
-msgstr[2] "Tagi({0} konfliktów)"
+msgstr[0] "Znaczniki ({0} konflikt)"
+msgstr[1] "Znaczniki ({0} konflikty)"
+msgstr[2] "Znaczniki ({0} konfliktów)"
 
 msgid "{0} pending tag conflict to be resolved"
 msgid_plural "{0} pending tag conflicts to be resolved"
@@ -5729,7 +5704,7 @@ msgid "List in role {0} is currently not participating in a compare pair."
 msgstr ""
 
 msgid "Unexpected value of parameter ''index''. Got {0}."
-msgstr "Niespodziewana wartość parametru \"index\". Wynosi {0}"
+msgstr "Niespodziewana wartość parametru „index”. Wynosi {0}"
 
 msgid "Item {0} not found in list."
 msgstr "Element {0} nie znaleziony na liście."
@@ -5764,7 +5739,7 @@ msgid "> top"
 msgstr "> góra"
 
 msgid "Copy my selected nodes to the start of the merged node list"
-msgstr "Kopiuj zaznaczone węzły na start połączonej list wezłów"
+msgstr "Kopiuj zaznaczone węzły na początek połączonej list węzłów"
 
 msgid "> bottom"
 msgstr "> dół"
@@ -5993,22 +5968,22 @@ msgid "Mark the selected tags as undecided"
 msgstr "Zaznacz wybrane tagi jako niezdecydowne"
 
 msgid "Their dataset does not include a tag with key {0}"
-msgstr "Ich zestaw nie zawiera tagu z kluczem {0}"
+msgstr "Ich zestaw nie zawiera znacznika z kluczem {0}"
 
 msgid "Conflicts when combining primitives"
-msgstr "Konflikty podczas łączenia elementów"
+msgstr "Konflikty łączenia elementów"
 
 msgid "Conflicts when combining ways - combined way is ''{0}''"
-msgstr "Konflikt podczas łączenia linii - łączona linia jest \"{0}\""
+msgstr "Konflikty podczas łączenia linii. Łączoną linią jest „{0}”."
 
 msgid "Conflicts when merging nodes - target node is ''{0}''"
-msgstr "Konflikt podczas łączenia węzłów - doelowy węzeł to ''{0}''"
+msgstr "Konflikty podczas łączenia węzłów. Docelowym węzłem jest „{0}”."
 
 msgid "No conflicts to resolve"
 msgstr "Brak konfliktów do rozwiązania"
 
 msgid "Cancel conflict resolution"
-msgstr "Anuluj rozwiązywanie konfliktów"
+msgstr "Porzuca rozwiązywanie konfliktów"
 
 msgid "Apply resolved conflicts"
 msgstr "Zastosuj rozwiązane konflikty"
@@ -6050,12 +6025,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Potwierdzenie łączenia"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>brak</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6069,6 +6038,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>brak</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Wybierz wartość"
 
@@ -6085,21 +6060,21 @@ msgid "Please decide which values to keep"
 msgstr "Proszę zdecydować które wartości mają pozostać"
 
 msgid "Value ''{0}'' is going to be applied for key ''{1}''"
-msgstr "Wartość \"{0}\" zostanie przypisana do klucza \"{1}\""
+msgstr "Wartość „{0}” zostanie przypisana do klucza „{1}”"
 
 msgid ""
 "All numeric values sumed as ''{0}'' are going to be applied for key ''{1}''"
 msgstr ""
 
 msgid "The key ''{0}'' and all its values are going to be removed"
-msgstr "Klucz \"{0}\" i wszystkie jego wartości zostaną usunięte"
+msgstr "Klucz „{0}” i wszystkie jego wartości zostaną usunięte"
 
 msgid "All values joined as ''{0}'' are going to be applied for key ''{1}''"
 msgstr ""
-"Wszystkie wartości połączone jako ''{0}'' będą stosowane dla klucza ''{1}''"
+"Wszystkie wartości połączone jako „{0}'' będą stosowane dla klucza „{1}”"
 
 msgid "Tag collection does not include the selected value ''{0}''."
-msgstr "Zbiór tagów nie zawiera wybranej wartości \"{0}\"."
+msgstr "Zbiór tagów nie zawiera wybranej wartości „{0}”."
 
 msgid "Not decided yet."
 msgstr "Jeszcze nie rozstrzygnięte."
@@ -6229,19 +6204,21 @@ msgid "Pos."
 msgstr "Pozycja"
 
 msgid "Orig. Way"
-msgstr "Oryg. linia"
+msgstr "Pierwotna linia"
 
 msgid "Decision"
 msgstr "Decyzja"
 
 msgid "Show tags with conflicts only"
-msgstr "Pokaż tylko tagi z konfliktami"
+msgstr "Tylko znaczniki z konfliktami"
 
 msgid "Show tags with multiple values only"
-msgstr "Pokaż tylko tagi z różnymi wartościami"
+msgstr "Tylko znaczniki z różnymi wartościami"
 
 msgid "<html>Please select the values to keep for the following tags.</html>"
-msgstr "<html>Wybierz wartości odpowiadające tagom.</html>"
+msgstr ""
+"<html>Proszę wybrać wartości do zachowania dla następujących "
+"znaczników.</html>"
 
 msgid "Apply?"
 msgstr "Zastosować?"
@@ -6267,6 +6244,32 @@ msgstr "Nowy klucz"
 msgid "New value"
 msgstr "Nowa wartość"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Wklejanie {0} znacznika"
+msgstr[1] "Wklejanie {0} znaczników"
+msgstr[2] "Wklejanie {0} znaczników"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "do {0} obiektu"
+msgstr[1] "do {0} obiektów"
+msgstr[2] "do {0} obiektów"
+
+msgid "Delete incomplete members?"
+msgstr "Usunąć niekompletnych członków?"
+
+msgid "Paste without incomplete members"
+msgstr "Wklej pomijając niekompletne"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Skopiowane dane zawierają niekompletne obiekty. Podczas wstawiania "
+"niekompletne obiekty są usuwane. Wstawić dane bez niekompletnych obiektów?"
+
 msgid "For selected objects only"
 msgstr "Tylko dla zaznaczonych obiektów"
 
@@ -6289,7 +6292,7 @@ msgid "Select all objects assigned to the currently selected changesets"
 msgstr "Zaznacza wszystkie obiekty będące częścią wybranych zestawów danych"
 
 msgid "Download"
-msgstr "Pobierz"
+msgstr "Pobieranie"
 
 msgid ""
 "Download information about the selected changesets from the OSM server"
@@ -6299,7 +6302,7 @@ msgid "Closes the selected open changesets"
 msgstr "Zamyka wybrane otwarte zestawy zmian"
 
 msgid "Show info"
-msgstr "Pokaż szczegóły"
+msgstr "Wyświetl informacje"
 
 msgid "Open a web page for each selected changeset"
 msgstr "Otwiera stronę internetową dla każdego zaznaczonego zestawu danych"
@@ -6327,7 +6330,7 @@ msgid ""
 msgstr "Zaznacza obiekty które brały udział w poleceniu (poza usuniętymi)"
 
 msgid "Select and zoom"
-msgstr "Wybierz i powiększ"
+msgstr "Wybierz i przybliż"
 
 msgid ""
 "Selects the objects that take part in this command (unless currently "
@@ -6415,7 +6418,7 @@ msgid "Resolve conflicts"
 msgstr "Rozwiąż konflikty"
 
 msgid "Resolve conflicts for ''{0}''"
-msgstr "Rozwiąż konflikty dla \"{0}\""
+msgstr "Rozwiąż konflikty dla „{0}”"
 
 msgid "Please confirm to remove <strong>{0} object</strong>."
 msgid_plural "Please confirm to remove <strong>{0} objects</strong>."
@@ -6615,13 +6618,13 @@ msgstr[1] "{0} Członkowie: "
 msgstr[2] "{0} Członków: "
 
 msgid " as \"{0}\""
-msgstr " jako \"{0}\""
+msgstr " jako „{0}”"
 
 msgid "{0} Nodes: "
 msgstr "{0} węzłów: "
 
 msgid "Bounding box: "
-msgstr "Obszar edycji: "
+msgstr "Prostokąt ograniczający: "
 
 msgid "Bounding box (projected): "
 msgstr "Obszar edycji (w projekcji): "
@@ -6651,7 +6654,7 @@ msgid "edit counts"
 msgstr "liczba edycji"
 
 msgid "Styles Cache for \"{0}\":"
-msgstr "Cache stylu dla \"{0}\":"
+msgstr "Cache stylu dla „{0}”:"
 
 msgid ""
 "\n"
@@ -6673,7 +6676,7 @@ msgid ""
 msgstr ""
 "\n"
 "\n"
-"> pomijanie \"{0}\" (nieaktywne)"
+"> pomijanie „{0}” (nieaktywne)"
 
 msgid ""
 "\n"
@@ -6853,7 +6856,7 @@ msgid "Reloading style sources"
 msgstr "Odświeżanie źródeł stylów"
 
 msgid "Save style ''{0}'' as ''{1}''"
-msgstr "Zapisz styl ''{0}'' jako ''{1}''"
+msgstr "Zapisz styl „{0}'' jako „{1}”"
 
 msgid "view meta information, error log and source definition"
 msgstr "zobacz meta informacje, log błędu i źródło definicji"
@@ -7013,19 +7016,19 @@ msgid "Search for objects"
 msgstr "Wyszukuje obiekty"
 
 msgid "Display the history of the selected objects."
-msgstr "Wyświetl historię zaznaczonego obiektu."
+msgstr "Wyświetla historię zaznaczonych obiektów"
 
 msgid "Zoom to selection"
-msgstr "Powiększ do zaznaczenia"
+msgstr "Przybliż do zaznaczenia"
 
 msgid "Zoom to selected element(s)"
-msgstr "Powiększ do wybranych elementów"
+msgstr "Przybliż do wybranych elementów"
 
 msgid "Sel.: Rel.:{0} / Ways:{1} / Nodes:{2}"
-msgstr "Zazn.: Rel.:{0} / Linie:{1} / Węzły:{2}"
+msgstr "Zaznaczenie: Relacje:{0} / Linie:{1} / Węzły:{2}"
 
 msgid "Unselectable now"
-msgstr "Nie da się teraz zaznaczyć"
+msgstr "Niemożliwe zaznaczanie"
 
 msgid "Selection: {0}"
 msgstr "Zaznaczenie: {0}"
@@ -7046,15 +7049,15 @@ msgid "Open preferences for this panel"
 msgstr "Otwórz preferencje dla tego panelu"
 
 msgid "Undock the panel"
-msgstr "Oderwij panel"
+msgstr "Odłącza panel"
 
 msgid ""
 "Close this panel. You can reopen it with the buttons in the left toolbar."
 msgstr ""
-"Zamknij panel. Możesz ponownie go otworzyć używając przycisków po lewej."
+"Zamyka panel. Można go ponownie otworzyć używając przycisków po lewej."
 
 msgid "Click to minimize/maximize the panel content"
-msgstr "Kliknij aby zminimalizować/maksymalizować zawartość panelu"
+msgstr "Przełącza wyświetlanie zawartości panelu"
 
 msgid "Side buttons"
 msgstr "Przyciski boczne"
@@ -7063,22 +7066,24 @@ msgid "Authors"
 msgstr "Autorzy"
 
 msgid "Open a list of people working on the selected objects."
-msgstr "Otwiera listę ludzi pracujących nad zaznaczonymi obiektami."
+msgstr "Wyświetla listę ludzi pracujących nad zaznaczonymi obiektami"
 
 msgid "{0} Author"
 msgid_plural "{0} Authors"
-msgstr[0] "{0} Autor"
-msgstr[1] "{0} Autorzy"
-msgstr[2] "{0} Autorów"
+msgstr[0] "{0} autor"
+msgstr[1] "{0} autorów"
+msgstr[2] "{0} autorów"
 
 msgid "Select objects submitted by this user"
-msgstr "Wybierz obiekty podane przez tego użytkownika"
+msgstr "Zaznacza obiekty wysłane przez użytkownika"
 
 msgid "Launches a browser with information about the user"
-msgstr "Przechodzi do strony www z informacjami o tym użytkowniku."
+msgstr ""
+"Wyświetla informacje na temat użytkownika w przeglądarce internetowej"
 
 msgid "Only launching info browsers for the first {0} of {1} selected users"
 msgstr ""
+"Wyświetlanie informacji dla pierwszych {0} użytkowników z {1} zaznaczonych"
 
 msgid "Author"
 msgstr "Autor"
@@ -7129,7 +7134,7 @@ msgid "Fixing errors ..."
 msgstr "Naprawianie błędów..."
 
 msgid "Fixing ({0}/{1}): ''{2}''"
-msgstr "Naprawianie ({0}/{1}): ''{2}''"
+msgstr "Naprawianie ({0}/{1}): „{2}''"
 
 msgid "Updating map ..."
 msgstr "Aktualizowanie mapy..."
@@ -7243,22 +7248,22 @@ msgid_plural ""
 "''{0}''.</html>"
 msgstr[0] ""
 "<html>Zaznaczony obiekt nie jest dostępny w<br>edytowanej warstwie "
-"''{0}''.</html>"
+"„{0}”.</html>"
 msgstr[1] ""
 "<html>Żaden z zaznaczonych obiektów nie jest dostępny w<br>edytowanej "
-"warstwie ''{0}''.</html>"
+"warstwie „{0}''.</html>"
 msgstr[2] ""
 "<html>Żaden z zaznaczonych obiektów nie jest dostępny w<br>edytowanej "
-"warstwie ''{0}''.</html>"
+"warstwie „{0}''.</html>"
 
 msgid "Download and show the history of the selected objects"
-msgstr "Pobiera i pokazuje historię wybranych obiektów"
+msgstr "Pobiera i wyświetla historię zaznaczonych obiektów"
 
 msgid "Download objects"
 msgstr "Pobrane obiekty"
 
 msgid "Download the current version of the selected objects"
-msgstr ""
+msgstr "Pobiera aktualną wersję zaznaczonych obiektów"
 
 msgid "Select in layer"
 msgstr "Zaznacz na warstwie"
@@ -7282,7 +7287,7 @@ msgid "The content of this changeset is not downloaded yet."
 msgstr "Zawartość tego zestawu zmian nie została jeszcze pobrana."
 
 msgid "Download now"
-msgstr "Pobierz teraz"
+msgstr "Pobierz"
 
 msgid "Download the changeset content"
 msgstr "Pobiera zawartość zestawu zmian"
@@ -7335,7 +7340,7 @@ msgid ""
 "the current<br>edit layer ''{1}''.</html>"
 msgstr ""
 "<html>Żaden z obiektów zawartych w zestawie zmian {0} nie jest dostępny "
-"w<br>edytowanej warstwie ''{1}''.</html>"
+"w<br>edytowanej warstwie „{1}”.</html>"
 
 msgid ""
 "Zoom to the objects in the content of this changeset in the current data "
@@ -7344,10 +7349,10 @@ msgstr ""
 "Powiększa obiekty zawarte w zestawie zmian w edytowanej warstwie danych"
 
 msgid "Update changeset discussion"
-msgstr "Aktualizuj dyskusję nad zestawem zmian"
+msgstr "Uaktualnij dyskusję nad zestawem zmian"
 
 msgid "Update the changeset discussion from the OSM server"
-msgstr "Atualizuje dyskusję nad zestawem zmian z serwera OSM"
+msgstr "Uaktualnia dyskusję nad zestawem zmian z serwera OSM"
 
 msgid "Date"
 msgstr "Data"
@@ -7368,16 +7373,16 @@ msgid "Download the changeset content from the OSM server"
 msgstr "Pobiera zawartość zestawu zmian z serwera OSM"
 
 msgid "Update content"
-msgstr "Aktualizuj zawartość"
+msgstr "Uaktualnij zawartość"
 
 msgid "Update the changeset content from the OSM server"
-msgstr "Aktualizuje zawartość zestawu zmian z serwera OSM"
+msgstr "Uaktualnia zawartość zestawu zmian z serwera OSM"
 
 msgid "Changeset ID: "
-msgstr "ID zestawu zmian: "
+msgstr "Identyfikator zestawu zmian: "
 
 msgid "Enter a changeset id"
-msgstr "Wprowadź ID zestawu zmian"
+msgstr "Proszę wprowadzić identyfikator zestawu zmian"
 
 msgid ""
 "Download the changeset with the specified id, including the changeset content"
@@ -7438,11 +7443,11 @@ msgstr ""
 "obecny użytkownik jest anonimowy"
 
 msgid "Current value ''{0}'' for user ID is not valid"
-msgstr "Bieżaca wartość ID użytkownika ''{0}'' nie jest poprawna"
+msgstr "Bieżąca wartość ID użytkownika „{0}'' nie jest poprawna"
 
 msgid "Cannot restrict the changeset query to the user name ''{0}''"
 msgstr ""
-"Nie można ograniczyć zapytania zestawu zmian do nazwy użytkownika ''{0}''"
+"Nie można ograniczyć zapytania zestawu zmian do nazwy użytkownika „{0}''"
 
 msgid "Please enter a valid user ID"
 msgstr "Wprowadź poprawne ID użytkownika"
@@ -7635,55 +7640,55 @@ msgid ""
 msgstr ""
 
 msgid "This changeset query URL is invalid"
-msgstr ""
+msgstr "Ten adres URL zestawu zmian jest nieprawidłowy"
 
 msgid "Activate"
-msgstr "Aktywuj"
+msgstr "Uaktywnij"
 
 msgid "Activate the selected layer"
-msgstr "Aktywuj zaznzczoną warstwę"
+msgstr "Uaktywnia zaznaczoną warstwę"
 
 msgid "Activate layer"
 msgstr "Aktywuj warstwę"
 
 msgid "Delete the selected layers."
-msgstr "Usuń zaznaczoną warstwę."
+msgstr "Usuwa zaznaczone warstwy"
 
 msgid "Duplicate this layer"
-msgstr "Skopiuj warstwę"
+msgstr "Powiela warstwę"
 
 msgid "Copy of {0}"
 msgstr "Kopia warstwy {0}"
 
 msgid "Copy {1} of {0}"
-msgstr "Kopia nr {1} warstwy  {0}"
+msgstr "Kopia {1} warstwy  {0}"
 
 msgid "Change visibility of the selected layer."
-msgstr ""
+msgstr "Zmienia widoczność wybranej warstwy"
 
 msgid "Show layer"
-msgstr ""
+msgstr "Wyświetlanie warstwy"
 
 msgid "Adjust opacity of the layer."
-msgstr "Zmienia stopień krycia (przezroczystość) warstwy."
+msgstr "Ustala stopień krycia (przezroczystość) warstwy"
 
 msgid "Opacity"
 msgstr "Krycie"
 
 msgid "Adjust gamma value of the layer."
-msgstr "Dostosowuje wartość gamma warstwy."
+msgstr "Ustala wartość gamma warstwy"
 
 msgid "Gamma"
 msgstr "Gamma"
 
 msgid "Adjust sharpness/blur value of the layer."
-msgstr "Dostosowuje stopień ostrości/rozmycia warstwy."
+msgstr "Ustala stopień ostrości/rozmycia warstwy"
 
 msgid "Sharpness"
 msgstr "Ostrość"
 
 msgid "Adjust colorfulness of the layer."
-msgstr "Dostosowuje stopień nasycenia warstwy."
+msgstr "Ustala stopień nasycenia warstwy"
 
 msgid "Colorfulness"
 msgstr "Nasycenie"
@@ -7692,16 +7697,16 @@ msgid "Merge this layer into another layer"
 msgstr "Połącz tę warstwę z inną warstwą"
 
 msgid "Move the selected layer one row down."
-msgstr "Przesuwa wybraną warstwę o jedno odczo do dołu."
+msgstr "Przesuwa wybraną warstwę o jeden wiersz w dół"
 
 msgid "Move the selected layer one row up."
-msgstr "Przesuwa wybraną warstwę o jeden wiersz do góry."
+msgstr "Przesuwa wybraną warstwę o jeden wiersz do góry"
 
 msgid "Show/hide"
-msgstr "Wyświetl/ukryj"
+msgstr "Przełącz wyświetlanie"
 
 msgid "Toggle visible state of the selected layer."
-msgstr "Zmienia widocznoś zaznaczonej warstwy."
+msgstr "Przełącza widoczność zaznaczonej warstwy"
 
 msgid "Show/hide layer"
 msgstr "Wyświetl/ukryj warstwę"
@@ -7719,7 +7724,7 @@ msgid "Discardable key: background"
 msgstr ""
 
 msgid "{0} ''{1}''"
-msgstr "{0} ''{1}''"
+msgstr "{0} „{1}”"
 
 msgid "{0} different"
 msgid_plural "{0} different"
@@ -7734,13 +7739,13 @@ msgstr[1] ", {0} nieprzypisane"
 msgstr[2] ", {0} nieprzypisanych"
 
 msgid "Select objects for which to change tags."
-msgstr "Zaznacz obiekty, którym chcesz zmienić znaczniki"
+msgstr "Proszę zaznaczyć obiekty, którym zmienić znaczniki"
 
 msgid "Tags/Memberships"
 msgstr "Znaczniki/członkowie"
 
 msgid "Tags for selected objects."
-msgstr "Tagi dla zaznaczonych obiektów."
+msgstr "Znaczniki dla zaznaczonych obiektów."
 
 msgid "<different>"
 msgstr "<różne>"
@@ -7752,7 +7757,7 @@ msgid "Position"
 msgstr "Pozycja"
 
 msgid "Tag filter"
-msgstr ""
+msgstr "Filtr znaczników"
 
 msgid "Objects: {2} / Tags: {0} / Memberships: {1}"
 msgstr "Obiekty: {2} / Znaczniki: {0} / Członkowie: {1}"
@@ -7761,10 +7766,10 @@ msgid "Tags: {0} / Memberships: {1}"
 msgstr "Znaczniki: {0} / Członkowie: {1}"
 
 msgid "Delete the selected key in all objects"
-msgstr "Usuń wybrany klucz ze wszystkich obiektów."
+msgstr "Usuń wybrany klucz ze wszystkich obiektów"
 
 msgid "Delete Tags"
-msgstr "Usuń tagi"
+msgstr "Usuń znaczniki"
 
 msgid "Change relation"
 msgstr "Zmień relację"
@@ -7773,58 +7778,58 @@ msgid "Delete from relation"
 msgstr "Usuń z relacji"
 
 msgid "Really delete selection from relation {0}?"
-msgstr "Na pewno usunąć zaznaczenie z relacji {0}?"
+msgstr "Usunąć zaznaczenie z relacji {0}?"
 
 msgid "Add a new key/value pair to all objects"
 msgstr "Dodaj nową parę nazwa/wartość do wszystkich obiektów"
 
 msgid "Add Tag"
-msgstr "Dodaj tag"
+msgstr "Dodaj znacznik"
 
 msgid "Edit the value of the selected key for all objects"
 msgstr "Edytuj wartość wybranego klucza dla wszystkich obiektów"
 
 msgid "Edit Tags"
-msgstr "Edytuj tagi"
+msgstr "Edytuj znaczniki"
 
 msgid "Go to OSM wiki for tag help"
-msgstr ""
+msgstr "Przejdź na stronę wiki OSM znacznika"
 
 msgid "Launch browser with wiki help for selected object"
-msgstr "Uruchom przeglądarkę ze stroną objaśnienia wybranego obiektu"
+msgstr "Wyświetla w przeglądarce stronę pomocy dla wybranego obiektu"
 
 msgid "Go to Taginfo"
-msgstr "Przejdź do Taginfo"
+msgstr "Przejdź na stronę Taginfo"
 
 msgid "Launch browser with Taginfo statistics for selected object"
-msgstr ""
+msgstr "Wyświetla w przeglądarce stronę statystyk dla wybranego obiektu"
 
 msgid "Paste Value"
-msgstr "Wklej wartość ze schowka"
+msgstr "Wklej wartość"
 
 msgid "Paste the value of the selected tag from clipboard"
-msgstr "Wklej wartość wybranego tagu ze schowka"
+msgstr "Wkleja wartość wybranego znacznika ze schowka"
 
 msgid "Copy Value"
-msgstr "Kopiuj wartość"
+msgstr "Skopiuj wartość"
 
 msgid "Copy the value of the selected tag to clipboard"
-msgstr "Kopiuj wartość wybranego tagu do schowka"
+msgstr "Kopiuje wartość wybranego znacznika do schowka"
 
 msgid "Copy selected Key(s)/Value(s)"
-msgstr "Kopiuj zaznaczone pary klucz(e)/wartość(i)"
+msgstr "Skopiuj zaznaczone pary kluczy/wartości"
 
 msgid "Copy the key and value of the selected tag(s) to clipboard"
-msgstr "Skopiuj klucz i wartość zaznaczonego tagu/tagów do schowka"
+msgstr "Kopiuje klucze i wartości zaznaczonych znaczników do schowka"
 
 msgid "Copy all Keys/Values"
-msgstr "Kopiuj wszystkie klucze/wartości"
+msgstr "Skopiuj wszystkie klucze/wartości"
 
 msgid "Copy the key and value of all the tags to clipboard"
-msgstr "Skopiuj klucze i wartości wszystkich tagów do schowka"
+msgstr "Kopiuje klucze i wartości wszystkich znaczników do schowka"
 
 msgid "Copy Tags"
-msgstr "Skopiuj tagi"
+msgstr "Skopiuj znaczniki"
 
 msgid "Search Key/Value/Type"
 msgstr "Wyszukaj klucz/wartość/typ"
@@ -7833,29 +7838,29 @@ msgid ""
 "Search with the key and value of the selected tag, restrict to type (i.e., "
 "node/way/relation)"
 msgstr ""
-"Wyszukaj używając klucza i wartości wybranego tagu ograniczając się do "
-"danego typu (tj. węzła/linii/relacji)"
+"Wyszukuje używając klucza i wartości wybranego znacznika, ograniczając się "
+"do danego typu (tj. węzła/linii/relacji)"
 
 msgid "Search Key/Value"
 msgstr "Wyszukaj klucz/wartość"
 
 msgid "Search with the key and value of the selected tag"
-msgstr "Wyszukaj używając klucza i wartości wybranego tagu"
+msgstr "Wyszukuje używając klucza i wartości wybranego znacznika"
 
 msgid "Overwrite key"
 msgstr "Zastąpienie klucza"
 
 msgid "Replace"
-msgstr "Zamień"
+msgstr "Zastąp"
 
 msgid "The new key is already used, overwrite values?"
-msgstr "Nowy klucz jest już używany, nadpisać wartości?"
+msgstr "Nowy klucz jest już używany. Zastąpić wartości?"
 
 msgid "Change value?"
 msgid_plural "Change values?"
-msgstr[0] "Czy zmienić wartość?"
-msgstr[1] "Czy zmienić wartości?"
-msgstr[2] "Czy zmienić wartości?"
+msgstr[0] "Zmienianie wartości"
+msgstr[1] "Zmienianie wartości"
+msgstr[2] "Zmienianie wartości"
 
 msgid "This will change {0} object."
 msgid_plural "This will change up to {0} objects."
@@ -7867,7 +7872,7 @@ msgid "An empty value deletes the tag."
 msgstr "Pusta wartość usunie znacznik."
 
 msgid "You changed the key from ''{0}'' to ''{1}''."
-msgstr "Zmieniono klucz z ''{0}'' to ''{1}''."
+msgstr "Zmieniono klucz z „{0}'' na „{1}”."
 
 msgid "Change properties of up to {0} object"
 msgid_plural "Change properties of up to {0} objects"
@@ -7876,10 +7881,10 @@ msgstr[1] "Zmiana właściwości {0} obiektów."
 msgstr[2] "Zmiana właściwości {0} obiektów."
 
 msgid "Use English language for tag by default"
-msgstr "Używaj domyślnie języka angielskiego dla tagów"
+msgstr "Używaj domyślnie języka angielskiego dla znaczników"
 
 msgid "Add value?"
-msgstr "Czy dodać wartość?"
+msgstr "Dodawanie wartości"
 
 msgid "This will change up to {0} object."
 msgid_plural "This will change up to {0} objects."
@@ -7888,22 +7893,22 @@ msgstr[1] "Zmiana zostanie zastosowana do {0} obiektów."
 msgstr[2] "Zmiana zostanie zastosowana do {0} obiektów."
 
 msgid "Please select a key"
-msgstr "Proszę wybierz klucz"
+msgstr "Proszę wybrać klucz"
 
 msgid "Please select a value"
-msgstr "Proszę wybierz wartość"
+msgstr "Proszę wybrać wartość"
 
 msgid "Set number of recently added tags"
-msgstr "Ustal liczbę ostatnio dodanych tagów"
+msgstr "Ustal liczbę ostatnio dodanych znaczników"
 
 msgid "Remember last used tags after a restart"
-msgstr "Pmiętaj ostatnio używane tagi po restarcie"
+msgstr "Pamiętanie ostatnio używanych znaczników po ponownym uruchomieniu"
 
 msgid "Recent tags with existing key"
 msgstr ""
 
 msgid "Enable"
-msgstr "Aktywuj"
+msgstr "Włącz"
 
 msgid "Hide"
 msgstr "Zamaskowana"
@@ -7936,31 +7941,31 @@ msgid "Please enter integer number between 0 and {0}"
 msgstr "Podaj liczbę całkowitą od 0 do {0}"
 
 msgid "Recently added tags"
-msgstr "Ostatnio dodane tagi"
+msgstr "Ostatnio dodane znaczniki"
 
 msgid "Choose recent tag {0}"
-msgstr "Wybierz ostatnio dodany tag {0}"
+msgstr "Wybierz ostatnio dodany znacznik {0}"
 
 msgid "Use this tag again"
-msgstr "Użyj tego tagu ponownie"
+msgstr "Użyj tego znacznika ponownie"
 
 msgid "Apply recent tag {0}"
-msgstr "Zastosuj ostatnio dodany tag {0}"
+msgstr "Zastosuj ostatnio dodany znacznik {0}"
 
 msgid "The key ''{0}'' is already used"
-msgstr "Klucz \"{0}\" jest już używany"
+msgstr "Klucz „{0}” jest już używany"
 
 msgid "Ignore key ''{0}''"
-msgstr ""
+msgstr "Zignoruj klucz „{0}”"
 
 msgid "Ignore tag ''{0}''"
-msgstr ""
+msgstr "Zignoruj znacznik „{0}”"
 
 msgid "Edit ignore list"
-msgstr ""
+msgstr "Edytuj listę ignorowanych"
 
 msgid "You changed the value of ''{0}'' from ''{1}'' to ''{2}''."
-msgstr "Zmieniono wartość ''{0}'' z ''{1}'' na ''{2}''."
+msgstr "Zmieniono wartość „{0}'' z „{1}” na „{2}''."
 
 msgid "Edit the relation the currently selected relation member refers to."
 msgstr ""
@@ -8011,9 +8016,9 @@ msgstr[2] "Pobieranie {0} niekompletnych obiektów"
 
 msgid "Downloading {0} incomplete child of relation ''{1}''"
 msgid_plural "Downloading {0} incomplete children of relation ''{1}''"
-msgstr[0] "Pobieranie {0} niekompletnego chłonka relacji ''{1}''"
-msgstr[1] "Pobieranie {0} niekompletnych członków relacji ''{1}''"
-msgstr[2] "Pobieranie {0} niekompletnych członków relacji ''{1}''"
+msgstr[0] "Pobieranie {0} niekompletnego członka relacji „{1}”"
+msgstr[1] "Pobieranie {0} niekompletnych członków relacji „{1}”"
+msgstr[2] "Pobieranie {0} niekompletnych członków relacji „{1}”"
 
 msgid "Downloading {0} incomplete child of {1} parent relations"
 msgid_plural "Downloading {0} incomplete children of {1} parent relations"
@@ -8025,7 +8030,7 @@ msgid "Download relations"
 msgstr "Pobieranie relacji"
 
 msgid "({0}/{1}): Downloading relation ''{2}''..."
-msgstr "({0}/{1}): Pobieranie relacji ''{2}''..."
+msgstr "({0}/{1}): Pobieranie relacji „{2}''..."
 
 msgid "Tags and Members"
 msgstr "Znaczniki i członkowie"
@@ -8072,7 +8077,7 @@ msgid ""
 "member?</html>"
 msgstr ""
 "<html>Ta relacja ma już jeden lub więcej członków wskazujących na<br>obiekt "
-"''{0}''<br><br>Czy nadal chcesz dodać kolejnego członka relacji?</html>"
+"„{0}''<br><br>Czy nadal chcesz dodać kolejnego członka relacji?</html>"
 
 msgid "Multiple members referring to same object."
 msgstr "Wiele członków wskazuje na ten sam obiekt."
@@ -8083,7 +8088,7 @@ msgid ""
 "''{0}''.</html>"
 msgstr ""
 "<html>Próbujesz dodać relację do siebie samej.<br><br>To stworzy cykliczną "
-"zależność i dlatego jest odradzane.<br>Pomijam relację ''{0}''.</html>"
+"zależność i dlatego jest odradzane.<br>Pomijam relację „{0}''.</html>"
 
 msgid "Select previous Gap"
 msgstr "Zaznacz poprzednią przerwę"
@@ -8134,13 +8139,13 @@ msgid "Apply Changes"
 msgstr "Zastosuj zmiany"
 
 msgid "Create new relation in layer ''{0}''"
-msgstr "Utwórz nową relację na warstwie \"{0}\""
+msgstr "Utwórz nową relację na warstwie „{0}”"
 
 msgid "Edit new relation in layer ''{0}''"
-msgstr "Edytuj nową relację na warstwie \"{0}\""
+msgstr "Edytuj nową relację na warstwie „{0}”"
 
 msgid "Edit relation #{0} in layer ''{1}''"
-msgstr "Edycja relacji #{0} w warstwie \"{1}\""
+msgstr "Edycja relacji #{0} w warstwie „{1}”"
 
 msgid "Load relation"
 msgstr "Wczytaj relacje"
@@ -8231,13 +8236,6 @@ msgstr "Przesuń aktualnie zaznaczonych członkół w górę"
 msgid "Apply the updates and close the dialog"
 msgstr "Zastosuj zmiany i zamknij okno"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Członkowie ze schowka nie mogą być dodani ponieważ nie ma ich na obecnej "
-"warstwie"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -8245,7 +8243,7 @@ msgid "Refresh relation from data layer"
 msgstr ""
 
 msgid "Refresh"
-msgstr "Odśwież"
+msgstr "Wczytaj ponownie"
 
 msgid "Yes, discard changes and reload"
 msgstr ""
@@ -8314,7 +8312,7 @@ msgid ""
 "<html>Layer ''{0}'' already has a conflict for object<br>''{1}''.<br>Please "
 "resolve this conflict first, then try again.</html>"
 msgstr ""
-"<html>Warstwa ''{0}'' posiada konflikt z obiektem<br>''{1}''.<br>Proszę go "
+"<html>Warstwa „{0}'' posiada konflikt z obiektem<br>„{1}”.<br>Proszę go "
 "najpierw rozwiązać i spróbować ponownie.</html>"
 
 msgid "Select objects for selected relation members"
@@ -8346,7 +8344,7 @@ msgid "This is equal to deleting the roles of these objects."
 msgstr "To jest rownoznaczne z usunięciem ról dla tych obiektów."
 
 msgid "Do you really want to apply the new role?"
-msgstr "Czy napewno chcesz przypisać nową rolę?"
+msgstr "Przypisać nową rolę?"
 
 msgid "Yes, apply it"
 msgstr "Tak, przypisz"
@@ -8379,16 +8377,17 @@ msgid "way is connected to next relation member"
 msgstr "linia jest połączona z kolejnym członkiem relacji"
 
 msgid "way is not connected to previous or next relation member"
-msgstr "linia nie jest połączona ani z poprzednim ani z następnym członkiem"
+msgstr ""
+"linia nie jest połączona z poprzednim ani z kolejnym członkiem relacji"
 
 msgid "{0} - {1} ({2})"
 msgstr "{0} - {1} ({2})"
 
 msgid "Wrong number of arguments for bookmark"
-msgstr "Zła ilość argumentów dla zakładki"
+msgstr "Nieprawidłowa liczba parametrów dla zakładki"
 
 msgid "Error reading bookmark entry: %s"
-msgstr "Błąd podczas czytania zakładki: %s"
+msgstr "Błąd odczytywania wpisu zakładki: %s"
 
 msgid "Bookmarks"
 msgstr "Zakładki"
@@ -8400,44 +8399,43 @@ msgid ""
 "<html><strong>Current download area</strong> (minlon, minlat, maxlon, "
 "maxlat): </html>"
 msgstr ""
-"<html><strong>Pobierany obszar</strong> (minlon, minlat, maxlon, maxlat): "
-"</html>"
+"<html><strong>Pobierany obszar</strong> (min. dł., min. szer., maks. dł., "
+"maks. szer.): </html>"
 
 msgid "Create bookmark"
-msgstr "Utwórz zakładkę"
+msgstr "Dodaj zakładkę"
 
 msgid "Add a bookmark for the currently selected download area"
-msgstr "Tworzy zakładkę dla obecnie zaznaczonego terenu"
+msgstr "Dodaje zakładkę do zaznaczonego obszaru pobierania"
 
 msgid ""
 "Currently, there is no download area selected. Please select an area first."
 msgstr ""
-"Obecnie nie jest zaznaczony obszar do pobrania. Proszę najpierw zaznaczyć "
-"obszar"
+"Nie zaznaczono obszaru do pobrania. Proszę najpierw zaznaczyć obszar."
 
 msgid "Please enter a name for the bookmarked download area."
-msgstr "Wpisz nazwę dla tworzonej zakładki."
+msgstr "Proszę wprowadzić nazwę dla zakładki pobieranego obszaru:"
 
 msgid "Name of location"
-msgstr "Nazwa lokalizacji"
+msgstr "Nazwa położenia"
 
 msgid "Remove the currently selected bookmarks"
-msgstr "Usuń zaznaczone zakładki"
+msgstr "Usuwa zaznaczone zakładki"
 
 msgid "Rename the currently selected bookmark"
-msgstr "Zmień nazwę zakładki"
+msgstr "Zmienia nazwę zakładki"
 
 msgid "min lat"
-msgstr "min szer."
+msgstr "min. szerokość"
 
 msgid "min lon"
-msgstr "min dł."
+msgstr "min. długość"
 
 msgid "max lat"
-msgstr "max szer."
+msgstr "maks. szerokość"
 
 msgid "max lon"
-msgstr "max dł."
+msgstr "maks długość"
 
 msgid "Clear textarea"
 msgstr "Wyczyść pole tekstowe"
@@ -8446,10 +8444,11 @@ msgid ""
 "URL from www.openstreetmap.org (you can paste an URL here to download the "
 "area)"
 msgstr ""
-"Adres URL z www.openstreetmap.org (można wkleić adres aby pobrać obszar)"
+"Adres URL ze strony www.openstreetmap.org (można wkleić adres, aby pobrać "
+"obszar)"
 
 msgid "Bounding Box"
-msgstr "Obszar edycji"
+msgstr "Prostokąt ograniczający"
 
 msgid "The string ''{0}'' is not a valid double value."
 msgstr "Napis ''{0}'' nie reprezentuje poprawnej liczby zmiennoprzecinkowej."
@@ -8461,43 +8460,43 @@ msgid "Value for longitude in range [-180,180] required."
 msgstr "Wartości długości geograficznej musza być z zakresu [-180,180]."
 
 msgid "Data Sources and Types:"
-msgstr "Źródło i typ danych:"
+msgstr "Zasoby i typy danych:"
 
 msgid "OpenStreetMap data"
-msgstr "dane OpenStreetMap"
+msgstr "Dane OpenStreetMap"
 
 msgid "Select to download OSM data in the selected download area."
-msgstr "Wybierz by pobrać dane OSM zaznaczonego obszaru."
+msgstr "Pobiera dane OSM ze wskazanego obszaru"
 
 msgid "Raw GPS data"
-msgstr "czyste dane GPS"
+msgstr "Surowe dane GPS"
 
 msgid "Select to download GPS traces in the selected download area."
-msgstr "Wybierz by pobrać ślady GPS z zaznaczonego obszaru."
+msgstr "Pobiera ślady GPS ze wskazanego obszaru"
 
 msgid "Select to download notes in the selected download area."
-msgstr "Zaznacz aby pobrać uwagi w zaznaczonego obszaru."
+msgstr "Pobiera uwagi ze wskazanego obszaru"
 
 msgid "Download as new layer"
-msgstr "Pobierz jako nową warstwę"
+msgstr "Pobranie do nowej warstwy"
 
 msgid ""
 "<html>Select to download data into a new data layer.<br>Unselect to download "
 "into the currently active data layer.</html>"
 msgstr ""
-"<html>Zaznacz aby pobrać do nowej warstwy danych.<br>Niezaznaczenie "
-"spowoduje pobranie danych do aktywnej warstwy danych.</html>"
+"<html>Pobiera do nowej warstwy danych.<br>Odznaczenie spowoduje pobranie "
+"danych do aktywnej warstwy danych.</html>"
 
 msgid "Open this dialog on startup"
-msgstr "Otwieraj to okno przy starcie"
+msgstr "Otwieranie tego okna po uruchomieniu programu"
 
 msgid ""
 "<html>Autostart ''Download from OSM'' dialog every time JOSM is "
 "started.<br>You can open it manually from File menu or toolbar.</html>"
 msgstr ""
-"<html>Uruchom automatycznie okno  ''Pobierz dane z OSM''  przy starcie "
-"JOSM.<br>Możesz otworzyć okno pobierania ręcznie z menu Plik, albo paska "
-"narzędziowego.</html>"
+"<html>Otwiera okno dialogowe „Pobierz dane z OSM” każdorazowo po "
+"uruchomieniu programu.<br>Można otworzyć okno pobierania ręcznie wybierając "
+"polecenie z menu Plik lub ikonę paska narzędziowego.</html>"
 
 msgid ""
 "Use left click&drag to select area, arrows or right mouse button to scroll "
@@ -8510,27 +8509,28 @@ msgid "No area selected yet"
 msgstr "Nie zaznaczono obszaru"
 
 msgid "Download area too large; will probably be rejected by server"
-msgstr ""
-"Pobierany obszar jest za duży, prawdopodobnie zostanie odrzucony przez serwer"
+msgstr "Za duży rozmiar obszaru, potencjalnie do odrzucenia przez serwer"
 
 msgid "Download area ok, size probably acceptable to server"
-msgstr ""
-"Pobierany obszar jest OK, prawdopodobnie zostanie zaakceptowany przez serwer"
+msgstr "Właściwy rozmiar obszaru, potencjalnie do przyjęcia przez serwer"
 
 msgid "Click to close the dialog and to abort downloading"
-msgstr "Kliknij aby zamknąć okno i anulować pobieranie"
+msgstr "Zamyka okno i anuluje pobieranie"
 
 msgid "Click to download the currently selected area"
-msgstr "Kliknij aby pobrać wybrany obszar"
+msgstr "Pobiera wskazany obszar"
 
 msgid "Please select a download area first."
-msgstr "Proszę najpierw zaznacz obszar."
+msgstr "Proszę najpierw zaznaczyć obszar."
 
 msgid ""
 "<html>Neither <strong>{0}</strong> nor <strong>{1}</strong> nor "
 "<strong>{2}</strong> is enabled.<br>Please choose to either download OSM "
 "data, or GPX data, or Notes, or all.</html>"
 msgstr ""
+"<html>Nie wybrano <strong>{0}</strong> ani <strong>{1}</strong> ani "
+"<strong>{2}</strong>.<br>Proszę wybrać któryś z zasobów lub wszystkie z "
+"nich.</html>"
 
 msgid "Download referrers (parent relations)"
 msgstr "Pobierz obiekty nadrzędne (relacje)"
@@ -8555,31 +8555,31 @@ msgid "Download referrers (parent relations and ways)"
 msgstr "Pobierz obiekty nadrzędne (np. relacje i linie)"
 
 msgid "Class Type"
-msgstr "Typ Klasy"
+msgstr "Typ klasy"
 
 msgid "Bounds"
 msgstr "Granice"
 
 msgid "Choose the server for searching:"
-msgstr "Wybierz serwer do wyszukiwania:"
+msgstr "Przeszukiwany serwer:"
 
 msgid "Enter a place name to search for:"
-msgstr "Wpisz nazwę miejsce do odnalezienia:"
+msgstr "Wyszukiwane miejsce:"
 
 msgid "Enter a place name to search for"
-msgstr "Wprowadź nazwę miejsca do odnalezienia"
+msgstr "Wprowadza nazwę miejsca do wyszukania"
 
 msgid "Areas around places"
-msgstr "Znajdź lokalizację"
+msgstr "Obszary i miejsca"
 
 msgid "Null pointer exception, possibly some missing tags."
-msgstr ""
+msgstr "Wyjątek pustego wskaźnika. Możliwe brakujące znaczniki."
 
 msgid "Search ..."
-msgstr "Szukaj ..."
+msgstr "Wyszukaj..."
 
 msgid "Click to start searching for places"
-msgstr "Kliknij aby rozpocząć szukanie"
+msgstr "Rozpoczyna wyszukiwanie miejsc"
 
 msgid "Querying name server"
 msgstr "Odpytywanie serwera nazw"
@@ -8588,10 +8588,10 @@ msgid "Querying name server ..."
 msgstr "Odpytywanie serwera nazw…"
 
 msgid "Error occured with query ''{0}'': ''{1}''"
-msgstr "W odpowiedzi na zapytanie ''{0}'' wystąpił błąd: ''{1}''"
+msgstr "Wystąpił błąd w zapytaniu „{0}”: „{1}”"
 
 msgid "Name server returned invalid data. Please try again."
-msgstr "Serwer nazw zwrócił nieprawidłowe dane. Spróbuj ponownie."
+msgstr "Serwer nazw zwrócił nieprawidłowe dane. Proszę spróbować ponownie."
 
 msgid "Bad response"
 msgstr "Nieprawidłowa odpowiedź"
@@ -8603,14 +8603,13 @@ msgid "Slippy map"
 msgstr "Mapa"
 
 msgid "Tile Numbers"
-msgstr "Numery kafelków mapy"
+msgstr "Numery kafelków"
 
 msgid "JOSM Help Browser"
 msgstr "Przeglądarka pomocy JOSM"
 
 msgid "Failed to read CSS file ''help-browser.css''. Exception is: {0}"
-msgstr ""
-"Próba wczytania pliku CSS ''help-browser.css'' nie powiodła się. Wyjątek: {0}"
+msgstr "Nie udało się wczytać pliku CSS „help-browser.css”. Wyjątek: {0}"
 
 msgid ""
 "<html><p class=\"warning-header\">Help content for help topic missing</p><p "
@@ -8638,7 +8637,7 @@ msgstr ""
 "połączenie z internetem</html>"
 
 msgid "Failed to open URL"
-msgstr "Nie można otworzyć adresu URL"
+msgstr "Nie udało się otworzyć adresu URL"
 
 msgid "Open the current help page in an external browser"
 msgstr "Otwiera tę stronę pomocy w zewnętrznej przeglądarce"
@@ -8652,7 +8651,7 @@ msgid ""
 msgstr ""
 
 msgid "Reload the current help page"
-msgstr "Odświerza stronę pomocy"
+msgstr "Wczytuje ponownie stronę pomocy"
 
 msgid "Go to the previous page"
 msgstr "Przechodzi do poprzedniej strony"
@@ -8772,8 +8771,7 @@ msgstr "<b>Zdjęcia</b>:"
 
 msgid ""
 "<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>"
-msgstr ""
-"<html>Wersja <strong>{0}</strong> edytowana na warstwie ''{1}''</html>"
+msgstr "<html>Wersja <strong>{0}</strong> edytowana na warstwie „{1}”</html>"
 
 msgid ""
 "<html>Version <strong>{0}</strong> created on <strong>{1}</strong></html>"
@@ -9042,8 +9040,8 @@ msgid ""
 "Authenticating at the host ''{0}'' failed. Please enter a valid username and "
 "a valid password."
 msgstr ""
-"Uwierzytelnienie z hostem \"{0}\" nieudane. Proszę wprowadzić prawidłową "
-"nazwę użytkownika i hasło."
+"Uwierzytelnienie z hostem „{0}” nieudane. Proszę wprowadzić prawidłową nazwę "
+"użytkownika i hasło."
 
 msgid "Please enter the user name for authenticating at your proxy server"
 msgstr ""
@@ -9056,7 +9054,7 @@ msgid ""
 "Authenticating at the HTTP proxy ''{0}'' failed. Please enter a valid "
 "username and a valid password."
 msgstr ""
-"Uwierzytelnienie z proxy HTTP \"{0}\" nie powiodło się. Proszę wprowadzić "
+"Uwierzytelnienie z proxy HTTP „{0}” nie powiodło się. Proszę wprowadzić "
 "prawidłową nazwę użytkownika i hasło."
 
 msgid ""
@@ -9073,7 +9071,7 @@ msgid "Authenticate with the supplied username and password"
 msgstr "Uwierzytelnij wprowadzoną nazwą użytkownika i hasłem."
 
 msgid "Cancel authentication"
-msgstr "Anuluj autentykację"
+msgstr "Anuluj uwierzytelnianie"
 
 msgid "Downloading file"
 msgstr "Pobieranie pliku"
@@ -9082,7 +9080,7 @@ msgid "Downloading File {0}: {1} bytes..."
 msgstr "Pobieranie pliku {0}: {1} bajtów..."
 
 msgid "Download finished"
-msgstr "Pobranie zakończone"
+msgstr "Zakończono pobieranie"
 
 msgid "Unpacking {0} into {1}"
 msgstr "Wypakowywanie {0} do {1}"
@@ -9100,8 +9098,8 @@ msgid ""
 "not entitled<br>to know the identity of the user on whose behalf you are "
 "working."
 msgstr ""
-"Brak możliwości ściągnięcia listy otwartych zestawów zmian ponieważ<br>JOSM "
-"nie zna twojej tożsamości.<br>\r\n"
+"Nie można pobrać listy otwartych zestawów zmian ponieważ<br>JOSM nie zna "
+"twojej tożsamości.<br>\r\n"
 "Albo pracujesz anonimowo albo nie masz prawa poznać tożsamości<br> "
 "użytkownika, w imieniu którego pracujesz."
 
@@ -9141,43 +9139,43 @@ msgstr "brakujące obiekty:"
 
 msgid "One downloaded object is deleted."
 msgid_plural "{0} downloaded objects are deleted."
-msgstr[0] "Pobrany obiekt został usunięty."
-msgstr[1] "{0} pobrane obiekty zostały usunięte."
-msgstr[2] "{0} pobranych obiektów zostało usuniętych."
+msgstr[0] "Usunięto pobrany obiekt."
+msgstr[1] "Usunięto {0} pobrane obiekty."
+msgstr[2] "Usunięto {0} pobranych obiektów."
 
 msgid ""
 "Either edit the path manually in the text field or click the \"...\" button "
 "to open a file chooser."
 msgstr ""
-"Edytuj ścieżkę ręcznie w polu tekstowym lub naciśnij przycisk \"...\" aby "
+"Edytuj ścieżkę ręcznie w polu tekstowym lub naciśnij przycisk „...” aby "
 "otworzyć okno wyboru plików."
 
 msgid "The bold text is the name of the layer."
-msgstr "Pogróbiony tekst to nazwa warstwy."
+msgstr "Pogrubiony tekst wskazuje nazwę warstwy."
 
 msgid "Click here to choose save path"
-msgstr "Kliknij tutaj aby wybrać ścieżkę do zapisu"
+msgstr "Proszę wybrać ścieżkę pliku"
 
 msgid "Layer ''{0}'' is not backed by a file"
-msgstr "Warstwa \"{0}\" nie posiada powiązanego pliku"
+msgstr "Warstwa „{0}” nie ma powiązanego pliku."
 
 msgid "File ''{0}'' is not writable. Please enter another file name."
-msgstr "Plik ''{0}'' nie jest zapisywalny. Proszę podać inną nazwę pliku."
+msgstr "Nie można zapisać pliku „{0}”. Proszę wprowadzić inną nazwę pliku."
 
 msgid "Click cell to change the file path."
-msgstr "Kliknij komórkę aby zmienić ścieżkę pliku."
+msgstr "Kliknięcie komórki umożliwia zmienienie ścieżki pliku."
 
 msgid "Launch a file chooser to select a file"
 msgstr "Pokaż okno wyboru plików by wskazać plik"
 
 msgid "Select filename"
-msgstr "Wybierz nazwę pliku"
+msgstr "Wybieranie pliku"
 
 msgid "Open Recent"
 msgstr "Ostatnio otwierane"
 
 msgid "List of recently opened files"
-msgstr "Lista ostatnio otwieranych plików"
+msgstr "Wyświetla listę ostatnio otwieranych plików"
 
 msgid "Clear"
 msgstr "Wyczyść"
@@ -9186,17 +9184,16 @@ msgid "Clear the list of recently opened files"
 msgstr "Czyści listę ostatnio otwartych plików"
 
 msgid "Saving layer to ''{0}'' ..."
-msgstr "Zapisuję warstwę do ''{0}'' ..."
+msgstr "Zapisywanie warstwy do „{0}” ..."
 
 msgid "Unsaved changes - Save/Upload before exiting?"
-msgstr ""
-"Istnieją niezapisane zmiany - zapisać/wysłać przed opuszczeniem programu?"
+msgstr "Zapisywanie lub wysyłanie zmian przed zakończeniem programu"
 
 msgid "Unsaved changes - Save/Upload before deleting?"
-msgstr "Istnieją niezapisane zmiany - zapisać/wysłać przed usunięciem?"
+msgstr "Zapisywanie lub wysyłanie zmian przed usunięciem"
 
 msgid "Uploading and saving modified layers ..."
-msgstr "Wysyłam i zapisuje zmodyfikowane warstwy..."
+msgstr "Wysyłanie i zapisywanie zmodyfikowanych warstw..."
 
 msgid ""
 "<html>{0} layer has unresolved conflicts.<br>Either resolve them first or "
@@ -9228,7 +9225,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Unsaved data and missing associated file"
-msgstr "Nie zapisane dane i brak skojarzonego pliku"
+msgstr "Niezapisane dane i brak skojarzonego pliku"
 
 msgid ""
 "<html>{0} layer needs saving but has an associated file<br>which cannot be "
@@ -9242,39 +9239,42 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "Unsaved data non-writable files"
-msgstr "Nie zapisane dane do plików bez uprawnień do zapisu"
+msgstr "Niezapisane dane do plików bez uprawnień zapisywania"
 
 msgid "Close this dialog and resume editing in JOSM"
-msgstr "Zamknij to okno i powróć do edycji w JOSM"
+msgstr "Zamyka to okno i kontynuuje edycję"
 
 msgid "Exit now!"
-msgstr "Zamknij teraz!"
+msgstr "Zakończ"
 
 msgid "Exit JOSM without saving. Unsaved changes are lost."
-msgstr "Zamknij JOSM bez zapisywania. Niezapisane dane zostaną utracone."
+msgstr ""
+"Kończy działanie programu bez zapisywania. Niezapisane dane zostaną utracone."
 
 msgid "Delete now!"
-msgstr "Usuń teraz"
+msgstr "Usuń"
 
 msgid "Delete layers without saving. Unsaved changes are lost."
 msgstr "Usuwa warstwy bez zapisywania. Niezapisane zmiany zostaną utracone."
 
 msgid "Perform actions before exiting"
-msgstr "Wykonaj działania przed wyjściem"
+msgstr "Wykonaj czynności i zakończ"
 
 msgid "Exit JOSM with saving. Unsaved changes are uploaded and/or saved."
 msgstr ""
-"Zakończ JOSM z zapisem. Niezapisane zmiany zostaną wysłane i/lub zapisane."
+"Wykonuje wskazane czynności i kończy działanie programu. Niezapisane zmiany "
+"zostaną wysłane i/lub zapisane."
 
 msgid "Perform actions before deleting"
-msgstr "Wykonaj działania przed usunięciem"
+msgstr "Wykonaj czynności i usuń"
 
 msgid "Save/Upload layers before deleting. Unsaved changes are not lost."
 msgstr ""
-"Zapisuje/wysyła warstwy przed usunięciem. Niezapisane zmiany przepadają."
+"Wykonuje wskazane czynności i usuwa dane. Niezapisane zmiany zostaną "
+"utracone."
 
 msgid "Preparing layer ''{0}'' for upload ..."
-msgstr "Przygotowanie warstwy \"{0}\" do wysłania..."
+msgstr "Przygotowanie warstwy „{0}” do wysłania..."
 
 msgid ""
 "<html>An upload and/or save operation of one layer with modifications<br>was "
@@ -9283,52 +9283,52 @@ msgid_plural ""
 "<html>Upload and/or save operations of {0} layers with modifications<br>were "
 "canceled or have failed.</html>"
 msgstr[0] ""
-"<html>Operacja wysłania lub/i zapisu jednej warstwy z "
-"modyfikacjami<br>została anulowana lub nie udała się.</html>"
+"<html>Anulowano czynność lub nie udało się wysłać/zapisać {0} warstwy "
+"z<br>wprowadzonymi zmianami.</html>"
 msgstr[1] ""
-"<html>Operacja wysłania lub/i zapisu {0} warstw z modyfikacjami<br>została "
-"anulowana lub nie udała się.</html>"
+"<html>Anulowano czynność lub nie udało się wysłać/zapisać {0} warstw "
+"z<br>wprowadzonymi zmianami.</html>"
 msgstr[2] ""
-"<html>Operacja wysłania lub/i zapisu {0} warstw z modyfikacjami<br>została "
-"anulowana lub nie udała się.</html>"
+"<html>Anulowano czynność lub nie udało się wysłać/zapisać {0} warstw "
+"z<br>wprowadzonymi zmianami.</html>"
 
 msgid "Incomplete upload and/or save"
-msgstr "Niekompletna wysyłka lub/i zapis"
+msgstr "Niedokończone wysyłanie/zapisywanie"
 
 msgid "should be uploaded"
-msgstr "powinna zostać przesłana"
+msgstr "Wysłanie zmian"
 
 msgid "should be saved"
-msgstr "powinno być zapisane"
+msgstr "Zapisanie zmian"
 
 msgid ""
 "Layer ''{0}'' has modifications which should be uploaded to the server."
-msgstr "Warstwa \"{0}\" posiada zmiany które powinny być wysłane na serwer."
+msgstr "Warstwa „{0}” zawiera zmiany, które powinny zostać wysłane."
 
 msgid "Layer ''{0}'' has modifications which are discouraged to be uploaded."
-msgstr "Warstwa ''{0}'' zawiera zmiany które nie są zalecane do wysłania."
+msgstr "Warstwa „{0}” zawiera zmiany, które nie powinny zostać wysłane."
 
 msgid "Layer ''{0}'' has no modifications to be uploaded."
-msgstr "Warstwa \"{0}\" nie posiada zmiany które powinny być wysłane."
+msgstr "Warstwa „{0}” nie zawiera zmian do wysłania."
 
 msgid ""
 "Layer ''{0}'' has modifications which should be saved to its associated file "
 "''{1}''."
 msgstr ""
-"Warstwa \"{0}\" posiada zmiany które powinny być zapisane z powiązanym "
-"plikiem \"{1}\"."
+"Warstwa „{0}” zawiera zmiany, które powinny zostać zapisane do powiązanego "
+"pliku „{1}”."
 
 msgid "Layer ''{0}'' has no modifications to be saved."
-msgstr "Warstwa \"{0}\" nie posiada zmiany które powinny być zapisane."
+msgstr "Warstwa „{0}” nie zawiera zmian do zapisania."
 
 msgid "Layer Name and File Path"
-msgstr "Nazwa warstwy i ścieżka"
+msgstr "Nazwa warstwy i ścieżka pliku"
 
 msgid "Recommended Actions"
-msgstr "Zalecane działania"
+msgstr "Zalecane czynności"
 
 msgid "Actions To Take"
-msgstr "Działania do wykonania"
+msgstr "Czynności do wykonania"
 
 msgid "Update objects"
 msgstr "Aktualizacja obiektów"
@@ -9352,7 +9352,7 @@ msgid "Tags of new changeset"
 msgstr "Znaczniki nowego zestawu zmian"
 
 msgid "Apply tags to the changeset data is uploaded to"
-msgstr "Przypisz tagi do zestawu zmian"
+msgstr "Przypisz znaczniki do zestawu zmian"
 
 msgid "Manage open changesets and select a changeset to upload to"
 msgstr ""
@@ -9363,7 +9363,7 @@ msgid "Configure advanced settings"
 msgstr "Ustawienia zaawansowane"
 
 msgid "Upload to ''{0}''"
-msgstr "Wysyłanie do \"{0}\""
+msgstr "Wysyłanie do „{0}”"
 
 msgid "Upload Changes"
 msgstr "Wyślij zmiany"
@@ -9448,7 +9448,7 @@ msgid ""
 "Object ''{0}'' is already deleted on the server. Skipping this object and "
 "retrying to upload."
 msgstr ""
-"Obiekt ''{0}'' został już wcześniej usunięty na serwerze. Pomijanie tego "
+"Obiekt „{0}'' został już wcześniej usunięty na serwerze. Pomijanie tego "
 "obiektu i ponowienie próby wysyłania."
 
 msgid "Preparing objects to upload ..."
@@ -9462,7 +9462,7 @@ msgid ""
 "comment ''{1}''."
 msgstr ""
 "Obiekty są przesyłane do <strong>otwartego zestawu zmian</strong> {0} z "
-"komentarzem ''{1}''."
+"komentarzem „{1}”."
 
 msgid ""
 "The changeset is going to be <strong>closed</strong> after this upload"
@@ -9516,7 +9516,7 @@ msgid ""
 "proceed with <strong>multiple changesets</strong>"
 msgstr ""
 "{0} obiektów przekracza maksymalną dozwoloną ilość {1} obiektów w jednym "
-"zestawie zmian na serwerze ''{2}''. <a href=\"urn:advanced-"
+"zestawie zmian na serwerze „{2}''. <a href=\"urn:advanced-"
 "configuration\">Skonfiguruj</a> usługę <strong>wielu zestawów zmian</strong>"
 
 msgid ""
@@ -9527,7 +9527,7 @@ msgstr ""
 "zmian</strong> używając <strong>{1} zapytań</strong>"
 
 msgid "Uploading data for layer ''{0}''"
-msgstr "Przesyłanie danych z warstwy \"{0}\""
+msgstr "Przesyłanie danych z warstwy „{0}”"
 
 msgid "Continue uploading"
 msgstr "Kontynuowanie przesyłania"
@@ -9554,7 +9554,7 @@ msgid ""
 msgstr ""
 "Serwer informuje, że obecny zestaw zmian został zamknięty.<br>Nastąpiło to "
 "najprawdopodobniej z powodu przekroczenia maksymalnego rozmiaru<br>{0} "
-"obiektów na serwerze \"{1}\"."
+"obiektów na serwerze „{1}”."
 
 msgid "There is {0} object left to upload."
 msgid_plural "There are {0} objects left to upload."
@@ -9568,26 +9568,26 @@ msgid ""
 "dialog.<br>Click ''<strong>{2}</strong>'' to abort uploading and return to "
 "map editing.<br>"
 msgstr ""
-"Kliknij ''<strong>{0}</strong>'' aby kontynuować przesyłanie do dodatkowych "
-"zestawów zmian.<br>Kliknij ''<strong>{1}</strong>'' aby powrócić do okna "
-"przesyłania.<br>Kliknij ''<strong>{2}</strong>'' aby przerwać przesyłanie i "
+"Kliknij „<strong>{0}</strong>'' aby kontynuować przesyłanie do dodatkowych "
+"zestawów zmian.<br>Kliknij „<strong>{1}</strong>'' aby powrócić do okna "
+"przesyłania.<br>Kliknij „<strong>{2}</strong>'' aby przerwać przesyłanie i "
 "powrócić do edytowania mapy.<br>"
 
 msgid "Changeset is full"
 msgstr "Zestaw zmian jest pełny"
 
 msgid "Node ''{0}'' is already deleted. Skipping object in upload."
-msgstr "Węzeł \"{0}\" jest obecnie usunięty. Pomijanie obiektu."
+msgstr "Węzeł „{0}” jest obecnie usunięty. Pomijanie obiektu."
 
 msgid "Way ''{0}'' is already deleted. Skipping object in upload."
-msgstr "Linia \"{0}\" jest już usunięta. Pominięto obiekt."
+msgstr "Linia „{0}” jest już usunięta. Pominięto obiekt."
 
 msgid "Relation ''{0}'' is already deleted. Skipping object in upload."
-msgstr "Relacja ''{0}''została już usunięta. Pomijanie wysyłania obiektu."
+msgstr "Relacja „{0}''została już usunięta. Pomijanie wysyłania obiektu."
 
 msgid "Object ''{0}'' is already deleted. Skipping object in upload."
 msgstr ""
-"Obiekt ''{0}'' jest już skasowany i będzie pominięty przy wysyłaniu zmian."
+"Obiekt „{0}'' jest już skasowany i będzie pominięty przy wysyłaniu zmian."
 
 msgid "Uploading {0} object..."
 msgid_plural "Uploading {0} objects..."
@@ -9625,8 +9625,7 @@ msgid "Cancel uploading"
 msgstr "Anuluj przesyłanie"
 
 msgid "Unexpected value for key ''{0}'' in preferences, got ''{1}''"
-msgstr ""
-"Nieoczekiwana wartość klucza ''{0}'' w preferencjach, otrzymano ''{1}''"
+msgstr "Nieoczekiwana wartość klucza „{0}'' w preferencjach, otrzymano „{1}”"
 
 msgid "Fill up one changeset and return to the Upload Dialog"
 msgstr "Wypełnij jeden zestaw zmian i powróć do dialogu wysyłki."
@@ -9663,7 +9662,7 @@ msgid ""
 "size {1} on server ''{2}'' is exceeded.</html>"
 msgstr ""
 "<html>Nie można wysłać {0} obiektów w jednym zapytaniem "
-"ponieważ<br>maksymalny rozmiar zestawu zmian {1} na serwerze ''{2}'' został "
+"ponieważ<br>maksymalny rozmiar zestawu zmian {1} na serwerze „{2}'' został "
 "przekroczony.</html>"
 
 msgid "(1 request)"
@@ -9684,13 +9683,13 @@ msgstr "Błędny rozmiar paczki. Podaj liczbę całkowitą większą od 1"
 msgid "Chunk size {0} exceeds max. changeset size {1} for server ''{2}''"
 msgstr ""
 "Rozmiar paczki {0} przekracza maksymalny rozmiar zestawu ({1}) zmian na "
-"serwerze ''{2}''"
+"serwerze „{2}''"
 
 msgid "Please enter an integer > 1"
 msgstr "Podaj liczbę całkowitą większą od 1"
 
 msgid "Value ''{0}'' is not a number. Please enter an integer > 1"
-msgstr "Wartość \"{0}\" nie jest liczbą. Podaj liczbę całkowitą większą od 1"
+msgstr "Wartość „{0}” nie jest liczbą. Podaj liczbę całkowitą większą od 1"
 
 msgid "Objects to add:"
 msgstr "Obiekty do dodania:"
@@ -9729,22 +9728,22 @@ msgid "Metadata "
 msgstr "Metadane "
 
 msgid "Load tile"
-msgstr "Wczytywanie kafelka"
+msgstr "Wczytaj kafelek"
 
 msgid "Auto zoom"
-msgstr ""
+msgstr "Automatyczne przybliżanie"
 
 msgid "Auto load tiles"
 msgstr "Automatyczne wczytywanie kafelków"
 
 msgid "Show errors"
-msgstr "Pokaż błędy"
+msgstr "Błędy"
 
 msgid "Load all tiles"
-msgstr "Załaduj wszystkie kafelki"
+msgstr "Wczytaj wszystkie kafelki"
 
 msgid "Load all error tiles"
-msgstr "Załaduj wszystkie błędne kafelki"
+msgstr "Wczytaj błędne kafelki"
 
 msgid "Zoom to native resolution"
 msgstr "Przybliż do natywnej rozdzielczości"
@@ -9753,7 +9752,7 @@ msgid "Change resolution"
 msgstr "Zmień rozdzielczość"
 
 msgid "Increase zoom"
-msgstr "Powiększ"
+msgstr "Przybliż"
 
 msgid "Decrease zoom"
 msgstr "Oddal"
@@ -9792,7 +9791,7 @@ msgid "Estimated cache size: {0}"
 msgstr "Szacowany rozmiar pamięci podręcznej: {0}"
 
 msgid "Cache stats: {0}"
-msgstr "Statystyki bufora: {0}"
+msgstr "Statystyki pamięci podręcznej: {0}"
 
 msgid "{0} ({1}), automatically downloading in zoom {2}"
 msgstr ""
@@ -9810,6 +9809,8 @@ msgid ""
 "Aerial imagery \"{0}\" might be misaligned. Please check its offset using "
 "GPS tracks!"
 msgstr ""
+"Podkład „{0}” może być nieprawidłowo wyrównany. Proszę sprawdzić jego "
+"przesunięcie za pomocą śladów GPS!"
 
 msgid "http://wiki.openstreetmap.org/wiki/Using_Imagery"
 msgstr "http://wiki.openstreetmap.org/wiki/Using_Imagery"
@@ -9818,10 +9819,10 @@ msgid "Details..."
 msgstr "Szczegóły..."
 
 msgid "Do not show this message again"
-msgstr ""
+msgstr "Pomijanie wyświetlania tej informacji"
 
 msgid "Hide this message and never show it again"
-msgstr "Ukryj wiadomość i nie pokazuj ponownie"
+msgstr "Ukrywa tę informację i nie wyświetla jej ponownie"
 
 msgid "Customize Color"
 msgstr "Dostosuj kolor"
@@ -9840,9 +9841,9 @@ msgstr "Opis: {0}"
 
 msgid "{0} track"
 msgid_plural "{0} tracks"
-msgstr[0] "{0} ścieżka"
-msgstr[1] "{0} ścieżki"
-msgstr[2] "{0} ścieżki"
+msgstr[0] "{0} ślad"
+msgstr[1] "{0} ślady"
+msgstr[2] "{0} śladów"
 
 msgid "Description"
 msgstr "Opis"
@@ -9875,53 +9876,51 @@ msgstr[1] "{0} ślady, "
 msgstr[2] "{0} śladów, "
 
 msgid "Save GPX file"
-msgstr "Zapisz plik GPX"
+msgstr "Zapisywanie pliku GPX"
 
 msgid "Imagery fade"
 msgstr "Przezroczystość podkładu"
 
 msgid "Unsupported imagery type: {0}"
-msgstr ""
+msgstr "Nieobsługiwany rodzaj podkładu: {0}"
 
 msgid "Next marker"
 msgstr "Następny znacznik"
 
 msgid "Jump to next marker"
-msgstr "Przeskocz do następnego znacznika"
+msgstr "Przechodzi do następnego znacznika"
 
 msgid "Previous marker"
 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 ""
+msgstr "Przechodzi do poprzedniego znacznika"
 
 msgid "All projections are supported"
 msgstr "Wszystkie odwzorowania są obsługiwane"
 
 msgid "The layer {0} does not support the new projection {1}."
-msgstr "Warstwa {0} nie wspiera nowego odwzorowania {1}."
+msgstr "Warstwa {0} nie obsługuje nowego odwzorowania {1}."
 
 msgid "Supported projections are: {0}"
-msgstr "Wspierane odwzorowania to: {0}"
+msgstr "Obsługiwane odwzorowania: {0}"
 
 msgid "Change the projection again or remove the layer."
-msgstr "Zmień odwzorowanie lub usuń warstwę."
+msgstr "Proszę ponownie zmienić odwzorowanie lub usunąć warstwę."
 
 msgid "Save Layer"
 msgstr "Zapisz warstwę"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Warstwa uwag"
 
 msgid "Total notes:"
-msgstr "Wszystkich uwag:"
+msgstr "Łączna liczba uwag:"
 
 msgid "Changes need uploading?"
 msgstr "Zmiany wymagają wysłania?"
@@ -9991,7 +9990,7 @@ msgstr ""
 "odrzucone. Czy kontunuować?"
 
 msgid "Save OSM file"
-msgstr "Zapisz plik OSM"
+msgstr "Zapisywanie pliku OSM"
 
 msgid "EPSG:4326 and Mercator projection are supported"
 msgstr "Odwzorowania EPSG:4326 i Mercator są obsługiwane"
@@ -10034,13 +10033,13 @@ msgid "GPX Files (*.gpx *.gpx.gz)"
 msgstr "Pliki GPX (*.gpx *.gpx.gz)"
 
 msgid "File {0} is loaded yet under the name \"{1}\""
-msgstr "Plik {0} jest załadowany pod nazwą \"{1}\""
+msgstr "Plik {0} jest wczytany pod nazwą „{1}”"
 
 msgid "Error while parsing {0}"
 msgstr "Błąd podczas przetwarzania {0}"
 
 msgid "Could not read \"{0}\""
-msgstr "Nie można odczytać \"{0}\""
+msgstr "Nie można odczytać „{0}”"
 
 msgid ""
 "<html>Take a photo of your GPS receiver while it displays the "
@@ -10273,7 +10272,7 @@ msgid "Previous"
 msgstr "Poprzedni"
 
 msgid "Show previous Image"
-msgstr "Pokaż poprzednie zdjęcie"
+msgstr "Wyświetl poprzedni obraz"
 
 msgid "Geoimage: {0}"
 msgstr ""
@@ -10291,13 +10290,13 @@ msgid "Next"
 msgstr "Następny"
 
 msgid "Show next Image"
-msgstr "Pokaż następne zdjęcie"
+msgstr "Wyświetl następny obraz"
 
 msgid "Show first Image"
-msgstr "Pokaż pierwszy obrazek"
+msgstr "Wyświetl pierwszy obraz"
 
 msgid "Show last Image"
-msgstr "Pokaż ostatni obrazek"
+msgstr "Wyświetl ostatni obraz"
 
 msgid "Center view"
 msgstr "Wyśrodkuj widok"
@@ -10306,7 +10305,7 @@ msgid "Zoom best fit and 1:1"
 msgstr ""
 
 msgid "Move dialog to the side pane"
-msgstr "Przenieś dialog do panelu bocznego"
+msgstr "Przenieś okno dialogowe do panelu bocznego"
 
 msgid ""
 "\n"
@@ -10350,10 +10349,10 @@ msgid "Show image thumbnails instead of icons."
 msgstr "Pokaż miniaturki zamiast ikon"
 
 msgid "Choose visible tracks"
-msgstr "Wybierz widoczne ścieżki"
+msgstr "Wybierz widoczne ślady"
 
 msgid "Select by date"
-msgstr "Wybierz po dacie"
+msgstr "Wybranie wg daty"
 
 msgid ""
 "<html>Select all tracks that you want to be displayed. You can drag select a "
@@ -10366,13 +10365,13 @@ msgstr ""
 "kliknięcie.</html>"
 
 msgid "Set track visibility for {0}"
-msgstr "Wybierz widzialność ścieżki {0}"
+msgstr "Wybieranie widoczności śladu {0}"
 
 msgid "Show all"
-msgstr "Pokaż wszystkie"
+msgstr "Wyświetl wszystkie"
 
 msgid "Show selected only"
-msgstr "Pokaż tylko wybrane"
+msgstr "Wyświetl tylko wybrane"
 
 msgid "Convert to data layer"
 msgstr "Przekształć w warstwę danych"
@@ -10385,7 +10384,7 @@ msgstr ""
 "szkodliwe.<br>Jeśli chcesz wysłać ślady, zobacz tutaj:</html>"
 
 msgid "Customize track drawing"
-msgstr "Dostosuj rysowanie ścieżki"
+msgstr "Dostosuj rysowanie śladu"
 
 msgid "From"
 msgstr "Z"
@@ -10403,40 +10402,40 @@ msgid "Select to download GPS traces."
 msgstr "Zaznacz by pobrać trasy GPS."
 
 msgid "Download everything within:"
-msgstr "Pobierz wszystko pomiędzy:"
+msgstr "Pobranie wszystiego pomiędzy:"
 
 msgid "meters"
-msgstr "metry"
+msgstr "metrów"
 
 msgid "Maximum area per request:"
-msgstr "Maksymalny obszar na zapytanie:"
+msgstr "Maksymalny obszar zapytania:"
 
 msgid "Download near:"
-msgstr "Pobierz w pobliżu:"
+msgstr "Pobranie w pobliżu:"
 
 msgid "track only"
-msgstr "tylko ścieżki"
+msgstr "tylko śladu"
 
 msgid "waypoints only"
-msgstr "tylko punkty"
+msgstr "tylko punktów śladu"
 
 msgid "track and waypoints"
-msgstr "ścieżka i punkty"
+msgstr "śladu i punktów śladu"
 
 msgid "Click to download"
-msgstr "Kliknij by pobrać"
+msgstr "Pobiera dane"
 
 msgid "Click to cancel"
-msgstr "Kliknij by anulować"
+msgstr "Przerywa pobieranie"
 
 msgid "Download from OSM along this track"
-msgstr "Pobierz dane OSM wzdłuż tej ścieżki"
+msgstr "Pobierz dane OSM wzdłuż śladu"
 
 msgid "Calculating Download Area"
-msgstr "Przeliczam pobierany obszar"
+msgstr "Obliczanie pobieranego obszaru"
 
 msgid "Precache imagery tiles along this track"
-msgstr "Wczytaj do pamięci podręcznej podkład mapy wzdłuż tej trasy"
+msgstr "Zbuforuj kafelki podkładu wzdłuż śladu"
 
 msgid "Precaching WMS"
 msgstr "Wstępne buforowanie WMS"
@@ -10476,7 +10475,7 @@ msgid ""
 "server.<br>Because its way points do not include a timestamp we cannot "
 "correlate them with audio data.</html>"
 msgstr ""
-"<html>Dane z warstwy GPX ''{0}'' zostały pobrane z serwera.<br>Z tego powodu "
+"<html>Dane z warstwy GPX „{0}'' zostały pobrane z serwera.<br>Z tego powodu "
 "punkty linii nie zawierają znaczników czasu i niemożliwe jest zestawienie z "
 "nimi dźwięku.</html>"
 
@@ -10509,14 +10508,14 @@ msgstr ""
 "czas, zostały pominięte."
 
 msgid "Import images"
-msgstr "Importuj obrazki"
+msgstr "Zaimportuj obrazy"
 
 msgid ""
 "<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>"
 msgstr ""
-"<html>Dane z warstwy GPX ''{0}'' zostały pobrane z serwera.<br>Z tego powodu "
+"<html>Dane z warstwy GPX „{0}'' zostały pobrane z serwera.<br>Z tego powodu "
 "punkty linii nie zawierają znaczników czasu i niemożliwe jest zestawienie z "
 "nimi obrazków.</html>"
 
@@ -10603,7 +10602,7 @@ msgid ""
 msgstr ""
 
 msgid "loading style ''{0}''..."
-msgstr "wczytywanie stylu ''{0}''..."
+msgstr "wczytywanie stylu „{0}”..."
 
 msgid ""
 "There was an error when loading this style. Select ''Info'' from the right "
@@ -10612,20 +10611,20 @@ msgid_plural ""
 "There were {0} errors when loading this style. Select ''Info'' from the "
 "right click menu for details."
 msgstr[0] ""
-"Wystąpił błąd podczas ładowania stylu. Wybierz ''Info'' z menu kontekstowego "
-"by poznać szczegóły."
+"Wystąpił błąd podczas wczytywania stylu. Proszę wybrać „Info” z menu "
+"kontekstowego, aby wyświetlić szczegóły."
 msgstr[1] ""
-"Wystąpił {0} błędy podczas ładowania stylu. Wybierz ''Info'' z menu "
-"kontekstowego by poznać szczegóły."
+"Wystąpiły {0} błędy podczas wczytywania stylu. Proszę wybrać „Info” z menu "
+"kontekstowego, aby wyświetlić szczegóły."
 msgstr[2] ""
-"Wystąpił {0} błędów podczas ładowania stylu. Wybierz ''Info'' z menu "
-"kontekstowego by poznać szczegóły."
+"Wystąpiło {0} błędów podczas wczytywania stylu. Proszę wybrać „Info” z menu "
+"kontekstowego, aby wyświetlić szczegóły."
 
 msgid "Failed to parse Mappaint styles from ''{0}''. Error was: {1}"
 msgstr ""
 
 msgid "Failed to locate image ''{0}''"
-msgstr "Nie udało się zlokalizować obraz ''{0}''"
+msgstr "Nie udało się zlokalizować obraz „{0}''"
 
 msgid "Save Access Token in preferences"
 msgstr "Zapisz klucz dostępu w ustawieniach"
@@ -10830,7 +10829,7 @@ msgid ""
 "the OSM server ''{0}''.</body></html>"
 msgstr ""
 "<html><body>Proszę wprowadzić Klucz Dostępu OAuth, który ma prawo dostępu do "
-"serwera OSM ''{0}''.</body></html>"
+"serwera OSM „{0}”.</body></html>"
 
 msgid "Please enter an Access Token Key"
 msgstr "Wprowadź Token dostępu"
@@ -10855,7 +10854,7 @@ msgid ""
 "your behalf (<a href=\"{0}\">more info...</a>)."
 msgstr ""
 "Dzięki OAuth możesz nadać JOSM prawa wysyłania danych map i ścieżek GPS w "
-"twoim imieniu (<a href=\"{0}\">więćej informacji...</a>)."
+"twoim imieniu (<a href=„{0}”>więćej informacji...</a>)."
 
 msgid "Please select an authorization procedure: "
 msgstr "Proszę wybrać procedurę uwierzytelniania: "
@@ -10867,7 +10866,7 @@ msgid ""
 msgstr ""
 
 msgid "Get an Access Token for ''{0}''"
-msgstr "Pobierz klucz dostępu do ''{0}''"
+msgstr "Pobierz klucz dostępu do „{0}''"
 
 msgid "Close the dialog and cancel authorization"
 msgstr "Zamknij okno i anuluj uwierzytelnianie"
@@ -10879,38 +10878,37 @@ msgid "Failed to cancel running OAuth operation"
 msgstr "Nie udało się anulować wykonywanej operacji OAuth"
 
 msgid "Retrieving OAuth Request Token from ''{0}''"
-msgstr "Pobieranie Żetonu Żądania OAuth z ''{0}''"
+msgstr "Pobieranie Żetonu Żądania OAuth z „{0}''"
 
 msgid "Retrieving OAuth Access Token from ''{0}''"
-msgstr "Pobieranie Klucza Dostępu OAuth z ''{0}''"
+msgstr "Pobieranie Klucza Dostępu OAuth z „{0}''"
 
 msgid "OSM website did not return a session cookie in response to ''{0}'',"
-msgstr ""
-"Witryna OSM nie zwróciła sesyjnego ciasteczka w odpowiedzi na ''{0}''"
+msgstr "Witryna OSM nie zwróciła sesyjnego ciasteczka w odpowiedzi na „{0}''"
 
 msgid ""
 "Failed to authenticate user ''{0}'' with password ''***'' as OAuth user"
 msgstr ""
-"Nie powiodło się uwierzytelnienie użytkownika ''{0}'' z hasłem ''***'' jako "
+"Nie powiodło się uwierzytelnienie użytkownika „{0}'' z hasłem „***'' jako "
 "użytkownika OAuth."
 
 msgid "Failed to authorize OAuth request  ''{0}''"
-msgstr "Nie udało się uwierzytelnić żądania OAuth ''{0}''"
+msgstr "Nie udało się uwierzytelnić żądania OAuth „{0}''"
 
 msgid "Authorizing OAuth Request token ''{0}'' at the OSM website ..."
-msgstr "Uwierzytelniam Żeton Żądania OAuth ''{0}'' na witrynie OSM..."
+msgstr "Uwierzytelniam Żeton Żądania OAuth „{0}'' na witrynie OSM..."
 
 msgid "Initializing a session at the OSM website..."
 msgstr "Inicjowanie sesji na witrynie OSM..."
 
 msgid "Authenticating the session for user ''{0}''..."
-msgstr "Uwierzytelniam sesję użytkownika ''{0}''"
+msgstr "Uwierzytelniam sesję użytkownika „{0}''"
 
 msgid "Authorizing request token ''{0}''..."
-msgstr "Uwierzytelniam żeton żądania ''{0}''..."
+msgstr "Uwierzytelniam żeton żądania „{0}”..."
 
 msgid "Logging out session ''{0}''..."
-msgstr "Wylogowuję sesję ''{0}''..."
+msgstr "Wylogowanie z sesji „{0}”..."
 
 msgid "Allow to upload map data"
 msgstr "Pozwól na wysyłanie map"
@@ -10957,8 +10955,7 @@ msgid "Retrieving OAuth Access Token..."
 msgstr "Pobieranie klucza dostępu OAuth"
 
 msgid "<html>Retrieving an OAuth Access Token from ''{0}'' failed.</html>"
-msgstr ""
-"<html>Pobieranie klucza dostępu OAuth z ''{0}'' nie udało się.</html>"
+msgstr "<html>Pobieranie klucza dostępu OAuth z „{0}'' nie udało się.</html>"
 
 msgid "Request Failed"
 msgstr "Zapytanie nie udało się"
@@ -10967,8 +10964,7 @@ msgid "Retrieving OAuth Request Token..."
 msgstr "Pobieranie żetonu żądania OAuth..."
 
 msgid "<html>Retrieving an OAuth Request Token from ''{0}'' failed.</html>"
-msgstr ""
-"<html>Pobieranie Żetonu Żądania OAuth z ''{0}'' nie udało się.</html>"
+msgstr "<html>Pobieranie Żetonu Żądania OAuth z „{0}'' nie udało się.</html>"
 
 msgid "Display Advanced OAuth Parameters"
 msgstr "Wyświetl zaawansowane parametry OAuth"
@@ -10981,7 +10977,7 @@ msgid ""
 "Token from ''{1}''.</html>"
 msgstr ""
 "<html>Proszę kliknąć na <strong>{0}</strong> aby pobrać Żeton Żądania OAuth "
-"z ''{1}''.</html>"
+"z „{1}”.</html>"
 
 msgid "<html>Step 1/3: Retrieve an OAuth Request Token</html>"
 msgstr "<html>Krok 1/3: Pobranie Żetonu Żądania z OAuth</html>"
@@ -11038,12 +11034,12 @@ msgstr "Sprawdzanie tokenu dostępowego OAuth"
 
 msgid "Retrieving user details with Access Token Key ''{0}'' was rejected."
 msgstr ""
-"Pobieranie danych użytkownika przy użyciu tokenu dostępowego OAuth \"{0}\" "
+"Pobieranie danych użytkownika przy użyciu tokenu dostępowego OAuth „{0}” "
 "zostało odrzucone przez serwer."
 
 msgid "Retrieving user details with Access Token Key ''{0}'' was forbidden."
 msgstr ""
-"Pobieranie danych użytkownika przy użyciu tokenu dostępowego OAuth \"{0}\" "
+"Pobieranie danych użytkownika przy użyciu tokenu dostępowego OAuth „{0}” "
 "zostało zabronione przez serwer."
 
 msgid ""
@@ -11163,7 +11159,7 @@ msgid "Edit source entry:"
 msgstr "Edycja wpisu źródła (source):"
 
 msgid "Entry ''{0}'' requires JOSM Version {1}. (Currently running: {2})"
-msgstr "Wpis \"{0}\" wymaga JOSM w wersji {1}. (Uruchomiona: {2})"
+msgstr "Wpis „{0}” wymaga JOSM w wersji {1}. (Uruchomiona: {2})"
 
 msgid "Continue anyway"
 msgstr "Kontynuuj mimo to"
@@ -11299,7 +11295,7 @@ msgid "Open JOSM customization file"
 msgstr "Otwórz plik dostosowywania JOSM"
 
 msgid "Import log"
-msgstr "Importuj log"
+msgstr "Importuj dziennik"
 
 msgid ""
 "<html>Here is file import summary. <br/>You can reject preferences changes "
@@ -11320,17 +11316,16 @@ msgid "imagery"
 msgstr "podkład"
 
 msgid "Reset preferences"
-msgstr "Przywróc ustawienia"
+msgstr "Przywróć ustawienia"
 
 msgid ""
 "You are about to clear all preferences to their default values<br />All your "
 "settings will be deleted: plugins, imagery, filters, toolbar buttons, "
 "keyboard, etc. <br />Are you sure you want to continue?"
 msgstr ""
-"Zamierzasz właśnie przywrócić ustawienia domyślnie.<br/>Wszystkie Twoje "
-"dotychczasowe ustawienia zostaną usunięte: wtyczki,  podkłady mapy, filtry, "
-"przyciski, paski narzędziowe, skróty klawiatury itp.<br/>Czy na pewno chcesz "
-"kontynuować ?"
+"Zostaną przywrócone ustawienia domyślne.<br/>Wszystkie spersonalizowane "
+"ustawienia zostaną usunięte: wtyczki, podkłady mapy, filtry, przyciski, "
+"paski narzędziowe, skróty klawiatury itp.<br/>Kontynuować?"
 
 msgid "Load profile"
 msgstr "Wczytaj profil"
@@ -11390,7 +11385,7 @@ msgid "Current value is default."
 msgstr "Obecna wartość jest domyślna"
 
 msgid "Default value is ''{0}''."
-msgstr "Domyśłna wartość to ''{0}''."
+msgstr "Domyślna wartość to „{0}”."
 
 msgid "Default value currently unknown (setting has not been used yet)."
 msgstr "Domyślna wartość obecnie nie znana (funkcja jeszcze nie używana)."
@@ -11408,7 +11403,7 @@ msgid "Settings for the audio player and audio markers."
 msgstr "Ustawienia odtwarzacza oraz znaczników dźwięku."
 
 msgid "Display the Audio menu."
-msgstr "Wyświetlaj menu \"Dźwięk\""
+msgstr "Wyświetlaj menu „Dźwięk\""
 
 msgid "Label audio (and image and web) markers."
 msgstr ""
@@ -11510,33 +11505,33 @@ msgid "Colors"
 msgstr "Kolory"
 
 msgid "Display Settings"
-msgstr "Ustawienia wyświetlania"
+msgstr "Wyświetlanie"
 
 msgid ""
 "Various settings that influence the visual representation of the whole "
 "program."
-msgstr "Różnorodne ustawienia, które wpływają na wygląd programu."
+msgstr "Konfiguruje ustawienia, które wpływają na wygląd programu"
 
 msgid "Draw Direction Arrows"
-msgstr "Rysuj strzałki kierunkowe"
+msgstr "Strzałki kierunkowe"
 
 msgid "Only on the head of a way."
-msgstr "Tylko na początku linii."
+msgstr "Tylko na początku linii"
 
 msgid "Draw oneway arrows."
-msgstr "Rysuj strzałki dla ulic jednokierunkowych"
+msgstr "Strzałki ulic jednokierunkowych"
 
 msgid "Draw segment order numbers"
-msgstr "Rysuj numery segmentów."
+msgstr "Numery segmentów"
 
 msgid "Draw boundaries of downloaded data"
-msgstr "Rysuj granicę obszaru pobranych danych"
+msgstr "Granice obszaru pobranych danych"
 
 msgid "Draw virtual nodes in select mode"
-msgstr "Rysuj węzły wirtualne podczas pracy w trybie zaznaczania"
+msgstr "Wirtualne węzły w trybie zaznaczania"
 
 msgid "Draw inactive layers in other color"
-msgstr "Zaznaczaj nieaktywne warstwy innym kolorem"
+msgstr "Nieaktywne warstwy w innym kolorze"
 
 msgid "Display discardable keys"
 msgstr "Pokaż przestarzałe tagi"
@@ -11548,13 +11543,13 @@ msgid "Draw rubber-band helper line"
 msgstr "Pokazuj linię pomocniczą za kursorem"
 
 msgid "Smooth map graphics (antialiasing)"
-msgstr "Wygładzaj rysowaną mapę (antyaliasing)"
+msgstr "Wygładzanie grafiki mapy (antyaliasing)"
 
 msgid "Smooth map graphics in wireframe mode (antialiasing)"
-msgstr "Wygładzaj rysowaną mapę w widoku szkieletowym (antyaliasing)"
+msgstr "Wygładzanie grafiki mapy w widoku szkieletowym (antyaliasing)"
 
 msgid "Draw only outlines of areas"
-msgstr "Rysuj tylko kontury obszarów"
+msgstr "Rysowanie tylko konturów obszarów"
 
 msgid "GPS Points"
 msgstr "Punkty GPS"
@@ -11603,16 +11598,16 @@ msgid ""
 msgstr ""
 
 msgid "Options that affect drawing performance"
-msgstr "Ustawienia wpływające na wydajność rysowania"
+msgstr "Wydajność rysowania"
 
 msgid "Segment drawing options"
-msgstr "Opcje rysowania segmentu"
+msgstr "Rysowanie segmentu"
 
 msgid "Select and draw mode options"
-msgstr "Ustawienia trybu zaznacz i rysuj"
+msgstr "Tryby zaznaczania i rysowania"
 
 msgid "Other options"
-msgstr "Pozostałe opcje"
+msgstr "Pozostałe"
 
 msgid "OSM Data"
 msgstr "Dane OSM"
@@ -11653,7 +11648,7 @@ msgid "Force lines if no segments imported"
 msgstr "Wymuś linie jeśli nie zaimportowano segmentów"
 
 msgid "Draw large GPS points"
-msgstr "Rysuj duże punkty GPS"
+msgstr "Duże punkty GPS"
 
 msgid "Draw a circle from HDOP value"
 msgstr "Rysuj okręgi na podstawie wartości HDOP"
@@ -11686,7 +11681,7 @@ msgid "Foot"
 msgstr "Ruch pieszy"
 
 msgid "Create markers when reading GPX"
-msgstr "Twórz znaczniki przy czytaniu GPX"
+msgstr "Tworzenie znaczników podczas wczytywania GPX"
 
 msgid "Fast drawing (looks uglier)"
 msgstr "Szybsze rysowanie (wygląda gorzej)"
@@ -11705,13 +11700,13 @@ msgstr ""
 "otwierania warstwy GPX."
 
 msgid "Draw lines between raw GPS points"
-msgstr "Rysuj linie pomiędzy punktami GPS"
+msgstr "Rysowanie linii pomiędzy punktami GPS"
 
 msgid ""
 "Maximum length (in meters) to draw lines for local files. Set to ''-1'' to "
 "draw all lines."
 msgstr ""
-"Maksymalna długość (w metrach) rysowanych linii. Ustaw ''-1'' aby zawsze "
+"Maksymalna długość (w metrach) rysowanych linii. Ustaw „-1'' aby zawsze "
 "rysować linie."
 
 msgid "Maximum length for local files (meters)"
@@ -11720,7 +11715,7 @@ msgstr "Maksymalna długość dla plików lokalnych (w metrach)"
 msgid ""
 "Maximum length (in meters) to draw lines. Set to ''-1'' to draw all lines."
 msgstr ""
-"Maksymalna długość (w metrach) rysowanych linii. Ustaw ''-1'' aby zawsze "
+"Maksymalna długość (w metrach) rysowanych linii. Ustaw „-1'' aby zawsze "
 "rysować linie."
 
 msgid "Maximum length (meters)"
@@ -11807,39 +11802,37 @@ msgid "Audio waypoint labelling"
 msgstr "Etykietowanie punktów audio"
 
 msgid "Incorrect waypoint label pattern: {0}"
-msgstr "Niepoprawny wzór etykietowania punktów: {0}"
+msgstr "Nieprawidłowy wzór etykietowania punktów: {0}"
 
 msgid "Incorrect pattern"
-msgstr "Niepoprawny wzór"
+msgstr "Nieprawidłowy wzór"
 
 msgid "Incorrect audio waypoint label pattern: {0}"
-msgstr "Niepoprawny wzór etykietowania punktów audio: {0}"
+msgstr "Nieprawidłowy wzór etykietowania punktów audio: {0}"
 
 msgid "Show splash screen at startup"
-msgstr "Wyświetlaj ekran powitalny"
+msgstr "Ekran powitalny"
 
 msgid "Show object ID in selection lists"
-msgstr "Wyświetlaj ID obiektu na listach wyboru"
+msgstr "Identyfikatory obiektu na listach wyboru"
 
 msgid "Show localized name in selection lists"
-msgstr "Wyświetlaj zlokalizowane nazwy na listach"
+msgstr "Zlokalizowane nazwy na listach"
 
 msgid "Modeless working (Potlatch style)"
 msgstr "Praca bez wybierania trybu (jak w Potlatchu)"
 
 msgid "Dynamic buttons in side menus"
-msgstr "Ukrywaj przyciski w bocznym panelu"
+msgstr "Ukrywanie przycisków w bocznym panelu"
 
 msgid "Display ISO dates"
-msgstr "Wyświetlaj daty w formacie ISO"
+msgstr "Daty w formacie ISO"
 
 msgid "Use native file choosers (nicer, but do not support file filters)"
-msgstr ""
-"Używaj systemowego okna otwierania plików (przyjemniejszy, ale nie wspiera "
-"filtrowania plików)"
+msgstr "Systemowe okno wyboru plików (nie obsługuje filtrowania plików)"
 
 msgid "Reverse zoom with mouse wheel"
-msgstr "Odwrotne przybliżenie rolką myszy"
+msgstr "Odwrócenie przybliżania kółkiem myszy"
 
 msgid "Intermediate steps between native resolutions"
 msgstr "Etapy pośrednie między natywnymi rozdzielczościami"
@@ -11853,8 +11846,8 @@ msgstr "Nie wymaga zmieniania trybu (styl pracy jak w Potlatchu)"
 msgid ""
 "Display buttons in right side menus only when mouse is inside the element"
 msgstr ""
-"Wyświetlaj przyciski w narzędziach z prawej strony okna tylko gdy myszka "
-"jest wewnątrz danego narzędzia"
+"Wyświetla przyciski w panelu bocznym po umieszczeniu wskaźnika myszy w "
+"obszarze panelu"
 
 msgid "ISO 8601"
 msgstr "ISO 8601"
@@ -11863,15 +11856,15 @@ msgid ""
 "Format dates according to {0}. Today''s date will be displayed as {1} "
 "instead of {2}"
 msgstr ""
-"Format daty zgodny z {0}. Dzisiejsza data będzie wyświetlana jako {1} "
-"zamiast {2}"
+"Używa formatu daty zgodnego z {0}. Dzisiejsza data będzie wyświetlana jako "
+"{1} zamiast {2}."
 
 msgid ""
 "Use file choosers that behave more like native ones. They look nicer but do "
 "not support some features like file filters"
 msgstr ""
-"Używaj okna otwierania plików dostosowanego do systemu. Wygląda lepiej ale "
-"nie wspiera funkcji takich jak filtrowanie plików."
+"Używa okna wyboru pliku typowego dla środowiska graficznego. Wygląda lepiej "
+"ale nie obsługuje niektórych funkcji, takich jak filtrowanie plików."
 
 msgid "Check if you feel opposite direction more convenient"
 msgstr "Zaznacz jeśli uważasz że przeciwny kierunek jest bardziej wygodny"
@@ -11986,13 +11979,13 @@ msgid "2. Enter name for this layer"
 msgstr ""
 
 msgid "{0} cache, total cache size: {1} bytes"
-msgstr ""
+msgstr "Pamięć podręczna {0}, łączny rozmiar pamięci: {1} bajtów"
 
 msgid "Cache name"
-msgstr ""
+msgstr "Nazwa"
 
 msgid "Object Count"
-msgstr ""
+msgstr "Liczba obiektów"
 
 msgid "imagery fade"
 msgstr "przyciemnienia podkładu mapy"
@@ -12004,10 +11997,10 @@ msgid "Fade amount: "
 msgstr "Siła przyciemnienia: "
 
 msgid "Soft"
-msgstr "słabe"
+msgstr "Słabe"
 
 msgid "Strong"
-msgstr "mocne"
+msgstr "Silne"
 
 msgid "Sharpen (requires layer re-add): "
 msgstr "Wyostrzenie (wymaga ponownego dodania warstwy): "
@@ -12016,10 +12009,10 @@ msgid "Tile cache directory: "
 msgstr "Katalog buforowania kafelków: "
 
 msgid "Maximum size of disk cache (per imagery) in MB: "
-msgstr ""
+msgstr "Maksymalny rozmiar pamięci podręcznej podkładu (MB): "
 
 msgid "Tiles zoom offset:"
-msgstr ""
+msgstr "Przesunięcie przybliżenia kafelków:"
 
 msgid "Imagery Preferences"
 msgstr "Właściwości podkładów"
@@ -12043,7 +12036,7 @@ msgid "Offset bookmarks"
 msgstr "Zakładki przesunięcia"
 
 msgid "Cache contents"
-msgstr "Zawartość cache"
+msgstr "Pamięć podręczna"
 
 msgid "Imagery Background: Default"
 msgstr "Podkład: domyślny"
@@ -12094,16 +12087,16 @@ msgid "Northing"
 msgstr "Północ"
 
 msgid "Auto zoom by default: "
-msgstr "Domyślny automatyczny poziom przybliżenia: "
+msgstr "Domyślny stopień automatycznego przybliżenia: "
 
 msgid "Autoload tiles by default: "
-msgstr "Domyślne ładowanie kafelków: "
+msgstr "Domyślne wczytywanie kafelków: "
 
 msgid "Min. zoom level: "
-msgstr "Minimalny poziom przybliżenia: "
+msgstr "Minimalny stopień przybliżenia: "
 
 msgid "Max. zoom level: "
-msgstr "Maksymalny poziom przybliżenia: "
+msgstr "Maksymalny stopień przybliżenia: "
 
 msgid "Add to slippymap chooser: "
 msgstr ""
@@ -12112,17 +12105,17 @@ msgid "Maximum concurrent downloads: "
 msgstr "Maksymalna liczba jednoczesnych pobrań: "
 
 msgid "Maximum concurrent downloads per host: "
-msgstr "Maksymalna liczba jednoczesnych pobrań z jednego seerwera: "
+msgstr "Maksymalna liczba jednoczesnych pobrań z jednego serwera: "
 
 msgid ""
 "That layer does not support any of JOSM''s projections,\n"
 "so you can not use it. This message will not show again."
 msgstr ""
 "Ta warstwa nie obsługuje żadnych odwzorowań z JOSM,\n"
-"więc nie możesz jej użyć. Ta wiadomość nie będzie pokazana ponownie."
+"więc nie można jej użyć. Ta wiadomość nie zostanie wyświetlona ponownie."
 
 msgid "Simultaneous connections:"
-msgstr "Jednoczesne połączenia:"
+msgstr "Liczba jednoczesnych połączeń:"
 
 msgid "Tile size:"
 msgstr "Wielkość kafelka:"
@@ -12161,7 +12154,7 @@ msgid ""
 "the file name and saves it in the same folder.)</i>"
 msgstr ""
 "<i>(JOSM może zatrzymać kopie zapasowe przy zapisywaniu warstw danych. Do "
-"nazwy piku dodaje ''~'' i zapisuje w tym samym folderze.)</i>"
+"nazwy piku dodaje „~'' i zapisuje w tym samym folderze.)</i>"
 
 msgid "Notification at each save"
 msgstr "Powiadomienie przy każdym zapisie"
@@ -12200,22 +12193,22 @@ msgid "Add the selected available styles to the list of active styles"
 msgstr "Dodaje zaznaczone dostępne style do listy aktywnych stylów"
 
 msgid "Reloads the list of available styles from ''{0}''"
-msgstr "Odświerza listę dostępnych stylów z \"{0}\""
+msgstr "Wczytuje listę dostępnych stylów z „{0}”"
 
 msgid "Loading style sources from ''{0}''"
-msgstr "Wczytuję źródła stylu z ''{0}''"
+msgstr "Wczytywanie źródła stylu z „{0}''"
 
 msgid ""
 "<html>Failed to load the list of style sources "
 "from<br>''{0}''.<br><br>Details (untranslated):<br>{1}</html>"
 msgstr ""
 "<html>Nie udało się wczytać listy źródeł stylu z "
-"<br>''{0}''.<br><br>Szczegóły (nieprzetłumaczone):<br>{1}</html>"
+"<br>''{0}”.<br><br>Szczegóły (nieprzetłumaczone):<br>{1}</html>"
 
 msgid "Warning: illegal format of entry in style list ''{0}''. Got ''{1}''"
 msgstr ""
-"Ostrzeżenie: nieprawidłowy format pozycji w liście stylu ''{0}''. Otrzymano "
-"''{1}''"
+"Ostrzeżenie: nieprawidłowy format pozycji w liście stylu „{0}”. Otrzymano "
+"„{1}”"
 
 msgid "JOSM default (MapCSS)"
 msgstr "JOSM domyślny (MapCSS)"
@@ -12309,22 +12302,22 @@ msgid "Add the selected available presets to the list of active presets"
 msgstr "Dodaje zaznaczone dostępne szablony do listy aktywnych szablonów"
 
 msgid "Reloads the list of available presets from ''{0}''"
-msgstr "Ponownie wczytaj listę dostępnych szablonów z ''{0}''"
+msgstr "Ponownie wczytaj listę dostępnych szablonów z „{0}''"
 
 msgid "Loading preset sources from ''{0}''"
-msgstr "Ładuję źródła szablonu z ''{0}''"
+msgstr "Wczytywanie źródła szablonu z „{0}''"
 
 msgid ""
 "<html>Failed to load the list of preset sources "
 "from<br>''{0}''.<br><br>Details (untranslated):<br>{1}</html>"
 msgstr ""
-"<html>Nie udało się załadowanie listy źródeł szablonów "
-"z<br>''{0}''.<br><br>Szczegóły (nieprzetłumaczone):<br>{1}</html>"
+"<html>Nie udało się wczytać listy źródeł szablonów "
+"z<br>''{0}”.<br><br>Szczegóły (nieprzetłumaczone):<br>{1}</html>"
 
 msgid "Warning: illegal format of entry in preset list ''{0}''. Got ''{1}''"
 msgstr ""
-"Ostrzeżenie: nieprawidłowy format pozycji w liście szablonów ''{0}''. "
-"Otrzymano ''{1}''"
+"Ostrzeżenie: nieprawidłowy format pozycji w liście szablonów „{0}”. "
+"Otrzymano „{1}”"
 
 msgid "Internal Preset"
 msgstr "Wewętrzne szablony"
@@ -12361,40 +12354,36 @@ msgid ""
 "The following plugin has been downloaded <strong>successfully</strong>:"
 msgid_plural ""
 "The following {0} plugins have been downloaded <strong>successfully</strong>:"
-msgstr[0] ""
-"Następująca wtyczka została ściągnięta <strong>pomyślnie</strong>:"
-msgstr[1] ""
-"Następujące {0} wtyczki zostały ściągnięte <strong>pomyślnie</strong>:"
-msgstr[2] ""
-"Następujących {0} wtyczek zostało ściągnięte <strong>pomyślnie</strong>:"
+msgstr[0] "<strong>Pobrano</strong> następującą wtyczkę:"
+msgstr[1] "<strong>Pobrano</strong> „{0}” następujące wtyczki:"
+msgstr[2] "<strong>Pobrano</strong> „{0}” następujących wtyczek:"
 
 msgid "Downloading the following plugin has <strong>failed</strong>:"
 msgid_plural ""
 "Downloading the following {0} plugins has <strong>failed</strong>:"
-msgstr[0] ""
-"Pobieranie następującej wtyczki <strong>nie powiodło się</strong>:"
+msgstr[0] "<strong>Nie udało się pobrać</strong> następującej wtyczki:"
 msgstr[1] ""
-"Pobieranie następujących {0} wtyczek <strong>nie powiodło się</strong>:"
+"<strong>Nie udało się pobrać</strong> „{0}” następujących wtyczek:"
 msgstr[2] ""
-"Pobieranie następujących {0} wtyczek <strong>nie powiodło się</strong>:"
+"<strong>Nie udało się pobrać</strong> „{0}” następujących wtyczek:"
 
 msgid "<br>Error message(untranslated): {0}"
 msgstr "<br>Treść błędu (nieprzetłumaczone): {0}"
 
 msgid "Please restart JOSM to activate the downloaded plugins."
-msgstr "Uruchom ponownie JOSM aby aktywować pobrane wtyczki."
+msgstr "Proszę ponownie uruchomić program, aby uaktywnić pobrane wtyczki."
 
 msgid "Update plugins"
-msgstr "Aktualizuj wtyczki"
+msgstr "Uaktualnij wtyczki"
 
 msgid "Search:"
-msgstr "Szukaj:"
+msgstr "Wyszukiwanie:"
 
 msgid "Enter a search expression"
-msgstr "Wpisz szukane wyrażenie"
+msgstr "Wprowadza szukane wyrażenie"
 
 msgid "Plugin update policy"
-msgstr "Aktualizowanie wtyczek"
+msgstr "Uaktualnianie"
 
 msgid "Accept the new plugin sites and close the dialog"
 msgstr "Akceptuje nową listę wtyczek i zamyka okno"
@@ -12720,7 +12709,7 @@ msgid "Permitted actions:"
 msgstr "Dozwolone czynności:"
 
 msgid "Testing OSM API URL ''{0}''"
-msgstr "Testowanie adresu URL dla API OSM \"{0}\""
+msgstr "Testowanie adresu URL dla API OSM „{0}”"
 
 msgid ""
 "<html>''{0}'' is not a valid OSM API URL.<br>Please check the spelling and "
@@ -12923,7 +12912,7 @@ msgid ""
 msgstr ""
 "JOSM jest skonfigurowane tak, aby używać proxy z ustawień systemowych, "
 "jednakże JVM nie jest skonfigurowane aby je pobrać. Resetowanie ustawień do "
-"\"Bez serwera proxy\""
+"„Bez serwera proxy\""
 
 msgid "Connection Settings"
 msgstr "Ustawienia połączenia"
@@ -13056,16 +13045,16 @@ msgid "Checks for errors on relations"
 msgstr "Szuka błędów w relacjach"
 
 msgid "Unnecessary tags"
-msgstr "Zbędne tagi"
+msgstr "Zbędne znaczniki"
 
 msgid "Checks for unnecessary tags"
-msgstr "Sprawdzanie niepotrzebnych tagów"
+msgstr "Szuka niepotrzebnych znaczników"
 
 msgid "Wikipedia"
 msgstr "Wikipedia"
 
 msgid "Checks for wrong wikipedia tags"
-msgstr "Szuka błędnych tagów Wikipedii"
+msgstr "Szuka błędnych znaczników Wikipedii"
 
 msgid "Tag checker rules"
 msgstr "Reguły weryfikacji"
@@ -13121,16 +13110,16 @@ msgid "Delete the selection in the tag table"
 msgstr "Usuwa zaaznaczenie w tabeli tagów"
 
 msgid "Add a new tag"
-msgstr "Dodaje nowy tag"
+msgstr "Dodaje nowy znacznik"
 
 msgid "Paste tags from buffer"
-msgstr "Wklej tagi ze schowka"
+msgstr "Wklej znaczniki ze schowka"
 
 msgid "Use preset ''{0}'' of group ''{1}''"
-msgstr "Używa szablon \"{0}\" z grupy \"{1}\""
+msgstr "Używa szablon „{0}” z grupy „{1}”"
 
 msgid "Use preset ''{0}''"
-msgstr "Używa szablon \"{0}\""
+msgstr "Używa szablon „{0}”"
 
 msgid "Elements of type {0} are supported."
 msgstr "Elementy typu {0} nie są wspierane."
@@ -13195,7 +13184,7 @@ msgid "Preset sub element without parent"
 msgstr ""
 
 msgid "Error parsing {0}: "
-msgstr "Błąd podczas przetwarzania {0}: "
+msgstr "Błąd przetwarzania {0}: "
 
 msgid "Search preset"
 msgstr "Znajdź szablon"
@@ -13256,7 +13245,7 @@ msgid ""
 msgstr ""
 
 msgid "This corresponds to the key ''{0}''"
-msgstr "To odpowiada kluczowi \"{0}\""
+msgstr "To odpowiada kluczowi „{0}”"
 
 msgid "More information about this feature"
 msgstr "Więcej informacji na temat tego elementu"
@@ -13384,7 +13373,7 @@ msgid "Right click = copy to clipboard"
 msgstr "Prawy przycisk myszy = kopiuj do schowka"
 
 msgid "Missing mandatory attribute ''{0}''."
-msgstr "Brakuje wymaganego atrybutu ''{0}''."
+msgstr "Brakuje wymaganego atrybutu „{0}”."
 
 msgid ""
 "Illegal value for mandatory attribute ''{0}'' of type long. Got ''{1}''."
@@ -13406,8 +13395,8 @@ msgid ""
 "Illegal value for mandatory attribute ''{0}'' of type OsmPrimitiveType. Got "
 "''{1}''."
 msgstr ""
-"Niewłaściwa wartość wymaganego atrybutu ''{0}'' typu OsmPrimitiveType. Jest "
-"''{1}''."
+"Niewłaściwa wartość wymaganego atrybutu „{0}'' typu OsmPrimitiveType. Jest "
+"„{1}”."
 
 msgid ""
 "Way with external ID ''{0}'' includes missing node with external ID ''{1}''."
@@ -13425,8 +13414,8 @@ msgid ""
 "Relation with external id ''{0}'' refers to a missing primitive with "
 "external id ''{1}''."
 msgstr ""
-"Relacja z zewnętrznym ID ''{0}'' odnosi się do brakującego elementu z "
-"zewnętrznym ID ''{1}''."
+"Relacja z zewnętrznym ID „{0}'' odnosi się do brakującego elementu z "
+"zewnętrznym ID „{1}”."
 
 msgid "Deleted member {0} is used by relation {1}"
 msgstr "Usunięty członek {0} jest użyty w relacji {1}"
@@ -13451,6 +13440,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Nie udało się zmienić nazwy pliku {0} na {1}."
 
@@ -13527,7 +13519,7 @@ msgid ""
 "not use a proxy."
 msgstr ""
 "JVM nie jest skonfigurowany aby pobierać ustawienia proxy z ustawień "
-"systemowych. Parametr ''java.net.useSystemProxies'' nie został wprowadzony "
+"systemowych. Parametr „java.net.useSystemProxies'' nie został wprowadzony "
 "podczas uruchamiania. Proxy nie będzie użyte."
 
 msgid "Parsing response from server..."
@@ -13537,16 +13529,16 @@ msgid "Unexpected XML element with name ''{0}''"
 msgstr ""
 
 msgid "Could not export ''{0}''."
-msgstr "Nie można wyeksportować ''{0}''."
+msgstr "Nie można wyeksportować „{0}”."
 
 msgid "Could not import ''{0}''."
-msgstr "Nie można zaimportować \"{0}\"."
+msgstr "Nie można zaimportować „{0}”."
 
 msgid "Could not import files."
 msgstr "Nie można zaimportować plików."
 
 msgid "<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>"
-msgstr "<html>Nie można odczytać pliku ''{0}''.<br>Błąd w:<br>{1}</html>"
+msgstr "<html>Nie można odczytać pliku „{0}”.<br>Błąd w:<br>{1}</html>"
 
 msgid "<html>Could not read files.<br>Error is:<br>{0}</html>"
 msgstr "<html>Nie można odczytać plików.<br>Błąd w:<br>{0}</html>"
@@ -13558,7 +13550,7 @@ msgid "Projected GeoJSON Files"
 msgstr ""
 
 msgid "Layer ''{0}'' not supported"
-msgstr "Warstwa ''{0}'' nie jest wspierana"
+msgstr "Warstwa „{0}'' nie jest obsługiwana"
 
 msgid ""
 "Note: GPL is not compatible with the OSM license. Do not upload GPL licensed "
@@ -13592,7 +13584,7 @@ msgid "Keywords"
 msgstr "Słowa kluczowe"
 
 msgid "Export options"
-msgstr "Opcje eksportu"
+msgstr "Opcje eksportowania"
 
 msgid "Export and Save"
 msgstr "Eksportuj i zapisz"
@@ -13601,7 +13593,7 @@ msgid ""
 "Error while exporting {0}:\n"
 "{1}"
 msgstr ""
-"Błąd podczas eksportu {0}:\n"
+"Błąd podczas eksportowania {0}:\n"
 "{1}"
 
 msgid "Choose a predefined license"
@@ -13611,17 +13603,21 @@ msgid "GPX Files"
 msgstr "Pliki GPX"
 
 msgid "Parsing data for layer ''{0}'' failed"
-msgstr ""
+msgstr "Nie udało się przetworzyć danych warstwy „{0}”"
 
 msgid ""
 "Error occurred while parsing gpx data for layer ''{0}''. Only a part of the "
 "file will be available."
 msgstr ""
+"Wystąpił błąd podczas przetwarzania danych gpx warstwy „{0}”. Tylko część "
+"pliku będzie dostępna."
 
 msgid ""
 "Error occurred while parsing gpx file ''{0}''. Only a part of the file will "
 "be available."
 msgstr ""
+"Wystąpił błąd podczas przetwarzania pliku gpx „{0}”. Tylko część pliku "
+"będzie dostępna."
 
 msgid "Parse error: invalid document structure for GPX document."
 msgstr "Błąd parsowania: błędna struktura dokumentu gpx"
@@ -13663,19 +13659,19 @@ msgid "{0} not available (offline mode)"
 msgstr "{0} jest niedostępny (tryb offline)"
 
 msgid "Fetching a package of nodes from ''{0}''"
-msgstr "Ściąganie pakietu węzłów z \"{0}\""
+msgstr "Pobieranie pakietu węzłów z „{0}”"
 
 msgid "Fetching a package of ways from ''{0}''"
-msgstr "Ściąganie pakietu linii z \"{0}\""
+msgstr "Pobieranie pakietu linii z „{0}”"
 
 msgid "Fetching a package of relations from ''{0}''"
-msgstr "Ściąganie pakietu relacji z \"{0}\""
+msgstr "Pobieranie pakietu relacji z „{0}”"
 
 msgid "Downloading {0} object from ''{1}''"
 msgid_plural "Downloading {0} objects from ''{1}''"
-msgstr[0] "Wczytywanie {0} obiektu z ''{1}''"
-msgstr[1] "Wczytywanie {0} obiektów z ''{1}''"
-msgstr[2] "Wczytywanie {0} obiektów z ''{1}''"
+msgstr[0] "Wczytywanie {0} obiektu z „{1}”"
+msgstr[1] "Wczytywanie {0} obiektów z „{1}”"
+msgstr[2] "Wczytywanie {0} obiektów z „{1}”"
 
 msgid ""
 "Server replied with response code 404, retrying with an individual request "
@@ -13686,13 +13682,13 @@ msgid "Downloading OSM data..."
 msgstr "Pobieranie danych OSM..."
 
 msgid "Fetching node with id {0} from ''{1}''"
-msgstr "Ściąganie węzła o id {0} z \"{1}\""
+msgstr "Pobieranie węzła o id {0} z „{1}”"
 
 msgid "Fetching way with id {0} from ''{1}''"
-msgstr "Ściąganie linii o id {0} z \"{1}\""
+msgstr "Pobieranie linii o identyfikatorze {0} z „{1}”"
 
 msgid "Fetching relation with id {0} from ''{1}''"
-msgstr "Ściąganie relacji o id {0} z \"{1}\""
+msgstr "Pobieranie relacji o identyfikatorze {0} z „{1}”"
 
 msgid "Server replied with response code 404 for id {0}. Skipping."
 msgstr "Serwer odpowiedział kodem 404 dla id {0}. Pomijam."
@@ -13701,7 +13697,7 @@ msgid "NMEA-0183 Files"
 msgstr "Pliki NMEA-0183"
 
 msgid "Coordinates imported: {0}"
-msgstr "Współrzędne zaimportowane: {0}"
+msgstr "Zaimportowane współrzędne: {0}"
 
 msgid "Malformed sentences: {0}"
 msgstr ""
@@ -13725,7 +13721,7 @@ msgid "Note Files"
 msgstr "Pliki uwag"
 
 msgid "OSM API"
-msgstr "OSM API"
+msgstr "API OSM"
 
 msgid "JOSM website"
 msgstr "Strona internetowa JOSM"
@@ -13734,7 +13730,7 @@ msgid "Unable to access ''{0}'': {1} not available (offline mode)"
 msgstr ""
 
 msgid "Unable to initialize OSM API."
-msgstr "Nie można zainicjować OSM API."
+msgstr "Nie można zainicjować API OSM."
 
 msgid "This version of JOSM is incompatible with the configured server."
 msgstr "Ta wersja JOSM jest niekompatybilna z konfiguracją serwera."
@@ -13748,13 +13744,12 @@ msgid "Removed layer {0} because it is not allowed by the configured API."
 msgstr ""
 
 msgid "Unexpected format of ID replied by the server. Got ''{0}''."
-msgstr "Nieoczekiwany format ID zwrócony przez serwer. Otrzymano ''{0}''."
+msgstr "Nieoczekiwany format ID zwrócony przez serwer. Otrzymano „{0}”."
 
 msgid ""
 "Unexpected format of new version of modified primitive ''{0}''. Got ''{1}''."
 msgstr ""
-"Nieoczekiwany format nowej wersji zmodyfikowanego elementu ''{0}''. Jest "
-"''{1}''."
+"Nieoczekiwany format nowej wersji zmodyfikowanego elementu „{0}”. Jest „{1}”."
 
 msgid "Creating changeset..."
 msgstr "Tworzenie zestawu zmian..."
@@ -13827,7 +13822,7 @@ msgid "OsmChange File"
 msgstr "Plik OsmChange"
 
 msgid "File ''{0}'' does not exist."
-msgstr "Plik ''{0}'' nie istnieje."
+msgstr "Plik „{0}'' nie istnieje."
 
 msgid "No data found in file {0}."
 msgstr "Nie znaleziono danych w pliku {0}."
@@ -13848,7 +13843,7 @@ msgid ""
 "''create'', ''modify'', or ''delete''."
 msgstr ""
 "Błędna struktura dokumentu. Znaleziono punkt, linię lub relację poza "
-"\"create\", \"modify lub \"delete\"."
+"„create\", „modify lub „delete”."
 
 msgid ""
 "Unsupported end element ''{0}'' in changeset content at position ({1},{2}). "
@@ -13862,10 +13857,10 @@ msgid "Illegal boolean value for attribute ''{0}''. Got ''{1}''."
 msgstr ""
 
 msgid "Illegal value for attribute ''{0}''. Got ''{1}''."
-msgstr "Niedozwolona wartość atrybutu ''{0}''. Otrzymano ''{1}''"
+msgstr "Niedozwolona wartość atrybutu „{0}”. Otrzymano „{1}”"
 
 msgid "Illegal numeric value for attribute ''{0}''. Got ''{1}''."
-msgstr "Niedozwolona numeryczna wartość atrybutu ''{0}''. Otrzymano ''{1}''."
+msgstr "Niedozwolona numeryczna wartość atrybutu „{0}”. Otrzymano „{1}”."
 
 msgid "Missing mandatory attribute ''{0}'' of XML element {1}."
 msgstr ""
@@ -13905,10 +13900,10 @@ msgid "Invalid dataset"
 msgstr "Nieprawidłowy zestaw danych"
 
 msgid "No data found for layer ''{0}''."
-msgstr "Nie znaleziono danych dla warstwy ''{0}''."
+msgstr "Nie odnaleziono danych dla warstwy „{0}”."
 
 msgid "No data found in file ''{0}''."
-msgstr "Nie znaleziono danych w pliku ''{0}''."
+msgstr "Nie znaleziono danych w pliku „{0}”."
 
 msgid "Open OSM file"
 msgstr "Otwórz plik OSM"
@@ -13934,7 +13929,7 @@ msgid "Deleted relation {0} contains members"
 msgstr "Usunięta relacja {0} zawiera członki"
 
 msgid "Missing attribute ''ref'' on member in relation {0}."
-msgstr "Brakujący atrybut ''ref'' na członku w relacji {0}."
+msgstr "Brakujący atrybut „ref'' na członku w relacji {0}."
 
 msgid ""
 "Illegal value for attribute ''ref'' on member in relation {0}. Got {1}"
@@ -13963,7 +13958,7 @@ msgid ""
 "Illegal value for attribute ''version'' on OSM primitive with ID {0}. Got "
 "{1}."
 msgstr ""
-"Niewłaściwa wartość atrybutu ''version'' na elemencie z ID {0}. Jest {1}."
+"Niewłaściwa wartość atrybutu „version'' na elemencie z ID {0}. Jest {1}."
 
 msgid ""
 "Normalizing value of attribute ''version'' of element {0} to {2}, API "
@@ -13974,7 +13969,7 @@ msgid "Unknown or unsupported API version. Got {0}."
 msgstr "Nieznana lub nie obsługiwana wersja API. Otrzymano: {0}."
 
 msgid "Missing attribute ''version'' on OSM primitive with ID {0}."
-msgstr "Brakujący atrybut ''version'' na elemencie z ID {0}."
+msgstr "Brakujący atrybut „version'' na elemencie z ID {0}."
 
 msgid ""
 "Illegal value for attribute ''changeset'' on new object {1}. Got {0}. "
@@ -13985,7 +13980,7 @@ msgid "Illegal value for attribute ''changeset''. Got {0}."
 msgstr ""
 
 msgid "Missing required attribute ''{0}''."
-msgstr "Brakuje wymaganego atrybutu ''{0}''."
+msgstr "Brakuje wymaganego atrybutu „{0}”."
 
 msgid "Illegal long value for attribute ''{0}''. Got ''{1}''."
 msgstr ""
@@ -14065,13 +14060,13 @@ msgid "Starting to upload with one request per primitive ..."
 msgstr "Rozpoczęcie wysyłania, jedno żadanie na element ..."
 
 msgid "{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"
-msgstr "{0}% ({1}/{2}), {3} zostało. Przesyłanie węzła ''{4}'' (id: {5})"
+msgstr "{0}% ({1}/{2}), {3} zostało. Przesyłanie węzła „{4}'' (id: {5})"
 
 msgid "{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"
-msgstr "{0}% ({1}/{2}), {3} zostało. Przesyłanie linii ''{4}'' (id: {5})"
+msgstr "{0}% ({1}/{2}), {3} zostało. Przesyłanie linii „{4}'' (id: {5})"
 
 msgid "{0}% ({1}/{2}), {3} left. Uploading relation ''{4}'' (id: {5})"
-msgstr "{0}% ({1}/{2}), {3} zostało. Przesyłanie relacji ''{4}'' (id: {5})"
+msgstr "{0}% ({1}/{2}), {3} zostało. Przesyłanie relacji „{4}'' (id: {5})"
 
 msgid "Starting to upload in one request ..."
 msgstr "Rozpoczynanie przesyłania w jednym zapytaniu..."
@@ -14265,6 +14260,9 @@ msgstr "Zezwolić na to?"
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14323,7 +14321,7 @@ msgid ""
 "Version ''{0}'' of meta data for imagery layer is not supported. Expected: "
 "0.1"
 msgstr ""
-"Wersja \"{0}\" meta danych dla warstwy podkładu nie jest obsługiwana. "
+"Wersja „{0}” meta danych dla warstwy podkładu nie jest obsługiwana. "
 "Oczekiwano: 0.1"
 
 msgid ""
@@ -14338,33 +14336,32 @@ msgid ""
 "Version ''{0}'' of meta data for osm data layer is not supported. Expected: "
 "0.1"
 msgstr ""
-"Wersja \"{0}\" meta danych dla warstwy danych nie jest obsługiwana. "
+"Wersja „{0}” meta danych dla warstwy danych nie jest obsługiwana. "
 "Oczekiwano: 0.1"
 
 msgid "Session file (*.jos, *.joz)"
 msgstr "Plik sesji (*.jos, *.joz)"
 
 msgid "Unable to locate file  ''{0}''."
-msgstr "Nie można zlokalizować pliku  ''{0}''."
+msgstr "Nie można zlokalizować pliku  „{0}”."
 
 msgid "Unsupported scheme ''{0}'' in URI ''{1}''."
-msgstr "Nieobsługiwany schemat \"{0}\" w adresie \"{1}\"."
+msgstr "Nieobsługiwany schemat „{0}” w adresie „{1}”."
 
 msgid "Unexpected root element ''{0}'' in session file"
-msgstr "Nieoczekiwany element root \"{0}\" w pliku sesji"
+msgstr "Nieoczekiwany element root „{0}” w pliku sesji"
 
 msgid "Version ''{0}'' of session file is not supported. Expected: 0.1"
-msgstr "Wersja \"{0}\" pliku sesji jest nieobsługiwana. Spodziewano: 0.1"
+msgstr "Wersja „{0}” pliku sesji jest nieobsługiwana. Spodziewano: 0.1"
 
 msgid "missing mandatory attribute ''index'' for element ''layer''"
-msgstr ""
-"brakuje obowiązkowej wartości \"index\" dla elementu warstwy \"layer\""
+msgstr "brakuje obowiązkowej wartości „index” dla elementu warstwy „layer\""
 
 msgid "unexpected format of attribute ''index'' for element ''layer''"
-msgstr "nieoczekiwany format atrybutu \"index\" dla elementu \"layer\""
+msgstr "nieoczekiwany format atrybutu „index” dla elementu „layer\""
 
 msgid "attribute ''index'' ({0}) for element ''layer'' must be unique"
-msgstr "atrybut \"index\" ({0}) dla elementu \"layer\" musi być unikatowy"
+msgstr "atrybut „index” ({0}) dla elementu „layer” musi być unikatowy"
 
 msgid "missing layer with index {0}"
 msgstr "brakująca warstwa z indeksem {0}"
@@ -14390,7 +14387,7 @@ msgid "Error loading layer"
 msgstr "Błąd wczytywania warstwy"
 
 msgid "<html>Could not load layer {0} ''{1}''.<br>Error is:<br>{2}</html>"
-msgstr "<html>Nie można wczytać warstwy {0} ''{1}''.<br>Błąd:<br>{2}</html>"
+msgstr "<html>Nie można wczytać warstwy {0} „{1}”.<br>Błąd:<br>{2}</html>"
 
 msgid "Skip layer and continue"
 msgstr "Pomiń warstwę i kontynuuj"
@@ -14417,18 +14414,18 @@ msgid ""
 "Cannot download plugin ''{0}''. Its download link is not known. Skipping "
 "download."
 msgstr ""
-"Nie można pobrać wtyczki \"{0}\". Link do pobierania jest nie znany. "
+"Nie można pobrać wtyczki „{0}”. Odnośnik pobierania jest nie znany. "
 "Pomijanie pobierania."
 
 msgid ""
 "Cannot download plugin ''{0}''. Its download link ''{1}'' is not a valid "
 "URL. Skipping download."
 msgstr ""
-"Nie można pobrać wtyczki \"{0}\". Link do pobierania \"{1}\" nie jest "
+"Nie można pobrać wtyczki „{0}”. Odnośnik pobierania „{1}” nie jest "
 "prawidłowy. Pomijanie pobierania."
 
 msgid "Failed to create plugin directory ''{0}''"
-msgstr "Błąd tworzenia katalogu wtyczki \"{0}\""
+msgstr "Błąd tworzenia katalogu wtyczki „{0}”"
 
 msgid "Downloading Plugin {0}..."
 msgstr "Pobieranie wtyczki {0}..."
@@ -14458,6 +14455,9 @@ msgid ""
 "longer developed and very likely will produce errors.<br>It should be "
 "disabled.<br>Delete from preferences?</html>"
 msgstr ""
+"<html>Zażądano wczytanie wtyczki „{0}”.<br>Ta wtyczka nie jest już rozwijana "
+"i prawdopodobnie działa ona nieprawidłowo.<br>Wtyczka powinna zostać "
+"wyłączona.<br>Usunąć ją z preferencji?</html>"
 
 msgid "Plugin update"
 msgstr "Aktualizacja wtyczek"
@@ -14525,65 +14525,70 @@ msgstr[2] ""
 "wtyczki to:"
 
 msgid "Download and restart"
-msgstr ""
+msgstr "Pobierz i uruchom ponownie"
 
 msgid "Click to download missing plugin and restart JOSM"
 msgid_plural "Click to download missing plugins and restart JOSM"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Pobiera brakującą wtyczkę i ponownie uruchamia program."
+msgstr[1] "Pobiera brakujące wtyczki i ponownie uruchamia program."
+msgstr[2] "Pobiera brakujące wtyczki i ponownie uruchamia program."
 
 msgid "Click to continue without this plugin"
 msgid_plural "Click to continue without these plugins"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Kontynuuje działanie bez tej wtyczki"
+msgstr[1] "Kontynuuje działanie bez tych wtyczek"
+msgstr[2] "Kontynuuje działanie bez tych wtyczek"
 
 msgid ""
 "<html>Plugin {0} requires JOSM version {1}. The current JOSM version is "
 "{2}.<br>You have to update JOSM in order to use this plugin.</html>"
 msgstr ""
-"<html>Wtyczka {0} wymaga JOSM w wersji {1}. Obecna wersja JOSM to "
-"{2}.<br>Niezbędna jest aktualizacja JOSM aby wykorzystać tę wtyczkę.</html>"
+"<html>Wtyczka {0} wymaga JOSM w wersji {1}. Obecna wersja to "
+"{2}.<br>Niezbędne jest uaktualnienie programu, aby móc korzystać z tej "
+"wtyczki.</html>"
 
 msgid "Could not load plugin {0}. Delete from preferences?"
-msgstr "Nie można załadować wtyczki {0}. Czy usunąć ją z preferencji?"
+msgstr "Nie można wczytać wtyczki {0}. Usunąć ją z preferencji?"
 
 msgid "loading plugin ''{0}'' (version {1})"
-msgstr "ładowanie wtyczki \"{0}\" (wersja {1})"
+msgstr "wczytywanie wtyczki „{0}” (wersja {1})"
 
 msgid ""
 "<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was "
 "not found.<br>Delete from preferences?</html>"
 msgstr ""
+"<html>Nie można wczytać wtyczki {0}, ponieważ nie<br> odnaleziono jej "
+"głównej klasy „{1}”.<br>Usunąć ją z ustawień?</html>"
 
 msgid "Loading plugins ..."
-msgstr "Ładowanie wtyczek..."
+msgstr "Wczytywanie wtyczek..."
 
 msgid "Checking plugin preconditions..."
 msgstr "Sprawdzanie wymagań wtyczki..."
 
 msgid "Loading plugin ''{0}''..."
-msgstr "Ładowanie wtyczki ''{0}''..."
+msgstr "Wczytywanie wtyczki „{0}”..."
 
 msgid "JOSM could not find information about the following plugin:"
 msgid_plural "JOSM could not find information about the following plugins:"
-msgstr[0] "JOSM nie mógł odnaleźć informacji o następującej wtyczce:"
-msgstr[1] "JOSM nie mógł odnaleźć informacji o następujących wtyczkach:"
-msgstr[2] "JOSM nie mógł odnaleźć informacji o następujących wtyczkach:"
+msgstr[0] "Nie można odnaleźć informacji o następującej wtyczce:"
+msgstr[1] "Nie można odnaleźć informacji o następujących wtyczkach:"
+msgstr[2] "Nie można odnaleźć informacji o następujących wtyczkach:"
 
 msgid "The plugin is not going to be loaded."
 msgid_plural "The plugins are not going to be loaded."
-msgstr[0] "Wtyczka nie będzie załadowana"
-msgstr[1] "Wtyczki nie będą załadowane"
-msgstr[2] "Wtyczki nie będą załadowane"
+msgstr[0] "Wtyczka nie zostanie wczytana"
+msgstr[1] "Wtyczki nie zostaną wczytane"
+msgstr[2] "Wtyczki nie zostaną wczytane"
 
 msgid "Determine plugins to load..."
-msgstr "Określanie wtyczek do załadowania..."
+msgstr "Ustalanie wtyczek do wczytania..."
 
 msgid "Removing deprecated plugins..."
 msgstr "Usuwanie przestarzałych wtyczek..."
 
 msgid "Removing unmaintained plugins..."
-msgstr "Usuwanie nieaktualizowanych wtyczek..."
+msgstr "Usuwanie nieutrzymywanych wtyczek..."
 
 msgid "Updating the following plugin has failed:"
 msgid_plural "Updating the following plugins has failed:"
@@ -14608,7 +14613,7 @@ msgstr[2] ""
 "ponownie."
 
 msgid "Plugin update failed"
-msgstr "Aktualizacja wtyczek nie powiodła się"
+msgstr "Nieudane uaktualnianie wtyczek"
 
 msgid "Failed to find plugin {0}"
 msgstr "Nie udało się odnaleźć wtyczki {0}"
@@ -14617,50 +14622,53 @@ msgid "Failed to download plugin information list"
 msgstr "Nie udało się pobrać listy informacji o wtyczkach"
 
 msgid "Disable plugin"
-msgstr "Zablokuj wtyczkę"
+msgstr "Wyłącz wtyczkę"
 
 msgid "Click to delete the plugin ''{0}''"
-msgstr "Kliknij aby usunąć wtyczkę ''{0}''"
+msgstr "Usuwa wtyczkę „{0}”"
 
 msgid "Keep plugin"
 msgstr "Zachowaj wtyczkę"
 
 msgid "Click to keep the plugin ''{0}''"
-msgstr "Kliknij aby zachować wtyczkę \"{0}\""
+msgstr "Zachowuje wtyczkę „{0}”"
 
 msgid "Failed to delete outdated plugin ''{0}''."
-msgstr "Nie udało się usunąć nieaktualnej wtyczki ''{0}''."
+msgstr "Nie udało się usunąć nieaktualnej wtyczki „{0}”."
 
 msgid ""
 "Failed to install already downloaded plugin ''{0}''. Skipping installation. "
 "JOSM is still going to load the old plugin version."
 msgstr ""
-"Nie udało się zainstalować pobranej wtyczki \"{0}\". Pomijanie instalacji. "
-"JOSM mimo wszystko spróbuje załadować starą wersję wtyczki."
+"Nie udało się zainstalować pobranej wtyczki „{0}”. Pomijanie instalacji. "
+"Program mimo wszystko spróbuje wczytać starą wersję wtyczki."
 
 msgid ""
 "Failed to install plugin ''{0}'' from temporary download file ''{1}''. {2}"
 msgstr ""
+"Nie udało się zainstalować wtyczkę „{0}” z tymczasowego pliku pobierania "
+"„{1}”. {2}"
 
 msgid ""
 "Failed to install plugin ''{0}'' from temporary download file ''{1}''. "
 "Renaming failed."
 msgstr ""
+"Nie udało się zainstalować wtyczkę „{0}” z tymczasowego pliku pobierania "
+"„{1}”. Nieudane zmienianie nazwy."
 
 msgid "Update plugin"
-msgstr "Aktualizuj wtyczkę"
+msgstr "Uaktualnij wtyczkę"
 
 msgid "Click to update the plugin ''{0}''"
-msgstr "Kliknij aby zaaktualizować wtyczkę ''{0}''"
+msgstr "Uaktualnia wtyczkę „{0}”"
 
 msgid "Click to disable the plugin ''{0}''"
-msgstr "Kliknij aby zablokować wtyczkę ''{0}''"
+msgstr "Wyłącza wtyczkę „{0}”"
 
 msgid ""
 "An unexpected exception occurred that may have come from the ''{0}'' plugin."
 msgstr ""
-"Wystąpił niespodziewany błąd, który mógł być spowodowany przez wtyczkę "
-"\"{0}\"."
+"Wystąpił niespodziewany błąd, który mógł być spowodowany przez wtyczkę „{0}”."
 
 msgid "According to the information within the plugin, the author is {0}."
 msgstr "Zgodnie z informacją zawartą w tej wtyczce jej autorem jest {0}."
@@ -14668,15 +14676,15 @@ msgstr "Zgodnie z informacją zawartą w tej wtyczce jej autorem jest {0}."
 msgid ""
 "Try updating to the newest version of this plugin before reporting a bug."
 msgstr ""
-"Postaraj się zaintalować najnowszą wersję tej wtyczki przed zgłaszaniem "
+"Proszę spróbować uaktualnić wtyczkę do najnowszej wersji przed zgłaszeniem "
 "błędu."
 
 msgid ""
 "The plugin has been removed from the configuration. Please restart JOSM to "
 "unload the plugin."
 msgstr ""
-"Wtyczka została usunięta z konfiguracji. Proszę ponownie uruchomić program "
-"JOSM , aby wyładować wtyczkę."
+"Usunięto wtyczkę z konfiguracji. Proszę ponownie uruchomić program JOSM, aby "
+"wyłączyć wtyczkę."
 
 msgid "Plugin information"
 msgstr "Informacje o wtyczce"
@@ -14692,46 +14700,48 @@ msgstr ""
 "Opcje>Wtyczki)"
 
 msgid "Invalid jar file ''{0}''"
-msgstr "Błędny plik jar \"{0}\""
+msgstr "Błędny plik jar „{0}”"
 
 msgid "The plugin file ''{0}'' does not include a Manifest."
-msgstr ""
+msgstr "Plik wtyczki „{0}” nie zawiera pliku Manifest."
 
 msgid "Invalid URL ''{0}'' in plugin {1}"
-msgstr "Nieprawidłowy URL ''{0}'' we wtyczce {1}"
+msgstr "Nieprawidłowy adres URL „{0}” we wtyczce {1}"
 
 msgid "Invalid plugin description ''{0}'' in plugin {1}"
-msgstr ""
+msgstr "Nieprawidłowy opis wtyczki „{0}” we wtyczce {1}"
 
 msgid "Invalid plugin main version ''{0}'' in plugin {1}"
-msgstr ""
+msgstr "Nieprawidłowa główna wersja wtyczki „{0}” we wtyczce {1}"
 
 msgid "Missing plugin main version in plugin {0}"
-msgstr ""
+msgstr "Brakująca główna wersja wtyczki we wtyczce {0}"
 
 msgid "More info..."
 msgstr "Więcej informacji..."
 
 msgid "<b>Plugin provided by an external source:</b> {0}"
-msgstr "<b>Wtyczka dostarczana przez zewnętrzne źródło:</b> {0}"
+msgstr "<b>Wtyczka dostarczona z zewnętrznego zasobu:</b> {0}"
 
 msgid "Failed to create plugin information from manifest for plugin ''{0}''"
-msgstr ""
+msgstr "Nie udało się utworzyć informacji z pliku manifest wtyczki „{0}”"
 
 msgid "Illegal entry in plugin list."
-msgstr ""
+msgstr "Niewłaściwy wpis na liście wtyczek."
 
 msgid "Reading local plugin information.."
-msgstr ""
+msgstr "Odczytywanie informacji o lokalnej wtyczce..."
 
 msgid "Processing plugin site cache files..."
-msgstr ""
+msgstr "Przetwarzanie plików pamięci podręcznej wtyczki..."
 
 msgid "Processing file ''{0}''"
-msgstr "Przetwarzanie pliku ''{0}''"
+msgstr "Przetwarzanie pliku „{0}”"
 
 msgid "Failed to scan file ''{0}'' for plugin information. Skipping."
 msgstr ""
+"Nie udało się przeszukać pliku „{0}” w celu uzyskania informacji o wtyczce. "
+"Pomijanie."
 
 msgid "Processing plugin files..."
 msgstr "Przetwarzanie plików wtyczki..."
@@ -14740,16 +14750,16 @@ msgid "Download plugin list..."
 msgstr "Pobieranie listy wtyczek..."
 
 msgid "Downloading plugin list from ''{0}''"
-msgstr "Pobieranie listy wtyczek z \"{0}\""
+msgstr "Pobieranie listy wtyczek z „{0}”"
 
 msgid "Unsuccessful HTTP request"
-msgstr ""
+msgstr "Nieudane żądanie HTTP"
 
 msgid "Plugin list download error"
 msgstr "Bład pobierania listy wtyczek"
 
 msgid "JOSM failed to download plugin list:"
-msgstr ""
+msgstr "Nie udało się pobrać listy wtyczek:"
 
 msgid "Details:"
 msgstr "Szczegóły:"
@@ -14758,20 +14768,24 @@ msgid ""
 "Failed to create plugin directory ''{0}''. Cannot cache plugin list from "
 "plugin site ''{1}''."
 msgstr ""
+"Nie udało się utworzyć katalogu wtyczki „{0}”. Nie można wczytać do pamięci "
+"podręcznej listy wtyczek z witryny „{1}”."
 
 msgid "Writing plugin list to local cache ''{0}''"
-msgstr ""
+msgstr "Zapisywanie listy wtyczek do lokalnej pamięci podręcznej „{0}”"
 
 msgid "Parsing plugin list from site ''{0}''"
-msgstr ""
+msgstr "Przetwarzanie listy wtyczek z witryny „{0}”"
 
 msgid ""
 "Failed to parse plugin list document from site ''{0}''. Skipping site. "
 "Exception was: {1}"
 msgstr ""
+"Nie udało się przetworzyć listy wtyczek z witryny „{0}”. Pomijanie witryny. "
+"Wyjątek: {1}"
 
 msgid "Processing plugin list from site ''{0}''"
-msgstr ""
+msgstr "Przetwarzanie listy wtyczek z witryny „{0}”"
 
 msgid "This is after the end of the recording"
 msgstr "To znajduje się za końcem nagrania."
@@ -14904,9 +14918,8 @@ msgid ""
 "failed.<br>Please check the username and the password in the JOSM "
 "preferences.</html>"
 msgstr ""
-"<html>Logowanie do serwera OSM jako ''{0}'' zakończone "
-"niepowodzeniem.<br>Sprawdź nazwę użytkownika i hasło w ustawieniach "
-"JOSM.</html>"
+"<html>Nie udało się zalogować do serwera OSM jako „{0}”.<br>Proszę sprawdzić "
+"nazwę użytkownika i hasło w ustawieniach programu.</html>"
 
 msgid ""
 "<html>Authentication at the OSM server with the OAuth token ''{0}'' "
@@ -14919,7 +14932,7 @@ msgid ""
 "following error:<br>''{0}''</html>"
 msgstr ""
 "<html>Autoryzacja z serwerem OSM nie powiodła się.<br>Serwer zwrócił podany "
-"błąd:<br>''{0}''</html>"
+"błąd:<br>„{0}”</html>"
 
 msgid "<html>Authorisation at the OSM server failed.<br></html>"
 msgstr "<html>Autoryzacja z serwerem OSM nie powiodła się.<br></html>"
@@ -14935,7 +14948,7 @@ msgid ""
 "<html>Communication with the OSM server ''{0}'' timed out. Please retry "
 "later.</html>"
 msgstr ""
-"<html>Przekroczono dopuszczalny czas komunikacji z serwerem OSM ''{0}''. "
+"<html>Przekroczono dopuszczalny czas komunikacji z serwerem OSM „{0}”. "
 "Proszę spróbować później.</html>"
 
 msgid "no error message available"
@@ -14990,7 +15003,7 @@ msgid ""
 "<html>Failed to upload data to or download data from<br>''{0}''<br>due to a "
 "problem with transferring data.<br>Details (untranslated): {1}</html>"
 msgstr ""
-"<html>Nieudane wysyłanie lub pobieranie danych z <br>''{0}''<br>z powodu "
+"<html>Nieudane wysyłanie lub pobieranie danych z <br>„{0}”<br>z powodu "
 "problemów z transferem danych.<br>Szczegóły (nieprzetłumaczone): {1}</html>"
 
 msgid ""
@@ -15005,12 +15018,12 @@ msgid ""
 "<html>The OSM server<br>''{0}''<br>reported an internal server "
 "error.<br>This is most likely a temporary problem. Please try again later."
 msgstr ""
-"<html>Serwer OSM<br>''{0}''<br>zwrócił informację o wewnętrznym błędzie "
+"<html>Serwer OSM<br>„{0}”<br>zwrócił informację o wewnętrznym błędzie "
 "serwera.<br>Prawdopodobnie to tymczasowy problem z serwerem. Proszę "
 "spróbować ponownie później."
 
 msgid "The OSM server ''{0}'' reported a bad request.<br>"
-msgstr "Serwer OSM ''{0}'' zgłosił błędne żądanie.<br>"
+msgstr "Serwer OSM „{0}” zgłosił błędne żądanie.<br>"
 
 msgid ""
 "The area you tried to download is too big or your request was too "
@@ -15041,32 +15054,55 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr "szerokość geograficzna"
+
+msgid "URL does not contain valid {0}"
+msgstr "Adres URL nie zawiera prawidłowego {0}"
+
+msgid "longitude"
+msgstr "długość geograficzna"
+
+msgid "zoom"
+msgstr "stopień-przybliżenia"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
 msgstr ""
 
 msgid "Download redirected to ''{0}''"
-msgstr "Pobieranie przekierowanie do ''{0}''"
+msgstr "Pobieranie przekierowanie do „{0}”"
 
 msgid "Too many redirects to the download URL detected. Aborting."
-msgstr "Zbyt wiele przekierowań wykryto przy pobieraniu URL. Przerywam."
+msgstr ""
+"Wykryto zbyt wiele przekierowań do adresu URL pobierania. Przerywanie."
 
 msgid "Unable to find translation for the locale {0}. Reverting to {1}."
-msgstr ""
-"Nie udało się odnaleźć tłumaczenia dla języka: {0}. Użyty zostanie {1}."
+msgstr "Nie można odnaleźć tłumaczenia dla języka: {0}. Użyty zostanie {1}."
 
 msgid ""
 "Fatal: failed to locate image ''{0}''. This is a serious configuration "
 "problem. JOSM will stop working."
 msgstr ""
+"Błąd krytyczny: nie udało się odnaleźć obrazu „{0}”. To poważny błąd "
+"konfiguracji. Program zakończy działanie."
 
 msgid "Failed to handle zip file ''{0}''. Exception was: {1}"
-msgstr ""
+msgstr "Nie udało się obsłużyć pliku zip „{0}”. Wyjątek: {1}"
 
 msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 msgstr ""
+"Nie udało uzyskać dostępu do katalogu „{0}” ze względów bezpieczeństwa. "
+"Wyjątek: {1}"
+
+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 "{0}... [please type its number]"
 msgstr ""
@@ -15077,34 +15113,22 @@ msgid ""
 msgstr ""
 
 msgid "Opening URL: {0}"
-msgstr ""
-
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr "szerokość geograficzna"
-
-msgid "longitude"
-msgstr "długość geograficzna"
+msgstr "Otwieranie adresu URL: {0}"
 
 msgid "URL does not contain {0}/{1}/{2}"
-msgstr ""
-
-msgid "URL does not contain valid {0}"
-msgstr ""
+msgstr "Adres URL nie zawiera {0}/{1}/{2}"
 
 msgid "reserved"
 msgstr "zarezerwowane"
 
 msgid "Outdated Java version"
-msgstr "Nieaktualna wersja Javy"
+msgstr "Nieaktualna wersja Java"
 
 msgid "Update Java"
-msgstr "Aktualizuj Javę"
+msgstr "Uaktualnij Javę"
 
 msgid "You are running version {0} of Java."
-msgstr "Używasz wersji {0} Javy"
+msgstr "Używana wersja {0} Java"
 
 msgid "April 2015"
 msgstr "Kwiecień 2015"
@@ -15118,11 +15142,11 @@ msgid ""
 "JOSM will soon stop working with this version; we highly recommend you to "
 "update to Java {0}."
 msgstr ""
-"JOSM niedługo przestanie pracować na tej wersji; wysoce zalecana jest "
-"aktualizacja do Java {0}."
+"Program JOSM niedługo przestanie działać z tą wersją. Zaleca się uaktualnić "
+"Java do wersji {0}."
 
 msgid "Would you like to update now ?"
-msgstr "Czy chcesz teraz zaktualizować ?"
+msgstr "Uaktualnić?"
 
 msgid ""
 "A previous version of JOSM has installed a custom certificate in order to "
@@ -15172,37 +15196,40 @@ msgstr ""
 
 msgid "There was {0} tag found in the buffer, it is suspicious!"
 msgid_plural "There were {0} tags found in the buffer, it is suspicious!"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Odnaleziono {0} znacznik w buforze. To jest podejrzane!"
+msgstr[1] "Odnaleziono {0} znaczniki w buforze. To jest podejrzane!"
+msgstr[2] "Odnaleziono {0} znaczniki w buforze. To jest podejrzane!"
 
 msgid "Key is too long (max {0} characters):"
-msgstr "Klucz jest zbyt długi (max {0} znaków):"
+msgstr "Klucz jest zbyt długi (maksmalnie {0} znaków):"
 
 msgid "Suspicious characters in key:"
 msgstr "Podejrzane znaki w kluczu:"
 
 msgid "Value is too long (max {0} characters):"
-msgstr "Wartość jest zbyt długa (max {0} znaków):"
+msgstr "Wartość jest zbyt długa (maksymalnie {0} znaków):"
 
 msgid "Do you want to paste these tags?"
-msgstr "Czy chcesz wkleić te tagi?"
+msgstr "Wkleić te znaczniki?"
 
 msgid "Clear buffer"
 msgstr "Wyczyść bufor"
 
 msgid "Ignore warnings"
-msgstr "Ignoruj ostrzeżenia"
+msgstr "Zignoruj ostrzeżenia"
 
 msgid ""
 "<html><p> Sorry, it is impossible to paste tags from buffer. It does not "
 "contain any JOSM object or suitable text. </p></html>"
 msgstr ""
+"<html><p>Nie można wkleić znaczników ze schowka. Nie zawiera on żadnego "
+"obiektu JOSM bądź odpowiedniego tekstu.</p></html>"
 
 msgid "Unable to delete file {0}"
-msgstr ""
+msgstr "Nie można usunąć pliku {0}"
 
 msgid "Unable to create directory {0}"
-msgstr ""
+msgstr "Nie można utworzyć katalogu {0}"
 
 msgid "ms"
 msgstr "ms"
@@ -15248,75 +15275,82 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Nic nie rób"
-
-msgid "Report Bug"
-msgstr "Zgłoś błąd"
+msgid "You have encountered a bug in JOSM"
+msgstr "Napotkano błąd w JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Wystąpił nieoczekiwany wyjątek.<br>Jest to błąd związany z kodem programu. "
-"Jeśli używasz<br>najnowszej wersji JOSM, wyślij proszę zgłoszenie błędu."
 
-msgid "Update JOSM"
-msgstr "Aktualizuj JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
+msgid "Report Bug"
+msgstr "Zgłoś błąd"
+
 msgid "Suppress further error dialogs for this session."
 msgstr "Nie pokazuj więcej raportów z błędami dla tej sesji."
 
-msgid "Unexpected Exception"
-msgstr "Nieoczekiwany błąd"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Napotkałeś błąd w JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Napotkałeś błąd w JOSM. Zanim zgłosisz błąd upewnij się że posiadasz "
-"najnowszą wersję JOSM dostępną tutaj:"
+"Nieudane zgłaszanie błędu. Proszę zgłosić błąd przy użyciu strony "
+"internetowej:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Powinieneś także zaktualizować swoje wtyczki. Jeśli żadna z tych sugestii "
-"nie pomaga prosimy o zgłoszenie błędu w naszym systemie za pomocą tego linku:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Dane dotyczące błędu powinny zostać dla ciebie wyświetlone poniżej. Dołącz "
-"proszę informację o tym jak wywołać ten błąd opisując to tak najdokładniej "
-"jak się da."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr "Alternatywnie możesz wypełnić formularz z opisem pod tym adresem:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Tekst już został skopiowany do schowka.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Uaktualnij JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -15350,7 +15384,7 @@ msgid "Unexpected char on {0}. Expected {1} found {2}"
 msgstr ""
 
 msgid "Expected search expression"
-msgstr ""
+msgstr "Oczekiwane wyrażenie wyszukiwania."
 
 msgid ""
 "You requested too many nodes (limit is 50,000). Either request a smaller "
@@ -15377,10 +15411,10 @@ msgid "could not get audio input stream from input URL"
 msgstr ""
 
 msgid "Audio Device Unavailable"
-msgstr ""
+msgstr "Niedostępne urządzenie dźwiękowe"
 
 msgid "You must make your edits public to upload new data"
-msgstr ""
+msgstr "Należy udostępnić wprowadzone zmiany, aby wysłać nowe dane"
 
 msgid "town"
 msgstr "miasteczko"
@@ -15516,13 +15550,13 @@ msgid "Attributes"
 msgstr "Atrybuty"
 
 msgid "Abort file chooser dialog"
-msgstr "Zamknij okno wyboru pliku"
+msgstr "Zamyka okno wyboru pliku"
 
 msgid "Abort file chooser dialog."
 msgstr "Zamknij okno wyboru pliku."
 
 msgid "Create New Folder"
-msgstr "Utwórz nowy folder"
+msgstr "Tworzy nowy katalog"
 
 msgid "Delete File"
 msgstr "Usuń plik"
@@ -15537,7 +15571,7 @@ msgid "Error "
 msgstr "Błąd "
 
 msgid "Error renaming file \"{0}\" to \"{1}\""
-msgstr "Błąd zmiany nazwy z \"{0}\" na \"{1}\""
+msgstr "Błąd zmiany nazwy pliku „{0}” na „{1}”"
 
 msgid "File name:"
 msgstr "Nazwa pliku:"
@@ -15561,10 +15595,10 @@ msgid "Filter:"
 msgstr "Filtr:"
 
 msgid "Folders"
-msgstr "Foldery"
+msgstr "Katalogi"
 
 msgid "Home"
-msgstr "Katalog domowy"
+msgstr "Przechodzi do katalogu użytkownika"
 
 msgid "Look in:"
 msgstr "Katalog:"
@@ -15576,10 +15610,10 @@ msgid "Modified"
 msgstr "Zmodyfikowany"
 
 msgid "New Folder"
-msgstr "Nowy folder"
+msgstr "Nowy katalog"
 
 msgid "Open selected file"
-msgstr "Otwórz wybrany plik"
+msgstr "Otwiera wybrany plik"
 
 msgid "Open selected file."
 msgstr "Otwórz wybrany plik."
@@ -15588,7 +15622,7 @@ msgid "Rename File"
 msgstr "Zmień nazwę pliku"
 
 msgid "Rename file \"{0}\" to"
-msgstr "Zmień nazwę pliku \"{0}\" na"
+msgstr "Zmień nazwę pliku „{0}” na"
 
 msgid "Save in:"
 msgstr "Zapisz w:"
@@ -15597,7 +15631,7 @@ msgid "Save In:"
 msgstr "Zapisz w:"
 
 msgid "Save selected file."
-msgstr "Zapisz wybrany plik."
+msgstr "Zapisuje wybrany plik"
 
 msgid "Selection:"
 msgstr "Wybór:"
@@ -15606,13 +15640,13 @@ msgid "Size"
 msgstr "Rozmiar"
 
 msgid "Up One Level"
-msgstr "W górę o jeden poziom"
+msgstr "Przechodzi do katalogu nadrzędnego"
 
 msgid "Update"
 msgstr "Aktualizuj"
 
 msgid "Update directory listing."
-msgstr ""
+msgstr "Wczytuje ponownie listę katalogów"
 
 msgid "View"
 msgstr "Widok"
@@ -15621,7 +15655,7 @@ msgid "Blue:"
 msgstr "Niebieski:"
 
 msgid "Color Name:"
-msgstr "Nazwa Koloru:"
+msgstr "Nazwa koloru:"
 
 msgid "Green:"
 msgstr "Zielony:"
@@ -15630,7 +15664,7 @@ msgid "Hue:"
 msgstr "Barwa:"
 
 msgid "GTK Color Chooser"
-msgstr "Wybierak kolorów GTK"
+msgstr "Wybieranie kolorów GTK"
 
 msgid "Red:"
 msgstr "Czerwony:"
@@ -15650,9 +15684,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -15677,9 +15708,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15701,7 +15729,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15752,7 +15780,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15827,7 +15858,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16232,28 +16266,28 @@ msgid "Pangasinán/Bulacan (Phillipines HiRes)"
 msgstr ""
 
 msgid "Geoportal 2: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Geoportal 2: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Geoportal 2: Ortofotomapa (aerial image) WMTS"
-msgstr ""
+msgstr "Geoportal 2: Ortofotomapa (zdjęcia lotnicze) WMTS"
 
 msgid "Geoportal 2: PRNG (geo names)"
 msgstr ""
 
 msgid "Geoportal 2: ISOK hillshade"
-msgstr ""
+msgstr "Geoportal 2: Cieniowanie rzeźby terenu ISOK"
 
 msgid "Będzin: Ortofotomapa 2013 (aerial image)"
-msgstr ""
+msgstr "Będzin: Ortofotomapa 2013 (zdjęcia lotnicze)"
 
 msgid "Będzin: Budynki (buildings)"
 msgstr "Będzin: Budynki"
 
 msgid "Bytom: Ortofotomapa 2012 (aerial image)"
-msgstr ""
+msgstr "Bytom: Ortofotomapa 2012 (zdjęcia lotnicze)"
 
 msgid "Bytom: Fotoplan 2014 (aerial image)"
-msgstr ""
+msgstr "Bytom: Fotoplan 2014 (zdjęcia lotnicze)"
 
 msgid "Bytom: Budynki (buildings)"
 msgstr "Bytom: Budynki"
@@ -16265,22 +16299,22 @@ msgid "Częstochowa: Budynki (buildings)"
 msgstr ""
 
 msgid "Częstochowa: Ortofotomapa 2011 (aerial image)"
-msgstr ""
+msgstr "Częstochowa: Ortofotomapa 2011 (zdjęcia lotnicze)"
 
 msgid "Częstochowa: Ortofotomapa 2013 (aerial image)"
-msgstr ""
+msgstr "Częstochowa: Ortofotomapa 2013 (zdjęcia lotnicze)"
 
 msgid "Częstochowa: Ortofotomapa 2014 (aerial image)"
-msgstr ""
+msgstr "Częstochowa: Ortofotomapa 2014 (zdjęcia lotnicze)"
 
 msgid "Gliwice: Ortofotomapa 2013 (aerial image)"
-msgstr ""
+msgstr "Gliwice: Ortofotomapa 2013 (zdjęcia lotnicze)"
 
 msgid "Gliwice: Budynki (buildings)"
 msgstr "Gliwice: Budynki"
 
 msgid "Katowice: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Katowice: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Katowice: Budynki (buildings)"
 msgstr ""
@@ -16289,7 +16323,7 @@ msgid "Łódź: Budynki (buildings)"
 msgstr ""
 
 msgid "Łódź: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Łódź: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Powiat dębicki: Budynki (buildings)"
 msgstr ""
@@ -16304,7 +16338,7 @@ msgid "Powiat poznański: Budynki (buildings)"
 msgstr ""
 
 msgid "Powiat poznański: Ortofotomapa (Aerial image)"
-msgstr ""
+msgstr "Powiat poznański: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Powiat ropczycko-sędziszowski: Budynki (buildings)"
 msgstr ""
@@ -16313,52 +16347,52 @@ msgid "Powiat rzeszowski: Budynki (buildings)"
 msgstr ""
 
 msgid "Powiat rzeszowski: Ortofotomapa (Aerial image)"
-msgstr ""
+msgstr "Powiat rzeszowski: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Powiat stalowowolski: Budynki (buildings)"
 msgstr ""
 
 msgid "Poznań: Ortofotomapa 2014 (aerial image)"
-msgstr ""
+msgstr "Poznań: Ortofotomapa 2014 (zdjęcia lotnicze)"
 
 msgid "Przemyśl: Budynki (buildings)"
 msgstr ""
 
 msgid "Przemyśl: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Przemyśl: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Ruda Śląska: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Ruda Śląska: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Rzeszów: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Rzeszów: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Rzeszów: Budynki (buildings)"
 msgstr "Rzeszów: Budynki"
 
 msgid "Siemianowice Śląskie: Ortofotomapa (aerial image)"
-msgstr ""
+msgstr "Siemianowice Śląskie: Ortofotomapa (zdjęcia lotnicze)"
 
 msgid "Siemianowice Śląskie: Budynki (buildings)"
 msgstr ""
 
 msgid "Świętochłowice: Ortofotomapa 2008 (aerial image)"
-msgstr ""
+msgstr "Świętochłowice: Ortofotomapa 2008 (zdjęcia lotnicze)"
 
 msgid "Świętochłowice: Ortofotomapa 2009 (aerial image)"
-msgstr ""
+msgstr "Świętochłowice: Ortofotomapa 2009 (zdjęcia lotnicze)"
 
 msgid "Świętochłowice: Ortofotomapa 2012 (aerial image)"
-msgstr ""
+msgstr "Świętochłowice: Ortofotomapa 2012 (zdjęcia lotnicze)"
 
 msgid "Zabrze: Ortofotomapa 2011 (aerial image)"
-msgstr ""
+msgstr "Zabrze: Ortofotomapa 2011 (zdjęcia lotnicze)"
 
 msgid "trail.pl: Szlaki (paths)"
 msgstr "trail.pl: Szlaki"
 
 msgid "Wrocław: Ortofotomapa 2015 (aerial image)"
-msgstr ""
+msgstr "Wrocław: Ortofotomapa 2015 (zdjęcia lotnicze)"
 
 msgid "ScanEx IRS"
 msgstr ""
@@ -17133,9 +17167,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr "Dodaje drukowanie map do JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "dodaje odwzorowania z Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17173,7 +17204,7 @@ msgid ""
 msgstr ""
 
 msgid "Provides routing capabilities."
-msgstr ""
+msgstr "Udostępnia możliwość wyznaczania tras."
 
 msgid "Loads data from SDS"
 msgstr "Wczytuje dane z SDS"
@@ -17193,7 +17224,7 @@ msgid "Edit features for OpenSeaMap"
 msgstr "Narzędzia i ułatwienia edycji dla OpenSeaMap"
 
 msgid "Allows to draw splines"
-msgstr ""
+msgstr "Umożliwia rysowanie krzywych sklejanych"
 
 msgid ""
 "Allows to edit traffic information and export it to the urban mobility "
@@ -17281,7 +17312,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -17510,17 +17542,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Elektryfikacja"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "sieć trakcyjna"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "nie"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "tak"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "szyna"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Napięcie w woltach (V)"
@@ -17568,9 +17604,15 @@ msgstr "Godziny otwarcia"
 msgid "Wheelchairs"
 msgstr "Wózki inwalidzkie"
 
+msgid "yes"
+msgstr "tak"
+
 msgid "limited"
 msgstr "ograniczone"
 
+msgid "no"
+msgstr "nie"
+
 msgid "Brand"
 msgstr "Marka"
 
@@ -17834,7 +17876,7 @@ msgstr ""
 
 msgctxt "sport"
 msgid "model_aerodrome"
-msgstr ""
+msgstr "modelarstwo lotnicze"
 
 msgctxt "sport"
 msgid "motocross"
@@ -17854,7 +17896,7 @@ msgstr "racket"
 
 msgctxt "sport"
 msgid "rc_car"
-msgstr ""
+msgstr "modelarstwo samochodowe"
 
 msgctxt "sport"
 msgid "rugby_league"
@@ -17983,7 +18025,7 @@ msgstr "leśna"
 msgid "Population"
 msgstr "Populacja"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Kod pocztowy"
 
 msgid "Website"
@@ -18150,15 +18192,6 @@ msgstr "szyizm"
 msgid "sunni"
 msgstr "sunnizm"
 
-msgid "high"
-msgstr "wysoki"
-
-msgid "medium"
-msgstr "średni"
-
-msgid "low"
-msgstr "niski"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -19727,6 +19760,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tramwaj"
 
+msgid "Funicular"
+msgstr "Kolej linowo-terenowa"
+
 msgid "Bus Guideway"
 msgstr "Autobus torowy"
 
@@ -20138,7 +20174,7 @@ msgid "Public Transport"
 msgstr "Transport publiczny"
 
 msgid "Public Transport Route (Rail)"
-msgstr ""
+msgstr "Trasa pojazdów publicznego transportu szynowego"
 
 msgid "Route type"
 msgstr "Typ trasy"
@@ -20174,7 +20210,7 @@ msgid "route segment"
 msgstr "odcinek trasy"
 
 msgid "Public Transport Route (Bus)"
-msgstr ""
+msgstr "Trasa pojazdów publicznego transportu autobusowego"
 
 msgid "trolleybus"
 msgstr "trolejbus"
@@ -20230,9 +20266,6 @@ msgstr "Trolejbus"
 msgid "Share taxi"
 msgstr "Taksówka zbiorowa"
 
-msgid "Funicular"
-msgstr "Kolej linowo-terenowa"
-
 msgid "Ferry"
 msgstr "Prom"
 
@@ -21436,6 +21469,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Centrum sportowe"
 
+msgid "Fitness Centre"
+msgstr "Centrum fitnesu"
+
 msgid "Pitch"
 msgstr "Boisko"
 
@@ -21522,6 +21558,10 @@ msgid "sports_centre"
 msgstr "centrum sportowe"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadion"
 
@@ -21578,6 +21618,9 @@ msgstr "Wyścigi konne"
 msgid "Gymnastics"
 msgstr "Gimnastyka"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "Łyżwiarstwo"
 
@@ -23436,6 +23479,15 @@ msgstr "Papierosy"
 msgid "Hairdresser/Barber"
 msgstr "Fryzjer"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tatuaże"
 
@@ -23535,6 +23587,9 @@ msgstr "torby na odchody"
 msgid "food"
 msgstr "jedzenie"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr "gazety"
 
@@ -23717,6 +23772,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Instytucje rządowe"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Ubezpieczenia"
@@ -23866,9 +23933,6 @@ msgstr "wspólnota językowa"
 msgid "ward"
 msgstr "okręg"
 
-msgid "Postal Code"
-msgstr "Kod pocztowy"
-
 msgid "National Park"
 msgstr "Park narodowy"
 
@@ -24025,6 +24089,18 @@ msgstr "Wyspa"
 msgid "Islet"
 msgstr "Wysepka"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natura"
 
@@ -24369,6 +24445,9 @@ msgstr "Nazwa miejsca"
 msgid "City name"
 msgstr "Nazwa miejscowości"
 
+msgid "Post code"
+msgstr "Kod pocztowy"
+
 msgid "Country code"
 msgstr "Kod kraju"
 
@@ -24808,7 +24887,7 @@ msgid "Walking Route"
 msgstr "Szlak spacerowy"
 
 msgid "Riding Route"
-msgstr ""
+msgstr "Szlak konny"
 
 msgid "ihn"
 msgstr ""
@@ -25089,6 +25168,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} jest przestarzały"
 
@@ -25364,7 +25446,7 @@ msgstr "Węzły powtarzają tagi linii rodzica."
 msgid ""
 "no wikipedia-language given, use ''wikipedia''=''language:page title''"
 msgstr ""
-"nie wprowadzono języka Wikipedii, użyj \"wikipedia\"=\"język:tytuł strony\""
+"nie wprowadzono języka Wikipedii, użyj „wikipedia\"=\"język:tytuł strony\""
 
 msgid "unknown language prefix in wikipedia tag"
 msgstr ""
@@ -25835,7 +25917,7 @@ msgid "City"
 msgstr "Miejscowość"
 
 msgid "Postcode"
-msgstr "Kod"
+msgstr "Kod pocztowy"
 
 msgid "Turns all guesses into the corresponding tag values."
 msgstr ""
@@ -26274,7 +26356,7 @@ msgid "Align Ways mode"
 msgstr ""
 
 msgid "Parameter ''{0}'' must not be null"
-msgstr "Parametr \"{0}\" nie może być pusty (ang. null)"
+msgstr "Parametr „{0}” nie może być pusty (ang. null)"
 
 msgid ""
 "Segment to be aligned cannot be the same with the reference segment.\n"
@@ -26574,34 +26656,34 @@ msgid "Big buildings mode"
 msgstr "Tryb dużych budynków"
 
 msgid "Rotate crosshair"
-msgstr "Obracaj kursor"
+msgstr "Obracanie kursora"
 
 msgid "Advanced settings"
 msgstr "Ustawienia zaawansowane"
 
 msgid "Buildings tags:"
-msgstr "Tagi budynków:"
+msgstr "Znaczniki budynków:"
 
 msgid "Cannot place building outside of the world."
 msgstr "Nie można wstawiać budynków poza światem"
 
 msgid "Create building"
-msgstr "Stwórz budynek"
+msgstr "Utwórz budynek"
 
 msgid "Set buildings size"
-msgstr "Ustaw wielkość budynków"
+msgstr "Ustalanie wielkości budynków"
 
 msgid "Use Address dialog"
-msgstr "Używaj okna wprowadzania adresu"
+msgstr "Używanie okna wprowadzania adresu"
 
 msgid "Auto-select building"
-msgstr "Automatycznie zaznaczaj budynek"
+msgstr "Automatyczne zaznaczanie budynku"
 
 msgid "Use address nodes under buildings"
-msgstr "Używaj węzłów adresowych pod budynkami"
+msgstr "Używanie węzłów adresowych w obszarze budynków"
 
 msgid "Buildings width:"
-msgstr "Szerokość:"
+msgstr "Szerokość budynków:"
 
 msgid "Length step:"
 msgstr "Długość segmentu:"
@@ -26610,10 +26692,10 @@ msgid "Advanced..."
 msgstr "Zaawansowane..."
 
 msgid "Draw buildings"
-msgstr "Rysuj budynki"
+msgstr "Rysuje budynki"
 
 msgid "Point on the corner of the building to start drawing"
-msgstr ""
+msgstr "Proszę postawić punkt naroża budynku, aby rozpocząć rysowanie"
 
 msgid "Point on opposite end of the building"
 msgstr ""
@@ -26622,20 +26704,21 @@ msgid "Set width of the building"
 msgstr "Ustal szerokość budynku"
 
 msgid "Merge address points"
-msgstr "Scal punkty adresowe"
+msgstr "Połącz punkty adresowe"
 
 msgid "Move tags from address nodes inside buildings to building ways"
 msgstr ""
-"Przenieś tagi z punktów adresowych wewnątrz budynku na obrys tego budynku"
+"Przenosi znaczniki z punktów adresowych wewnątrz budynku na obrys tego "
+"budynku"
 
 msgid "Select both address nodes and building ways to merge"
 msgstr ""
 
 msgid "No address nodes found in the selection"
-msgstr ""
+msgstr "Nie odnaleziono węzłów adresowych w zaznaczonym obszarze"
 
 msgid "No building ways found in the selection"
-msgstr ""
+msgstr "Nie odnaleziono linii budynków w zaznaczonym obszarze"
 
 msgid "There is {0} building with multiple address nodes inside"
 msgid_plural "There are {0} buildings with multiple address nodes inside"
@@ -26778,6 +26861,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "wysoki"
+
+msgid "medium"
+msgstr "średni"
+
+msgid "low"
+msgstr "niski"
+
 msgid "symbol"
 msgstr ""
 
@@ -26940,7 +27032,7 @@ msgid "Unexpected file extension. {0}"
 msgstr ""
 
 msgid "Add \"source=...\" to elements?"
-msgstr "Dodać \"source=...\" do elementów?"
+msgstr "Dodać „source=...” do elementów?"
 
 msgid "Downloading {0}"
 msgstr "Pobieranie {0}"
@@ -27045,10 +27137,10 @@ msgid "(optional)"
 msgstr "(opcjonalnie)"
 
 msgid "Change location"
-msgstr "Zmień lokalizację"
+msgstr "Zmień położenie"
 
 msgid "Set a new location for the next request"
-msgstr ""
+msgstr "Ustal nowe położenie dla następnego żądania"
 
 msgid "Add a new municipality layer"
 msgstr ""
@@ -27176,7 +27268,7 @@ msgid "Bounding box: {0}"
 msgstr "Obszar edycji: {0}"
 
 msgid "Image size (px): {0}/{1}"
-msgstr ""
+msgstr "Rozmiar obrazu (px): {0}/{1}"
 
 msgid "Is vectorized."
 msgstr "Jest zwektoryzowane."
@@ -27888,7 +27980,7 @@ msgid "Bookmark name already exists!"
 msgstr "Ta nazwa zakładki juz istnieje!"
 
 msgid "Bookmark name must not contain ''{0}''!"
-msgstr "Nazwa zakładki nie może zawierać ''{0}''!"
+msgstr "Nazwa zakładki nie może zawierać „{0}”!"
 
 msgid "Access class"
 msgstr ""
@@ -28010,7 +28102,7 @@ msgid "New bookmark"
 msgstr "Nowa zakładka"
 
 msgid "Really delete \"{0}\"?"
-msgstr "Na pewno usunąć \"{0}\"?"
+msgstr "Na pewno usunąć „{0}”?"
 
 msgid "Bookmark deletion"
 msgstr "Usunięcie zakładki"
@@ -28162,7 +28254,7 @@ msgid "Offset"
 msgstr "Przesunięcie"
 
 msgid "Imagery Offset Database"
-msgstr ""
+msgstr "Baza danych przesunięć podkładów"
 
 msgid "mm"
 msgstr "mm"
@@ -28993,7 +29085,7 @@ msgid "Days"
 msgstr ""
 
 msgid "Imported images"
-msgstr ""
+msgstr "Zaimportowane obrazy"
 
 msgid "Mapillary filter"
 msgstr ""
@@ -29135,6 +29227,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29714,10 +29815,10 @@ msgid ""
 msgstr ""
 
 msgid "Could not load module {0}. Delete from preferences?"
-msgstr "Nie można wczytać modułu {0}. Usunąć z opcji?"
+msgstr "Nie można wczytać modułu {0}. Usunąć z preferencji?"
 
 msgid "loading module ''{0}'' (version {1})"
-msgstr "wczytywanie modułu ''{0}'' (wersja {1})"
+msgstr "wczytywanie modułu „{0}” (wersja {1})"
 
 msgid ""
 "<html>Could not load module {0} because the module<br>main class ''{1}'' was "
@@ -29725,13 +29826,13 @@ msgid ""
 msgstr ""
 
 msgid "Loading modules ..."
-msgstr "Ładowanie modułów ..."
+msgstr "Wczytywanie modułów ..."
 
 msgid "Checking module preconditions..."
 msgstr ""
 
 msgid "Loading module ''{0}''..."
-msgstr "ładowanie modułu ''{0}''..."
+msgstr "Wczytywanie modułu „{0}”..."
 
 msgid "JOSM could not find information about the following module:"
 msgid_plural "JOSM could not find information about the following modules:"
@@ -29746,11 +29847,12 @@ msgstr[1] ""
 
 msgid "Updating the following module has failed:"
 msgid_plural "Updating the following modules has failed:"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "Nie udało się uaktualnić następującego modułu:"
+msgstr[1] "Nie udało się uaktualnić następujących modułów:"
+msgstr[2] "Nie udało się uaktualnić następujących modułów:"
 
 msgid "Module update failed"
-msgstr ""
+msgstr "Nieudane uaktualnianie modułu"
 
 msgid "Warning: failed to download module information list"
 msgstr ""
@@ -29854,7 +29956,7 @@ msgid "Unknown file extension: {0}"
 msgstr "Nieznane rozszerzenie pliku: {0}"
 
 msgid "Parsing file \"{0}\" failed"
-msgstr ""
+msgstr "Nie udało się przetworzyć pliku „{0}”"
 
 msgid "Osmarender"
 msgstr "Osmarender"
@@ -29912,7 +30014,7 @@ msgid "Load file..."
 msgstr "Wczytaj plik..."
 
 msgid "Place"
-msgstr ""
+msgstr "Miejsce"
 
 msgid "Show target"
 msgstr ""
@@ -29921,10 +30023,10 @@ msgid "Take X and Y from selected node"
 msgstr "Pobiera X i Y z zaznaczonego węzła"
 
 msgid "Debug info"
-msgstr "Info debugowania"
+msgstr "Informacje diagnozowania błędów"
 
 msgid "Merge close nodes"
-msgstr ""
+msgstr "Połącz bliskie węzły"
 
 msgid "Remove objects smaller than"
 msgstr "Usuń obiekty mniejsze niż"
@@ -29987,19 +30089,19 @@ msgid "Close the dialog, discard projection preference changes"
 msgstr "Zamknij okno, zignoruj zmiany w ustawieniach odwzorowania"
 
 msgid "Loading..."
-msgstr "Ładowanie..."
+msgstr "Wczytywanie..."
 
 msgid "PDF file preview"
-msgstr "podgląd pliku PDF"
+msgstr "Podgląd pliku PDF"
 
 msgid "Loaded"
-msgstr "Załadowany"
+msgstr "Wczytano"
 
 msgid "Imported PDF: "
 msgstr "Zaimportowany PDF: "
 
 msgid "Please select exactly one node."
-msgstr "Zaznacz dokładnie jeden węzeł."
+msgstr "Proszę zaznaczyć dokładnie jeden węzeł."
 
 msgid "PDF files"
 msgstr "Pliki PDF"
@@ -30014,22 +30116,22 @@ msgid "Tolerance is not a number"
 msgstr ""
 
 msgid "Could not parse color"
-msgstr ""
+msgstr "Nie można przetworzyć koloru"
 
 msgid "Could not parse max path count"
 msgstr ""
 
 msgid "Parsing file"
-msgstr "Analiza pliku"
+msgstr "Przetwarzanie pliku"
 
 msgid "File not found."
-msgstr "Nie znaleziono pliku."
+msgstr "Nie odnaleziono pliku."
 
 msgid "Error while parsing: {0}"
-msgstr ""
+msgstr "Błąd podczas przetwarzania: {0}"
 
 msgid "Removing parallel segments"
-msgstr ""
+msgstr "Usuwanie równoległych segmentów"
 
 msgid "Max distance is not a number"
 msgstr ""
@@ -30215,22 +30317,22 @@ msgid "Altitude:"
 msgstr ""
 
 msgid "speed"
-msgstr ""
+msgstr "prędkość"
 
 msgid "positive number or empty"
 msgstr ""
 
 msgid "Speed:"
-msgstr ""
+msgstr "Prędkość:"
 
 msgid "direction"
-msgstr ""
+msgstr "kierunek"
 
 msgid "range -360.0 .. 360.0, or empty"
 msgstr ""
 
 msgid "Direction:"
-msgstr ""
+msgstr "Kierunek:"
 
 msgid "°"
 msgstr ""
@@ -30248,7 +30350,7 @@ msgid "Untagged Images"
 msgstr ""
 
 msgid "Do you want to save current calibration of layer {0}?"
-msgstr "Czy chcesz zapisać aktualną kalibrację warstwy {0}?"
+msgstr "Zapisać aktualną kalibrację warstwy {0}?"
 
 msgid "Select an option"
 msgstr ""
@@ -30263,7 +30365,7 @@ msgid "Loading file failed: {0}"
 msgstr "Wczytywanie pliku zakończone niepowodzeniem: {0}"
 
 msgid "Problem occurred"
-msgstr ""
+msgstr "Wystąpił błąd"
 
 msgid "Load World File Calibration..."
 msgstr ""
@@ -30418,7 +30520,7 @@ msgid ""
 msgstr ""
 
 msgid "Do you want to apply it ?"
-msgstr "Czy chcesz zastosować?"
+msgstr "Zastosować?"
 
 msgid "Load calibration file?"
 msgstr ""
@@ -30535,20 +30637,8 @@ msgstr "Zatrzymano drukowanie"
 msgid "Printing has failed."
 msgstr "Drukowanie nie powiodło się."
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr "Zaznaczono: {0}"
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
-msgstr ""
+msgstr "Dodaj miejsce zatrzymywania"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
 msgstr ""
@@ -30590,6 +30680,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30615,6 +30715,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30624,6 +30748,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "szyna"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30655,7 +30782,7 @@ msgid "Select GTFS file (stops.txt)"
 msgstr ""
 
 msgid "File \"{0}\" does not exist"
-msgstr "Plik \"{0}\" nie istnieje"
+msgstr "Plik „{0}” nie istnieje"
 
 msgid "IOException \"{0}\" occurred"
 msgstr ""
@@ -30702,10 +30829,10 @@ msgid "Suggest Stops"
 msgstr ""
 
 msgid "Find"
-msgstr "Szukaj"
+msgstr "Wyszukaj"
 
 msgid "Show"
-msgstr "Pokaż"
+msgstr "Wyświetl"
 
 msgid "Mark"
 msgstr ""
@@ -30887,7 +31014,7 @@ msgid "Invalid selection"
 msgstr "Złe zaznaczenie"
 
 msgid "Public transport routes"
-msgstr ""
+msgstr "Trasy pojazdów transportu publicznego"
 
 msgid "Toggle direction arrows"
 msgstr ""
@@ -30896,10 +31023,10 @@ msgid "Toggle reference labels"
 msgstr ""
 
 msgid "Visualize public transport routes"
-msgstr ""
+msgstr "Wizualizacja tras pojazdów transportu publicznego"
 
 msgid "Filters"
-msgstr ""
+msgstr "Filtry"
 
 msgid "Choose Filter"
 msgstr ""
@@ -30959,7 +31086,7 @@ msgid "Create multipolygons from rings"
 msgstr "Utwórz wielokąt złożony z pierścieni"
 
 msgid "Move tags from ways to relation"
-msgstr "Przenieś tagi z linii do relacji"
+msgstr "Przenieś znaczniki z linii do relacji"
 
 msgid "Enter admin level and name for the border relation:"
 msgstr ""
@@ -30986,13 +31113,13 @@ msgid "Download referrers for the chosen relation and its members."
 msgstr ""
 
 msgid "Duplicate relation"
-msgstr "Duplikuj relację"
+msgstr "Powiel relację"
 
 msgid "Open relation editor for the chosen relation"
 msgstr ""
 
 msgid "Find a relation"
-msgstr "Zanjdź relację"
+msgstr "Odszukaj relację"
 
 msgid "Reconstruct polygon"
 msgstr "Odbuduj wielokąt"
@@ -31184,7 +31311,7 @@ msgid "custom"
 msgstr ""
 
 msgid "Could not read tagging preset source: ''{0}''"
-msgstr "Nie mogłem odczytać źródła szablonu tagowania: ''{0}''"
+msgstr "Nie można odczytać zasobu szablonu znaczników: „{0}”"
 
 msgid "Error parsing tagging preset from ''{0}'':\n"
 msgstr ""
@@ -31768,6 +31895,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Nie mogę umieścić węzła poza obszarem świata."
 
@@ -32234,14 +32364,14 @@ msgid "Copy to the clipboard"
 msgstr "Kopiuj do schowka"
 
 msgid "Cannot find object with id ''{0}'' in layer ''{1}''"
-msgstr "Nie mogę znaleźć w warstwie ''{1}'' obiektu z id  ''{0}''"
+msgstr "Nie można odnaleźć na warstwie „{1}” obiektu o identyfikatorze „{0}”"
 
 msgid ""
 "Cannot add object ''{0}'' as relation member because it is deleted or "
 "invisible in layer ''{1}''"
 msgstr ""
-"Nie mogę dodać obiektu ''{0}'' jako członka relacji ponieważ jest skasowany "
-"lub niewidoczny na warstwie ''{1}''"
+"Nie można dodać obiektu „{0}'' jako członka relacji, ponieważ jest usunięty "
+"lub niewidoczny na warstwie „{1}”"
 
 msgid "Clear the selected roles or delete the selected members"
 msgstr "Wyczyść wybrane role lub usuń wybranych członków"
@@ -32268,13 +32398,13 @@ msgid "Show errors and warnings related to this turn restriction"
 msgstr "Pokazuje błędy i uwagi zwiazane z tym ograniczeniem skrętu"
 
 msgid "Create a new turn restriction in layer ''{0}''"
-msgstr "Tworzenie nowego ograniczenia skrętu na warstwie \"{0}\""
+msgstr "Tworzenie nowego ograniczenia skrętu na warstwie „{0}”"
 
 msgid "Edit a new turn restriction in layer ''{0}''"
-msgstr "Edycja nowego ograniczenia skrętu na warstwie \"{0}\""
+msgstr "Edycja nowego ograniczenia skrętu na warstwie „{0}”"
 
 msgid "Edit turn restriction ''{0}'' in layer ''{1}''"
-msgstr "Edycja ograniczenia skrętu \"{0}\" na warstwie \"{1}\""
+msgstr "Edycja ograniczenia skrętu „{0}” na warstwie „{1}”"
 
 msgid ""
 "There is still an unresolved error or warning identified for this turn "
@@ -32387,7 +32517,7 @@ msgid "please select a way"
 msgstr "proszę wybrać drogę"
 
 msgid "multiple objects with role ''{0}''"
-msgstr "wiele obiektów z rolą ''{0}''"
+msgstr "wiele obiektów z rolą „{0}''"
 
 msgid "Delete from turn restriction"
 msgstr "Usuwa z ograniczenia skrętu"
@@ -32428,7 +32558,7 @@ msgstr "Nakaz jazdy prosto"
 msgid "Warning: failed to load icon for turn restriction type ''{0}''"
 msgstr ""
 "Ostrzeżenie: nie udało się załadować ikony dla ograniczenia skrętu typu "
-"''{0}''"
+"„{0}''"
 
 msgid "please select a turn restriction type"
 msgstr "proszę wybrać typ ograniczenia skrętu"
@@ -32514,7 +32644,7 @@ msgstr ""
 "skrętów z bieżącego zestawu danych.</html>"
 
 msgid "Turn Restrictions"
-msgstr "Ograniczenia Skrętu"
+msgstr "Ograniczenia skrętu"
 
 msgid "Display and manage turn restrictions in the current data set"
 msgstr ""
@@ -32583,8 +32713,8 @@ msgid ""
 "Warning: the preference with key ''{0}'' has an unsupported value ''{1}''. "
 "Assuming the default value ''set-a''."
 msgstr ""
-"Ostrzeżenie: klucz preferencji  ''{0}'' ma nieprawidłową wartość  ''{1}''. "
-"Przyjmuję wartość domyślną ''set-a''."
+"Ostrzeżenie: klucz preferencji  „{0}'' ma nieprawidłową wartość  „{1}”. "
+"Przyjmuję wartość domyślną „set-a”."
 
 msgid ""
 "This turn restriction uses the way <span class=\"object-name\">{0}</span> "
@@ -32603,7 +32733,7 @@ msgid "Delete ''to''"
 msgstr ""
 
 msgid "Removes the member with role ''to''"
-msgstr "Usuwa członka z rolą \"to\""
+msgstr "Usuwa członka z rolą „to\""
 
 msgid "Fix in editor"
 msgstr "Napraw w edytorze"
@@ -32665,10 +32795,10 @@ msgid "Add in editor"
 msgstr "Dodaj w edytorze"
 
 msgid "Add a way with role ''from''"
-msgstr "Dodaj drogę z rolą \"from\""
+msgstr "Dodaj drogę z rolą „from\""
 
 msgid "Add a way with role ''to''"
-msgstr "Dodaj drogę z rolą \"to\""
+msgstr "Dodaj drogę z rolą „to\""
 
 msgid ""
 "The two ways participating in the turn restriction <strong>aren''t "
@@ -32681,7 +32811,7 @@ msgid ""
 msgstr ""
 
 msgid "Go to the Advanced Editor and add via objects"
-msgstr "Przejdz do zaawansowanego edytora i dodaj obiekty ''przez''."
+msgstr "Przejdź do zaawansowanego edytora i dodaj obiekty „przez”."
 
 msgid ""
 "A turn restriction requires exactly one way with role <tt>from</tt>. This "
@@ -33003,8 +33133,8 @@ msgstr ""
 "51, 19 24 18</li><li>49 29, 19 24</li><li>E 49 29, N 19 24</li><li>49° "
 "29; 19° 24</li><li>N 49° 29, W 19° 24</li><li>49° 29.5 S, "
 "19° 24.6 E</li><li>N 49 29.918 E 19 15.88</li><li>49 29.4 19 "
-"24.5</li><li>-49 29.4 N -19 24.5 W</li><li>48 deg 42' 52.13\" N, 21 deg "
-"11' 47.60\" E</li></ul>"
+"24.5</li><li>-49 29.4 N -19 24.5 W</li><li>48 deg 42' 52.13” N, 21 deg "
+"11' 47.60” E</li></ul>"
 
 msgid "Tag multiple objects [alpha]"
 msgstr "Tagowanie wielu obiektów (wersja alfa)"
@@ -33369,7 +33499,7 @@ msgstr ""
 "Podaj adres lub ID (fragment po ?id=w adresie URL) mapy z walking-papers.org"
 
 msgid "Could not read information from walking-papers.org the id \"{0}\""
-msgstr "Nie mogę przeczytać informacji z walking-papers.org o id \"{0}\""
+msgstr "Nie mogę przeczytać informacji z walking-papers.org o id „{0}”"
 
 msgid "Walking Papers: {0}"
 msgstr "Walking Papers: {0}"
@@ -33394,7 +33524,7 @@ msgstr ""
 "<html>Nie można znaleźć unikalnego węzła aby, rozpocząć pobieranie.</html>"
 
 msgid "<html>There are no ways connected to node ''{0}''. Aborting.</html>"
-msgstr "<html>Brak linii połączonych z węzłem ''{0}''. Anulowano.</html>"
+msgstr "<html>Brak linii połączonych z węzłem „{0}”. Anulowano.</html>"
 
 msgid ""
 "Way downloader data inconsistency. Prior connected way ''{0}'' wasn''t "
@@ -33417,7 +33547,7 @@ msgstr "<html>Nie ma więcej połączonych linii do pobrania.</html>"
 
 msgid "Node ''{0}'' is a junction with more than 2 connected ways."
 msgstr ""
-"Węzeł ''{0}'' jest skrzyżowaniem z więcej niż dwiema połączonymi liniami."
+"Węzeł „{0}'' jest skrzyżowaniem z więcej niż dwiema połączonymi liniami."
 
 msgid "Enter search expression here.."
 msgstr "Wprowadź frazę do znalezienia..."
@@ -33474,6 +33604,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "Pobiera z Wikipedii linki interwiki w celu dodanie kilku tagów"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -33517,9 +33653,6 @@ msgstr "Kategoria"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Pobiera listę wszystkich artykułów Wikipedii z kategorii"
 
-msgid "Enter the Wikipedia category"
-msgstr "Wprowadź kategorię Wikipedii"
-
 msgid "Clipboard"
 msgstr "Schowek"
 
@@ -33547,7 +33680,7 @@ msgid ""
 "Adds a ''wikipedia'' tag corresponding to this article to the selected "
 "objects"
 msgstr ""
-"Dodaje tag \"wikipedia\" powiązany z tym artykułem do zaznaczonych obiektów"
+"Dodaje tag „wikipedia” powiązany z tym artykułem do zaznaczonych obiektów"
 
 msgid "The Ultimate WMS Super-speed Turbo Challenge II"
 msgstr "The Ultimate WMS Super-speed Turbo Challenge II"
diff --git a/i18n/po/pt.po b/i18n/po/pt.po
index b2f39d1..1f30b72 100644
--- a/i18n/po/pt.po
+++ b/i18n/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-05-24 18:43+0000\n"
 "Last-Translator: Rui <xande6ruz at yandex.com>\n"
 "Language-Team: Portuguese <pt 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: 2016-07-12 05:00+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:02+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: pt\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,24 +112,6 @@ msgstr "O endereço web do ficheiro não é válido e será ignorado: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "O parâmetro \"downloadgps\" não aceita nomes nem URLs de ficheiros"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>O JOSM necessita da de Java na versão {0}.</h2>Versão Java instalada: "
-"{1}.<br>Pode <ul><li>atualizar o Java (JRE) ou</li><li>usar uma versão do "
-"JOSM anterior (compatível com o Java {2}).</li></ul>Mais informação em:"
-
-msgid "Exit JOSM"
-msgstr "Sair do JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continuar e tentar mesmo assim"
-
-msgid "Error"
-msgstr "Erro"
-
 msgid "About"
 msgstr "Sobre"
 
@@ -248,6 +230,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Adicionar camada de imagem de fundo {0}"
 
+msgid "Error"
+msgstr "Erro"
+
 msgid "Select image format for WMS layer"
 msgstr "Selecione o formato de imagem para a camada WMS"
 
@@ -545,8 +530,8 @@ msgstr "Descarregar objetos dependentes de um dos objetos selecionados"
 msgid "Duplicate"
 msgstr "Duplicar"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicar seleção através de cópia e colagem imediata."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Sair"
@@ -1180,22 +1165,14 @@ msgstr "Pedido Overpass: "
 msgid "Paste"
 msgstr "Colar"
 
-msgid "Paste contents of paste buffer."
-msgstr "Colar conteúdo da área de transferência previamente copiado."
-
-msgid "Delete incomplete members?"
-msgstr "Eliminar membros incompletos?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Colar sem os membros incompletos"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Os dados copiados contêm objetos incompletos. Ao colar, os objetos "
-"incompletos não são colados. Quer colar sem os objetos incompletos?"
 
 msgid "Paste Tags"
 msgstr "Colar Etiquetas"
@@ -1205,16 +1182,6 @@ msgstr ""
 "Aplicar etiquetas dos conteúdos presentas na área de transferência para "
 "todos os itens selecionados."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "A colar {0} etiqueta"
-msgstr[1] "A colar {0} etiquetas"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "em {0} objeto"
-msgstr[1] "em {0} objetos"
-
 msgid "Preferences..."
 msgstr "Preferências..."
 
@@ -1991,6 +1958,9 @@ msgstr "Pedir e descarregar conjuntos de alterações ..."
 msgid "Errors during download"
 msgstr "Erros ao descarregar"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Descarregar dados GPS"
 
@@ -3112,8 +3082,8 @@ msgstr "Alterar linha {0}"
 msgid "Change relation {0}"
 msgstr "Alterar relação {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Alterados os nós de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Remover \"{0}\" do nó ''{1}''"
@@ -3164,6 +3134,9 @@ msgstr[1] "objetos"
 msgid "Change relation member role for {0} {1}"
 msgstr "Alterar função de membro em {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Eliminar ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Requere-se pelo menos um objeto para eliminar, não foi nada selecionado"
@@ -3197,9 +3170,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Eliminar {0} relação"
 msgstr[1] "Eliminar {0} relações"
 
-msgid "Deleted ''{0}''"
-msgstr "Eliminar ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Confirmação de eliminação"
 
@@ -6117,12 +6087,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmação da combinação"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>em falta</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6146,6 +6110,12 @@ msgstr[1] ""
 "conflito para escolher as que quer manter ou eliminar.<br/><br/>Quer "
 "continuar?"
 
+msgid "<i>missing</i>"
+msgstr "<i>em falta</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Escolha um valor"
 
@@ -6347,6 +6317,30 @@ msgstr "Nova etiqueta"
 msgid "New value"
 msgstr "Novo valor"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "A colar {0} etiqueta"
+msgstr[1] "A colar {0} etiquetas"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "em {0} objeto"
+msgstr[1] "em {0} objetos"
+
+msgid "Delete incomplete members?"
+msgstr "Eliminar membros incompletos?"
+
+msgid "Paste without incomplete members"
+msgstr "Colar sem os membros incompletos"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Os dados copiados contêm objetos incompletos. Ao colar, os objetos "
+"incompletos não são colados. Quer colar sem os objetos incompletos?"
+
 msgid "For selected objects only"
 msgstr "Apenas dos objetos selecionados"
 
@@ -8379,13 +8373,6 @@ msgstr "Mover para cima os membros selecionados"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar as alterações e fechar janela"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Os membros da área de transferência não podem ser adicionados porque não "
-"estão incluídos na camada atual"
-
 msgid "Relation Editor: Refresh"
 msgstr "Editor de Relação: Atualizar"
 
@@ -10094,13 +10081,6 @@ 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"
 
@@ -10116,6 +10096,11 @@ msgstr "Altere de novo a projeção ou remova a camada"
 msgid "Save Layer"
 msgstr "Gravar Camada"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Camada de erros reportados no mapa"
 
@@ -13835,6 +13820,9 @@ msgstr ""
 "Não foi possível abrir o ficheiro com a extensão ''{2}'' com o nome ''{3}'' "
 "no ficheiro zip ''{0}''. Erro: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Não foi possível alterar o nome do ficheiro de {0} para {1}."
 
@@ -14719,6 +14707,9 @@ msgstr "Quer permitir isto?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmar a ação do Controlo Remoto"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15618,6 +15609,18 @@ msgstr ""
 "<strong>Falhou o descarregamento</strong> se tentou descarregar o "
 "objeto.<br><br>A mensagem de erro é:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitude"
+
+msgid "URL does not contain valid {0}"
+msgstr "O URL não contém {0} válidos"
+
+msgid "longitude"
+msgstr "longitude"
+
+msgid "zoom"
+msgstr "aproximação"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15653,6 +15656,13 @@ msgstr ""
 "Não foi possível aceder ao diretório ''{0}'' por razões de segurança. "
 "Detalhes: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [por favor digite o seu número]"
 
@@ -15666,21 +15676,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "A abrir o URL: {0}"
 
-msgid "zoom"
-msgstr "aproximação"
-
-msgid "latitude"
-msgstr "latitude"
-
-msgid "longitude"
-msgstr "longitude"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "O URL não contém {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "O URL não contém {0} válidos"
-
 msgid "reserved"
 msgstr "reservado"
 
@@ -15866,84 +15864,81 @@ msgstr "A ignorar a geometria mal formada: {0}"
 msgid "Failed to load XML schema."
 msgstr "Não foi possível carregar o esquema XML."
 
-msgid "Do nothing"
-msgstr "Não fazer nada"
-
-msgid "Report Bug"
-msgstr "Comunicar um Erro"
+msgid "You have encountered a bug in JOSM"
+msgstr "Encontrou um bug no JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Ocorreu uma excepção inesperada.<br>Trata-se de um erro de programação. Se "
-"estiver a usar a última versão<br>do JOSM, por favor ajude a melhorar o "
-"programa preenchendo um relatório de erro."
 
-msgid "Update JOSM"
-msgstr "Atualizar o JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Ocorreu um erro inesperado resultante de um erro de programação.<br><br>Se "
-"no entanto estiver a usar uma versão antiga do JOSM  ({0}),<br>em vez da "
-"última versão (<b>{1}</b>).<br><br><b>Por favor atualize o JOSM</b> antes de "
-"reportar um erro aos programadores."
+
+msgid "Report Bug"
+msgstr "Comunicar um Erro"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Não mostrar mais avisos de erros nesta sessão."
 
-msgid "Unexpected Exception"
-msgstr "Excepção Inesperada"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Encontrou um bug no JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Encontrou um erro no JOSM. Antes de preencher um relatório de erro verifique "
-"se tem a última versão do JOSM em:"
+"Não foi possível abrir a página para relatar um erro. Por favor relate um "
+"erro acedendo ao site:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Também deve atualizar os módulos do JOSM. Se mesmo assim o erro persistir, "
-"preencha um relatório de erro no bugtracker usando o seguinte link:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"As informações sobre o erro que aparecem a seguir já contêm o essencial. No "
-"entanto será útil para os programadores se fornecer informações adicionais, "
-"como por exemplo, que passos tomar para que o erro apareça, caso saiba "
-"reproduzir o erro novamente."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
-"Como alternativa, se não funcionar, pode preencher manualmente com a "
-"informação seguinte no endereço:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(O texto já foi copiado para a área de transferência.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Não foi possível abrir a página para relatar um erro. Por favor relate um "
-"erro acedendo ao site:"
+
+msgid "Update JOSM"
+msgstr "Atualizar o JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16289,9 +16284,6 @@ msgstr "HDM (Equipa Humanitária do OpenStreetMap)"
 msgid "Mapbox Satellite"
 msgstr "Satélite Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16316,9 +16308,6 @@ msgstr "OpenStreetMap (Estilo Alemão)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "Trilhos GPS no OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Transportes Públicos (ÖPNV)"
 
@@ -16340,7 +16329,7 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16391,8 +16380,11 @@ msgstr "OSM Inspector: Endereços"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Fronteiras (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional - Espanha (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI preto e branco 2.5m"
@@ -16466,8 +16458,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Höhen und Gelände"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) imagens aéreas (cobre também a região de Bruxelas)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr imagens numéricas (2013)"
@@ -17860,14 +17855,6 @@ msgstr "Ler e gravar ficheiros de filtros poly osmosis"
 msgid "Adds map printing to JOSM"
 msgstr "Permite imprimir mapas diretamente do JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr ""
-"Disponibiliza projeções adicionais (experimental). Após a instalação e o "
-"reiniciar do JOSM, as projeções ficarão disponíveis em "
-"Preferências>Definições de Mapas (3ª aba)>Na 1ª aba ''Projeção do Mapa'', "
-"selecionar no menu deslizante ''Método de Projeção'' a última opção do menu "
-"''Módulo Proj4J (projeções adicionais, experimental)''."
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -18069,8 +18056,9 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Permite pesquisar por pontos do trilho em ficheiros GPX importados."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Simplifica a ligação de objetos do OSM a artigos da Wikipédia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18313,17 +18301,21 @@ msgstr "mudança de linha"
 msgid "Electrified"
 msgstr "Eletrificado"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "linha de contacto aérea (por catenárias)"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "não"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "sim"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "carril"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltagem em Volts (V)"
@@ -18371,9 +18363,15 @@ msgstr "Horário de Abertura"
 msgid "Wheelchairs"
 msgstr "Cadeiras de rodas"
 
+msgid "yes"
+msgstr "sim"
+
 msgid "limited"
 msgstr "limitado/parcial"
 
+msgid "no"
+msgstr "não"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -18786,8 +18784,8 @@ msgstr "apenas tráfego florestal"
 msgid "Population"
 msgstr "População"
 
-msgid "Post code"
-msgstr "Código postal"
+msgid "Postal Code"
+msgstr "Código Postal"
 
 msgid "Website"
 msgstr "Página web"
@@ -18953,15 +18951,6 @@ msgstr "xiismo"
 msgid "sunni"
 msgstr "sunismo"
 
-msgid "high"
-msgstr "alto"
-
-msgid "medium"
-msgstr "médio"
-
-msgid "low"
-msgstr "baixo"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20547,6 +20536,9 @@ msgstr "Metropolitano"
 msgid "Tram"
 msgstr "Elétrico"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Autocarro de Guia (não existem em Portugal)"
 
@@ -21050,9 +21042,6 @@ msgstr "Trólei"
 msgid "Share taxi"
 msgstr "Táxi coletivo"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Ferry"
 
@@ -22259,6 +22248,9 @@ msgstr "Estádio"
 msgid "Sports Centre"
 msgstr "Centro Desportivo"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Campo"
 
@@ -22347,6 +22339,10 @@ msgid "sports_centre"
 msgstr "centro desportivo"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "estádio"
 
@@ -22403,6 +22399,9 @@ msgstr "Corridas de Cavalos"
 msgid "Gymnastics"
 msgstr "Ginástica"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -24260,6 +24259,15 @@ msgstr "Tabaco"
 msgid "Hairdresser/Barber"
 msgstr "Cabeleireiro/Barbeiro"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tatuagens"
 
@@ -24359,6 +24367,9 @@ msgstr "sacos para excrementos"
 msgid "food"
 msgstr "alimentos"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr "Jornais"
 
@@ -24541,6 +24552,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Escritório da administração nacional (genérico)"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Agência de Seguros / Seguradora"
@@ -24690,9 +24713,6 @@ msgstr "comunidade linguística"
 msgid "ward"
 msgstr "ward"
 
-msgid "Postal Code"
-msgstr "Código Postal"
-
 msgid "National Park"
 msgstr "Parque Nacional"
 
@@ -24851,6 +24871,18 @@ msgstr "Ilha"
 msgid "Islet"
 msgstr "Ilhéu"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natureza"
 
@@ -25206,6 +25238,9 @@ msgstr "Local / lugar"
 msgid "City name"
 msgstr "Nome da localidade"
 
+msgid "Post code"
+msgstr "Código postal"
+
 msgid "Country code"
 msgstr "Código do país"
 
@@ -25931,6 +25966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "''{0}'' está em desuso"
 
@@ -27812,6 +27850,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "alto"
+
+msgid "medium"
+msgstr "médio"
+
+msgid "low"
+msgstr "baixo"
+
 msgid "symbol"
 msgstr "símbolo"
 
@@ -30308,6 +30355,15 @@ msgstr[1] "Viradas {0} imagens"
 msgid "2 images unjoined"
 msgstr "2 imagens separadas"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31795,18 +31851,6 @@ msgstr "A impressão parou"
 msgid "Printing has failed."
 msgstr "A impressão falhou."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} selecionadas"
-
-msgid "Selected: {0}"
-msgstr "Selecionado: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Módulo Proj4J (projeções adicionais, experimental)"
-
-msgid "Code"
-msgstr "Código da projeção"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31850,6 +31894,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31875,6 +31929,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31884,6 +31962,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "carril"
+
 msgid "Can''t parse a time from this string."
 msgstr "Não é possível analisar a hora desta expressão."
 
@@ -33098,6 +33179,9 @@ msgstr "Algo correu mal, tente de novo"
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Não é possível colocar um nó fora do mundo."
 
@@ -34943,6 +35027,12 @@ msgstr ""
 "Obtém ligações interwikis da Wikipédia por forma a adicionar várias "
 "etiquetas de nomes"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34991,9 +35081,6 @@ msgstr "Categoria"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Obtém todas as páginas de uma categoria da Wikipédia"
 
-msgid "Enter the Wikipedia category"
-msgstr "Introduza o nome da categoria da Wikipédia"
-
 msgid "Clipboard"
 msgstr "Área de transferência"
 
diff --git a/i18n/po/pt_BR.po b/i18n/po/pt_BR.po
index ac12451..4edf5dd 100644
--- a/i18n/po/pt_BR.po
+++ b/i18n/po/pt_BR.po
@@ -8,16 +8,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-11 23:20+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-08 19:42+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"
 "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: 2016-07-12 05:10+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:13+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: pt_BR\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -114,24 +114,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "O parâmetro \"downloadgps\" não aceita nomes de arquivos ou URLs de arquivos"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM requer a versão {0} do Java.</h2>Foi detectada a versão: "
-"{1}.<br>Você pode<ul><li>atualizar o seu Java (JRE) ou</li><li>usar uma "
-"versão anterior (Java {2} compatível) do JOSM.</li></ul>Mais informações:"
-
-msgid "Exit JOSM"
-msgstr "Sair do JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continuar, tentar assim mesmo"
-
-msgid "Error"
-msgstr "Erro"
-
 msgid "About"
 msgstr "Sobre"
 
@@ -249,6 +231,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Adicionar camada de imagem {0}"
 
+msgid "Error"
+msgstr "Erro"
+
 msgid "Select image format for WMS layer"
 msgstr "Selecione o formato da imagem para a camada WMS"
 
@@ -536,8 +521,8 @@ msgstr "Baixar objetos que referem aos objetos selecionados"
 msgid "Duplicate"
 msgstr "Duplicar"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicar seleção através de cópia e colagem imediata."
+msgid "Duplicate selection."
+msgstr "Duplicar seleção"
 
 msgid "Exit"
 msgstr "Sair"
@@ -1169,23 +1154,14 @@ msgstr "Consulta overpass: "
 msgid "Paste"
 msgstr "Colar"
 
-msgid "Paste contents of paste buffer."
-msgstr "Colar conteúdo da memória."
-
-msgid "Delete incomplete members?"
-msgstr "Apagar membros incompletos?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Colar sem membros incompletos"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"O dado copiado contem objetos incompletos. Quando objetos incompletos são "
-"colados estes são removidos. Você quer colar os dados sem os objetos "
-"incompletos?"
 
 msgid "Paste Tags"
 msgstr "Colar Tags"
@@ -1195,16 +1171,6 @@ msgstr ""
 "Aplicar tags de conteúdo da memória de transferência em todos itens "
 "selecionados."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "A colar {0} tag"
-msgstr[1] "A colar {0} tags"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "para {0} objeto"
-msgstr[1] "para {0} objetos"
-
 msgid "Preferences..."
 msgstr "Preferências..."
 
@@ -1960,6 +1926,9 @@ msgstr "Pesquisando e baixando conjuntos de alterações ..."
 msgid "Errors during download"
 msgstr "Erros durante a obtenção de dados"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Baixar GPS"
 
@@ -3069,8 +3038,8 @@ msgstr "Alterar caminho {0}"
 msgid "Change relation {0}"
 msgstr "Alterar relação {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Alterar nós de {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Remover \"{0}\" para o nó ''{1}''"
@@ -3121,6 +3090,9 @@ msgstr[1] "objetos"
 msgid "Change relation member role for {0} {1}"
 msgstr "Mudar regra de membro da relação para {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "''{0}'' Apagado"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Ao menos um objeto para apagar é requerido, mas foi obtido coleção vazia"
@@ -3154,9 +3126,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Apagar {0} relação"
 msgstr[1] "apagar {0} relação"
 
-msgid "Deleted ''{0}''"
-msgstr "''{0}'' Apagado"
-
 msgid "Delete confirmation"
 msgstr "Apagar confirmação"
 
@@ -6040,12 +6009,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr "Confirmação de combinação"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>ausente</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6067,6 +6030,12 @@ msgstr[1] ""
 "pode ter tags indesejadas<br/>Se você quiser continuar, será mostrada uma "
 "caixa de diálogo para resolver as tags conflitantes.<br/>Você quer continuar?"
 
+msgid "<i>missing</i>"
+msgstr "<i>ausente</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Escolher um valor"
 
@@ -6269,6 +6238,31 @@ msgstr "Nova chave"
 msgid "New value"
 msgstr "Novo valor"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "A colar {0} tag"
+msgstr[1] "A colar {0} tags"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "para {0} objeto"
+msgstr[1] "para {0} objetos"
+
+msgid "Delete incomplete members?"
+msgstr "Apagar membros incompletos?"
+
+msgid "Paste without incomplete members"
+msgstr "Colar sem membros incompletos"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"O dado copiado contem objetos incompletos. Quando objetos incompletos são "
+"colados estes são removidos. Você quer colar os dados sem os objetos "
+"incompletos?"
+
 msgid "For selected objects only"
 msgstr "Apenas para objetos selecionados"
 
@@ -7941,7 +7935,7 @@ msgid "Set number of recently added tags"
 msgstr "Defina o número de tags adicionadas recentemente"
 
 msgid "Remember last used tags after a restart"
-msgstr "Lembrar das últimas tags usadas antes do restar"
+msgstr "Lembrar das últimas tags usadas após reiniciar"
 
 msgid "Recent tags with existing key"
 msgstr ""
@@ -8276,13 +8270,6 @@ msgstr "Mover os membros selecionados para cima"
 msgid "Apply the updates and close the dialog"
 msgstr "Aplicar atualizações e fechar aviso"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Os itens que você deseja colar não podem ser adicionados porque eles não "
-"estão incluídos na camada atual"
-
 msgid "Relation Editor: Refresh"
 msgstr "Relação editor: Atualizar"
 
@@ -9976,17 +9963,6 @@ 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 ""
-"Para adicionar outra camada você precisa alocar pelo menos {0,number,#}MB de "
-"memória para o JOSM usando -Xmx{0,number,#}M opção (veja "
-"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
-"Atualmente você tem {1,number,#}MB de memória alocada para o JOSM"
-
 msgid "All projections are supported"
 msgstr "Todas as projecções são suportadas"
 
@@ -9994,7 +9970,7 @@ msgid "The layer {0} does not support the new projection {1}."
 msgstr ""
 
 msgid "Supported projections are: {0}"
-msgstr ""
+msgstr "Projeções suportadas são {0}"
 
 msgid "Change the projection again or remove the layer."
 msgstr ""
@@ -10002,6 +9978,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Salvar Camada"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} nota"
+msgstr[1] "{0} notas"
+
 msgid "Notes layer"
 msgstr "Ccamada de notas"
 
@@ -10535,7 +10516,7 @@ msgid "No imagery layers"
 msgstr "Nenhuma camada de imagens"
 
 msgid "HDOP"
-msgstr ""
+msgstr "HDOP"
 
 msgid "Time"
 msgstr "Tempo"
@@ -11462,7 +11443,7 @@ msgstr ""
 "que deseja continuar?"
 
 msgid "Load profile"
-msgstr "Perfil de carga"
+msgstr "Carregar perfil"
 
 msgid "Save {0} profile"
 msgstr "Salvar {0} perfil"
@@ -12176,7 +12157,7 @@ msgid "Imagery Preferences"
 msgstr "Preferências das imagens"
 
 msgid "Modify list of imagery layers displayed in the Imagery menu"
-msgstr "Modifica a lista de camadas imagery exibidas no menu do Imagery"
+msgstr "Modifica a lista de camadas de imagens exibida no menu Camadas"
 
 msgid "Common Settings"
 msgstr "Configurações comuns"
@@ -13652,6 +13633,9 @@ msgstr ""
 "Falha ao abrir o arquivo com extensão ''{2}'' e namepart ''{3}'' no arquivo "
 "zip ''{0}''. A exceção foi: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "A URL requisitada {0} não foi encontrada"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Falha ao renomerar arquivo {0} para {1}."
 
@@ -14523,6 +14507,9 @@ msgstr "Você quer permitir isto?"
 msgid "Confirm Remote Control action"
 msgstr "Confirmar ação do Controle remoto"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15416,6 +15403,18 @@ msgstr ""
 "<br><strong>Download falhará</strong>se você tentou baixar este "
 "objeto.<br><br>A mensagem de erro é: <br>{0}</html>"
 
+msgid "latitude"
+msgstr "latitude"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL não contém válido {0}"
+
+msgid "longitude"
+msgstr "longitude"
+
+msgid "zoom"
+msgstr "zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15451,6 +15450,17 @@ msgstr ""
 "Falha ao acessar o diretório ''{0}'' por razões de segurança. A exceção foi: "
 "{1}"
 
+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 adicionar outra camada você precisa alocar pelo menos {0,number,#}MB de "
+"memória para o JOSM usando -Xmx{0,number,#}M opção (veja "
+"http://forum.openstreetmap.org/viewtopic.php?id=25677).\n"
+"Atualmente você tem {1,number,#}MB de memória alocada para o JOSM"
+
 msgid "{0}... [please type its number]"
 msgstr "{0} ... [por favor digite o seu número]"
 
@@ -15464,21 +15474,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Abrindo URL: {0}"
 
-msgid "zoom"
-msgstr "zoom"
-
-msgid "latitude"
-msgstr "latitude"
-
-msgid "longitude"
-msgstr "longitude"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL não contem {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL não contém válido {0}"
-
 msgid "reserved"
 msgstr "reservado"
 
@@ -15655,83 +15653,81 @@ msgstr "Ignorando geometria mal formada: {0}"
 msgid "Failed to load XML schema."
 msgstr "Falhou ao carregar esquema XML."
 
-msgid "Do nothing"
-msgstr "Não fazer nada"
-
-msgid "Report Bug"
-msgstr "Relatar um Erro"
+msgid "You have encountered a bug in JOSM"
+msgstr "Você encontrou um bug no JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Uma exceção inesperada aconteceu.<br>Este problema é sempre por erro no "
-"código do programa. Se você estiver executando a última<br>versão do JOSM, "
-"por favor, seja gentil e redija um relatório de erro."
 
-msgid "Update JOSM"
-msgstr "Atualize o JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr "Enviar relatório de erro"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Ocorreu uma exceção inesperada. As veses é um erro de codificação. "
-"<br><br>No entanto, você está executando uma versão antiga do JOSM "
-"({0}),<br>em vez de usar a versão testada atual (<b>{1}</b>).<br> <br><b>Por "
-"favor, atualize o JOSM</b>, antes de considerar a apresentação de um "
-"relatório de bug."
+
+msgid "Report Bug"
+msgstr "Relatar um Erro"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Suprimir novos diálogos de erro para esta sessão."
 
-msgid "Unexpected Exception"
-msgstr "Exceção Inesperada"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Você encontrou um bug no JOSM"
+msgid "Ignore this error."
+msgstr "Ignorar este erro"
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Você encontrou um erro no JOSM. Antes de enviar um relatório de bug "
-"certifique-se de ter atualizado para a última versão do JOSM aqui:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Você também deve atualizar seus plugins. Se nenhum dos dois ajudar, por "
-"favor, relate um bug no nosso bugtracker usando este link:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"A informação de erro fornecida abaixo já deve estar preenchida para você. "
-"Por favor, inclua informações sobre como reproduzir o erro e tente fornecer "
-"o máximo de detalhes possíveis."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Sua versão atual do JOSM é {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "O JOSM está procurando por atualizações..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
-"Alternativamente, se isso não funcionar, você pode preencher manualmente as "
-"informações abaixo na seguinte URL:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(O texto já foi copiado para a Área de Transferência)"
+msgid "JOSM is up to date."
+msgstr "O JOSM está atualizado"
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
+"O JOSM está desatualizado. A versão atual é {0}. Tente atualizar o JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Atualize o JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -16075,17 +16071,14 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Satélite Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
 msgid "OpenSeaMap"
-msgstr ""
+msgstr "OpenSeaMap"
 
 msgid "OpenStreetMap Carto (Standard layer)"
-msgstr ""
+msgstr "OpenStreetMap Carto (camada padrãp)"
 
 msgid "OpenStreetMap (Mapnik Black & White)"
 msgstr "OpenStreetMap (Mapnik Branco & Preto)"
@@ -16094,7 +16087,7 @@ msgid "OpenStreetMap (Mapnik, no labels)"
 msgstr "OpenStreetMap (Mapnik, sem etiquetas)"
 
 msgid "OpenStreetMap (French Style)"
-msgstr ""
+msgstr "OpenStreetMap (estilo francês)"
 
 msgid "OpenStreetMap (German Style)"
 msgstr "OpenStreetMap (German Style)"
@@ -16102,9 +16095,6 @@ msgstr "OpenStreetMap (German Style)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Traces"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Transportes Públicos (ÖPNV)"
 
@@ -16126,7 +16116,7 @@ msgstr "Strava cycling heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava running heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -16177,8 +16167,11 @@ msgstr "OSM Inspector: Endereços"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Fronteiras (UE)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
+msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI black-and-white 2.5m"
@@ -16252,8 +16245,11 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV (laanderen) imagens aéreas (cobre a região de Bruxelas também)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -17387,7 +17383,7 @@ msgstr ""
 "quando alguém chegar perto."
 
 msgid "Allows you to view a GeoJSON file as a layer."
-msgstr ""
+msgstr "Permite visualizar um arquivo GeoJSON como uma camada."
 
 msgid ""
 "Provides parts of the GeoTools library for other JOSM plugins. Not meant to "
@@ -17518,7 +17514,7 @@ msgstr ""
 "plugin."
 
 msgid "Allows the user to work with pictures hosted at mapillary.com"
-msgstr ""
+msgstr "Permite o usuário trabalhar com imagens hospedadas em mapillary.com"
 
 msgid ""
 "Provide a measurement dialog and a layer to measure length and angle of "
@@ -17628,9 +17624,6 @@ msgstr "Ler e escrever arquivos de filtro osmose poly"
 msgid "Adds map printing to JOSM"
 msgstr "Adiciona impressão de mapa para o JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "acrescenta projeções de Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17809,8 +17802,10 @@ msgstr "Download fácil ao longo de uma longa série de formas interligadas"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Permite procurar de waypoint importados de arquivo GPX."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Simplifica a ligação de objetos OSM para artigos da Wikipédia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Simplifica vincular objetos do OSM a artigos da Wikipedia e itens Wikidata"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18046,17 +18041,21 @@ msgstr "travessão"
 msgid "Electrified"
 msgstr "Eletrificado"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "catenária"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "não"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "sim"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "trilho"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "Voltagem em volts (V)"
@@ -18104,9 +18103,15 @@ msgstr "Horário de Funcionamento"
 msgid "Wheelchairs"
 msgstr "Cadeirante"
 
+msgid "yes"
+msgstr "sim"
+
 msgid "limited"
 msgstr "limitado"
 
+msgid "no"
+msgstr "não"
+
 msgid "Brand"
 msgstr "Marca"
 
@@ -18519,8 +18524,8 @@ msgstr "florestal"
 msgid "Population"
 msgstr "População"
 
-msgid "Post code"
-msgstr "CEP"
+msgid "Postal Code"
+msgstr "Código postal"
 
 msgid "Website"
 msgstr "Website"
@@ -18686,15 +18691,6 @@ msgstr "xiismo"
 msgid "sunni"
 msgstr "sunismo"
 
-msgid "high"
-msgstr "alto"
-
-msgid "medium"
-msgstr "médio"
-
-msgid "low"
-msgstr "baixa"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -18989,7 +18985,7 @@ msgid "Tertiary Link"
 msgstr "Ligação Terciária"
 
 msgid "Unclassified"
-msgstr "Minoritária"
+msgstr "Via Local ou Estrada Vicinal"
 
 msgid "Street has no name"
 msgstr "A rua não tem nome"
@@ -20285,6 +20281,9 @@ msgstr "Metrô"
 msgid "Tram"
 msgstr "Bonde/VLT"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Ônibus Guiado"
 
@@ -20503,7 +20502,7 @@ msgid "UTA"
 msgstr "UTA"
 
 msgid "Charging Station"
-msgstr "Estação de carregamento"
+msgstr "Eletroposto"
 
 msgid "Voltage"
 msgstr "Voltagem"
@@ -20790,9 +20789,6 @@ msgstr "Trólebus"
 msgid "Share taxi"
 msgstr "Táxi compartilhado"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Balsa"
 
@@ -21999,6 +21995,9 @@ msgstr "Estádio"
 msgid "Sports Centre"
 msgstr "Centro de Esportes"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Campo"
 
@@ -22085,6 +22084,10 @@ msgid "sports_centre"
 msgstr "centro de esportes"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "estádio"
 
@@ -22141,6 +22144,9 @@ msgstr "Corrida de cavalo"
 msgid "Gymnastics"
 msgstr "Ginástica"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23999,6 +24005,15 @@ msgstr "Tabacaria"
 msgid "Hairdresser/Barber"
 msgstr "Cabeleireiro/Barbeiro"
 
+msgid "Female"
+msgstr "Feminino"
+
+msgid "Male"
+msgstr "Masculino"
+
+msgid "Unisex"
+msgstr "Unissex"
+
 msgid "Tattoo"
 msgstr "Tatuagem"
 
@@ -24098,6 +24113,9 @@ msgstr "sacos para fezes"
 msgid "food"
 msgstr "comida"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -24280,6 +24298,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Governo"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Seguradora"
@@ -24429,9 +24459,6 @@ msgstr "comunidade linguística"
 msgid "ward"
 msgstr "ward"
 
-msgid "Postal Code"
-msgstr "Código postal"
-
 msgid "National Park"
 msgstr "Parque nacional"
 
@@ -24591,6 +24618,18 @@ msgstr "Ilha"
 msgid "Islet"
 msgstr "Ilhota"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr "coral"
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natureza"
 
@@ -24949,6 +24988,9 @@ msgstr "Nome do lugar"
 msgid "City name"
 msgstr "Cidade"
 
+msgid "Post code"
+msgstr "CEP"
+
 msgid "Country code"
 msgstr "Código do país"
 
@@ -25440,7 +25482,7 @@ msgid "Railway Route"
 msgstr "Itinerário ferroviário"
 
 msgid "Road Route"
-msgstr "Rota da estrada"
+msgstr "Rota de Estrada"
 
 msgid "Route Network"
 msgstr "Rota da Rede"
@@ -25670,6 +25712,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} junto com {1} e {2}. Remover {1} e {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} está obsoleta"
 
@@ -25823,7 +25868,7 @@ msgid "{0} on a small area"
 msgstr ""
 
 msgid "Too large building"
-msgstr ""
+msgstr "Prédio muito grande"
 
 msgid ""
 "Node connects a power line or cable with an object which is not related to "
@@ -25848,7 +25893,7 @@ msgid "wrong crossing tag on a way"
 msgstr "tag crossing errada em uma via"
 
 msgid "Unnamed unclassified highway"
-msgstr "Estrada minoritária sem nome"
+msgstr "Via Local ou Estrada Vicinal sem nome"
 
 msgid "highway without a reference"
 msgstr "highway sem referência"
@@ -27548,6 +27593,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "alto"
+
+msgid "medium"
+msgstr "médio"
+
+msgid "low"
+msgstr "baixa"
+
 msgid "symbol"
 msgstr "símbolo"
 
@@ -28466,10 +28520,10 @@ msgid "Show users on map"
 msgstr "Mostrar usuários no mapa"
 
 msgid "GeoJSON file"
-msgstr ""
+msgstr "Arquivo GeoJSON"
 
 msgid "Loading json file..."
-msgstr ""
+msgstr "Carregando arquivo JSON..."
 
 msgid "Data Layer from GeoJSON: "
 msgstr ""
@@ -29842,7 +29896,7 @@ msgid "Mapillary changeset"
 msgstr ""
 
 msgid "Submit"
-msgstr ""
+msgstr "Enviar"
 
 msgid "Export all images"
 msgstr "Exportar todas as imagens"
@@ -30048,6 +30102,15 @@ msgstr[1] "Viradas {0} imagens"
 msgid "2 images unjoined"
 msgstr "2 imagens se separaram"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31527,18 +31590,6 @@ msgstr "Impressão pausada"
 msgid "Printing has failed."
 msgstr "Impressão falhou."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} selecionado"
-
-msgid "Selected: {0}"
-msgstr "Selecionado: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J Plugin"
-
-msgid "Code"
-msgstr "Código"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31582,6 +31633,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31607,6 +31668,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31616,6 +31701,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "trilho"
+
 msgid "Can''t parse a time from this string."
 msgstr "Não é possível interpretar um tempo desta string."
 
@@ -32070,7 +32158,7 @@ msgid "Revert selection and restore deleted objects"
 msgstr "Reverter seleção e restaurar objetos apagados"
 
 msgid "Revert changeset"
-msgstr "Reverter Conjunto de Mudanças"
+msgstr "Reverter conjunto(s) de mudanças"
 
 msgid "Revert"
 msgstr "Reverter"
@@ -32776,7 +32864,7 @@ msgid "~.02"
 msgstr "~.02"
 
 msgid "Tasks"
-msgstr ""
+msgstr "Tarefas"
 
 msgid "Config"
 msgstr ""
@@ -32812,6 +32900,9 @@ msgstr "Algo deu errado, tente novamente"
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Não é possível colocar um nó fora do mundo."
 
@@ -34246,7 +34337,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "The first selected object ''{0}'' is not part of any relation"
-msgstr ""
+msgstr "O primeiro objeto selecionado ''{0}'' não faz parte da relação"
 
 msgid "Range of child primitives count"
 msgstr "Contagem do intervalo de filhos primitivos"
@@ -34630,6 +34721,12 @@ msgid ""
 msgstr ""
 "Obtém links interwik de Wikipédia, a fim de adicionar várias tags de nome"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34677,9 +34774,6 @@ msgstr "Categoria"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Obtém uma lista de todos os artigos da Wikipédia de uma categoria"
 
-msgid "Enter the Wikipedia category"
-msgstr "Insira a categoria no Wikipédia"
-
 msgid "Clipboard"
 msgstr "Área de transferência"
 
diff --git a/i18n/po/rm.po b/i18n/po/rm.po
index 47d6356..d42e080 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:00+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:02+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/ro.po b/i18n/po/ro.po
index a664dfc..d049923 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:01+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:03+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "X-Poedit-Country: ROMANIA\n"
 "Language: ro\n"
 "X-Poedit-Language: Romanian\n"
@@ -118,25 +118,6 @@ msgstr "Se ingoră fişierul URL prost format: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametrul \"downloadgps\" nu acceptă nume de fișiere sau URL-uri"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM necesită versiunea Java {0}.</h2>Versiune Java detectată: "
-"{1}.<br>Poți să <ul><li>actualizezi versiunea de Java (JRE) "
-"sau</li><li>folosești o versiune mai veche (compatibilă cu Java {2}) de "
-"JOSM.</li></ul>Mai multe informații:"
-
-msgid "Exit JOSM"
-msgstr "Iesire JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Continuă, încearcă oricum"
-
-msgid "Error"
-msgstr "Eroare"
-
 msgid "About"
 msgstr "Despre"
 
@@ -256,6 +237,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Adaugă strat de fundal {0}"
 
+msgid "Error"
+msgstr "Eroare"
+
 msgid "Select image format for WMS layer"
 msgstr "Alege formatul raster pentru stratul WMS"
 
@@ -542,7 +526,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Duplicare"
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1125,19 +1109,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1146,16 +1124,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Preferinţe..."
 
@@ -1853,6 +1821,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2877,7 +2848,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2930,6 +2901,9 @@ msgstr[2] "de obiecte"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2963,9 +2937,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5629,12 +5600,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5648,6 +5613,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5827,6 +5798,28 @@ msgstr ""
 msgid "New value"
 msgstr "Valoare nouă"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7682,11 +7675,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9172,13 +9160,6 @@ 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 ""
 
@@ -9194,6 +9175,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Salvează Strat"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12481,6 +12467,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13270,6 +13259,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13981,6 +13973,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14007,6 +14011,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14018,21 +14029,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14176,64 +14175,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Nu fă nimic"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Raportează eroarea"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Excepţie netratată"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14567,9 +14580,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14594,9 +14604,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14618,7 +14625,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14669,7 +14676,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14744,7 +14754,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16030,9 +16043,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16171,7 +16181,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16406,15 +16417,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16464,9 +16479,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16879,7 +16900,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -17042,15 +17063,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18617,6 +18629,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19120,9 +19135,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20326,6 +20338,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20412,6 +20427,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20468,6 +20487,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22324,6 +22346,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22423,6 +22454,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22605,6 +22639,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22754,9 +22800,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22912,6 +22955,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23256,6 +23311,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23972,6 +24030,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25653,6 +25714,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27999,6 +28069,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29384,18 +29463,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29439,6 +29506,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29464,6 +29541,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29473,6 +29574,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30614,6 +30718,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32218,6 +32325,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32261,9 +32374,6 @@ msgstr "Categorie"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr "Clipboard"
 
diff --git a/i18n/po/ru.po b/i18n/po/ru.po
index bdd825d..09421c1 100644
--- a/i18n/po/ru.po
+++ b/i18n/po/ru.po
@@ -7,17 +7,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-10 17:59+0000\n"
-"Last-Translator: Nkolay Parukhin <parukhin at gmail.com>\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-03 09:56+0000\n"
+"Last-Translator: Aleksey Kabanov <Unknown>\n"
 "Language-Team: Koptev Oleg <koptev.oleg at gmail.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%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: 2016-07-12 05:01+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:04+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ru_RU\n"
 
 msgid "Use OAuth"
@@ -123,24 +123,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Параметр «downloadgps» не может использовать имена файлов или файловые URL"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM требуется Java версии {0}.</h2>Обнаруженная версия Java: {1}.<br>Вы "
-"можете <ul><li>обновить Java (JRE) или</li><li>использовать предыдущие (Java "
-"{2} совместимые) версии JOSM.</li></ul>Дополнительная информация:"
-
-msgid "Exit JOSM"
-msgstr "Выйти из JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Всё равно продолжить"
-
-msgid "Error"
-msgstr "Ошибка"
-
 msgid "About"
 msgstr "О программе"
 
@@ -260,6 +242,9 @@ msgstr "Выделить на карте объекты, выбранные в 
 msgid "Add imagery layer {0}"
 msgstr "Добавить слой снимка {0}"
 
+msgid "Error"
+msgstr "Ошибка"
+
 msgid "Select image format for WMS layer"
 msgstr "Выберите формат изображения для WMS слоя"
 
@@ -549,8 +534,8 @@ msgstr "Скачать объекты, ссылающиеся на какой-н
 msgid "Duplicate"
 msgstr "Дублировать"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Создать копию выделенного путём Копировать+Вставить."
+msgid "Duplicate selection."
+msgstr "Дублировать выделенное."
 
 msgid "Exit"
 msgstr "Выход"
@@ -1187,22 +1172,14 @@ msgstr "Запрос к Overpass: "
 msgid "Paste"
 msgstr "Вставить"
 
-msgid "Paste contents of paste buffer."
-msgstr "Вставить содержимое буфера."
-
-msgid "Delete incomplete members?"
-msgstr "Удалить неполных участников?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Вставить без неполных участников"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Копируемые данные содержат неполные объекты. При вставке они будут удалены. "
-"Вы хотите вставить данные без неполных объектов?"
 
 msgid "Paste Tags"
 msgstr "Вставить теги"
@@ -1210,18 +1187,6 @@ msgstr "Вставить теги"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Применить теги из буфера ко всем выделенным объектам."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Вставить {0} тег"
-msgstr[1] "Вставить {0} тега"
-msgstr[2] "Вставить {0} тегов"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "в {0} объект"
-msgstr[1] "в {0} объекта"
-msgstr[2] "в {0} объектов"
-
 msgid "Preferences..."
 msgstr "Настройки..."
 
@@ -1978,6 +1943,9 @@ msgstr "Запросить и скачать с сервера пакеты пр
 msgid "Errors during download"
 msgstr "Ошибки при скачивании с сервера"
 
+msgid "Download Geo URL"
+msgstr "Скачать Geo URL"
+
 msgid "Download GPS"
 msgstr "Скачать GPS данные"
 
@@ -3113,8 +3081,8 @@ msgstr "Изменить линию {0}"
 msgid "Change relation {0}"
 msgstr "Изменить отношение {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Изменены точки для {0}"
+msgid "Change nodes of {0}"
+msgstr "Изменить точки {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Удалить \"{0}\" для точки ''{1}''"
@@ -3170,6 +3138,9 @@ msgstr[2] "объектов"
 msgid "Change relation member role for {0} {1}"
 msgstr "Изменить роль участника отношений для {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Удалено {0}"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "DeleteCommand: Чтобы удалить, требуется хотя бы один объект, а получена "
@@ -3208,9 +3179,6 @@ msgstr[0] "Удалить {0} отношение"
 msgstr[1] "Удалить {0} отношения"
 msgstr[2] "Удалить {0} отношений"
 
-msgid "Deleted ''{0}''"
-msgstr "Удалено {0}"
-
 msgid "Delete confirmation"
 msgstr "Удалить подтверждение"
 
@@ -6111,12 +6079,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Подтверждение объединения"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>отсутствует</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6143,6 +6105,12 @@ msgstr[2] ""
 "нежелательные теги.<br/>Если вы хотите продолжить объединение, будет показан "
 "диалог для исправления конфликтующих тегов.<br/><br/>Хотите продолжить?"
 
+msgid "<i>missing</i>"
+msgstr "<i>отсутствует</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Выберите значение"
 
@@ -6345,6 +6313,32 @@ msgstr "Новый ключ"
 msgid "New value"
 msgstr "Новое значение"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Вставить {0} тег"
+msgstr[1] "Вставить {0} тега"
+msgstr[2] "Вставить {0} тегов"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "в {0} объект"
+msgstr[1] "в {0} объекта"
+msgstr[2] "в {0} объектов"
+
+msgid "Delete incomplete members?"
+msgstr "Удалить неполных участников?"
+
+msgid "Paste without incomplete members"
+msgstr "Вставить без неполных участников"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Копируемые данные содержат неполные объекты. При вставке они будут удалены. "
+"Вы хотите вставить данные без неполных объектов?"
+
 msgid "For selected objects only"
 msgstr "Только для выбранных объектов"
 
@@ -6708,10 +6702,10 @@ msgid "{0} Nodes: "
 msgstr "{0} точек: "
 
 msgid "Bounding box: "
-msgstr "Ограничивающий прямоугольник: "
+msgstr "Ограничивающая рамка: "
 
 msgid "Bounding box (projected): "
-msgstr "ограничивающая рамка (проекция) "
+msgstr "Ограничивающая рамка (проекция) "
 
 msgid "Center of bounding box: "
 msgstr "Центр ограничивающей рамки: "
@@ -8355,13 +8349,6 @@ msgstr "Переместить выделенных участников отн
 msgid "Apply the updates and close the dialog"
 msgstr "Применить обновления и закрыть диалог"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Элементы из буфера обмена не могут быть добавлены потому, что они не "
-"относятся к текущему слою"
-
 msgid "Relation Editor: Refresh"
 msgstr "Редактор отношений: Обновить"
 
@@ -8583,7 +8570,7 @@ msgstr ""
 "область)"
 
 msgid "Bounding Box"
-msgstr "Рамка"
+msgstr "Ограничивающая рамка"
 
 msgid "The string ''{0}'' is not a valid double value."
 msgstr "Строка ''{0}'' не является правильным двойным значением."
@@ -10109,17 +10096,6 @@ 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 "Все проекции поддерживаются"
 
@@ -10135,6 +10111,12 @@ msgstr "Смените проекцию снова или удалите сло
 msgid "Save Layer"
 msgstr "Сохранить слой"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} заметка"
+msgstr[1] "{0} заметки"
+msgstr[2] "{0} заметок"
+
 msgid "Notes layer"
 msgstr "Слой заметок"
 
@@ -13780,6 +13762,9 @@ msgstr ""
 "Не удалось открыть файл с расширением ''{2}'' и именем ''{3}'' в zip-файле "
 "''{0}''. Возникло исключение: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Запрашиваемый URL {0} не найден"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Сбой переименования файла {0} в {1}."
 
@@ -14657,6 +14642,9 @@ msgstr "Разрешить действие?"
 msgid "Confirm Remote Control action"
 msgstr "Подтверждение действия Удалённого управления"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "Следующие ключи являются обязательными, но не были указаны: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15588,6 +15576,18 @@ msgstr ""
 "<strong>Скачка не удалась,</strong> если вы пытались скачать этот "
 "объект.<br><br>Сообщение об ошибке:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "широты"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL не содержит верного значения {0}"
+
+msgid "longitude"
+msgstr "долготы"
+
+msgid "zoom"
+msgstr "масштаба"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15619,6 +15619,17 @@ msgid ""
 msgstr ""
 "Нет доступа к каталогу ''{0}'' по соображениям безопасности. Ошибка: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [пожалуйста, введите его номер]"
 
@@ -15632,21 +15643,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Открытие URL: {0}"
 
-msgid "zoom"
-msgstr "масштаба"
-
-msgid "latitude"
-msgstr "широты"
-
-msgid "longitude"
-msgstr "долготы"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL не содержит {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL не содержит верного значения {0}"
-
 msgid "reserved"
 msgstr "зарезервировано"
 
@@ -15820,83 +15819,92 @@ msgstr "Игнорируем неверную геометрию: {0}"
 msgid "Failed to load XML schema."
 msgstr "Невозможно загрузить XML схему."
 
-msgid "Do nothing"
-msgstr "Ничего не делать"
-
-msgid "Report Bug"
-msgstr "Сообщить об ошибке"
+msgid "You have encountered a bug in JOSM"
+msgstr "Вы столкнулись с ошибкой в JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Произошла неожиданная ошибка.<br>Это всегда ошибка программирования. Если вы "
-"пользуетесь последней<br>версией JOSM - не сочтите за труд, заполните, "
-"пожалуйста, заявку на исправление ошибки (trac)."
+"Возникла непредвиденная исключительная ситуация.\n"
+"Это всегда ошибка программирования. Если у вас самая новая версия JOSM, "
+"отправьте, пожалуйста, отчёт об этой ошибке."
 
-msgid "Update JOSM"
-msgstr "Обновить JOSM"
+msgid "Debug information"
+msgstr "Отладочная информация"
+
+msgid "Manually report at:"
+msgstr "Отправить отчёт вручную на:"
+
+msgid "Is JOSM up to date?"
+msgstr "У вас последняя версия JOSM?"
+
+msgid "Send bug report"
+msgstr "Отправить отчёт об ошибке"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Возникло непредвиденная исключительная ситуация. Это всегда ошибка "
-"программирования. <br><br>Но у вас старая версия JOSM ({0}),<br>а не текущая "
-"стабильная версия (<b>{1}</b>).<br><br><b>Пожалуйста, обновите JOSM</b> "
-"перед тем, как примете решение об отправке отчёта об ошибке."
+"Если у вас самая новая версия JOSM и модулей, отправьте, пожалуйста, отчёт "
+"об ошибке в нашу систему отслеживания ошибок.\n"
+"Некоторая информация об ошибке должна быть включена в отчёт автоматически. "
+"Добавьте сведения о том, как воспроизвести ошибку и постарайтесь указать как "
+"можно больше подробностей."
+
+msgid "Report Bug"
+msgstr "Сообщить об ошибке"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Больше не показывать ошибки в этой сессии"
 
-msgid "Unexpected Exception"
-msgstr "Неожиданная ошибка"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Вы столкнулись с ошибкой в JOSM"
+msgid "Ignore this error."
+msgstr "Игнорировать эту ошибку."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Вы обнаружили ошибку в JOSM. Прежде чем вы сообщите нам о ней, проверьте что "
-"вы работаете на последней версии JOSM здесь:"
+"Не удалось открыть отчёт об ошибке. Пожалуйста, сообщите о ней вручную на "
+"этом веб-сайте:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Вы также должны обновить и модули. Если и это не поможет, сообщите нам об "
-"обнаруженной ошибке, воспользовавшись следующей ссылкой:"
+msgid "Include the system status report."
+msgstr "Включить отчет о состоянии системы."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"Представленная ниже информация об ошибке уже подготовлена для Вас. "
-"Пожалуйста, добавьте информацию о том, как можно воспроизвести эту ошибку и "
-"постарайтесь описать её как можно подробней."
+msgid "Include information about the data you were working on."
+msgstr "Включить информацию о данных, с которыми вы работали."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr "Включить все трассировки стека."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ваша текущая версия JOSM: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM выполняет поиск обновлений..."
+
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
-"Как альтернатива, если это не работает, вы можете вручную вписать информацию "
-"ниже, по этому URL:"
+"Произошла ошибка при проверке актуальности версии вашего экземпляра JOSM."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Текст уже скопирован в буфер обмена)"
+msgid "JOSM is up to date."
+msgstr "У вас самая новая версия JOSM."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr "Ваш JOSM устарел. Текущая версия — {0}. Рекомендуем обновить JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Не удалось открыть отчёт об ошибке. Пожалуйста, сообщите о ней вручную на "
-"этом веб-сайте:"
+"Перед отправкой отчёта об ошибке убедитесь, что вы обновили JOSM до самой "
+"новой версии, здесь:"
+
+msgid "Update JOSM"
+msgstr "Обновить JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16243,9 +16251,6 @@ msgstr "HDM (команда по созданию карт гуманитарн
 msgid "Mapbox Satellite"
 msgstr "Спутниковые снимки Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16270,9 +16275,6 @@ msgstr "OpenStreetMap (немецкий стиль)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "GPS-треки OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Общественный транспорт (ÖPNV)"
 
@@ -16294,8 +16296,8 @@ msgstr "Теплокарта Strava для велосипедистов"
 msgid "Strava running heatmap"
 msgstr "Теплокарта Strava для бегунов"
 
-msgid "Strava both heatmap"
-msgstr "Теплокарта Strava (оба вида)"
+msgid "Strava cycling and running heatmap"
+msgstr "Теплокарта Strava для велосипедистов и бегунов"
 
 msgid "Locator Overlay"
 msgstr "MapBox Locator (оверлей)"
@@ -16345,8 +16347,11 @@ msgstr "OSM Inspector: адреса"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: границы (ЕС)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Национальный географический институт Аргентины (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Аргентина (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Аргентина (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI черно-белая 2.5м"
@@ -16420,8 +16425,11 @@ msgstr "VoGIS: план зонирования"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: высоты и рельеф местности"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) - аэрофотосъёмка (покрывает также регион Брюсселя)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Фландрия) самые новые аэрофотоснимки (зима)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV аэрофото 10 см 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr - цифровое изображение (2013)"
@@ -17796,9 +17804,6 @@ msgstr "Чтение и запись файлов osmosis poly"
 msgid "Adds map printing to JOSM"
 msgstr "Добавляет возможность распечатки карты в JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "Добавляет проекции из Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17979,8 +17984,11 @@ msgstr "Быстрое скачивание вдоль большого набо
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Поиск по путевым точкам, импортированным из файлов gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Упрощает связывание объектов OSM со статьями Wikipedia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Упрощает связывание объектов OSM со статьями Википедии и элементами "
+"викиданных"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18217,17 +18225,21 @@ msgstr "стрелочный съезд"
 msgid "Electrified"
 msgstr "Электрифицированная"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr "контактный провод"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "нет"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "да"
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "рельс"
+msgstr "контактный рельс"
 
 msgid "Voltage in Volts (V)"
 msgstr "Напряжение в вольтах (В)"
@@ -18275,9 +18287,15 @@ msgstr "Часы работы"
 msgid "Wheelchairs"
 msgstr "Инвалидные коляски"
 
+msgid "yes"
+msgstr "да"
+
 msgid "limited"
 msgstr "ограничено"
 
+msgid "no"
+msgstr "нет"
+
 msgid "Brand"
 msgstr "Бренд"
 
@@ -18690,7 +18708,7 @@ msgstr "лесничество"
 msgid "Population"
 msgstr "Население"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Почтовый индекс"
 
 msgid "Website"
@@ -18857,15 +18875,6 @@ msgstr "шииты"
 msgid "sunni"
 msgstr "сунниты"
 
-msgid "high"
-msgstr "высокое"
-
-msgid "medium"
-msgstr "среднее"
-
-msgid "low"
-msgstr "низкое"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20458,6 +20467,9 @@ msgstr "Метрополитен"
 msgid "Tram"
 msgstr "Трамвайная линия"
 
+msgid "Funicular"
+msgstr "Фуникулёр"
+
 msgid "Bus Guideway"
 msgstr "Автобусные рельсы"
 
@@ -20965,9 +20977,6 @@ msgstr "Троллейбус"
 msgid "Share taxi"
 msgstr "Маршрутное такси"
 
-msgid "Funicular"
-msgstr "Фуникулёр"
-
 msgid "Ferry"
 msgstr "Паром"
 
@@ -22171,6 +22180,9 @@ msgstr "Стадион"
 msgid "Sports Centre"
 msgstr "Спортивный центр"
 
+msgid "Fitness Centre"
+msgstr "Фитнес-центр"
+
 msgid "Pitch"
 msgstr "Спортивное поле"
 
@@ -22257,6 +22269,10 @@ msgid "sports_centre"
 msgstr "спортивный центр"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "фитнес-центр"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "стадион"
 
@@ -22313,6 +22329,9 @@ msgstr "Лошадиные бега"
 msgid "Gymnastics"
 msgstr "Гимнастика"
 
+msgid "fitness_centre"
+msgstr "фитнес-центр"
+
 msgid "Ice Skating"
 msgstr "Катание на коньках"
 
@@ -24171,6 +24190,15 @@ msgstr "Табачные изделия"
 msgid "Hairdresser/Barber"
 msgstr "Парикмахерская"
 
+msgid "Female"
+msgstr "Женский"
+
+msgid "Male"
+msgstr "Мужской"
+
+msgid "Unisex"
+msgstr "Оба пола"
+
 msgid "Tattoo"
 msgstr "Татуировка"
 
@@ -24270,6 +24298,9 @@ msgstr "пакеты для экскрементов"
 msgid "food"
 msgstr "продукты питания"
 
+msgid "milk"
+msgstr "молоко"
+
 msgid "newspapers"
 msgstr "газеты"
 
@@ -24452,6 +24483,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Государственное учреждение"
 
+msgid "ministry"
+msgstr "министерство"
+
+msgid "prosecutor"
+msgstr "прокуратура"
+
+msgid "tax"
+msgstr "налоговая"
+
+msgid "register_office"
+msgstr "ЗАГС"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Страховая компания"
@@ -24601,9 +24644,6 @@ msgstr "языковое сообщество"
 msgid "ward"
 msgstr "административный район (ward)"
 
-msgid "Postal Code"
-msgstr "Почтовый индекс"
-
 msgid "National Park"
 msgstr "Национальный парк"
 
@@ -24763,6 +24803,18 @@ msgstr "Остров"
 msgid "Islet"
 msgstr "Островок"
 
+msgid "Reef"
+msgstr "Риф"
+
+msgid "coral"
+msgstr "коралловый"
+
+msgid "oyster"
+msgstr "устричный"
+
+msgid "rock"
+msgstr "скальный"
+
 msgid "Nature"
 msgstr "Природа"
 
@@ -25120,6 +25172,9 @@ msgstr "Название места"
 msgid "City name"
 msgstr "Город"
 
+msgid "Post code"
+msgstr "Почтовый индекс"
+
 msgid "Country code"
 msgstr "Код страны"
 
@@ -25846,6 +25901,9 @@ msgstr ""
 "Удалите {1} или добавьте тег tunnel, если это применимо. Проверьте также "
 "пересекающие водный путь мосты и их теги {1}."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} вместе с {1} и {2}. Удалите {1} и {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} устарел"
 
@@ -27733,6 +27791,15 @@ msgstr "50 м"
 msgid "100 m"
 msgstr "100 м"
 
+msgid "high"
+msgstr "высокое"
+
+msgid "medium"
+msgstr "среднее"
+
+msgid "low"
+msgstr "низкое"
+
 msgid "symbol"
 msgstr "символ"
 
@@ -29437,7 +29504,7 @@ msgid "Structure type:"
 msgstr "Тип структуры:"
 
 msgid "Offset into background:"
-msgstr ""
+msgstr "Смещение относительно подложки:"
 
 msgid "Indoor Mapping Helper"
 msgstr "Помощник рисования внутренних помещений"
@@ -30017,7 +30084,7 @@ msgid "Current Mapillary changeset"
 msgstr "Текущий  пакет правок Mapillary"
 
 msgid "Open Mapillary changeset dialog"
-msgstr ""
+msgstr "Открыть диалог пакета правок Mapillary"
 
 msgid "Mapillary changeset"
 msgstr "Пакет правок Mapillary"
@@ -30234,6 +30301,15 @@ msgstr[2] "Повёрнуто {0} изображений"
 msgid "2 images unjoined"
 msgstr "2 снимка разъединены"
 
+msgid "everything in the visible area"
+msgstr "всё в видимой области"
+
+msgid "areas with downloaded OSM-data"
+msgstr "области со скачанными данными OSM"
+
+msgid "only when manually requested"
+msgstr "только при запросе вручную"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31706,18 +31782,6 @@ msgstr "Печать остановлена"
 msgid "Printing has failed."
 msgstr "Сбой печати."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} выбрано"
-
-msgid "Selected: {0}"
-msgstr "Выбрано: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Модуль Proj4J"
-
-msgid "Code"
-msgstr "Код"
-
 msgid "Add stop position"
 msgstr "Добавить позицию остановки"
 
@@ -31762,14 +31826,24 @@ msgid "PT_Assistant Proceed Request"
 msgstr "Запрос следующего действия PT_Assistant"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr ""
+msgstr "ОТ: Stop_position не принадлежит линии маршрута"
 
 msgid "PT: Platform should not be part of a way"
+msgstr "ОТ: Platform не должна принадлежать линии маршрута"
+
+msgid "PT: Stop position or platform is not part of a stop area relation"
 msgstr ""
 
-msgid "Public Transport Assistant tests"
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
 msgstr ""
 
+msgid "PT_Assistant Message"
+msgstr "Сообщение PT_Assistant"
+
+msgid "Public Transport Assistant tests"
+msgstr "Тесты помощника создания маршрутов ОТ"
+
 msgid ""
 "Check if route relations are compatible with public transport version 2"
 msgstr ""
@@ -31794,6 +31868,30 @@ msgstr "ОТ: Маршрут должен начинаться и заканчи
 msgid "PT: First or last way needs to be split"
 msgstr "ОТ:  Первую или последнюю линию требуется разделить"
 
+msgid "PT: Problem in the route segment"
+msgstr "ОТ: Проблема в сегменте маршрута"
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 "ОТ: Тип маршрута не соответствует типу дороги, по которой он проходит"
@@ -31806,6 +31904,9 @@ msgstr ""
 "ОТ: Маршрут проходит по дороге с односторонним движением в обратном "
 "направлении"
 
+msgid "rail"
+msgstr "рельс"
+
 msgid "Can''t parse a time from this string."
 msgstr "Невозможно разобрать время из этой последовательности."
 
@@ -32991,6 +33092,9 @@ msgstr "Что-то пошло не так, попробуйте ещё раз"
 msgid "No change to upload!"
 msgstr "Нет изменений для передачи на сервер!"
 
+msgid "The bounding box is too big."
+msgstr "Ограничивающая рамка слишком велика."
+
 msgid "Cannot place a node outside of the world."
 msgstr "Не удается поместить точку за пределами мира"
 
@@ -34806,10 +34910,10 @@ msgstr[1] "Перезаписать теги ''{0}''  {1} из {2} новым з
 msgstr[2] "Перезаписать теги ''{0}''  {1} из {2} новым значением ''{3}''?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Поиск элементов Викиданных"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Целевой ключ: "
 
 msgid "Add names from Wikipedia"
 msgstr "Добавить названия из Википедии"
@@ -34819,6 +34923,12 @@ msgid ""
 msgstr ""
 "Получить интервики-ссылки из Википедии для добавления нескольких тегов name"
 
+msgid "Search Wikipedia category"
+msgstr "Поиск категории Википедии"
+
+msgid "Load category"
+msgstr "Загрузка категории"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34868,9 +34978,6 @@ msgstr "Категория"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Получение списка всех статей категории из Википедии"
 
-msgid "Enter the Wikipedia category"
-msgstr "Введите категорию Википедии"
-
 msgid "Clipboard"
 msgstr "Буфер обмена"
 
diff --git a/i18n/po/sk.po b/i18n/po/sk.po
index 7e0a3d9..82d42e1 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-11 22:33+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-04 18:50+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: 2016-07-12 05:03+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:05+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: sk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -116,24 +116,6 @@ msgstr ""
 "Hodnota parametra \"downloadgps\" nesmie byť názov súboru, ani URL adresa "
 "súboru"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM vyžaduje Java verziu {0}.</h2>Nájdená Java verzia: {1}.<br>Môžete "
-"<ul><li>aktualizovať Java (JRE) alebo</li><li>použiť staršiu verziu "
-"(kompatibilnú s Java {2}) verziu JOSM.</li></ul>Viac informácií:"
-
-msgid "Exit JOSM"
-msgstr "Ukončiť JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Pokračovať, skúsiť aj tak"
-
-msgid "Error"
-msgstr "Chyba"
-
 msgid "About"
 msgstr "O programe"
 
@@ -254,6 +236,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Pridať vrstvu mapového podkladu {0}"
 
+msgid "Error"
+msgstr "Chyba"
+
 msgid "Select image format for WMS layer"
 msgstr "Zvoľte formát obrázkov pre vrstvu WMS"
 
@@ -543,8 +528,8 @@ msgstr "Stiahnuť objekty s odkazom na jeden z vybraných objektov"
 msgid "Duplicate"
 msgstr "Duplikovať"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplikovať výber kopírovaním a vložením."
+msgid "Duplicate selection."
+msgstr "Duplicitný výber."
 
 msgid "Exit"
 msgstr "Koniec"
@@ -1166,22 +1151,14 @@ msgstr "Overpass požiadavka: "
 msgid "Paste"
 msgstr "Vložiť"
 
-msgid "Paste contents of paste buffer."
-msgstr "Vložiť obsah schránky."
-
-msgid "Delete incomplete members?"
-msgstr "Vymazať nekompletné členy?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Vložiť bez neúplných členov"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Kopírované údaje obsahujú neúplné objekty. Pri vkladaní neúplné objekty budú "
-"odstránené. Chcete vložiť dáta bez neúplných objektov?"
 
 msgid "Paste Tags"
 msgstr "Vložiť vlastnosti"
@@ -1189,18 +1166,6 @@ msgstr "Vložiť vlastnosti"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Použiť značky objektov v schránke na všetky zvolené objekty."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Vkladanie {0} značiek"
-msgstr[1] "Vkladanie {0} značky"
-msgstr[2] "Vkladanie {0} značiek"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "do {0} objektov"
-msgstr[1] "do {0} objektu"
-msgstr[2] "do {0} objektov"
-
 msgid "Preferences..."
 msgstr "Nastavenia..."
 
@@ -1954,6 +1919,9 @@ msgstr "Požiadavka a sťahovanie zmenových súborov ..."
 msgid "Errors during download"
 msgstr "Chyby počas sťahovania"
 
+msgid "Download Geo URL"
+msgstr "Stiahnuť Geo URL"
+
 msgid "Download GPS"
 msgstr "Stiahnuť GPS"
 
@@ -3073,8 +3041,8 @@ msgstr "Zmeniť cestu {0}"
 msgid "Change relation {0}"
 msgstr "Zmeniť reláciu {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Zmenili sa body {0}"
+msgid "Change nodes of {0}"
+msgstr "Zmeniť body {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Odstrániť \"{0}\" z bodu ''{1}''"
@@ -3130,6 +3098,9 @@ msgstr[2] "objekty"
 msgid "Change relation member role for {0} {1}"
 msgstr "Zmena funkcie člena relácie pre {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Vymazané ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 "Prázdna množina objektov, na zmazanie je potrebné vybrať aspoň jeden objekt"
@@ -3167,9 +3138,6 @@ msgstr[0] "Zmazať {0} relácií"
 msgstr[1] "Zmazať {0} reláciu"
 msgstr[2] "Zmazať {0} relácie"
 
-msgid "Deleted ''{0}''"
-msgstr "Vymazané ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Potvrdiť odstránenie"
 
@@ -6059,12 +6027,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Potvrdenie spájania"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>missing</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6091,6 +6053,12 @@ msgstr[2] ""
 "obsahovať nechcené značky.<br/>Ak budete pokračovať, zobrazí sa Vám okno na "
 "opravu konfliktných značiek.<br/><br/>Chcete pokračovať?"
 
+msgid "<i>missing</i>"
+msgstr "<i>missing</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Vybrať hodnotu"
 
@@ -6292,6 +6260,32 @@ msgstr "Nový kľúč"
 msgid "New value"
 msgstr "Nová hodnota"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Vkladanie {0} značiek"
+msgstr[1] "Vkladanie {0} značky"
+msgstr[2] "Vkladanie {0} značiek"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "do {0} objektov"
+msgstr[1] "do {0} objektu"
+msgstr[2] "do {0} objektov"
+
+msgid "Delete incomplete members?"
+msgstr "Vymazať nekompletné členy?"
+
+msgid "Paste without incomplete members"
+msgstr "Vložiť bez neúplných členov"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Kopírované údaje obsahujú neúplné objekty. Pri vkladaní neúplné objekty budú "
+"odstránené. Chcete vložiť dáta bez neúplných objektov?"
+
 msgid "For selected objects only"
 msgstr "Len pre označené objekty"
 
@@ -8300,13 +8294,6 @@ msgstr "Posunúť vybrané členy nahor"
 msgid "Apply the updates and close the dialog"
 msgstr "Použiť aktualizácie a zavrieť dialógové okno"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Členy zo schránky nie je možné pridať, pretože nie sú zahrnuté do aktuálnej "
-"vrstvy"
-
 msgid "Relation Editor: Refresh"
 msgstr "Editor relácií: Aktualizovať"
 
@@ -10017,17 +10004,6 @@ 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é"
 
@@ -10043,6 +10019,12 @@ msgstr "Zmeňte znovu projekciu alebo odstráňte vrtvu."
 msgid "Save Layer"
 msgstr "Uložiť vrstvu"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} poznámok"
+msgstr[1] "{0} poznámka"
+msgstr[2] "{0} poznámky"
+
 msgid "Notes layer"
 msgstr "Vrstva poznámok"
 
@@ -13693,6 +13675,9 @@ msgstr ""
 "Nepodarilo sa otvoriť súbor s príponou \"{2}\" a názvom \"{3}\" v zip súbore "
 "\"{0}\". Výnimka bola: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Požadovaná adresa URL {0} sa nenašla"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Nepodarilo sa premenovať súbor {0} na {1}."
 
@@ -14582,6 +14567,9 @@ msgstr "Chcete toto povoliť?"
 msgid "Confirm Remote Control action"
 msgstr "Potvrdiť činnosť vzdialenej kontroly"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "Nasledovné kľúče sú povinné, ale neboli uvedené: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15512,6 +15500,18 @@ msgstr ""
 "objekt.<br> <strong>Nahrávanie je neúspešné</strong>, ak ste sa snažili "
 "nahrať tento objekt.<br><br>Chybová správa je:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "zemepisná šírka"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL neobsahuje platné {0}"
+
+msgid "longitude"
+msgstr "zemepisná dĺžka"
+
+msgid "zoom"
+msgstr "priblíženie"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15546,6 +15546,17 @@ msgstr ""
 "Nepodarilo sa pristúpiť k adresáru \"{0}\" z bezpečnostných dôvodov. Výnimka "
 "bola: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}... [prosím, zadajte svoje číslo]"
 
@@ -15559,21 +15570,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Otvára sa URL: {0}"
 
-msgid "zoom"
-msgstr "priblíženie"
-
-msgid "latitude"
-msgstr "zemepisná šírka"
-
-msgid "longitude"
-msgstr "zemepisná dĺžka"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL neobsahuje {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL neobsahuje platné {0}"
-
 msgid "reserved"
 msgstr "rezervované"
 
@@ -15745,82 +15744,89 @@ msgstr "Ignorujem geometriu chybného tvaru: {0}"
 msgid "Failed to load XML schema."
 msgstr "Nepodarilo sa načítať XML schémy."
 
-msgid "Do nothing"
-msgstr "Neurobiť nič"
-
-msgid "Report Bug"
-msgstr "Nahlásiť chybu"
+msgid "You have encountered a bug in JOSM"
+msgstr "Narazili ste na chybu v programe JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Došlo k neočakávanej výnimke.<br>Toto je vždy chyba programovania. Ak "
-"používate najnovšiu verziu JOSM <br>, zvážte prosím vyplnenie hlásenia o "
-"chybe."
+"Nastala neočakávaná výnimka.\n"
+"Toto je vždy chyba programovania. Ak používate najnovšiu verziu JOSM, prosím "
+"zvážte nahlásenie tejto chyby."
 
-msgid "Update JOSM"
-msgstr "Aktualizovať JOSM"
+msgid "Debug information"
+msgstr "Ladiace informácie"
+
+msgid "Manually report at:"
+msgstr "Nahláste ručne na:"
+
+msgid "Is JOSM up to date?"
+msgstr "Je JOSM aktuálny?"
+
+msgid "Send bug report"
+msgstr "Odoslať hlásenie o chybe"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Došlo k neočakávanej výnimke. Toto je vždy chyba programovania. "
-"<br><br>Používate však starú verziu JOSM ({0})<br>namiesto aktuálnej "
-"otestovanej verzie (<b>{1}</b>).<br><br><b>Prosím aktualizujte JOSM</b> "
-"predtým než nahlásite túto chybu."
+"Ak používate najnovšiu verziu JOSM a pluginov, prosím nahláste chybu v našom "
+"systéme hlásenia chýb.\n"
+"Informácie o chybe by mali byť predvyplnené. Prosím doplňte informácie o tom "
+"ako zreprodukovať chybu a zadajte čo najviac podrobností."
+
+msgid "Report Bug"
+msgstr "Nahlásiť chybu"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Potlačiť ďalšie chybové hlášky počas tohto sedenia."
 
-msgid "Unexpected Exception"
-msgstr "Neočakávaná chyba programu."
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Narazili ste na chybu v programe JOSM"
+msgid "Ignore this error."
+msgstr "Ignorovať túto chybu."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Došlo k chybe v programe JOSM. Pred tým ako podáte hlásenie o chybe, uistite "
-"sa, že máte program JOSM aktualizovaný na poslednú verziu tu:"
+"Otvorenie hlásenia o chybe sa nepodarilo. Prosím nahláste ručne na stránke:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Tiež by ste mali aktualizovať svoje pluginy. Ak ani jedno z toho nepomôže, "
-"pošlite prosím súbor hlásenia o chybe do našho bugtracker-a pomocou tohto "
-"odkazu:"
+msgid "Include the system status report."
+msgstr "Zahrnúť správu o stave systému."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"Chybové informácie by mali byť predvyplnené. Prosím, vyplňte informácie o "
-"tom, ako chybu reprodukovať a snažte sa to popísať čo najpodrobnejšie."
+msgid "Include information about the data you were working on."
+msgstr "Vložiť informácie o dátach, na ktorých ste pracovali."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr ""
-"Prípadne, ak to nebude fungovať, môžete ručne vyplniť údaje nižšie na tejto "
-"URL:"
+msgid "Include all stack traces."
+msgstr "Zahrnúť výpis zásobníka programu (stack trace)."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Vaša verzia JOSM je {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM hľadá aktualizácie..."
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Text už bol skopírovaný do schránky.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Pri kontrole aktuálnosti JOSM nastala chyba."
+
+msgid "JOSM is up to date."
+msgstr "JOSM je aktuálny."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
+"JOSM je zastaralý. Najnovšia verzia je {0}. Skúste aktualizovať JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Otvorenie hlásenia o chybe sa nepodarilo. Prosím nahláste ručne na stránke:"
+"Predtým než nahlásite chybu, overte či máte najnovšiu verziu JOSM tu:"
+
+msgid "Update JOSM"
+msgstr "Aktualizovať JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16166,9 +16172,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "MapBox Satelit"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16193,9 +16196,6 @@ msgstr "OpenStreetMap (Nemecký štýl)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS Stopy"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Hromadná doprava (ÖPNV)"
 
@@ -16217,8 +16217,8 @@ msgstr "Strava cyklistická heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava bežecká heatmap"
 
-msgid "Strava both heatmap"
-msgstr ""
+msgid "Strava cycling and running heatmap"
+msgstr "Cyklistická a bežecká heatmap Strava"
 
 msgid "Locator Overlay"
 msgstr "Prekryvná vrstva Locator"
@@ -16268,8 +16268,11 @@ msgstr "OSM Inspector: Addresy"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Hranice (EÚ)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Argentína (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Argentína (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI čiernobiela 2.5m"
@@ -16343,8 +16346,11 @@ msgstr "VoGIS: Plán využitia územia"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: Výšky a pozemky"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) letecké snímky (pokrýva aj región Bruselu)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Vlaanderen / Flámsko) najnovšie letecké snímky (zima)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV letecké snímky 10cm 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr numerical imagery (2013)"
@@ -17709,9 +17715,6 @@ msgstr "Číta a zapisuje súbory typu \"osmosis poly filter\""
 msgid "Adds map printing to JOSM"
 msgstr "Pridanie tlače máp do JOSMu"
 
-msgid "adds projections from Proj4J"
-msgstr "pridanie projekcií z Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17885,8 +17888,10 @@ msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 "Povolí hľadanie cestovného bodu (waypoint-u) v importovaných z gpx súboru."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Zjednodušuje prepojenie OSM objektov s článkami Wikipedie"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Zjednodušuje prepojenie OSM objektov na články Wikipedie a položky Wikidata"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18121,17 +18126,21 @@ msgstr "prepojenie koľají"
 msgid "Electrified"
 msgstr "Elektrifikovaný"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "električkové vedenie"
+msgstr "trolejové vedenie"
 
+msgctxt "electrified"
 msgid "no"
 msgstr "nie"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "áno"
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "koľajnica (rail)"
+msgstr "napájacia koľajnica"
 
 msgid "Voltage in Volts (V)"
 msgstr "Napätie vo Voltoch (V)"
@@ -18179,9 +18188,15 @@ msgstr "Otváracia doba"
 msgid "Wheelchairs"
 msgstr "Invalidné vozíky"
 
+msgid "yes"
+msgstr "áno"
+
 msgid "limited"
 msgstr "omedzený"
 
+msgid "no"
+msgstr "nie"
+
 msgid "Brand"
 msgstr "Značka"
 
@@ -18597,7 +18612,7 @@ msgstr "lesnícke stroje"
 msgid "Population"
 msgstr "Počet obyvateľov"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Poštové smerovacie číslo"
 
 msgid "Website"
@@ -18764,15 +18779,6 @@ msgstr "šiítska"
 msgid "sunni"
 msgstr "sunnitská"
 
-msgid "high"
-msgstr "vysoké"
-
-msgid "medium"
-msgstr "stredné"
-
-msgid "low"
-msgstr "nízke"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20362,6 +20368,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Električka"
 
+msgid "Funicular"
+msgstr "Lanovka"
+
 msgid "Bus Guideway"
 msgstr "Vodiaca dráha pre autobus"
 
@@ -20867,9 +20876,6 @@ msgstr "Trolejbus"
 msgid "Share taxi"
 msgstr "Zdieľané taxi"
 
-msgid "Funicular"
-msgstr "Lanovka"
-
 msgid "Ferry"
 msgstr "Trajekt"
 
@@ -22073,6 +22079,9 @@ msgstr "Štadión"
 msgid "Sports Centre"
 msgstr "Športové centrum"
 
+msgid "Fitness Centre"
+msgstr "Fitnescentrum"
+
 msgid "Pitch"
 msgstr "Hracia plocha (ihrisko)"
 
@@ -22159,6 +22168,10 @@ msgid "sports_centre"
 msgstr "športové centrum"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "fitnescentrum"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "štadión"
 
@@ -22215,6 +22228,9 @@ msgstr "Konské dostihy"
 msgid "Gymnastics"
 msgstr "Gymnastika"
 
+msgid "fitness_centre"
+msgstr "fitnescentrum"
+
 msgid "Ice Skating"
 msgstr "Korčuľovanie na ľade"
 
@@ -24073,6 +24089,15 @@ msgstr "Tabak"
 msgid "Hairdresser/Barber"
 msgstr "Kaderníctvo/Holičstvo"
 
+msgid "Female"
+msgstr "Dámske"
+
+msgid "Male"
+msgstr "Pánske"
+
+msgid "Unisex"
+msgstr "Všetky pohlavia"
+
 msgid "Tattoo"
 msgstr "Tetovanie"
 
@@ -24172,6 +24197,9 @@ msgstr "sáčky na výkaly"
 msgid "food"
 msgstr "jedlo"
 
+msgid "milk"
+msgstr "mlieko"
+
 msgid "newspapers"
 msgstr "noviny"
 
@@ -24354,6 +24382,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Vládny orgán"
 
+msgid "ministry"
+msgstr "ministerstvo"
+
+msgid "prosecutor"
+msgstr "štátny zástupca/prokurátor"
+
+msgid "tax"
+msgstr "daňový úrad"
+
+msgid "register_office"
+msgstr "matričný úrad"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Poisťovacia spoločnosť"
@@ -24503,9 +24543,6 @@ msgstr "jazyková komunita"
 msgid "ward"
 msgstr "volebný obvod"
 
-msgid "Postal Code"
-msgstr "Poštové smerovacie číslo"
-
 msgid "National Park"
 msgstr "Národný park"
 
@@ -24663,6 +24700,18 @@ msgstr "Ostrov"
 msgid "Islet"
 msgstr "Ostrovček"
 
+msgid "Reef"
+msgstr "Útes"
+
+msgid "coral"
+msgstr "koralový"
+
+msgid "oyster"
+msgstr "mušle"
+
+msgid "rock"
+msgstr "skala"
+
 msgid "Nature"
 msgstr "Príroda"
 
@@ -25019,6 +25068,9 @@ msgstr "Názov oblasti (ak nemá ulice)"
 msgid "City name"
 msgstr "Názov mesta"
 
+msgid "Post code"
+msgstr "Poštové smerovacie číslo"
+
 msgid "Country code"
 msgstr "Kód krajiny"
 
@@ -25745,6 +25797,9 @@ msgstr ""
 "tunel alebo podzemný tok. Odstráňte \"{1}\" alebo pridajte ''tunel'' podľa "
 "potreby. Tiež skontrolujte križujúce mosty a ich značky \"{1}\"."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} spolu s {1} a {2}. Odstráňte {1} a {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} je zastaralý"
 
@@ -27497,6 +27552,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "vysoké"
+
+msgid "medium"
+msgstr "stredné"
+
+msgid "low"
+msgstr "nízke"
+
 msgid "symbol"
 msgstr "symbol"
 
@@ -29923,6 +29987,15 @@ msgstr[2] "{0} obrázky otočené"
 msgid "2 images unjoined"
 msgstr "2 obrázky rozpojené"
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31318,18 +31391,6 @@ msgstr "Tlač zastavená"
 msgid "Printing has failed."
 msgstr "Tlač zlyhala."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} vybrané"
-
-msgid "Selected: {0}"
-msgstr "Vybrané: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Plugin Proj4J"
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31337,7 +31398,7 @@ msgid "Do you want to download referrers of platforms and stop positions?"
 msgstr ""
 
 msgid "Remember my choice and do not ask me again in this session"
-msgstr ""
+msgstr "Zapamätať moju voľbu a už sa v tomto sedení nepýtať"
 
 msgid "PT_Assistant Fetch Request"
 msgstr ""
@@ -31347,9 +31408,12 @@ msgid ""
 "They need to be downloaded to proceed with validation.\n"
 "Do you want to download them?"
 msgstr ""
+"Relácie trás majú neúplných členov.\n"
+"Musia byť stiahnuté, aby sa dalo pokračovať v kontrole.\n"
+"Chcete ich teraz stiahnuť?"
 
 msgid "PT_Assistant plugin found that this relation (id={0}) has errors:"
-msgstr ""
+msgstr "PT_Assistant plugin zistil, že táto relácia (id={0}) má chyby:"
 
 msgid "{0} direction error"
 msgid_plural "{0} direction errors"
@@ -31362,7 +31426,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 msgid "How do you want to proceed?"
-msgstr ""
+msgstr "Ako chcete pokračovať?"
 
 msgid "PT_Assistant Proceed Request"
 msgstr ""
@@ -31373,6 +31437,16 @@ msgstr "PT: Miesto zastavenia vozidla nie je súčasťou cesty"
 msgid "PT: Platform should not be part of a way"
 msgstr "PT: Nástupište by nemalo byť súčasťou cesty"
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31399,6 +31473,30 @@ msgstr "PT: Trasa by mala začínať a končiť so \"stop_position\""
 msgid "PT: First or last way needs to be split"
 msgstr "PT: Prvý alebo posledný úsek by asi mal byť rozdelený"
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr "PT: Typ trasy nesúhlasí s typom cesty, po ktorej prechádza"
 
@@ -31408,6 +31506,9 @@ msgstr "PT: Cesta je vo výstavbe"
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr "PT: Trasa prechádza jednosmernou cestou nesprávnym smerom"
 
+msgid "rail"
+msgstr "koľajnica (rail)"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -32566,6 +32667,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Nedá sa umiestniť bod mimo sveta."
 
@@ -34317,6 +34421,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "Stiahne linky interwiki z Wikipedie na pridanie viacerých názvov"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34363,9 +34473,6 @@ msgstr "Kategória"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Získa zoznam všetkých článkov Wikipedie pre danú kategóriu"
 
-msgid "Enter the Wikipedia category"
-msgstr "Zadajte kategóriu Wikipedie"
-
 msgid "Clipboard"
 msgstr "Schránka"
 
diff --git a/i18n/po/sl.po b/i18n/po/sl.po
index a66f4b0..6de8970 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2015-11-07 17:38+0000\n"
 "Last-Translator: Joško Horvat <Unknown>\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: 2016-07-12 05:03+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:06+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: sl\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Zapri JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Nadaljuj, poizkusi ponovno"
-
-msgid "Error"
-msgstr "Napaka"
-
 msgid "About"
 msgstr "O programu"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Dodaj plast zračnih posnetkov {0}"
 
+msgid "Error"
+msgstr "Napaka"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -514,8 +502,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "Podvoji"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Podvoji izbrano z zaporednima ukazoma kopiraj in prilepi."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Končaj"
@@ -1076,19 +1064,13 @@ msgstr ""
 msgid "Paste"
 msgstr "Prilepi"
 
-msgid "Paste contents of paste buffer."
-msgstr "Prilepi vsebino odložišča."
-
-msgid "Delete incomplete members?"
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Paste without incomplete members"
+msgid "Paste at source position"
 msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1097,16 +1079,6 @@ msgstr "Prilepi oznake"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "Nastavitve..."
 
@@ -1811,6 +1783,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2837,7 +2812,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2891,6 +2866,9 @@ msgstr[3] "predmeta"
 msgid "Change relation member role for {0} {1}"
 msgstr "Spremeni vlogo člana relacije pri {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2923,9 +2901,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5601,12 +5576,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5620,6 +5589,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5799,6 +5774,28 @@ msgstr "Nov ključ"
 msgid "New value"
 msgstr "Nova vrednost"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7656,11 +7653,6 @@ msgstr "Pomakni izbranega člana vrstico višje"
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9158,13 +9150,6 @@ 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 ""
 
@@ -9180,6 +9165,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12468,6 +12458,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13263,6 +13256,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13978,6 +13974,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14004,6 +14012,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14015,21 +14030,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14173,64 +14176,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Ne stori ničesar"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Prijavi napako"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Nepričakovana napaka"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Besedilo je že bilo prekopirano na odložišče.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14564,9 +14581,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14591,9 +14605,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14615,7 +14626,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14666,7 +14677,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14741,7 +14755,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16027,9 +16044,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16168,7 +16182,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16403,15 +16418,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "da"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16461,9 +16480,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "da"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16876,8 +16901,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Poštna številka"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17039,15 +17064,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18614,6 +18630,9 @@ msgstr "Podzemna"
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19117,9 +19136,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20323,6 +20339,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Športno središče"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20409,6 +20428,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20465,6 +20488,9 @@ msgstr "Konjske dirke"
 msgid "Gymnastics"
 msgstr "Gimnastika"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22321,6 +22347,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22420,6 +22455,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22602,6 +22640,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22751,9 +22801,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22909,6 +22956,18 @@ msgstr "Otok"
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23253,6 +23312,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr "Poštna številka"
+
 msgid "Country code"
 msgstr ""
 
@@ -23969,6 +24031,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25650,6 +25715,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27998,6 +28072,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29383,18 +29466,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29438,6 +29509,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29463,6 +29544,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29472,6 +29577,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30613,6 +30721,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32219,6 +32330,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32262,9 +32379,6 @@ msgstr "Kategorija"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Prenese seznam vseh Wikipedia člankov določene kategorije"
 
-msgid "Enter the Wikipedia category"
-msgstr "Vnesite kategorijo Wikipedije"
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/sq.po b/i18n/po/sq.po
index 518bacd..f7db33e 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 04:31+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 04:31+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Mbyll JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Vazhdo, provo ndonje menyre tjeter"
-
-msgid "Error"
-msgstr "Gabim"
-
 msgid "About"
 msgstr "Rreth"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "Gabim"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/sr.po b/i18n/po/sr.po
index 6ce0b11..7e08e0e 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:02+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:04+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: sr\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,21 +113,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Излазак из ЈОСМа"
-
-msgid "Continue, try anyway"
-msgstr "Настави, ипак покушај"
-
-msgid "Error"
-msgstr "Грешка"
-
 msgid "About"
 msgstr "О програму"
 
@@ -235,6 +220,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Додај слој за слике {0}"
 
+msgid "Error"
+msgstr "Грешка"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -510,7 +498,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1072,19 +1060,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1093,16 +1075,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1800,6 +1772,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2824,7 +2799,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2876,6 +2851,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2908,9 +2886,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5572,12 +5547,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5591,6 +5560,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5770,6 +5745,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7623,11 +7620,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9114,13 +9106,6 @@ 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 ""
 
@@ -9136,6 +9121,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12416,6 +12406,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13205,6 +13198,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13916,6 +13912,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13942,6 +13950,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13953,21 +13968,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14111,64 +14114,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14502,9 +14519,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14529,9 +14543,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14553,7 +14564,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14604,7 +14615,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14679,7 +14693,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15965,9 +15982,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16106,7 +16120,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16341,15 +16356,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16399,9 +16418,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16814,7 +16839,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16977,15 +17002,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18552,6 +18568,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19055,9 +19074,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20261,6 +20277,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20347,6 +20366,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20403,6 +20426,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22259,6 +22285,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22358,6 +22393,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22540,6 +22578,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22689,9 +22739,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22847,6 +22894,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23191,6 +23250,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23907,6 +23969,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25588,6 +25653,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27934,6 +28008,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29319,18 +29402,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29374,6 +29445,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29399,6 +29480,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29408,6 +29513,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30549,6 +30657,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32153,6 +32264,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32196,9 +32313,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/sv.po b/i18n/po/sv.po
index e3cfbc3..99cce74 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-06-13 18:17+0000\n"
-"Last-Translator: Niklas Henriksson <fringillus92 at gmail.com>\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-07-17 11:00+0000\n"
+"Last-Translator: Anders Jonsson <Unknown>\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: 2016-07-12 05:04+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:07+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: sv\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,24 +112,6 @@ msgstr "Ignorerar ogiltig fil-URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "Parametern \"downloadgps\" godtar inte filnamn eller fil-URL:er"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM behöver Java-versionen {0}.</h2>Påträffad Java-version: {1}.<br>Du "
-"kan <ul><li>uppdatera din Java (JRE) eller</li><li>använda en tidigare "
-"version (Java {2}-kompatibel) av JOSM.</li></ul>Mer info:"
-
-msgid "Exit JOSM"
-msgstr "Avsluta JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Fortsätt, försök i alla fall"
-
-msgid "Error"
-msgstr "Fel"
-
 msgid "About"
 msgstr "Om"
 
@@ -244,6 +226,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Lägg till bildlager {0}"
 
+msgid "Error"
+msgstr "Fel"
+
 msgid "Select image format for WMS layer"
 msgstr "Välj bildformat för WMS-lager"
 
@@ -474,10 +459,10 @@ msgid "Delete the active layer. Does not delete the associated file."
 msgstr "Radera det aktiva lagret. Detta raderar inte den associerade filen."
 
 msgid "Toggle dialogs panel"
-msgstr "Växlar dialogpanelen"
+msgstr "Växla dialogpanelen"
 
 msgid "Toggle dialogs panel, maximize mapview"
-msgstr "Växlar dialogpanelen, maximerar kartvyn"
+msgstr "Växla dialogpanelen, maximera kartvyn"
 
 msgid "Distribute Nodes"
 msgstr "Distribuera noder"
@@ -531,8 +516,8 @@ msgstr "Ladda ner objekt som refererar till ett av de markerade objekten"
 msgid "Duplicate"
 msgstr "Duplicera"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Duplicera markeringen genom att kopiera och omedelbart klistra in."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Avsluta"
@@ -1147,23 +1132,14 @@ msgstr "Overpass-fråga: "
 msgid "Paste"
 msgstr "Klistra in"
 
-msgid "Paste contents of paste buffer."
-msgstr "Klistra in innehållet i inklistringsbufferten"
-
-msgid "Delete incomplete members?"
-msgstr "Radera inkompletta medlemmar?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Klistra in utan inkompletta medlemmar"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Den kopierade datan innehåller okompletta objekt. Då okompletta objekt "
-"klistras in tas dessa bort. Vill du klistra in datan utan dessa okompletta "
-"objekt?"
 
 msgid "Paste Tags"
 msgstr "Klistra in taggar"
@@ -1173,16 +1149,6 @@ msgstr ""
 "Sätt taggarna som finns på innehållet i inklistringsbufferten på alla valda "
 "föremål."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Klistrar in {0} tag"
-msgstr[1] "Klistrar in {0} tagar"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "till {0} objekt"
-msgstr[1] "till {0} objekt"
-
 msgid "Preferences..."
 msgstr "Inställningar..."
 
@@ -1931,6 +1897,9 @@ msgstr "Sök och ladda ner ändringsuppsättningar"
 msgid "Errors during download"
 msgstr "Fel under hämtning"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Ladda ner från GPS"
 
@@ -3042,8 +3011,8 @@ msgstr "Ändra sträcka {0}"
 msgid "Change relation {0}"
 msgstr "Ändra relation {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Förändrade noderna för {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Radera \"{0}\" för nod \"{1}\""
@@ -3094,6 +3063,9 @@ msgstr[1] "objekt"
 msgid "Change relation member role for {0} {1}"
 msgstr "Ändra relationsmedlemsroll för {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Tog bort ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Det krävs minst ett objekt att ta bort, fick en tom samling."
 
@@ -3126,9 +3098,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] "Ta bort {0} relation"
 msgstr[1] "Ta bort {0} relationer"
 
-msgid "Deleted ''{0}''"
-msgstr "Tog bort ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Bekräfta borttagning"
 
@@ -5216,12 +5185,16 @@ msgstr ""
 msgid ""
 "Toggles the visibility of the main toolbar (i.e., the horizontal toolbar)"
 msgstr ""
+"Växlar synligheten för huvudverktygsraden (d.v.s. den horisontella "
+"verktygsraden)"
 
 msgid "Edit toolbar"
-msgstr "Redigera verktygsrad"
+msgstr "Redigeringsverktygsrad"
 
 msgid "Toggles the visibility of the edit toolbar (i.e., the vertical tool)"
 msgstr ""
+"Växlar synligheten för redigeringsverktygsraden (d.v.s. det vertikala "
+"verktyget)"
 
 msgid "Preset preferences"
 msgstr "Snabbvalsinställningar"
@@ -5249,7 +5222,7 @@ msgid "Click the arrow at the bottom to show it again."
 msgstr "Klicka på pilen i botten för att visa det igen"
 
 msgid "Hide edit toolbar"
-msgstr "Dölj redigera verktygsraden"
+msgstr "Dölj redigeringsverktygsraden"
 
 msgid "Hide or show this toggle button"
 msgstr "Visa eller dölj denna brytarknapp"
@@ -5890,12 +5863,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr "<i>saknas</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5909,6 +5876,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>saknas</i>"
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr "Välj ett värde"
 
@@ -6090,6 +6063,31 @@ msgstr "Ny nyckel"
 msgid "New value"
 msgstr "Nytt värde"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Klistrar in {0} tag"
+msgstr[1] "Klistrar in {0} tagar"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "till {0} objekt"
+msgstr[1] "till {0} objekt"
+
+msgid "Delete incomplete members?"
+msgstr "Radera inkompletta medlemmar?"
+
+msgid "Paste without incomplete members"
+msgstr "Klistra in utan inkompletta medlemmar"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Den kopierade datan innehåller okompletta objekt. Då okompletta objekt "
+"klistras in tas dessa bort. Vill du klistra in datan utan dessa okompletta "
+"objekt?"
+
 msgid "For selected objects only"
 msgstr "Visa enbart för valda objekt"
 
@@ -7970,11 +7968,6 @@ msgstr "Flytta vald medlem/valda medlemmar uppåt"
 msgid "Apply the updates and close the dialog"
 msgstr "Applicera uppdateringarna och stäng dialogen"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9526,13 +9519,6 @@ 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 ""
 
@@ -9548,6 +9534,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Spara Lager"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Kartanteckningslager"
 
@@ -12686,7 +12677,7 @@ msgid "Presets"
 msgstr "Snabbval"
 
 msgid "Search for objects by preset..."
-msgstr ""
+msgstr "Sök objekt efter snabbval..."
 
 msgid "Search for objects by preset"
 msgstr "Sök objekt efter snabbval"
@@ -12921,6 +12912,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Misslyckades med att byta namn på filen {0} till {1}."
 
@@ -13721,6 +13715,9 @@ msgstr "Vill du tillåta detta?"
 msgid "Confirm Remote Control action"
 msgstr "Bekräfta fjärrstyrd handling"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14514,6 +14511,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr "latitud"
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr "longitud"
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14541,6 +14550,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14552,21 +14568,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Öppnar URL: {0}"
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr "latitud"
-
-msgid "longitude"
-msgstr "longitud"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr "reserverad"
 
@@ -14716,67 +14720,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Gör ingenting"
+msgid "You have encountered a bug in JOSM"
+msgstr "Du har stött på en bugg i JOSM"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "Rapportera en bugg"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
-"Ett oväntat fel inträffade.<br> Detta beror alltid på programkodsfel. Om du "
-"använder<br> den senaste versionen av JOSM, överväg att vara snäll och "
-"skicka in en buggrapport."
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Oväntat undantag"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "Du har stött på en bugg i JOSM"
+msgid "Include all stack traces."
+msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Texten finns redan i urklipp.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -15114,9 +15129,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -15141,9 +15153,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -15165,7 +15174,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15216,7 +15225,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15291,7 +15303,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16582,9 +16597,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr "lägger till projektioner från Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16730,7 +16742,8 @@ msgstr "Enkel hämtning längs med en lång kedja av sammanbundna sträckor"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16965,17 +16978,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "Elektrifierad"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "kontaktledning"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "nej"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "ja"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "räls"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -17023,9 +17040,15 @@ msgstr "Öppettider"
 msgid "Wheelchairs"
 msgstr "Rullstolar"
 
+msgid "yes"
+msgstr "ja"
+
 msgid "limited"
 msgstr "begränsat"
 
+msgid "no"
+msgstr "nej"
+
 msgid "Brand"
 msgstr "Fabrikat"
 
@@ -17438,8 +17461,8 @@ msgstr "skogsbruk"
 msgid "Population"
 msgstr "Antal innevånare"
 
-msgid "Post code"
-msgstr "Postnummer"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "Webbsida"
@@ -17601,15 +17624,6 @@ msgstr "shiamuslimer"
 msgid "sunni"
 msgstr "sunnimuslimer"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "låg"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -19188,6 +19202,9 @@ msgstr "Tunnelbana"
 msgid "Tram"
 msgstr "Spårvagn"
 
+msgid "Funicular"
+msgstr "Bergbana"
+
 msgid "Bus Guideway"
 msgstr "Spårbussväg"
 
@@ -19691,9 +19708,6 @@ msgstr "Trådbuss"
 msgid "Share taxi"
 msgstr "Delad taxi"
 
-msgid "Funicular"
-msgstr "Bergbana"
-
 msgid "Ferry"
 msgstr "Färja"
 
@@ -20899,6 +20913,9 @@ msgstr "Stadion"
 msgid "Sports Centre"
 msgstr "Sporthall"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Plan"
 
@@ -20985,6 +21002,10 @@ msgid "sports_centre"
 msgstr "sporthall"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "stadion"
 
@@ -21041,6 +21062,9 @@ msgstr "Hästkapplöpning"
 msgid "Gymnastics"
 msgstr "Gymnastik"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -21266,7 +21290,7 @@ msgstr "tak"
 
 msgctxt "building"
 msgid "garage"
-msgstr ""
+msgstr "garage"
 
 msgctxt "building"
 msgid "garages"
@@ -22897,6 +22921,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr "Frisör"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tatuering"
 
@@ -22996,6 +23029,9 @@ msgstr "hundpåsar"
 msgid "food"
 msgstr "mat"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23178,6 +23214,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23327,9 +23375,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -23485,6 +23530,18 @@ msgstr "Ö"
 msgid "Islet"
 msgstr "Holme"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Natur"
 
@@ -23584,6 +23641,8 @@ msgid ""
 "Bare upper lying uncultivated land principally covered with grass and often "
 "grazed."
 msgstr ""
+"Bart överliggande okultiverat land mestadels täckt av gräs som ofta betas av "
+"djur."
 
 msgid "Scrub"
 msgstr "Buskage"
@@ -23836,6 +23895,9 @@ msgstr "Platsnamn"
 msgid "City name"
 msgstr "Stadsnamn"
 
+msgid "Post code"
+msgstr "Postnummer"
+
 msgid "Country code"
 msgstr "Landskod"
 
@@ -24552,6 +24614,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -26236,6 +26301,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "låg"
+
 msgid "symbol"
 msgstr ""
 
@@ -28322,22 +28396,22 @@ msgid "Export images"
 msgstr ""
 
 msgid "Import pictures"
-msgstr ""
+msgstr "Importera bilder"
 
 msgid "Import local pictures"
 msgstr ""
 
 msgid "Import pictures into Mapillary layer"
-msgstr ""
+msgstr "Importera bilder till Mapillary-lager"
 
 msgid "Select pictures"
 msgstr ""
 
 msgid "Import pictures into sequence"
-msgstr ""
+msgstr "Importera bilder till sekvens"
 
 msgid "Import pictures into Mapillary layer in a sequence"
-msgstr ""
+msgstr "Importera bilder till Mapillary-lager i en sekvens"
 
 msgid "Join mode"
 msgstr ""
@@ -28373,7 +28447,7 @@ msgid "Start walk mode"
 msgstr ""
 
 msgid "Zoom to selected image"
-msgstr ""
+msgstr "Zooma till vald bild"
 
 msgid "Zoom to the currently selected Mapillary image"
 msgstr ""
@@ -28412,7 +28486,7 @@ msgid "Export all images"
 msgstr ""
 
 msgid "Export selected sequence"
-msgstr ""
+msgstr "Exportera markerad sekvens"
 
 msgid "Export selected images"
 msgstr ""
@@ -28511,13 +28585,13 @@ msgid "Next picture"
 msgstr ""
 
 msgid "Shows the next picture in the sequence"
-msgstr ""
+msgstr "Visar nästa bild i sekvensen"
 
 msgid "Previous picture"
 msgstr ""
 
 msgid "Shows the previous picture in the sequence"
-msgstr ""
+msgstr "Visar föregående bild i sekvensen"
 
 msgid "Jump to red"
 msgstr ""
@@ -28611,6 +28685,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30006,18 +30089,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -30061,6 +30132,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -30086,6 +30167,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -30095,6 +30200,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "räls"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -31239,6 +31347,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "Kan inte placera en nod utanför världen."
 
@@ -32852,6 +32963,12 @@ msgid ""
 msgstr ""
 "Hämtar interwiki-länkar från Wikipedia för att lägga till flera namntaggar"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32897,9 +33014,6 @@ msgstr "Kategori"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Hämtar en lista med alla Wikipedia-artiklar i en kategori"
 
-msgid "Enter the Wikipedia category"
-msgstr "Skriv in Wikipedia-kategorin"
-
 msgid "Clipboard"
 msgstr "Urklipp"
 
diff --git a/i18n/po/ta.po b/i18n/po/ta.po
index 1e86d50..677a745 100644
--- a/i18n/po/ta.po
+++ b/i18n/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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"
@@ -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: 2016-07-12 05:05+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:08+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "X-Poedit-Country: INDIA\n"
 "Language: ta\n"
 "X-Poedit-Language: Tamil\n"
@@ -114,21 +114,6 @@ msgstr "தவறாக அமைக்கப்பட்ட \"{0}\" என்
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "Josm லிருந்து வெளியேறு"
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "பிழை"
-
 msgid "About"
 msgstr "இதைப் பற்றி"
 
@@ -239,6 +224,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "பிழை"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -517,8 +505,8 @@ msgstr ""
 msgid "Duplicate"
 msgstr "பிரதி"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "நகலெடுத்து உடனடியாக ஒட்டுவதினால் இரட்டையான தேர்ந்தெடுத்தல்"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "வெளியேறுக"
@@ -1095,19 +1083,13 @@ msgstr ""
 msgid "Paste"
 msgstr "ஒட்டு"
 
-msgid "Paste contents of paste buffer."
-msgstr "ஒட்டு நினைவில் இருக்கின்றவற்றை ஒட்டு"
-
-msgid "Delete incomplete members?"
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Paste without incomplete members"
+msgid "Paste at source position"
 msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1116,16 +1098,6 @@ msgstr "அட்டைகளை ஒட்டு"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] "{0} அட்டைகளை ஒட்டுகிறது"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr "விருப்பத் தேர்வுகள் ..."
 
@@ -1835,6 +1807,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2859,7 +2834,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2911,6 +2886,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2943,9 +2921,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5607,12 +5582,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5626,6 +5595,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5805,6 +5780,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] "{0} அட்டைகளை ஒட்டுகிறது"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7659,11 +7656,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9149,13 +9141,6 @@ 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 ""
 
@@ -9171,6 +9156,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "அடுக்கைக் காக்க்"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12453,6 +12443,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13242,6 +13235,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13953,6 +13949,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13979,6 +13987,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13990,21 +14005,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14148,64 +14151,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14539,9 +14556,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14566,9 +14580,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14590,7 +14601,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14641,7 +14652,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14716,7 +14730,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16002,9 +16019,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16143,7 +16157,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16378,15 +16393,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16436,9 +16455,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16851,7 +16876,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -17014,15 +17039,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18589,6 +18605,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19092,9 +19111,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20298,6 +20314,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20384,6 +20403,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20440,6 +20463,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22296,6 +22322,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22395,6 +22430,9 @@ msgstr ""
 msgid "food"
 msgstr "உணவு"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22577,6 +22615,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22726,9 +22776,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22884,6 +22931,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23228,6 +23287,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23944,6 +24006,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25625,6 +25690,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27971,6 +28045,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29362,18 +29445,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29417,6 +29488,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29442,6 +29523,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29451,6 +29556,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30592,6 +30700,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32196,6 +32307,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32239,9 +32356,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/te.po b/i18n/po/te.po
index 0febfd5..d676064 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:05+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:08+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: te\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr "దోషము"
-
 msgid "About"
 msgstr "గురించి"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr "దోషము"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/th.po b/i18n/po/th.po
index 52ef353..37c9be4 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:06+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:09+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: th\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/tr.po b/i18n/po/tr.po
index fd4e10f..5f6eebf 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2015-11-16 12:04+0000\n"
 "Last-Translator: Erkin Alp Güney <Unknown>\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: 2016-07-12 05:06+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:09+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -116,21 +116,6 @@ msgstr ""
 "\"downloadgps\" parametresi dosya isimleri ve dosya URLleri kabul "
 "etmemektedir."
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr "JOSM’den çık"
-
-msgid "Continue, try anyway"
-msgstr "Devam et, yine de dene"
-
-msgid "Error"
-msgstr "Hata"
-
 msgid "About"
 msgstr "Hakkında"
 
@@ -238,6 +223,9 @@ msgstr "Haritada seçili elemanları listedede seç."
 msgid "Add imagery layer {0}"
 msgstr "Referans görüntü katmanı ekle {0}"
 
+msgid "Error"
+msgstr "Hata"
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -521,8 +509,8 @@ msgstr "Seçilen nesnelerden birini gösteren nesneleri indir"
 msgid "Duplicate"
 msgstr "Çift"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Kopyala ve Yapştır ile seçimi çiftle."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Çıkış"
@@ -1096,23 +1084,14 @@ msgstr ""
 msgid "Paste"
 msgstr "Yapıştır"
 
-msgid "Paste contents of paste buffer."
-msgstr "Yapıştır hafızasındaki bilgileri yapıştır."
-
-msgid "Delete incomplete members?"
-msgstr "Tamamlanmamış üyeleri silmek istiyor musunuz?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Tamamlanmamış üyeler olmadan yapıştır."
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Kopyalanan veri tamamlanmamış nesneleri içeriyor.Yapıştırma esnasında "
-"tamamlanmamış nesneler silinecek.Veriyi tamamlanmamış nesneler olmadan "
-"yapıştırmak istermisiniz?"
 
 msgid "Paste Tags"
 msgstr "Etiketleri Yapıştır"
@@ -1121,14 +1100,6 @@ msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 "Yapıştırma hafızsında bulunan etiket içeriklerini seçili elemanlara ekle."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "{0} etiket yapıştırılıyor"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0} nesnesine"
-
 msgid "Preferences..."
 msgstr "Tercihler..."
 
@@ -1843,6 +1814,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr "İndirme sırasında hatalarla karşılaşıldı"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2875,8 +2849,8 @@ msgstr "Yolu değiştir {0}"
 msgid "Change relation {0}"
 msgstr "İlişkiyi değiştir {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "{0} nesnenin noktaları değiştirildi"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr ""
@@ -2927,6 +2901,9 @@ msgstr[1] "objeler"
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2959,9 +2936,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5636,12 +5610,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5655,6 +5623,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5833,6 +5807,29 @@ msgstr "Yeni Anahtar"
 msgid "New value"
 msgstr "Yeni Değer"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "{0} etiket yapıştırılıyor"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0} nesnesine"
+
+msgid "Delete incomplete members?"
+msgstr "Tamamlanmamış üyeleri silmek istiyor musunuz?"
+
+msgid "Paste without incomplete members"
+msgstr "Tamamlanmamış üyeler olmadan yapıştır."
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Kopyalanan veri tamamlanmamış nesneleri içeriyor.Yapıştırma esnasında "
+"tamamlanmamış nesneler silinecek.Veriyi tamamlanmamış nesneler olmadan "
+"yapıştırmak istermisiniz?"
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7686,11 +7683,6 @@ msgstr "Seçili üyeyi yukarı taşı"
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9178,13 +9170,6 @@ 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 ""
 
@@ -9200,6 +9185,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Katmanı Kaydet"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12506,6 +12496,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13301,6 +13294,9 @@ msgstr "Buna izin veriyormusunuz?"
 msgid "Confirm Remote Control action"
 msgstr "uzak kontrol haereketini onayla"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14015,6 +14011,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14041,6 +14049,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14052,21 +14067,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14210,64 +14213,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
-msgstr "Birşey Yapma"
+msgid "You have encountered a bug in JOSM"
+msgstr ""
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "hatayı Bildir"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "Beklenmedik Durum"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Include all stack traces."
 msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+msgid "Your current version of JOSM is {0}"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "An error occured while checking if your JOSM instance is up to date."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "JOSM is up to date."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Metin zaten panoda mevcut.)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14605,9 +14622,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14632,9 +14646,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14656,7 +14667,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14707,7 +14718,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14782,7 +14796,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16068,9 +16085,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16209,7 +16223,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16444,17 +16459,21 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "hayır"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "Evet"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "demiryolu"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16502,9 +16521,15 @@ msgstr "Açılış saati"
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr "Evet"
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr "hayır"
+
 msgid "Brand"
 msgstr ""
 
@@ -16917,8 +16942,8 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
-msgstr "Posta kodu"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr ""
@@ -17080,15 +17105,6 @@ msgstr "shia"
 msgid "sunni"
 msgstr "sunni"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "alçak"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18655,6 +18671,9 @@ msgstr "Metro"
 msgid "Tram"
 msgstr "Tramvay"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "Otobüs Yolu"
 
@@ -19158,9 +19177,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20364,6 +20380,9 @@ msgstr "Stadyum"
 msgid "Sports Centre"
 msgstr "spor merkezi"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "atıcılık"
 
@@ -20450,6 +20469,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20506,6 +20529,9 @@ msgstr "At Yarışı"
 msgid "Gymnastics"
 msgstr "jimnastik"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22362,6 +22388,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22461,6 +22496,9 @@ msgstr "dışkı_poşeti"
 msgid "food"
 msgstr "yiyecek"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22643,6 +22681,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22792,9 +22842,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22950,6 +22997,18 @@ msgstr "Ada"
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23294,6 +23353,9 @@ msgstr ""
 msgid "City name"
 msgstr "Şehir adı"
 
+msgid "Post code"
+msgstr "Posta kodu"
+
 msgid "Country code"
 msgstr "Ülke kodu"
 
@@ -24010,6 +24072,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25691,6 +25756,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "alçak"
+
 msgid "symbol"
 msgstr ""
 
@@ -28049,6 +28123,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29436,18 +29519,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29491,6 +29562,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29516,6 +29597,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29525,6 +29630,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "demiryolu"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30666,6 +30774,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32268,6 +32379,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32311,9 +32428,6 @@ msgstr "Kategori"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr "Pano"
 
diff --git a/i18n/po/ug.po b/i18n/po/ug.po
index 4b6f9af..376f80a 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:07+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:10+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: \n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/uk.po b/i18n/po/uk.po
index 33ddaba..816c54a 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: 2016-07-12 03:36+0200\n"
-"PO-Revision-Date: 2016-07-06 11:54+0000\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
+"PO-Revision-Date: 2016-08-08 12:54+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: 2016-07-12 05:07+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:10+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: uk\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -115,25 +115,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Параметр \"downloadgps\" не приймає імена файлів або URL-адреси файлів"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>Для роботи JOSM потрібна Java версії {0}.</h2>Виявлено Java версії: "
-"{1}.<br>Ви можете <ul><li>оновити вашу Java (JRE) "
-"або</li><li>використовувати старіші (сумісні з Java {2}) версії "
-"JOSM.</li></ul>Більш докладно:"
-
-msgid "Exit JOSM"
-msgstr "Вийти з JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Продовжити, спробувати у будь-якому випадку"
-
-msgid "Error"
-msgstr "Помилка"
-
 msgid "About"
 msgstr "Про програму…"
 
@@ -256,6 +237,9 @@ msgstr "Виділити на мапі об’єкти, вибрані у спи
 msgid "Add imagery layer {0}"
 msgstr "Додати шар з зображенням {0}"
 
+msgid "Error"
+msgstr "Помилка"
+
 msgid "Select image format for WMS layer"
 msgstr "Оберіть формат зображення для шару WMS"
 
@@ -545,8 +529,8 @@ msgstr "Завантаження об’єктів, що посилаються
 msgid "Duplicate"
 msgstr "Дублювати"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "Дублювати виділення шляхом копіювання і вставки."
+msgid "Duplicate selection."
+msgstr "Дублювати виділене."
 
 msgid "Exit"
 msgstr "Вихід"
@@ -1180,22 +1164,14 @@ msgstr "Overpass запит: "
 msgid "Paste"
 msgstr "Вставити"
 
-msgid "Paste contents of paste buffer."
-msgstr "Вставити вміст буферу."
+msgid "Paste contents of clipboard."
+msgstr "Вставити з буфера обміну"
 
-msgid "Delete incomplete members?"
-msgstr "Вилучити неповних членів?"
+msgid "Paste at source position"
+msgstr "Вставити в початкову позицію"
 
-msgid "Paste without incomplete members"
-msgstr "Вставити без неповних членів"
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
-msgstr ""
-"Скопійовані дані містять неповні об’єкти. Під час вставки вони будуть "
-"знехтувані. Бажаєте продовжити вставку без неповних об’єктів?"
+msgid "Paste contents of clipboard at the position they were copied from."
+msgstr "Вставити вміст буфера обміну в позицію звідки він був отриманий."
 
 msgid "Paste Tags"
 msgstr "Вставити теґи"
@@ -1203,18 +1179,6 @@ msgstr "Вставити теґи"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Застосувати теґи з буферу до всіх виділених об’єктів."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "Вставляється {0} теґ"
-msgstr[1] "Вставляється {0} теґи"
-msgstr[2] "Вставляється {0} теґів"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "у {0} об’єкт"
-msgstr[1] "у {0} об’єкти"
-msgstr[2] "у {0} об’єктів"
-
 msgid "Preferences..."
 msgstr "Налаштування…"
 
@@ -1977,6 +1941,9 @@ msgstr "Отримати та завантажити набір змін…"
 msgid "Errors during download"
 msgstr "Помилки під час отримання даних з сервера"
 
+msgid "Download Geo URL"
+msgstr "Завантажити Geo URL"
+
 msgid "Download GPS"
 msgstr "Завантажити GPS"
 
@@ -3107,8 +3074,8 @@ msgstr "Змінити лінію {0}"
 msgid "Change relation {0}"
 msgstr "Змінити зв’язок {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Точки з {0} змінено"
+msgid "Change nodes of {0}"
+msgstr "Змінити точки {0}"
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Вилучити \"{0}\" для точки ''{1}''"
@@ -3164,6 +3131,9 @@ msgstr[2] "об’єктів"
 msgid "Change relation member role for {0} {1}"
 msgstr "Змінити роль члена зв’язку для {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Вилучено ''{0}''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Потрібно вилучити, принаймні, один об’єкт, отримано порожній набір"
 
@@ -3200,9 +3170,6 @@ msgstr[0] "Вилучити {0} зв’язок"
 msgstr[1] "Вилучити {0} зв’язки"
 msgstr[2] "Вилучити {0} зв’язків"
 
-msgid "Deleted ''{0}''"
-msgstr "Вилучено ''{0}''"
-
 msgid "Delete confirmation"
 msgstr "Підтвердження вилучення"
 
@@ -6108,12 +6075,6 @@ msgstr[2] ""
 msgid "Combine confirmation"
 msgstr "Підтвердження об’єднання"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>немає</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -6140,6 +6101,12 @@ msgstr[2] ""
 "теґи.<br/>Якщо ви бажаєте продовжити, вам потрібно виправити конфлікти з "
 "несумісністю теґів у наступному вікні.<br/><br/>Бажаєте продовжити?"
 
+msgid "<i>missing</i>"
+msgstr "<i>немає</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Виберіть значення"
 
@@ -6340,6 +6307,32 @@ msgstr "Новий ключ"
 msgid "New value"
 msgstr "Нове значення"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "Вставляється {0} теґ"
+msgstr[1] "Вставляється {0} теґи"
+msgstr[2] "Вставляється {0} теґів"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "у {0} об’єкт"
+msgstr[1] "у {0} об’єкти"
+msgstr[2] "у {0} об’єктів"
+
+msgid "Delete incomplete members?"
+msgstr "Вилучити неповних членів?"
+
+msgid "Paste without incomplete members"
+msgstr "Вставити без неповних членів"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Скопійовані дані містять неповні об’єкти. Під час вставки вони будуть "
+"знехтувані. Бажаєте продовжити вставку без неповних об’єктів?"
+
 msgid "For selected objects only"
 msgstr "Тільки для виділених об’єктів"
 
@@ -8342,13 +8335,6 @@ msgstr "Перемістити обраних членів вгору"
 msgid "Apply the updates and close the dialog"
 msgstr "Застосувати оновлення і закрити діалог"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Члени з буферу обміну не можуть бути додані, оскільки вони не належать до "
-"поточного шару"
-
 msgid "Relation Editor: Refresh"
 msgstr "Редактор звʼязків: Оновити"
 
@@ -10075,17 +10061,6 @@ 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 "Підтримуються усі проекції"
 
@@ -10101,6 +10076,12 @@ msgstr "Змініть проекцію або вилучіть шар."
 msgid "Save Layer"
 msgstr "Зберегти шар"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] "{0} нотатка"
+msgstr[1] "{0} нотатки"
+msgstr[2] "{0} нотаток"
+
 msgid "Notes layer"
 msgstr "Нотатки"
 
@@ -13741,6 +13722,9 @@ msgstr ""
 "Не вдалось відрити файл з розширенням ''{2}'' та іменем ''{3}'' в zip-файлі "
 "''{0}''. Виключення: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr "Потрібне посилання URL {0} не знайдене"
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Збій перейменування файлу {0} у {1}."
 
@@ -14624,6 +14608,9 @@ msgstr "Дозволити?"
 msgid "Confirm Remote Control action"
 msgstr "Підтверджувати дії Дистанційного керування"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr "Наступні ключі є обовʼязковими, але вони не були зазначені: {0}"
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15554,6 +15541,18 @@ msgstr ""
 "<strong>Завантаження не вдалося</strong>, якщо ви намагались завантажити цей "
 "об’єкт.<br><br>Повідомлення про помилку:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "широта"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL не містить правильний {0}"
+
+msgid "longitude"
+msgstr "довгота"
+
+msgid "zoom"
+msgstr "масштаб"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15585,6 +15584,17 @@ msgid ""
 msgstr ""
 "Не вдалось отримати доступ до теки ''{0}'' з причин безпеки. Виключення: {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0}… [вкажіть номер]"
 
@@ -15598,21 +15608,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Відкриття URL: {0}"
 
-msgid "zoom"
-msgstr "масштаб"
-
-msgid "latitude"
-msgstr "широта"
-
-msgid "longitude"
-msgstr "довгота"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL не містить {0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL не містить правильний {0}"
-
 msgid "reserved"
 msgstr "зарезервовано"
 
@@ -15784,82 +15782,92 @@ msgstr "Ігнорування спотвореної геометрії: {0}"
 msgid "Failed to load XML schema."
 msgstr "Помилка завантаження XML схеми"
 
-msgid "Do nothing"
-msgstr "Нічого не робити"
-
-msgid "Report Bug"
-msgstr "Повідомити про помилку"
+msgid "You have encountered a bug in JOSM"
+msgstr "Ви зіткнулися з помилкою в JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Виникла несподівана помилка.<br>Вона завжди є помилкою в програмуванні. Якщо "
-"ви запускаєте останню<br>версію JOSM, будь ласка, надішліть звіт про помилку."
+"Виникла неочікувана ситуація.\n"
+"Це завжди помилки програмування. Якщо у вас свіжа версія JOSM, будь ласка, "
+"надішліть звіт про помилку."
 
-msgid "Update JOSM"
-msgstr "Оновити JOSM"
+msgid "Debug information"
+msgstr "Інформація для відлагодження"
+
+msgid "Manually report at:"
+msgstr "Надіслати звіт вручну на:"
+
+msgid "Is JOSM up to date?"
+msgstr "Чи у вас свіжа версія JOSM?"
+
+msgid "Send bug report"
+msgstr "Надіслати звіт про помилку"
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Сталась непередбачувана помилка. Такі помилки завжди виникають під час "
-"помилок в програмуванні.<br><br>Однак, ви використовуєте стару версію JOSM "
-"({0}),<br>замість поточної протестованої версії (<b>{1}</b>).<br><br><b>Будь "
-"ласка, оновіть JOSM</b>, перед тим як надсилати розробникам звіт про помилку."
+"Якщо у вас остання версія JOSM та втулків, надішліть, будь ласка, звіт про "
+"помилку до нашої системи відстежування помилок.\n"
+"Деяку інформацію про помилку вже було зібрано для вас. Додайте потрібні дані "
+"про те, як відтворити ситуацію, що призвела до виникнення помилки, додайте "
+"як можна більше деталей."
+
+msgid "Report Bug"
+msgstr "Повідомити про помилку"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Не показувати наступні повідомлення про помилки для цього сеансу."
 
-msgid "Unexpected Exception"
-msgstr "Непередбачена помилка"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Ви зіткнулися з помилкою в JOSM"
+msgid "Ignore this error."
+msgstr "Ігнорувати цю помилку."
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Ви виявили помилку в JOSM. Перш ніж подати повідомлення про помилку, "
-"переконайтеся, що у вас здійснено оновлення до останньої версії JOSM тут:"
+"Збій створення повідомлення про помилку. Будь ласка, створіть повідомлення "
+"самі на цьому сайті:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr ""
-"Ви повинні також оновити втулки. Якщо жодна з цих порад не допомогла, будь "
-"ласка, повідомте про помилку на баг-трекері, використовуючи це посилання:"
+msgid "Include the system status report."
+msgstr "Додати звіт про стан системи."
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr ""
-"Представлена нижче інформація про помилку вже підготовлена для вас. Будь "
-"ласка, додайте інформацію про те, як відтворити помилку і спробуйте описати "
-"це настільки детально, наскільки це можливо."
+msgid "Include information about the data you were working on."
+msgstr "Додати інформацію про дані, з якими ви працювали."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr ""
-"Або ж, якщо це не спрацює, ви можете вручну заповнити інформацію нижче за "
-"цим URL:"
+msgid "Include all stack traces."
+msgstr "Додати всі трасування стеку."
+
+msgid "Your current version of JOSM is {0}"
+msgstr "Ваша поточна версія JOSM: {0}"
+
+msgid "JOSM is searching for updates..."
+msgstr "JOSM виконує пошук оновлень…"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Текст вже скопійовано у буфер обміну)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr "Під час перевірки актуальності поточної версії JOSM виникла помилка."
+
+msgid "JOSM is up to date."
+msgstr "Ваша версія JOSM є найновішою."
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
+"Ваша версія JOSM застаріла. Поточна версія  – {0}. Спробуйте оновити JOSM."
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
-"Збій створення повідомлення про помилку. Будь ласка, створіть повідомлення "
-"самі на цьому сайті:"
+"Перед надсиланням звіту про помилку переконайтесь, що ви оновили JOSM до "
+"найновішої версії:"
+
+msgid "Update JOSM"
+msgstr "Оновити JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -16207,9 +16215,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr "Супутникові знімки Mapbox"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest Open Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -16234,9 +16239,6 @@ msgstr "OpenStreetMap (німецький стиль)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "GPS-треки OpenStreetMap"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Громадський транспорт (ÖPNV)"
 
@@ -16258,8 +16260,8 @@ msgstr "Strava теплова веломапа"
 msgid "Strava running heatmap"
 msgstr "Strava теплова мапа бігунів"
 
-msgid "Strava both heatmap"
-msgstr "Теплова мапа Strava (обидва види)"
+msgid "Strava cycling and running heatmap"
+msgstr "Strava теплова мапа для бігунів та велосипедистів"
 
 msgid "Locator Overlay"
 msgstr "Шар Locator"
@@ -16309,8 +16311,11 @@ msgstr "OSM Inspector: Адреси"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Кордони (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
-msgstr "SIG Національний географічний інститут Аргентини (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr "IGN Аргентина (WMTS)"
+
+msgid "IGN Argentina (WMS)"
+msgstr "IGN Аргентина (WMS)"
 
 msgid "AGRI black-and-white 2.5m"
 msgstr "AGRI чорно-біла 2,5 м"
@@ -16384,8 +16389,11 @@ msgstr "VoGIS: Плани"
 msgid "VoGIS: Höhen und Gelände"
 msgstr "VoGIS: висоти і рельєф місцевості"
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
-msgstr "AGIV(laanderen) - аерофото (разом з Брюсселем)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr "AGIV (Фландрія) найостанніші аерофотознімки (зима)"
+
+msgid "AGIV aerial imagery 10cm 2013-15"
+msgstr "AGIV аерофото 10 см 2013-15"
 
 msgid "URBISfr numerical imagery (2013)"
 msgstr "URBISfr - цифрове зображення (2013)"
@@ -17767,9 +17775,6 @@ msgstr "Читає та записує файли фільтрів поліго
 msgid "Adds map printing to JOSM"
 msgstr "Додає можливість друкування мап з JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "Додатє проекції з Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17948,8 +17953,11 @@ msgstr "Просте завантаження уздовж довгого наб
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Дозволяє пошук маршрутних точок, імпортованих із файлу gpx."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Спрощує зв’язування об’єктів ОСМ зі статтями з Вікіпедії"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
+"Спрощує створення посилань з обʼєктів OSM на статті у Вікіпедії та на "
+"Вікідані"
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -18185,15 +18193,19 @@ msgstr "зʼєднувальна колія"
 msgid "Electrified"
 msgstr "Електрифікація"
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr "контактний дріт"
 
+msgctxt "electrified"
 msgid "no"
-msgstr "ні"
+msgstr "немає"
 
+msgctxt "electrified"
 msgid "yes"
 msgstr "так"
 
+msgctxt "electrified"
 msgid "rail"
 msgstr "рейка"
 
@@ -18243,9 +18255,15 @@ msgstr "Години роботи"
 msgid "Wheelchairs"
 msgstr "Інвалідним візком"
 
+msgid "yes"
+msgstr "так"
+
 msgid "limited"
 msgstr "обмежений"
 
+msgid "no"
+msgstr "ні"
+
 msgid "Brand"
 msgstr "Торгова марка (Бренд)"
 
@@ -18658,7 +18676,7 @@ msgstr "для транспорту лісництва"
 msgid "Population"
 msgstr "Кількість населення"
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr "Поштовий індекс"
 
 msgid "Website"
@@ -18825,15 +18843,6 @@ msgstr "шиїти"
 msgid "sunni"
 msgstr "суніти"
 
-msgid "high"
-msgstr "високий"
-
-msgid "medium"
-msgstr "середній"
-
-msgid "low"
-msgstr "низька"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -20422,6 +20431,9 @@ msgstr "Метрополітен"
 msgid "Tram"
 msgstr "Трамвайна лінія"
 
+msgid "Funicular"
+msgstr "Фунікулер"
+
 msgid "Bus Guideway"
 msgstr "Рейковий автобус"
 
@@ -20927,9 +20939,6 @@ msgstr "Тролейбус"
 msgid "Share taxi"
 msgstr "Маршрутне таксі"
 
-msgid "Funicular"
-msgstr "Фунікулер"
-
 msgid "Ferry"
 msgstr "Пором"
 
@@ -22133,6 +22142,9 @@ msgstr "Стадіон"
 msgid "Sports Centre"
 msgstr "Спортивний центр"
 
+msgid "Fitness Centre"
+msgstr "Фітнес-центр"
+
 msgid "Pitch"
 msgstr "Спортивний майданчик"
 
@@ -22219,6 +22231,10 @@ msgid "sports_centre"
 msgstr "спортивний центр"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr "фітнес-центр"
+
+msgctxt "running"
 msgid "stadium"
 msgstr "стадіон"
 
@@ -22275,6 +22291,9 @@ msgstr "Кінні перегони"
 msgid "Gymnastics"
 msgstr "Гімнастика"
 
+msgid "fitness_centre"
+msgstr "фітнес-центр"
+
 msgid "Ice Skating"
 msgstr "Катання на ковзанах"
 
@@ -24133,6 +24152,15 @@ msgstr "Табак"
 msgid "Hairdresser/Barber"
 msgstr "Перукарня"
 
+msgid "Female"
+msgstr "Жіноча"
+
+msgid "Male"
+msgstr "Чоловіча"
+
+msgid "Unisex"
+msgstr "Для жінок і чоловіків"
+
 msgid "Tattoo"
 msgstr "Тату"
 
@@ -24232,6 +24260,9 @@ msgstr "пакети для екскрементів"
 msgid "food"
 msgstr "продукти харчування"
 
+msgid "milk"
+msgstr "молоко"
+
 msgid "newspapers"
 msgstr "газети"
 
@@ -24414,6 +24445,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "Уряд"
 
+msgid "ministry"
+msgstr "міністерство"
+
+msgid "prosecutor"
+msgstr "прокуратура"
+
+msgid "tax"
+msgstr "податкова"
+
+msgid "register_office"
+msgstr "РАГС"
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "Страхування"
@@ -24563,9 +24606,6 @@ msgstr "мовна_спільнота"
 msgid "ward"
 msgstr "під контролем"
 
-msgid "Postal Code"
-msgstr "Поштовий індекс"
-
 msgid "National Park"
 msgstr "Національний парк"
 
@@ -24727,6 +24767,18 @@ msgstr "Острів"
 msgid "Islet"
 msgstr "Острівець"
 
+msgid "Reef"
+msgstr "Риф"
+
+msgid "coral"
+msgstr "кораловий"
+
+msgid "oyster"
+msgstr "устричний"
+
+msgid "rock"
+msgstr "камʼяний"
+
 msgid "Nature"
 msgstr "Природа"
 
@@ -25086,6 +25138,9 @@ msgstr "Назва місцевості"
 msgid "City name"
 msgstr "Назва міста"
 
+msgid "Post code"
+msgstr "Поштовий індекс"
+
 msgid "Country code"
 msgstr "Код країни"
 
@@ -25812,6 +25867,9 @@ msgstr ""
 "таким, що є під землею.  Вилучіть {1} або додайте теґ tunnel, якщо можливо. "
 "Також перевірте перетини з мостами та їх {1} теґи."
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr "{0} разом з {1} та {2}. Вилучіть {1} та {2}"
+
 msgid "{0} is deprecated"
 msgstr "{0} заборонено"
 
@@ -27704,6 +27762,15 @@ msgstr "50 м"
 msgid "100 m"
 msgstr "100 м"
 
+msgid "high"
+msgstr "високий"
+
+msgid "medium"
+msgstr "середній"
+
+msgid "low"
+msgstr "низька"
+
 msgid "symbol"
 msgstr "символ"
 
@@ -30200,6 +30267,15 @@ msgstr[2] "Обернуто {0} зображень"
 msgid "2 images unjoined"
 msgstr "2 зображення роз’єднано"
 
+msgid "everything in the visible area"
+msgstr "все, що є у видимій області"
+
+msgid "areas with downloaded OSM-data"
+msgstr "області із завантаженими даними OSM"
+
+msgid "only when manually requested"
+msgstr "тільки під час отримання запиту вручну"
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -31672,23 +31748,11 @@ msgstr "Друк зупинено"
 msgid "Printing has failed."
 msgstr "Збій друку."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} виділено"
-
-msgid "Selected: {0}"
-msgstr "Обрано: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Втулок Proj4J"
-
-msgid "Code"
-msgstr "Код"
-
 msgid "Add stop position"
 msgstr "Додати місце зупинки"
 
 msgid "Do you want to download referrers of platforms and stop positions?"
-msgstr ""
+msgstr "Бажаєте завантажити обʼєкти, що посилаються на платформи та зупинки?"
 
 msgid "Remember my choice and do not ask me again in this session"
 msgstr "Запамʼятати мій вибір та не запитувати знов у цьому сеансі"
@@ -31728,11 +31792,21 @@ msgid "PT_Assistant Proceed Request"
 msgstr "ГТ_Помічник Продовжити запит"
 
 msgid "PT: Stop_position is not part of a way"
-msgstr ""
+msgstr "ГТ: місце зупинки не входить до складу дороги"
 
 msgid "PT: Platform should not be part of a way"
+msgstr "ГТ: платформа не повинна бути частиною дороги"
+
+msgid "PT: Stop position or platform is not part of a stop area relation"
 msgstr ""
 
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr "ГТ_Помічник Повідомлення"
+
 msgid "Public Transport Assistant tests"
 msgstr "Перевірки Помічника громадського транспорту"
 
@@ -31760,6 +31834,30 @@ msgstr "ГТ: Маршрут повинен починатись та закін
 msgid "PT: First or last way needs to be split"
 msgstr "ГТ: Перший або останній відрізок треба розділити"
 
+msgid "PT: Problem in the route segment"
+msgstr "ГТ: Проблема на відрізку маршруту"
+
+msgid "PT: Stop not served"
+msgstr "ГТ: Зупинка не обслуговується"
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr "ГТ: Тип маршруту не відповідає типу дороги, по якій він проходить"
 
@@ -31770,6 +31868,9 @@ msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 "ГТ: Маршрут проходить по дорозі з одностороннім рухом в помилковому напрямку"
 
+msgid "rail"
+msgstr "рейка"
+
 msgid "Can''t parse a time from this string."
 msgstr "Неможливо визначити час із цього рядка."
 
@@ -32959,6 +33060,9 @@ msgstr "Здається щось не так, спробуйте ще раз"
 msgid "No change to upload!"
 msgstr "Зміни для завантаження відсутні!"
 
+msgid "The bounding box is too big."
+msgstr "Обрана ділянка завелика."
+
 msgid "Cannot place a node outside of the world."
 msgstr "Неможливо помістити точку за межі світу."
 
@@ -34764,10 +34868,10 @@ msgstr[1] "Перезаписати ''{0}'' теґи {1} з {2} новим зн
 msgstr[2] "Перезаписати ''{0}'' теґів {1} з {2} новим значенням ''{3}''?"
 
 msgid "Search Wikidata items"
-msgstr ""
+msgstr "Пошук у Вікіданих"
 
 msgid "Target key: "
-msgstr ""
+msgstr "Цільовий ключ: "
 
 msgid "Add names from Wikipedia"
 msgstr "Додати назву з Вікіпедії"
@@ -34777,6 +34881,12 @@ msgid ""
 msgstr ""
 "Отримати інтервікі-посилання з Вікіпедії для того, щоб додати деякі теґи name"
 
+msgid "Search Wikipedia category"
+msgstr "Пошук категорії Вікіпедії"
+
+msgid "Load category"
+msgstr "Завантаження категорії"
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34807,13 +34917,13 @@ msgid "Not linked yet"
 msgstr "Ще не має прив’язок"
 
 msgid "{0}: {1}"
-msgstr ""
+msgstr "{0}: {1}"
 
 msgid "Wikidata"
-msgstr ""
+msgstr "Вікідані"
 
 msgid "Fetches all coordinates from Wikidata in the current view"
-msgstr ""
+msgstr "Отримує з Вікіданих відомості для всіх координат поточного виду мапи"
 
 msgid "Fetches all coordinates from Wikipedia in the current view"
 msgstr "Отримати всі координати з Вікіпедії для поточного виду"
@@ -34824,9 +34934,6 @@ msgstr "Категорія"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "Вибирає список всіх статей Вікіпедії з категорії"
 
-msgid "Enter the Wikipedia category"
-msgstr "Введіть категорію Вікіпедії"
-
 msgid "Clipboard"
 msgstr "Буфер обміну"
 
diff --git a/i18n/po/ur.po b/i18n/po/ur.po
index a7aee82..8f6ff22 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:08+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:11+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: ur\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,21 +112,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr "متعلق"
 
@@ -234,6 +219,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -509,7 +497,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1071,19 +1059,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1092,16 +1074,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1799,6 +1771,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2823,7 +2798,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2875,6 +2850,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2907,9 +2885,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5571,12 +5546,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5590,6 +5559,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5769,6 +5744,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7622,11 +7619,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9112,13 +9104,6 @@ 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 ""
 
@@ -9134,6 +9119,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12414,6 +12404,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13203,6 +13196,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13914,6 +13910,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13940,6 +13948,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13951,21 +13966,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14109,64 +14112,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14500,9 +14517,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14527,9 +14541,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14551,7 +14562,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14602,7 +14613,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14677,7 +14691,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15963,9 +15980,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16104,7 +16118,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16339,15 +16354,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16397,9 +16416,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16812,7 +16837,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16975,15 +17000,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18550,6 +18566,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19053,9 +19072,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20259,6 +20275,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20345,6 +20364,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20401,6 +20424,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22257,6 +22283,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22356,6 +22391,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22538,6 +22576,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22687,9 +22737,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22845,6 +22892,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23189,6 +23248,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23905,6 +23967,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25586,6 +25651,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27932,6 +28006,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29317,18 +29400,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29372,6 +29443,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29397,6 +29478,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29406,6 +29511,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30547,6 +30655,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32151,6 +32262,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32194,9 +32311,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/vi.po b/i18n/po/vi.po
index a061889..d87a015 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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\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: 2016-07-12 05:09+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:11+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: vi\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -113,25 +113,6 @@ msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 "Thông số \" downloadgps \"không chấp nhận các tên file hoặc URL tập tin"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<H2> JOSM đòi hỏi phiên bản Java {0} </ h2> Phát hiện phiên bản Java:.. {1} "
-"<br> YouCó thể <ul> <li> cập nhật Java của bạn (JRE) hoặc </ li> <li> sử "
-"dụng một đầu (Java {2}Tương thích) phiên bản của JOSM </ li> </ ul> More "
-"Info:."
-
-msgid "Exit JOSM"
-msgstr "Thoát JOSM"
-
-msgid "Continue, try anyway"
-msgstr "Tiếp tục, cố gắng thử lại"
-
-msgid "Error"
-msgstr "Lỗi"
-
 msgid "About"
 msgstr "Giới thiệu"
 
@@ -246,6 +227,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr "Add layer hình ảnh {0}"
 
+msgid "Error"
+msgstr "Lỗi"
+
 msgid "Select image format for WMS layer"
 msgstr "Chọn định dạng hình ảnh cho lớp WMS"
 
@@ -537,8 +521,8 @@ msgstr "Tải về đối tượng đề cập đến một trong những đối
 msgid "Duplicate"
 msgstr "Bản sao"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "lựa chọn Duplicate bằng cách sao chép và dán ngay lập tức."
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "Thoát"
@@ -1148,22 +1132,14 @@ msgstr "query Cầu vượt: "
 msgid "Paste"
 msgstr "Dán"
 
-msgid "Paste contents of paste buffer."
-msgstr "Dán nội dung của dán đệm."
-
-msgid "Delete incomplete members?"
-msgstr "Xóa thành viên không đầy đủ?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "Dán mà không có các thành viên không đầy đủ"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
-"Các dữ liệu sao chép chứa các đối tượng chưa đầy đủ. Khi dán không đầy đủCác "
-"đối tượng được loại bỏ. Bạn có muốn dán dữ liệu mà không có đầy đủĐối tượng?"
 
 msgid "Paste Tags"
 msgstr "Paste Tags"
@@ -1171,14 +1147,6 @@ msgstr "Paste Tags"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "Áp dụng thẻ nội dung dán đệm cho tất cả các mục đã chọn."
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "dán {0} tag"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "{0} đối tượng"
-
 msgid "Preferences..."
 msgstr "Tùy chọn ..."
 
@@ -1928,6 +1896,9 @@ msgstr "Truy vấn và tải changesets ..."
 msgid "Errors during download"
 msgstr "Lỗi trong khi tải về"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "Download GPS"
 
@@ -3018,8 +2989,8 @@ msgstr "Thay đổi cách {0}"
 msgid "Change relation {0}"
 msgstr "Thay đổi liên quan {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "Thay đổi nút của {0}"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "Hủy bỏ \" {0} \"cho nút '' {1} ''"
@@ -3065,6 +3036,9 @@ msgstr[0] "đối tượng"
 msgid "Change relation member role for {0} {1}"
 msgstr "Thay đổi thành viên quan vai trò cho {0} {1}"
 
+msgid "Deleted ''{0}''"
+msgstr "Xóa '' {0} ''"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "Ít nhất một đối tượng để xóa yêu cầu, có bộ sưu tập sản phẩm nào"
 
@@ -3093,9 +3067,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "Xóa {0} mối quan hệ"
 
-msgid "Deleted ''{0}''"
-msgstr "Xóa '' {0} ''"
-
 msgid "Delete confirmation"
 msgstr "Xóa xác nhận"
 
@@ -5900,12 +5871,6 @@ msgstr[0] ""
 msgid "Combine confirmation"
 msgstr "Kết hợp xác nhận"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i> thiếu </ i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5923,6 +5888,12 @@ msgstr[0] ""
 "được hiển thị một hộp thoạiĐể sửa các thẻ mâu thuẫn. <br/> <br/> Bạn có muốn "
 "tiếp tục không?"
 
+msgid "<i>missing</i>"
+msgstr "<i> thiếu </ i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "Chọn một giá trị"
 
@@ -6119,6 +6090,28 @@ msgstr "chìa khóa mới"
 msgid "New value"
 msgstr "Giá trị mới"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "dán {0} tag"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "{0} đối tượng"
+
+msgid "Delete incomplete members?"
+msgstr "Xóa thành viên không đầy đủ?"
+
+msgid "Paste without incomplete members"
+msgstr "Dán mà không có các thành viên không đầy đủ"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+"Các dữ liệu sao chép chứa các đối tượng chưa đầy đủ. Khi dán không đầy đủCác "
+"đối tượng được loại bỏ. Bạn có muốn dán dữ liệu mà không có đầy đủĐối tượng?"
+
 msgid "For selected objects only"
 msgstr "đối tượng Đối với lựa chọn duy nhất"
 
@@ -8075,13 +8068,6 @@ msgstr "Di chuyển các thành viên hiện đang được chọn lên"
 msgid "Apply the updates and close the dialog"
 msgstr "Áp dụng các bản cập nhật và đóng hộp thoại"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-"Thành viên từ dán đệm không thể được thêm vào bởi vì họ không được bao gồm "
-"trongLayer hiện tại"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9714,13 +9700,6 @@ 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ợ"
 
@@ -9736,6 +9715,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "Lưu Layer"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "Ghi chú layer"
 
@@ -13311,6 +13295,9 @@ msgstr ""
 "Không thể mở tập tin với phần mở rộng '' {2} '' và tên dụng cụ '' {3} '' "
 "trong tập tin zip. '' {0} '' ngoại lệ là: {1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "Không thể đổi tên {0} tập tin đến {1}."
 
@@ -14169,6 +14156,9 @@ msgstr "Bạn có muốn cho phép không?"
 msgid "Confirm Remote Control action"
 msgstr "Xác nhận hành động điều khiển từ xa"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -15010,6 +15000,18 @@ msgstr ""
 "tượng này. <br><Strong> tải không </ strong> nếu bạn đã cố gắng để tải về "
 "điều nàyĐối tượng <br> Các thông báo lỗi là:. <br> {0} </ html>"
 
+msgid "latitude"
+msgstr "vĩ độ"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL không chứa giá trị {0}"
+
+msgid "longitude"
+msgstr "kinh độ"
+
+msgid "zoom"
+msgstr "zoom"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -15041,6 +15043,13 @@ msgid ""
 msgstr ""
 "Không thể truy cập vào thư mục '' {0} '' vì lý do an ninh ngoại lệ là:. {1}"
 
+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 "{0}... [please type its number]"
 msgstr "{0} ... [vui lòng gõ số của nó]"
 
@@ -15053,21 +15062,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr "Mở URL: {0}"
 
-msgid "zoom"
-msgstr "zoom"
-
-msgid "latitude"
-msgstr "vĩ độ"
-
-msgid "longitude"
-msgstr "kinh độ"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL không chứa {0} / {1} / {2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL không chứa giá trị {0}"
-
 msgid "reserved"
 msgstr "dành riêng"
 
@@ -15237,83 +15234,80 @@ msgstr "Bỏ qua hình học bị thay đổi: {0}"
 msgid "Failed to load XML schema."
 msgstr "Không thể tải giản đồ XML."
 
-msgid "Do nothing"
-msgstr "Không làm gì cả"
-
-msgid "Report Bug"
-msgstr "Báo cáo Bug"
+msgid "You have encountered a bug in JOSM"
+msgstr "Bạn đã gặp phải một lỗi trong JOSM"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
-"Một ngoại lệ bất ngờ xảy ra. <br> Này luôn luôn là một lỗi mã hóa. Nếu "
-"bạnĐang chạy phiên bản mới nhất của <br> JOSM, xin vui lòng xem xét việc "
-"loại vàNộp một báo cáo lỗi."
 
-msgid "Update JOSM"
-msgstr "Cập nhật JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"Một ngoại lệ bất ngờ xảy ra. Điều này luôn luôn là một mã hóaLỗi. <br> Tuy "
-"nhiên, bạn đang chạy một phiên bản cũ của JOSM({0}), <br> thay vì sử dụng "
-"các phiên bản thử nghiệm hiện tại(<B> {1} </ b>). <br> <B> Vui lòng cập nhật "
-"JOSM </ b> trước khi xem xét để nộpBáo cáo lỗi."
+
+msgid "Report Bug"
+msgstr "Báo cáo Bug"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "Ngăn chặn các hộp thoại báo lỗi hơn nữa cho phiên này."
 
-msgid "Unexpected Exception"
-msgstr "ngoại lệ bất ngờ"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "Bạn đã gặp phải một lỗi trong JOSM"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
-"Bạn đã gặp phải một lỗi trong JOSM. Trước khi quý vị nộp một báo cáo lỗi "
-"makeChắc chắn rằng bạn đã cập nhật lên phiên bản mới nhất của JOSM đây:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
-"Bạn cũng nên cập nhật các plugin của bạn. Nếu không phải của những người "
-"giúp đỡ xin vui lòng nộpBáo cáo lỗi trong bugtracker của chúng tôi bằng cách "
-"sử dụng liên kết này:"
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
-"Có những thông tin lỗi được cung cấp dưới đây đã được điền vào choBạn. Xin "
-"bao gồm thông tin về làm thế nào để sao chép các lỗi và cố gắngCung cấp càng "
-"nhiều chi tiết càng tốt."
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
 msgstr ""
-"Ngoài ra, nếu điều đó không làm việc, bạn có thể tự điền vàoThông tin dưới "
-"đây tại URL này:"
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(Các văn bản đã được sao chép vào clipboard của bạn.)"
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
 msgstr ""
 
+msgid "Update JOSM"
+msgstr "Cập nhật JOSM"
+
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
 "must return set of primitives"
@@ -15657,9 +15651,6 @@ msgstr "HDM (Humanitarian OpenStreetMap Team)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox vệ tinh"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest mở Aerial"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -15684,9 +15675,6 @@ msgstr "OpenStreetMap (German Style)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OpenStreetMap GPS vết"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "Giao thông vận tải công cộng (ÖPNV)"
 
@@ -15708,7 +15696,7 @@ msgstr "Strava đi xe đạp heatmap"
 msgid "Strava running heatmap"
 msgstr "Strava chạy heatmap"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -15759,7 +15747,10 @@ msgstr "OSM Inspector: Địa chỉ"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM Inspector: Ranh giới (EU)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -15834,7 +15825,10 @@ msgstr "VoGIS: Flächenwidmungsplan"
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -17200,9 +17194,6 @@ msgstr "Đọc và ghi tập tin lọc thẩm thấu poly"
 msgid "Adds map printing to JOSM"
 msgstr "Thêm in ấn bản đồ để JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "thêm dự từ Proj4J"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -17371,8 +17362,9 @@ msgstr "Dễ dàng tải về cùng một tập dài của cách kết nối v
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "Cho phép tìm kiếm các điểm tham chiếu được nhập khẩu từ tập tin GPX."
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "Đơn giản hóa kết nối các đối tượng OSM đến các bài viết Wikipedia"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -17608,17 +17600,21 @@ msgstr ""
 msgid "Electrified"
 msgstr "điện"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "contact_line"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "không"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "yes"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "đường sắt"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "áp trong Volts (V)"
@@ -17666,9 +17662,15 @@ msgstr "Giờ mở cửa"
 msgid "Wheelchairs"
 msgstr "Xe lăn"
 
+msgid "yes"
+msgstr "yes"
+
 msgid "limited"
 msgstr "giới hạn"
 
+msgid "no"
+msgstr "không"
+
 msgid "Brand"
 msgstr "Nhãn hiệu"
 
@@ -18081,8 +18083,8 @@ msgstr "lâm nghiệp"
 msgid "Population"
 msgstr "Dân số"
 
-msgid "Post code"
-msgstr "Mã bưu điện"
+msgid "Postal Code"
+msgstr "Mã bưu chính"
 
 msgid "Website"
 msgstr "Website"
@@ -18248,15 +18250,6 @@ msgstr "Shia"
 msgid "sunni"
 msgstr "Sunni"
 
-msgid "high"
-msgstr "cao"
-
-msgid "medium"
-msgstr "trung bình"
-
-msgid "low"
-msgstr "thấp"
-
 msgid "750000;200000"
 msgstr "750000; 200000"
 
@@ -19843,6 +19836,9 @@ msgstr "Subway"
 msgid "Tram"
 msgstr "Tram"
 
+msgid "Funicular"
+msgstr "Funicular"
+
 msgid "Bus Guideway"
 msgstr "Bus tắc chủ"
 
@@ -20348,9 +20344,6 @@ msgstr "xe điện"
 msgid "Share taxi"
 msgstr "Share taxi"
 
-msgid "Funicular"
-msgstr "Funicular"
-
 msgid "Ferry"
 msgstr "Ferry"
 
@@ -21556,6 +21549,9 @@ msgstr "Sân vận động"
 msgid "Sports Centre"
 msgstr "Trung tâm Thể thao"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "Pitch"
 
@@ -21642,6 +21638,10 @@ msgid "sports_centre"
 msgstr "sports_centre"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "sân vận động"
 
@@ -21698,6 +21698,9 @@ msgstr "Đua ngựa"
 msgid "Gymnastics"
 msgstr "Thể dục"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -23556,6 +23559,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr "Thợ làm tóc / Barber"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "Tattoo"
 
@@ -23655,6 +23667,9 @@ msgstr "excrement_bags"
 msgid "food"
 msgstr "thực phẩm"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -23837,6 +23852,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -23986,9 +24013,6 @@ msgstr "linguistic_community"
 msgid "ward"
 msgstr "phường"
 
-msgid "Postal Code"
-msgstr "Mã bưu chính"
-
 msgid "National Park"
 msgstr "Vườn quốc gia"
 
@@ -24149,6 +24173,18 @@ msgstr "Đảo"
 msgid "Islet"
 msgstr "Hòn"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "Thiên nhiên"
 
@@ -24506,6 +24542,9 @@ msgstr "tên Place"
 msgid "City name"
 msgstr "Tên City"
 
+msgid "Post code"
+msgstr "Mã bưu điện"
+
 msgid "Country code"
 msgstr "Mã quốc gia"
 
@@ -25227,6 +25266,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} bị phản đối"
 
@@ -27077,6 +27119,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "cao"
+
+msgid "medium"
+msgstr "trung bình"
+
+msgid "low"
+msgstr "thấp"
+
 msgid "symbol"
 msgstr "biểu tượng"
 
@@ -29545,6 +29596,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -30997,18 +31057,6 @@ msgstr "In ấn dừng lại"
 msgid "Printing has failed."
 msgstr "In ấn đã thất bại."
 
-msgid "Proj4J: {0} selected"
-msgstr "Proj4J: {0} được chọn"
-
-msgid "Selected: {0}"
-msgstr "chọn: {0}"
-
-msgid "Proj4J Plugin"
-msgstr "Proj4J Plugin"
-
-msgid "Code"
-msgstr "Code"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -31052,6 +31100,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -31077,6 +31135,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -31086,6 +31168,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "đường sắt"
+
 msgid "Can''t parse a time from this string."
 msgstr "can''t phân tích một thời gian từ chuỗi này."
 
@@ -32271,6 +32356,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+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."
 
@@ -34048,6 +34136,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "Nạp liên kết wiki từ Wikipedia để thêm nhiều thẻ tên"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -34096,9 +34190,6 @@ msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 "lấy một danh sách của tất cả các bài viết trên Wikipedia về một thể loại"
 
-msgid "Enter the Wikipedia category"
-msgstr "Nhập loại Wikipedia"
-
 msgid "Clipboard"
 msgstr "Clipboard"
 
diff --git a/i18n/po/wae.po b/i18n/po/wae.po
index fff9110..c5b7a41 100644
--- a/i18n/po/wae.po
+++ b/i18n/po/wae.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: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-03-09 22:17+0000\n"
 "Last-Translator: Simon Legner <Unknown>\n"
 "Language-Team: Walser <wae 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: 2016-07-12 05:14+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:17+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
 msgstr ""
@@ -111,21 +111,6 @@ msgstr ""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr ""
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-
-msgid "Exit JOSM"
-msgstr ""
-
-msgid "Continue, try anyway"
-msgstr ""
-
-msgid "Error"
-msgstr ""
-
 msgid "About"
 msgstr ""
 
@@ -233,6 +218,9 @@ msgstr ""
 msgid "Add imagery layer {0}"
 msgstr ""
 
+msgid "Error"
+msgstr ""
+
 msgid "Select image format for WMS layer"
 msgstr ""
 
@@ -508,7 +496,7 @@ msgstr ""
 msgid "Duplicate"
 msgstr ""
 
-msgid "Duplicate selection by copy and immediate paste."
+msgid "Duplicate selection."
 msgstr ""
 
 msgid "Exit"
@@ -1070,19 +1058,13 @@ msgstr ""
 msgid "Paste"
 msgstr ""
 
-msgid "Paste contents of paste buffer."
+msgid "Paste contents of clipboard."
 msgstr ""
 
-msgid "Delete incomplete members?"
+msgid "Paste at source position"
 msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr ""
-
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
+msgid "Paste contents of clipboard at the position they were copied from."
 msgstr ""
 
 msgid "Paste Tags"
@@ -1091,16 +1073,6 @@ msgstr ""
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr ""
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] ""
-msgstr[1] ""
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] ""
-msgstr[1] ""
-
 msgid "Preferences..."
 msgstr ""
 
@@ -1798,6 +1770,9 @@ msgstr ""
 msgid "Errors during download"
 msgstr ""
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr ""
 
@@ -2822,7 +2797,7 @@ msgstr ""
 msgid "Change relation {0}"
 msgstr ""
 
-msgid "Changed nodes of {0}"
+msgid "Change nodes of {0}"
 msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
@@ -2874,6 +2849,9 @@ msgstr[1] ""
 msgid "Change relation member role for {0} {1}"
 msgstr ""
 
+msgid "Deleted ''{0}''"
+msgstr ""
+
 msgid "At least one object to delete required, got empty collection"
 msgstr ""
 
@@ -2906,9 +2884,6 @@ msgid_plural "Delete {0} relations"
 msgstr[0] ""
 msgstr[1] ""
 
-msgid "Deleted ''{0}''"
-msgstr ""
-
 msgid "Delete confirmation"
 msgstr ""
 
@@ -5570,12 +5545,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ""
-
-msgid "<i>missing</i>"
-msgstr ""
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5589,6 +5558,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr ""
+
+msgid ", "
+msgstr ""
+
 msgid "Choose a value"
 msgstr ""
 
@@ -5768,6 +5743,28 @@ msgstr ""
 msgid "New value"
 msgstr ""
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "Delete incomplete members?"
+msgstr ""
+
+msgid "Paste without incomplete members"
+msgstr ""
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr ""
+
 msgid "For selected objects only"
 msgstr ""
 
@@ -7621,11 +7618,6 @@ msgstr ""
 msgid "Apply the updates and close the dialog"
 msgstr ""
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr ""
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9111,13 +9103,6 @@ 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 ""
 
@@ -9133,6 +9118,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr ""
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12413,6 +12403,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13202,6 +13195,9 @@ msgstr ""
 msgid "Confirm Remote Control action"
 msgstr ""
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13913,6 +13909,18 @@ msgid ""
 "object.<br><br>The error message is:<br>{0}</html>"
 msgstr ""
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13939,6 +13947,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -13950,21 +13965,9 @@ msgstr ""
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14108,64 +14111,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr ""
 
-msgid "Do nothing"
+msgid "You have encountered a bug in JOSM"
 msgstr ""
 
-msgid "Report Bug"
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
 msgstr ""
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
+msgid "Debug information"
 msgstr ""
 
-msgid "Update JOSM"
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Report Bug"
 msgstr ""
 
-msgid "Unexpected Exception"
+msgid "Suppress further error dialogs for this session."
 msgstr ""
 
-msgid "You have encountered a bug in JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
+msgid "Include the system status report."
 msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
+msgid "Include information about the data you were working on."
 msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
 msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
+
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
 msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14499,9 +14516,6 @@ msgstr ""
 msgid "Mapbox Satellite"
 msgstr ""
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14526,9 +14540,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr ""
-
 msgid "Public Transport (ÖPNV)"
 msgstr ""
 
@@ -14550,7 +14561,7 @@ msgstr ""
 msgid "Strava running heatmap"
 msgstr ""
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14601,7 +14612,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14676,7 +14690,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -15962,9 +15979,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr ""
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16103,7 +16117,8 @@ msgstr ""
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr ""
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
 msgstr ""
 
 msgid ""
@@ -16338,15 +16353,19 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
 msgstr ""
 
+msgctxt "electrified"
 msgid "no"
 msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
 msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
 msgstr ""
 
@@ -16396,9 +16415,15 @@ msgstr ""
 msgid "Wheelchairs"
 msgstr ""
 
+msgid "yes"
+msgstr ""
+
 msgid "limited"
 msgstr ""
 
+msgid "no"
+msgstr ""
+
 msgid "Brand"
 msgstr ""
 
@@ -16811,7 +16836,7 @@ msgstr ""
 msgid "Population"
 msgstr ""
 
-msgid "Post code"
+msgid "Postal Code"
 msgstr ""
 
 msgid "Website"
@@ -16974,15 +16999,6 @@ msgstr ""
 msgid "sunni"
 msgstr ""
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18549,6 +18565,9 @@ msgstr ""
 msgid "Tram"
 msgstr ""
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr ""
 
@@ -19052,9 +19071,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20258,6 +20274,9 @@ msgstr ""
 msgid "Sports Centre"
 msgstr ""
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr ""
 
@@ -20344,6 +20363,10 @@ msgid "sports_centre"
 msgstr ""
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr ""
 
@@ -20400,6 +20423,9 @@ msgstr ""
 msgid "Gymnastics"
 msgstr ""
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr ""
 
@@ -22256,6 +22282,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr ""
 
@@ -22355,6 +22390,9 @@ msgstr ""
 msgid "food"
 msgstr ""
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22537,6 +22575,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22686,9 +22736,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22844,6 +22891,18 @@ msgstr ""
 msgid "Islet"
 msgstr ""
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr ""
 
@@ -23188,6 +23247,9 @@ msgstr ""
 msgid "City name"
 msgstr ""
 
+msgid "Post code"
+msgstr ""
+
 msgid "Country code"
 msgstr ""
 
@@ -23904,6 +23966,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr ""
 
@@ -25585,6 +25650,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr ""
+
 msgid "symbol"
 msgstr ""
 
@@ -27931,6 +28005,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29316,18 +29399,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr ""
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr ""
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29371,6 +29442,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29396,6 +29477,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29405,6 +29510,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr ""
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30546,6 +30654,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr ""
 
@@ -32150,6 +32261,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr ""
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32193,9 +32310,6 @@ msgstr ""
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr ""
 
-msgid "Enter the Wikipedia category"
-msgstr ""
-
 msgid "Clipboard"
 msgstr ""
 
diff --git a/i18n/po/zh_CN.po b/i18n/po/zh_CN.po
index a774b28..a1546f9 100644
--- a/i18n/po/zh_CN.po
+++ b/i18n/po/zh_CN.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-06-15 19:24+0000\n"
 "Last-Translator: mmyfl <Unknown>\n"
 "Language-Team: 汉语 <>\n"
@@ -18,8 +18,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: 2016-07-12 05:12+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:15+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: zh_CN\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -115,23 +115,6 @@ msgstr "忽略格式不良的文件 URL:“{0}”"
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "参数“downloadgps”不能使用文件名或文件 URL"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM 需要 Java 版本 {0}</h2>检测到 Java 版本 {1}<br>您可以 <ul><li>升级 Java (JRE) "
-"或者</li><li>用旧版 (兼容 Java {2}) JOSM</li></ul>其它信息:"
-
-msgid "Exit JOSM"
-msgstr "退出 JOSM"
-
-msgid "Continue, try anyway"
-msgstr "强制继续"
-
-msgid "Error"
-msgstr "错误"
-
 msgid "About"
 msgstr "关于"
 
@@ -237,6 +220,9 @@ msgstr "在地图上设定选定的元件为上列列表中选定的项目。"
 msgid "Add imagery layer {0}"
 msgstr "添加图像层 {0}"
 
+msgid "Error"
+msgstr "错误"
+
 msgid "Select image format for WMS layer"
 msgstr "为 WMS 图层选择图像格式"
 
@@ -514,8 +500,8 @@ msgstr "下载参照到选定对象中的对象"
 msgid "Duplicate"
 msgstr "制作副本"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "制作副本会复制选择范围,并立即粘贴上。"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "退出"
@@ -1084,20 +1070,14 @@ msgstr "Overpass 查询: "
 msgid "Paste"
 msgstr "粘贴"
 
-msgid "Paste contents of paste buffer."
-msgstr "从剪贴板粘贴内容。"
-
-msgid "Delete incomplete members?"
-msgstr "是否删除不完整的成员?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "粘贴时不包含不完整的成员"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
-msgstr "复制的资料包含不完整的对象。在粘贴时会删除不完整的对象。您想要粘贴没有不完整对象的数据吗?"
+msgid "Paste contents of clipboard at the position they were copied from."
+msgstr ""
 
 msgid "Paste Tags"
 msgstr "粘贴标签"
@@ -1105,14 +1085,6 @@ msgstr "粘贴标签"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "将剪贴板的标签粘贴到所有选定的项目上。"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "正在粘贴 {0} 个标签"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "到 {0} 个对象"
-
 msgid "Preferences..."
 msgstr "首选项..."
 
@@ -1803,6 +1775,9 @@ msgstr "查询并下载修改集合..."
 msgid "Errors during download"
 msgstr "下载时发生错误"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "下载 GPS"
 
@@ -2833,8 +2808,8 @@ msgstr "改变路径 {0}"
 msgid "Change relation {0}"
 msgstr "改变关系 {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "{0} 个已修改的节点"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "从节点“{1}”删除“{0}”"
@@ -2880,6 +2855,9 @@ msgstr[0] "对象"
 msgid "Change relation member role for {0} {1}"
 msgstr "改变关系成员 {0} {1} 的角色"
 
+msgid "Deleted ''{0}''"
+msgstr "已删除“{0}”"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "至少要删除一个对象,却收到空白集合"
 
@@ -2908,9 +2886,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "删除 {0} 个关系"
 
-msgid "Deleted ''{0}''"
-msgstr "已删除“{0}”"
-
 msgid "Delete confirmation"
 msgstr "删除动作确认"
 
@@ -5564,12 +5539,6 @@ msgstr[0] ""
 msgid "Combine confirmation"
 msgstr "合并确认"
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>丢失</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5584,6 +5553,12 @@ msgstr[0] ""
 "您将要合并 {0} 个对象,但它们使用了以下相斥标签:<br/>{1} "
 "合并这些对象可能会导致生成的对象有多余的标签。<br/>如果您继续,会出现一个对话框以解决冲突的标签。<br/><br/>您要继续吗?"
 
+msgid "<i>missing</i>"
+msgstr "<i>丢失</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "请选择数值"
 
@@ -5766,6 +5741,26 @@ msgstr "新的设定键"
 msgid "New value"
 msgstr "新的数值"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "正在粘贴 {0} 个标签"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "到 {0} 个对象"
+
+msgid "Delete incomplete members?"
+msgstr "是否删除不完整的成员?"
+
+msgid "Paste without incomplete members"
+msgstr "粘贴时不包含不完整的成员"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr "复制的资料包含不完整的对象。在粘贴时会删除不完整的对象。您想要粘贴没有不完整对象的数据吗?"
+
 msgid "For selected objects only"
 msgstr "只用于选定的对象"
 
@@ -7627,11 +7622,6 @@ msgstr "将目前选定的成员上移"
 msgid "Apply the updates and close the dialog"
 msgstr "应用更新并关闭此对话框"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr "不能添加剪贴板中的成员,因为它们未包含于当前图层中"
-
 msgid "Relation Editor: Refresh"
 msgstr "关系编辑器:刷新"
 
@@ -9135,17 +9125,6 @@ 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 ""
-"要添加新图层,须通过-Xmx{0,number,#}M "
-"命令选项(见http://forum.openstreetmap.org/viewtopic.php?id=25677)给JOSM分配{0,number,"
-"#}MB内存。\n"
-"目前分配给JOSM的内存有 {1,number,#}MB。"
-
 msgid "All projections are supported"
 msgstr "支持所有的投影法"
 
@@ -9161,6 +9140,11 @@ msgstr "再次改变投影法,或删除图层。"
 msgid "Save Layer"
 msgstr "保存图层"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr "笔记图层"
 
@@ -12505,6 +12489,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr "打开扩展名为\"{2}\"的文件中名为\"{3}\"的压缩文件\"{0}\"失败。异常如下:{1}"
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr "无法重命名文件 {0} 为 {1}。"
 
@@ -13297,6 +13284,9 @@ msgstr "您是否要允许此动作?"
 msgid "Confirm Remote Control action"
 msgstr "确认远程控制动作"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -14019,6 +14009,18 @@ msgstr ""
 "<html>服务器回复有对象已被删除。<br>如果您尝试更新或删除这个对象则会<strong>上传失败</strong>。<br>如果您尝试下载这个对象则"
 "会<strong>下载失败</strong>。<br><br>错误的信息为:<br>{0}</html>"
 
+msgid "latitude"
+msgstr "纬度"
+
+msgid "URL does not contain valid {0}"
+msgstr "URL 不包含有效的{0}"
+
+msgid "longitude"
+msgstr "经度"
+
+msgid "zoom"
+msgstr "缩放级别"
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -14045,6 +14047,17 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 msgstr "由于安全原因,无法访问目录“{0}”。异常为:{1}"
 
+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 ""
+"要添加新图层,须通过-Xmx{0,number,#}M "
+"命令选项(见http://forum.openstreetmap.org/viewtopic.php?id=25677)给JOSM分配{0,number,"
+"#}MB内存。\n"
+"目前分配给JOSM的内存有 {1,number,#}MB。"
+
 msgid "{0}... [please type its number]"
 msgstr "{0}... [请输入其编号]"
 
@@ -14056,21 +14069,9 @@ msgstr "无法打开 URL。目前尚未设定平台。请先设定平台。"
 msgid "Opening URL: {0}"
 msgstr "正在打开 URL:{0}"
 
-msgid "zoom"
-msgstr "缩放级别"
-
-msgid "latitude"
-msgstr "纬度"
-
-msgid "longitude"
-msgstr "经度"
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr "URL 不包含{0}/{1}/{2}"
 
-msgid "URL does not contain valid {0}"
-msgstr "URL 不包含有效的{0}"
-
 msgid "reserved"
 msgstr "保留"
 
@@ -14217,67 +14218,79 @@ msgstr "忽略格式错误的几何形状:{0}"
 msgid "Failed to load XML schema."
 msgstr "无法加载 XML 架构。"
 
-msgid "Do nothing"
-msgstr "不处理"
-
-msgid "Report Bug"
-msgstr "报告程序缺陷"
+msgid "You have encountered a bug in JOSM"
+msgstr "您遇到了 JOSM 程序缺陷"
 
 msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
-msgstr "发生异常。<br>这通常是程序码引起的错误。如果您使用的是最新版的<br>JOSM,请考虑不吝回复错误。"
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
 
-msgid "Update JOSM"
-msgstr "升级 JOSM"
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
 msgstr ""
-"发生异常。这通常是程序码引起的错误。<br><br>然而您运行的是旧版本的 JOSM "
-"({0}),而不是<br>当前的测试版(<b>{1}</b>)。<br><br>在您考虑提交错误报告之前,<b>请更新您的 JOSM</b>。"
+
+msgid "Report Bug"
+msgstr "报告程序缺陷"
 
 msgid "Suppress further error dialogs for this session."
 msgstr "阻止此会话再显示该错误对话框。"
 
-msgid "Unexpected Exception"
-msgstr "意想不到的异常"
-
-msgid "You have encountered a bug in JOSM"
-msgstr "您遇到了 JOSM 程序缺陷"
+msgid "Ignore this error."
+msgstr ""
 
 msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
-msgstr "您遇到了 JOSM 的错误。在您发送错误报告之前,请确保您已从这更新到最新版本的 JOSM:"
+"Opening the bug report failed. Please report manually using this website:"
+msgstr "打开错误报告失败。请使用此网站手动报告:"
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr "您也应该更新您的插件。如果这些都没有帮助,请在以下链接中的缺陷追踪系统中报告缺陷:"
+msgid "Include the system status report."
+msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr "下面提供的错误信息应该已经为您填好。请加上如何重现这个错误的信息,并尽可能详细一些。"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr "另外,如果这些都不行,您也可以在这个 URL 自行填写信息:"
+msgid "Include all stack traces."
+msgstr ""
+
+msgid "Your current version of JOSM is {0}"
+msgstr ""
+
+msgid "JOSM is searching for updates..."
+msgstr ""
+
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
+
+msgid "JOSM is up to date."
+msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(该文字已复制到您的剪贴板中。)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
-msgstr "打开错误报告失败。请使用此网站手动报告:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
+msgstr "升级 JOSM"
 
 msgid ""
 "Error in search expression on position {0} - right side of or(|) expression "
@@ -14610,9 +14623,6 @@ msgstr "HDM (人道主义 OSM 团队)"
 msgid "Mapbox Satellite"
 msgstr "Mapbox 卫星"
 
-msgid "MapQuest Open Aerial"
-msgstr "MapQuest 开放航拍图像"
-
 msgid "OpenCycleMap"
 msgstr "OpenCycleMap"
 
@@ -14637,9 +14647,6 @@ msgstr "OpenStreetMap (德国样式)"
 msgid "OpenStreetMap GPS Traces"
 msgstr "OSM GPS 轨迹"
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "公共交通(ÖPNV)"
 
@@ -14661,7 +14668,7 @@ msgstr "Strava自行车热力图"
 msgid "Strava running heatmap"
 msgstr "Strava跑步热力图"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14712,7 +14719,10 @@ msgstr "OSM 检查器:地址"
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr "OSM 检查器:边界(欧盟)"
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14787,7 +14797,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16075,9 +16088,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr "添加地图打印到 JOSM"
 
-msgid "adds projections from Proj4J"
-msgstr "从 Proj4J 添加投影法"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16216,8 +16226,9 @@ msgstr "方便下载一整组互相联结的路径"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "为从 GPX 文件导入的路点打开搜索功能。"
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "简化 OSM 对象到维基百科条目的链接"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -16451,17 +16462,21 @@ msgstr "渡线"
 msgid "Electrified"
 msgstr "电气化"
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "接触网"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "否"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "是"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "第三轨"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr "电压(伏)"
@@ -16509,9 +16524,15 @@ msgstr "开放时间"
 msgid "Wheelchairs"
 msgstr "轮椅"
 
+msgid "yes"
+msgstr "是"
+
 msgid "limited"
 msgstr "有限"
 
+msgid "no"
+msgstr "否"
+
 msgid "Brand"
 msgstr "品牌"
 
@@ -16924,8 +16945,8 @@ msgstr "林业"
 msgid "Population"
 msgstr "人口"
 
-msgid "Post code"
-msgstr "邮政编号"
+msgid "Postal Code"
+msgstr "邮编分区"
 
 msgid "Website"
 msgstr "网址"
@@ -17087,15 +17108,6 @@ msgstr "什叶派"
 msgid "sunni"
 msgstr "逊尼派"
 
-msgid "high"
-msgstr "高"
-
-msgid "medium"
-msgstr "中"
-
-msgid "low"
-msgstr "低"
-
 msgid "750000;200000"
 msgstr "750000;200000"
 
@@ -18662,6 +18674,9 @@ msgstr "地铁"
 msgid "Tram"
 msgstr "有轨电车"
 
+msgid "Funicular"
+msgstr "缆车"
+
 msgid "Bus Guideway"
 msgstr "导轨巴士"
 
@@ -19165,9 +19180,6 @@ msgstr "电车"
 msgid "Share taxi"
 msgstr "共享出租车"
 
-msgid "Funicular"
-msgstr "缆车"
-
 msgid "Ferry"
 msgstr "渡轮"
 
@@ -20371,6 +20383,9 @@ msgstr "竞技场"
 msgid "Sports Centre"
 msgstr "运动中心"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "场地"
 
@@ -20457,6 +20472,10 @@ msgid "sports_centre"
 msgstr "体育中心"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "体育场"
 
@@ -20513,6 +20532,9 @@ msgstr "赛马"
 msgid "Gymnastics"
 msgstr "体操"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "滑冰"
 
@@ -22369,6 +22391,15 @@ msgstr "烟草"
 msgid "Hairdresser/Barber"
 msgstr "美发/理发"
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "文身"
 
@@ -22468,6 +22499,9 @@ msgstr "粪袋"
 msgid "food"
 msgstr "食物"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr "报纸"
 
@@ -22650,6 +22684,18 @@ msgctxt "office"
 msgid "Government"
 msgstr "政府"
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr "保险"
@@ -22799,9 +22845,6 @@ msgstr "语言区"
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr "邮编分区"
-
 msgid "National Park"
 msgstr "国家公园"
 
@@ -22957,6 +23000,18 @@ msgstr "岛"
 msgid "Islet"
 msgstr "屿"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "自然"
 
@@ -23301,6 +23356,9 @@ msgstr "地点名称"
 msgid "City name"
 msgstr "城市名称"
 
+msgid "Post code"
+msgstr "邮政编号"
+
 msgid "Country code"
 msgstr "国家代码"
 
@@ -24017,6 +24075,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} 已过时"
 
@@ -25791,6 +25852,15 @@ msgstr "50 m"
 msgid "100 m"
 msgstr "100 m"
 
+msgid "high"
+msgstr "高"
+
+msgid "medium"
+msgstr "中"
+
+msgid "low"
+msgstr "低"
+
 msgid "symbol"
 msgstr "符号"
 
@@ -28168,6 +28238,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29548,18 +29627,6 @@ msgstr "打印已停止"
 msgid "Printing has failed."
 msgstr "打印已失败。"
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr "已选定:{0}"
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr "代码"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29603,6 +29670,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29628,6 +29705,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29637,6 +29738,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "第三轨"
+
 msgid "Can''t parse a time from this string."
 msgstr "无法从这个字符串中解析时间。"
 
@@ -30782,6 +30886,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "不能在世界之外放置节点。"
 
@@ -32430,6 +32537,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "从维基百科获取跨维基链接,以添加多个名称标签"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32473,9 +32586,6 @@ msgstr "分类"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "获取分类下所有维基百科的文章列表"
 
-msgid "Enter the Wikipedia category"
-msgstr "输入维基百科分类"
-
 msgid "Clipboard"
 msgstr "剪贴板"
 
diff --git a/i18n/po/zh_TW.po b/i18n/po/zh_TW.po
index 6b42ed2..8c18434 100644
--- a/i18n/po/zh_TW.po
+++ b/i18n/po/zh_TW.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: josm\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-07-12 03:36+0200\n"
+"POT-Creation-Date: 2016-08-12 03:40+0200\n"
 "PO-Revision-Date: 2016-06-06 03:51+0000\n"
 "Last-Translator: Rex Tsai <rex.tsai at canonical.com>\n"
 "Language-Team: Traditional Chinese\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: 2016-07-12 05:11+0000\n"
-"X-Generator: Launchpad (build 18115)\n"
+"X-Launchpad-Export-Date: 2016-08-12 05:14+0000\n"
+"X-Generator: Launchpad (build 18169)\n"
 "Language: zh_TW\n"
 
 msgid "{0}: option ''{1}'' is ambiguous"
@@ -112,23 +112,6 @@ msgstr "忽略格式不良的檔案 URL: \"{0}\""
 msgid "Parameter \"downloadgps\" does not accept file names or file URLs"
 msgstr "參數「downloadgps」不能使用檔案名稱或檔案 URL"
 
-msgid ""
-"<h2>JOSM requires Java version {0}.</h2>Detected Java version: {1}.<br>You "
-"can <ul><li>update your Java (JRE) or</li><li>use an earlier (Java {2} "
-"compatible) version of JOSM.</li></ul>More Info:"
-msgstr ""
-"<h2>JOSM需要Java版本{0}。</h2>本機Java版本:{1}。<br>你可以<ul><li>更新本機Java "
-"(JRE)或是</li><li>使用舊版(與Java {2}相容) .的JOSM</li></ul>更多資訊:"
-
-msgid "Exit JOSM"
-msgstr "結束 JOSM"
-
-msgid "Continue, try anyway"
-msgstr "繼續,強制再試一次"
-
-msgid "Error"
-msgstr "錯誤"
-
 msgid "About"
 msgstr "關於"
 
@@ -234,6 +217,9 @@ msgstr "在地圖上設定選取的元件為上列清單中選取的項目。"
 msgid "Add imagery layer {0}"
 msgstr "加入圖片圖層 {0}"
 
+msgid "Error"
+msgstr "錯誤"
+
 msgid "Select image format for WMS layer"
 msgstr "選擇WMS圖層的檔案格式"
 
@@ -511,8 +497,8 @@ msgstr "下載參照到選取物件中的物件"
 msgid "Duplicate"
 msgstr "重製"
 
-msgid "Duplicate selection by copy and immediate paste."
-msgstr "重製會複製選擇區域並立即貼上。"
+msgid "Duplicate selection."
+msgstr ""
 
 msgid "Exit"
 msgstr "離開"
@@ -1078,20 +1064,14 @@ msgstr "Overpass檢索 "
 msgid "Paste"
 msgstr "貼上"
 
-msgid "Paste contents of paste buffer."
-msgstr "從剪貼緩衝區貼上內容。"
-
-msgid "Delete incomplete members?"
-msgstr "是否刪除不完整的成員?"
+msgid "Paste contents of clipboard."
+msgstr ""
 
-msgid "Paste without incomplete members"
-msgstr "貼上時不包含不完整的成員"
+msgid "Paste at source position"
+msgstr ""
 
-msgid ""
-"The copied data contains incomplete objects.  When pasting the incomplete "
-"objects are removed.  Do you want to paste the data without the incomplete "
-"objects?"
-msgstr "複製的資料包含不完整的物件。在貼上時會移除不完整的物件。您想要貼上沒有不完整物件的資料嗎?"
+msgid "Paste contents of clipboard at the position they were copied from."
+msgstr ""
 
 msgid "Paste Tags"
 msgstr "貼上標籤"
@@ -1099,14 +1079,6 @@ msgstr "貼上標籤"
 msgid "Apply tags of contents of paste buffer to all selected items."
 msgstr "將剪貼緩衝區的標籤套用到所有選取的項目上。"
 
-msgid "Pasting {0} tag"
-msgid_plural "Pasting {0} tags"
-msgstr[0] "正在貼上 {0} 標籤"
-
-msgid "to {0} object"
-msgid_plural "to {0} objects"
-msgstr[0] "到 {0} 個物件"
-
 msgid "Preferences..."
 msgstr "偏好設定..."
 
@@ -1796,6 +1768,9 @@ msgstr "查詢並下載變更組合..."
 msgid "Errors during download"
 msgstr "下載時發生錯誤"
 
+msgid "Download Geo URL"
+msgstr ""
+
 msgid "Download GPS"
 msgstr "下載 GPS"
 
@@ -2824,8 +2799,8 @@ msgstr "改變路徑 {0}"
 msgid "Change relation {0}"
 msgstr "改變關係 {0}"
 
-msgid "Changed nodes of {0}"
-msgstr "{0} 已變更的節點"
+msgid "Change nodes of {0}"
+msgstr ""
 
 msgid "Remove \"{0}\" for node ''{1}''"
 msgstr "從節點「{1}」移除「{0}」"
@@ -2875,6 +2850,9 @@ msgstr[0] "物件"
 msgid "Change relation member role for {0} {1}"
 msgstr "改變 {0} {1} 的關係成員角色"
 
+msgid "Deleted ''{0}''"
+msgstr "已刪除「{0}」"
+
 msgid "At least one object to delete required, got empty collection"
 msgstr "至少要刪除一個物件,卻收到空白集合"
 
@@ -2903,9 +2881,6 @@ msgid "Delete {0} relation"
 msgid_plural "Delete {0} relations"
 msgstr[0] "刪除 {0} 個關係"
 
-msgid "Deleted ''{0}''"
-msgstr "已刪除「{0}」"
-
 msgid "Delete confirmation"
 msgstr "刪除動作確認"
 
@@ -5556,12 +5531,6 @@ msgstr[1] ""
 msgid "Combine confirmation"
 msgstr ""
 
-msgid ", "
-msgstr ", "
-
-msgid "<i>missing</i>"
-msgstr "<i>缺少</i>"
-
 msgid ""
 "You are about to combine {0} objects, but the following tags are used "
 "conflictingly:<br/>{1}If these objects are combined, the resulting object "
@@ -5575,6 +5544,12 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
+msgid "<i>missing</i>"
+msgstr "<i>缺少</i>"
+
+msgid ", "
+msgstr ", "
+
 msgid "Choose a value"
 msgstr "請選擇數值"
 
@@ -5751,6 +5726,26 @@ msgstr "新的設定鍵"
 msgid "New value"
 msgstr "新的數值"
 
+msgid "Pasting {0} tag"
+msgid_plural "Pasting {0} tags"
+msgstr[0] "正在貼上 {0} 標籤"
+
+msgid "to {0} object"
+msgid_plural "to {0} objects"
+msgstr[0] "到 {0} 個物件"
+
+msgid "Delete incomplete members?"
+msgstr "是否刪除不完整的成員?"
+
+msgid "Paste without incomplete members"
+msgstr "貼上時不包含不完整的成員"
+
+msgid ""
+"The copied data contains incomplete objects.  When pasting the incomplete "
+"objects are removed.  Do you want to paste the data without the incomplete "
+"objects?"
+msgstr "複製的資料包含不完整的物件。在貼上時會移除不完整的物件。您想要貼上沒有不完整物件的資料嗎?"
+
 msgid "For selected objects only"
 msgstr "只用於選取的物件"
 
@@ -7602,11 +7597,6 @@ msgstr "將目前選取的成員上移"
 msgid "Apply the updates and close the dialog"
 msgstr "套用更新並關閉此對話盒"
 
-msgid ""
-"Members from paste buffer cannot be added because they are not included in "
-"current layer"
-msgstr "不能加入來自貼上緩衝區的成員,因為它們不包含在目前的圖層裡"
-
 msgid "Relation Editor: Refresh"
 msgstr ""
 
@@ -9105,13 +9095,6 @@ 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 ""
 
@@ -9127,6 +9110,11 @@ msgstr ""
 msgid "Save Layer"
 msgstr "儲存圖層"
 
+msgid "{0} note"
+msgid_plural "{0} notes"
+msgstr[0] ""
+msgstr[1] ""
+
 msgid "Notes layer"
 msgstr ""
 
@@ -12455,6 +12443,9 @@ msgid ""
 "''{0}''. Exception was: {1}"
 msgstr ""
 
+msgid "The requested URL {0} was not found"
+msgstr ""
+
 msgid "Failed to rename file {0} to {1}."
 msgstr ""
 
@@ -13246,6 +13237,9 @@ msgstr "您是否要允許這個?"
 msgid "Confirm Remote Control action"
 msgstr "確認遠端控制動作"
 
+msgid "The following keys are mandatory, but have not been provided: {0}"
+msgstr ""
+
 msgid ""
 "Remote Control has been asked to report its protocol version. This enables "
 "web sites to detect a running JOSM."
@@ -13968,6 +13962,18 @@ msgstr ""
 "<html>伺服器回報有物件已被刪除。<br>如果您嘗試更新或刪除這個物件則會<strong>上傳失敗</strong>。<br>如果您嘗試下載這個物件則"
 "會<strong>下載失敗</strong>。<br><br>錯誤的訊息為:<br>{0}</html>"
 
+msgid "latitude"
+msgstr ""
+
+msgid "URL does not contain valid {0}"
+msgstr ""
+
+msgid "longitude"
+msgstr ""
+
+msgid "zoom"
+msgstr ""
+
 msgid ""
 "Unexpected response from HTTP server. Got {0} response without ''Location'' "
 "header. Can''t redirect. Aborting."
@@ -13994,6 +14000,13 @@ msgid ""
 "Failed to access directory ''{0}'' for security reasons. Exception was: {1}"
 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 "{0}... [please type its number]"
 msgstr ""
 
@@ -14005,21 +14018,9 @@ msgstr "無法開啟 URL。目前尚未設定平台。請先設定平台。"
 msgid "Opening URL: {0}"
 msgstr ""
 
-msgid "zoom"
-msgstr ""
-
-msgid "latitude"
-msgstr ""
-
-msgid "longitude"
-msgstr ""
-
 msgid "URL does not contain {0}/{1}/{2}"
 msgstr ""
 
-msgid "URL does not contain valid {0}"
-msgstr ""
-
 msgid "reserved"
 msgstr ""
 
@@ -14163,64 +14164,78 @@ msgstr ""
 msgid "Failed to load XML schema."
 msgstr "無法載入 XML schema。"
 
-msgid "Do nothing"
-msgstr "不做任何事"
+msgid "You have encountered a bug in JOSM"
+msgstr "您遇到了 JOSM 的程式錯誤"
+
+msgid ""
+"An unexpected exception occurred.\n"
+"This is always a coding error. If you are running the latest version of "
+"JOSM, please consider being kind and file a bug report."
+msgstr ""
+
+msgid "Debug information"
+msgstr ""
+
+msgid "Manually report at:"
+msgstr ""
+
+msgid "Is JOSM up to date?"
+msgstr ""
+
+msgid "Send bug report"
+msgstr ""
+
+msgid ""
+"If you are running the latest version of JOSM and the plugins, please file a "
+"bug report in our bugtracker.\n"
+"There the error information should already be filled in for you. Please "
+"include information on how to reproduce the error and try to supply as much "
+"detail as possible."
+msgstr ""
 
 msgid "Report Bug"
 msgstr "回報程式錯誤"
 
-msgid ""
-"An unexpected exception occurred.<br>This is always a coding error. If you "
-"are running the latest<br>version of JOSM, please consider being kind and "
-"file a bug report."
-msgstr "發生未預期的例外。<br>這通常是程式碼的錯誤。如果您使用的是最新版的<br>JOSM,請考慮不吝回報錯誤。"
+msgid "Suppress further error dialogs for this session."
+msgstr ""
 
-msgid "Update JOSM"
+msgid "Ignore this error."
 msgstr ""
 
 msgid ""
-"An unexpected exception occurred. This is always a coding "
-"error.<br><br>However, you are running an old version of JOSM "
-"({0}),<br>instead of using the current tested version "
-"(<b>{1}</b>).<br><br><b>Please update JOSM</b> before considering to file a "
-"bug report."
+"Opening the bug report failed. Please report manually using this website:"
 msgstr ""
 
-msgid "Suppress further error dialogs for this session."
+msgid "Include the system status report."
 msgstr ""
 
-msgid "Unexpected Exception"
-msgstr "未預期的例外"
+msgid "Include information about the data you were working on."
+msgstr ""
 
-msgid "You have encountered a bug in JOSM"
-msgstr "您遇到了 JOSM 的程式錯誤"
+msgid "Include all stack traces."
+msgstr ""
 
-msgid ""
-"You have encountered an error in JOSM. Before you file a bug report make "
-"sure you have updated to the latest version of JOSM here:"
-msgstr "您遇到了 JOSM 的錯誤。在您回報錯誤之前請確定您已更新到在這裡最新版的 JOSM:"
+msgid "Your current version of JOSM is {0}"
+msgstr ""
 
-msgid ""
-"You should also update your plugins. If neither of those help please file a "
-"bug report in our bugtracker using this link:"
-msgstr "您也應該更新您的外掛程式。如果這些都沒有幫助,請在以下連結的錯誤追蹤程式回報錯誤:"
+msgid "JOSM is searching for updates..."
+msgstr ""
 
-msgid ""
-"There the error information provided below should already be filled in for "
-"you. Please include information on how to reproduce the error and try to "
-"supply as much detail as possible."
-msgstr "下面提供了錯誤訊息已為您填好。請加上關於如何重現這個錯誤的資訊,並儘可能詳細一些。"
+msgid "An error occured while checking if your JOSM instance is up to date."
+msgstr ""
 
-msgid ""
-"Alternatively, if that does not work you can manually fill in the "
-"information below at this URL:"
-msgstr "另外,如果這些都不行您也可以在這個 URL 自行填寫資訊:"
+msgid "JOSM is up to date."
+msgstr ""
 
-msgid "(The text has already been copied to your clipboard.)"
-msgstr "(該文字已複製到您的剪貼簿中。)"
+msgid "JOSM is out of date. The current version is {0}. Try updateing JOSM."
+msgstr ""
 
 msgid ""
-"Opening the bug report failed. Please report manually using this website:"
+"Before you file a bug report make sure you have updated to the latest "
+"version of JOSM here:"
+msgstr ""
+
+msgid "Update JOSM"
 msgstr ""
 
 msgid ""
@@ -14554,9 +14569,6 @@ msgstr "人道救援開放街圖小組"
 msgid "Mapbox Satellite"
 msgstr "Mapbox 衛星圖"
 
-msgid "MapQuest Open Aerial"
-msgstr ""
-
 msgid "OpenCycleMap"
 msgstr ""
 
@@ -14581,9 +14593,6 @@ msgstr ""
 msgid "OpenStreetMap GPS Traces"
 msgstr ""
 
-msgid "MapQuest OSM"
-msgstr "MapQuest OSM"
-
 msgid "Public Transport (ÖPNV)"
 msgstr "大眾運輸 (ÖPNV)"
 
@@ -14605,7 +14614,7 @@ msgstr "Strava單車熱力圖"
 msgid "Strava running heatmap"
 msgstr "Strava跑步熱力圖"
 
-msgid "Strava both heatmap"
+msgid "Strava cycling and running heatmap"
 msgstr ""
 
 msgid "Locator Overlay"
@@ -14656,7 +14665,10 @@ msgstr ""
 msgid "OSM Inspector: Boundaries (EU)"
 msgstr ""
 
-msgid "SIG Instituto Geográfico Nacional (WMTS)"
+msgid "IGN Argentina (WMTS)"
+msgstr ""
+
+msgid "IGN Argentina (WMS)"
 msgstr ""
 
 msgid "AGRI black-and-white 2.5m"
@@ -14731,7 +14743,10 @@ msgstr ""
 msgid "VoGIS: Höhen und Gelände"
 msgstr ""
 
-msgid "AGIV(laanderen) aerial imagery (covers Brussels region as well)"
+msgid "AGIV (Vlaanderen / Flanders) most recent aerial imagery (winter)"
+msgstr ""
+
+msgid "AGIV aerial imagery 10cm 2013-15"
 msgstr ""
 
 msgid "URBISfr numerical imagery (2013)"
@@ -16019,9 +16034,6 @@ msgstr ""
 msgid "Adds map printing to JOSM"
 msgstr ""
 
-msgid "adds projections from Proj4J"
-msgstr "從 Proj4J 加入投影法"
-
 msgid ""
 "Provides validation and fixing for public transport route according to "
 "version 2 of the public transport schema"
@@ -16160,8 +16172,9 @@ msgstr "方便的下載一整組互相聯結的路徑"
 msgid "Enables searching for waypoint imported from gpx file."
 msgstr "啟用搜尋從 gpx 檔案匯入的航點。"
 
-msgid "Simplifies linking OSM objects to Wikipedia articles"
-msgstr "簡化連結 OSM 物件至維基百科文章"
+msgid ""
+"Simplifies linking OSM objects to Wikipedia articles and Wikidata items"
+msgstr ""
 
 msgid ""
 "Drive a race car from point A to point B over aerial imagery, leave cacti "
@@ -16395,17 +16408,21 @@ msgstr ""
 msgid "Electrified"
 msgstr ""
 
+msgctxt "electrified"
 msgid "contact_line"
-msgstr "連接線"
+msgstr ""
 
+msgctxt "electrified"
 msgid "no"
-msgstr "否"
+msgstr ""
 
+msgctxt "electrified"
 msgid "yes"
-msgstr "是"
+msgstr ""
 
+msgctxt "electrified"
 msgid "rail"
-msgstr "軌"
+msgstr ""
 
 msgid "Voltage in Volts (V)"
 msgstr ""
@@ -16453,9 +16470,15 @@ msgstr "開放時間"
 msgid "Wheelchairs"
 msgstr "輪椅"
 
+msgid "yes"
+msgstr "是"
+
 msgid "limited"
 msgstr "限制"
 
+msgid "no"
+msgstr "否"
+
 msgid "Brand"
 msgstr "品牌"
 
@@ -16868,8 +16891,8 @@ msgstr "林業"
 msgid "Population"
 msgstr "人口"
 
-msgid "Post code"
-msgstr "郵遞區號"
+msgid "Postal Code"
+msgstr ""
 
 msgid "Website"
 msgstr "網站"
@@ -17031,15 +17054,6 @@ msgstr "什葉派"
 msgid "sunni"
 msgstr "遜尼派"
 
-msgid "high"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "low"
-msgstr "低"
-
 msgid "750000;200000"
 msgstr ""
 
@@ -18606,6 +18620,9 @@ msgstr "地下鐵"
 msgid "Tram"
 msgstr "路面電車"
 
+msgid "Funicular"
+msgstr ""
+
 msgid "Bus Guideway"
 msgstr "導軌道巴士"
 
@@ -19109,9 +19126,6 @@ msgstr ""
 msgid "Share taxi"
 msgstr ""
 
-msgid "Funicular"
-msgstr ""
-
 msgid "Ferry"
 msgstr ""
 
@@ -20315,6 +20329,9 @@ msgstr "體育館"
 msgid "Sports Centre"
 msgstr "運動中心"
 
+msgid "Fitness Centre"
+msgstr ""
+
 msgid "Pitch"
 msgstr "球場"
 
@@ -20401,6 +20418,10 @@ msgid "sports_centre"
 msgstr "運動中心"
 
 msgctxt "running"
+msgid "fitness_centre"
+msgstr ""
+
+msgctxt "running"
 msgid "stadium"
 msgstr "體育館"
 
@@ -20457,6 +20478,9 @@ msgstr "賽馬"
 msgid "Gymnastics"
 msgstr "體操"
 
+msgid "fitness_centre"
+msgstr ""
+
 msgid "Ice Skating"
 msgstr "溜冰"
 
@@ -22313,6 +22337,15 @@ msgstr ""
 msgid "Hairdresser/Barber"
 msgstr ""
 
+msgid "Female"
+msgstr ""
+
+msgid "Male"
+msgstr ""
+
+msgid "Unisex"
+msgstr ""
+
 msgid "Tattoo"
 msgstr "刺青"
 
@@ -22412,6 +22445,9 @@ msgstr ""
 msgid "food"
 msgstr "食物"
 
+msgid "milk"
+msgstr ""
+
 msgid "newspapers"
 msgstr ""
 
@@ -22594,6 +22630,18 @@ msgctxt "office"
 msgid "Government"
 msgstr ""
 
+msgid "ministry"
+msgstr ""
+
+msgid "prosecutor"
+msgstr ""
+
+msgid "tax"
+msgstr ""
+
+msgid "register_office"
+msgstr ""
+
 msgctxt "office"
 msgid "Insurance"
 msgstr ""
@@ -22743,9 +22791,6 @@ msgstr ""
 msgid "ward"
 msgstr ""
 
-msgid "Postal Code"
-msgstr ""
-
 msgid "National Park"
 msgstr ""
 
@@ -22901,6 +22946,18 @@ msgstr "島嶼"
 msgid "Islet"
 msgstr "小島"
 
+msgid "Reef"
+msgstr ""
+
+msgid "coral"
+msgstr ""
+
+msgid "oyster"
+msgstr ""
+
+msgid "rock"
+msgstr ""
+
 msgid "Nature"
 msgstr "自然"
 
@@ -23245,6 +23302,9 @@ msgstr "地名"
 msgid "City name"
 msgstr "城市名稱"
 
+msgid "Post code"
+msgstr "郵遞區號"
+
 msgid "Country code"
 msgstr "國碼"
 
@@ -23961,6 +24021,9 @@ msgid ""
 "crossing bridges and their {1} tags."
 msgstr ""
 
+msgid "{0} together with {1} and {2}. Remove {1} and {2}"
+msgstr ""
+
 msgid "{0} is deprecated"
 msgstr "{0} 已經廢棄"
 
@@ -25687,6 +25750,15 @@ msgstr ""
 msgid "100 m"
 msgstr ""
 
+msgid "high"
+msgstr ""
+
+msgid "medium"
+msgstr ""
+
+msgid "low"
+msgstr "低"
+
 msgid "symbol"
 msgstr "符號"
 
@@ -28062,6 +28134,15 @@ msgstr[1] ""
 msgid "2 images unjoined"
 msgstr ""
 
+msgid "everything in the visible area"
+msgstr ""
+
+msgid "areas with downloaded OSM-data"
+msgstr ""
+
+msgid "only when manually requested"
+msgstr ""
+
 msgid ""
 "The downloaded OSM area is too big. Download mode has been changed to "
 "semiautomatic until the layer is restarted."
@@ -29447,18 +29528,6 @@ msgstr ""
 msgid "Printing has failed."
 msgstr ""
 
-msgid "Proj4J: {0} selected"
-msgstr ""
-
-msgid "Selected: {0}"
-msgstr "已選取:{0}"
-
-msgid "Proj4J Plugin"
-msgstr ""
-
-msgid "Code"
-msgstr "代碼"
-
 msgid "Add stop position"
 msgstr ""
 
@@ -29502,6 +29571,16 @@ msgstr ""
 msgid "PT: Platform should not be part of a way"
 msgstr ""
 
+msgid "PT: Stop position or platform is not part of a stop area relation"
+msgstr ""
+
+msgid ""
+"PT: Stop position and its related platform(s) have different route relations"
+msgstr ""
+
+msgid "PT_Assistant Message"
+msgstr ""
+
 msgid "Public Transport Assistant tests"
 msgstr ""
 
@@ -29527,6 +29606,30 @@ msgstr ""
 msgid "PT: First or last way needs to be split"
 msgstr ""
 
+msgid "PT: Problem in the route segment"
+msgstr ""
+
+msgid "PT: Stop not served"
+msgstr ""
+
+msgid "Warning: the diplayed fix variants are based on less strict criteria"
+msgstr ""
+
+msgid "Type letter to select the fix variant or press Escape for no fix"
+msgstr ""
+
+msgid "PT: Stop area relation has no stop position"
+msgstr ""
+
+msgid "PT: Stop area relation has several stop positions"
+msgstr ""
+
+msgid "PT: Stop area relation has no platform"
+msgstr ""
+
+msgid "PT: Stop area relation has several platforms"
+msgstr ""
+
 msgid "PT: Route type does not match the type of the road it passes on"
 msgstr ""
 
@@ -29536,6 +29639,9 @@ msgstr ""
 msgid "PT: Route passes a oneway road in the wrong direction"
 msgstr ""
 
+msgid "rail"
+msgstr "軌"
+
 msgid "Can''t parse a time from this string."
 msgstr ""
 
@@ -30677,6 +30783,9 @@ msgstr ""
 msgid "No change to upload!"
 msgstr ""
 
+msgid "The bounding box is too big."
+msgstr ""
+
 msgid "Cannot place a node outside of the world."
 msgstr "不能在世界範圍以外放置節點。"
 
@@ -32296,6 +32405,12 @@ msgid ""
 "Fetches interwiki links from Wikipedia in order to add several name tags"
 msgstr "從維基百科內部連結增加名稱標籤"
 
+msgid "Search Wikipedia category"
+msgstr ""
+
+msgid "Load category"
+msgstr ""
+
 msgid ""
 "Copies the {0} template to the system clipboard instantiated with the "
 "coordinates of the first selected node"
@@ -32339,9 +32454,6 @@ msgstr "分類"
 msgid "Fetches a list of all Wikipedia articles of a category"
 msgstr "取得分類内所有維基百科條目列表"
 
-msgid "Enter the Wikipedia category"
-msgstr "輸入維基百科分類"
-
 msgid "Clipboard"
 msgstr "剪貼簿"
 
diff --git a/images/misc/error.svg b/images/misc/error.svg
index dff4817..ca6a744 100644
--- a/images/misc/error.svg
+++ b/images/misc/error.svg
@@ -325,12 +325,12 @@
        sodipodi:nodetypes="cccccccc"
        inkscape:connector-curvature="0" />
     <path
-       style="font-size:48px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier New;-inkscape-font-specification:Courier New Bold"
+       style="font-size:48px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier New"
        d="m 25.943363,19.795035 -0.48576,5.266662 c -0.02273,0.272712 -0.113634,0.485764 -0.272708,0.639159 -0.159085,0.147719 -0.357934,0.221578 -0.596547,0.221574 -0.238625,4e-6 -0.437473,-0.07385 -0.596548,-0.221574 -0.159084,-0.153395 -0.249986,-0.366447 -0.272707,-0.639159 L 23.22481,19.795035 c -0.02273,-0.267016 -0.03409,-0.44314 -0.03409,-0.528371 -4e-6,-0.443139 0.133509,-0.798226 0.400539,-1.065263 0.267022,-0.272696 0.599384,-0.40905 0.997087,-0.409061 0.392011,1.1e-5 0.721532 [...]
        id="path3710"
        inkscape:connector-curvature="0" />
     <path
-       style="font-size:48px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier New;-inkscape-font-specification:Courier New Bold"
+       style="font-size:48px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Courier New"
        d="m 25.956884,28.469352 c -8e-6,0.319709 -0.119898,0.592186 -0.359672,0.817434 -0.239788,0.217984 -0.570394,0.326974 -0.99182,0.326975 -0.421439,-1e-6 -0.752046,-0.108991 -0.991821,-0.326975 -0.239786,-0.225248 -0.359677,-0.497725 -0.359671,-0.817434 -6e-6,-0.31244 0.116251,-0.577652 0.348772,-0.795636 0.239775,-0.225247 0.574015,-0.337871 1.00272,-0.337873 0.428692,2e-6 0.759298,0.108993 0.99182,0.326974 0.239774,0.217984 0.359664,0.486829 0.359672,0.806535"
        id="path3679"
        inkscape:connector-curvature="0" />
diff --git a/images/presets/accommodation/alpine_hut_blue.png b/images/presets/accommodation/alpine_hut_blue.png
new file mode 100644
index 0000000..18af3c5
Binary files /dev/null and b/images/presets/accommodation/alpine_hut_blue.png differ
diff --git a/images/presets/accommodation/basic_hut_blue.png b/images/presets/accommodation/basic_hut_blue.png
new file mode 100644
index 0000000..b877e63
Binary files /dev/null and b/images/presets/accommodation/basic_hut_blue.png differ
diff --git a/images/presets/accommodation/camping.svg b/images/presets/accommodation/camping.svg
new file mode 100644
index 0000000..f9a3d54
--- /dev/null
+++ b/images/presets/accommodation/camping.svg
@@ -0,0 +1,122 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="camping.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="-0.61499654"
+     inkscape:cy="6.7034407"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137"
+       originx="1.9999999"
+       originy="2.5512694e-008" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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>Tent</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jörg Ostertag</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>Jörg Ostertag</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-7.9680758,-7.562273)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4136"
+       width="16"
+       height="16"
+       x="7.9680758"
+       y="7.562273" />
+    <path
+       style="fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.62349802;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 16.269851,13.283306 0,-5.283382 4.210621,1.4574848 -4.210621,1.4271202"
+       id="path2163"
+       inkscape:connector-curvature="0" />
+    <path
+       style="opacity:1;fill:#8effff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.62695503;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 12.094586,22.207608 4.176201,-8.489045 4.118596,8.489045 -8.294797,0 z"
+       id="path2161"
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="opacity:1;fill:#5abd3f;fill-opacity:1;fill-rule:evenodd;stroke:#00b000;stroke-width:0.6551975px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99431817"
+       d="m 9.9680757,23.234674 12.5150003,0"
+       id="path2165"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/caravan.svg b/images/presets/accommodation/caravan.svg
new file mode 100644
index 0000000..29c1482
--- /dev/null
+++ b/images/presets/accommodation/caravan.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="16"
+   height="9.4246597"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="caravan2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="11.08038"
+     inkscape:cy="12.159333"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-7.7592235,-16.314831)">
+    <rect
+       style="fill:#e9ddaf;fill-opacity:1;stroke:#0d0d0d;stroke-width:0.54727292;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect2160"
+       width="14.006625"
+       height="7.3386192"
+       x="9.4783716"
+       y="16.588465"
+       ry="0.87364513" />
+    <ellipse
+       style="fill:#241f1c;fill-opacity:1;stroke:#101010;stroke-width:0.5305512;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="path2162"
+       cx="14.709766"
+       cy="23.871553"
+       rx="1.7891792"
+       ry="1.6026615" />
+    <rect
+       style="fill:#f2d31d;fill-opacity:1;stroke:#000000;stroke-width:0.56507391;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect2164"
+       width="1.3988825"
+       height="0.37303531"
+       x="8.0417604"
+       y="22.426043" />
+    <rect
+       style="fill:#483e37;fill-opacity:0.877095;stroke:none;stroke-width:1.08200002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect3141"
+       width="3.3106885"
+       height="2.3916378"
+       x="11.142616"
+       y="18.192543" />
+    <rect
+       style="fill:#483e37;fill-opacity:0.877095;stroke:none;stroke-width:1.08200002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect3143"
+       width="5.6421595"
+       height="2.3916378"
+       x="16.201908"
+       y="18.136137" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/chalet.svg b/images/presets/accommodation/chalet.svg
new file mode 100644
index 0000000..acc05fd
--- /dev/null
+++ b/images/presets/accommodation/chalet.svg
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+
+<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="svg831"
+   sodipodi:version="0.32"
+   width="66.032692pt"
+   height="65.311539pt"
+   sodipodi:docname="chalet.svg"
+   inkscape:version="0.91 r13725"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata2216">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs833" />
+  <sodipodi:namedview
+     id="base"
+     inkscape:zoom="4.3131439"
+     inkscape:cx="19.414108"
+     inkscape:cy="29.615847"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg831"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4138"
+       originx="-15.444941"
+       originy="-24.440363" />
+  </sodipodi:namedview>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4140"
+     width="82.540863"
+     height="81.639427"
+     x="3.6975297e-007"
+     y="0" />
+  <g
+     id="g825"
+     transform="matrix(0.680918,0,0,0.658159,-80.582191,-28.356326)">
+    <g
+       id="g815"
+       transform="matrix(0.268353,0,0,0.275569,94.8544,31.97102)">
+      <path
+         style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         d="m 147.599,86.2593 -15.334,13.418 21.085,23.0017 15.335,-11.501 13.418,11.501 21.086,-19.168 21.085,19.168 36.421,0 c 11.501,11.501 26.835,32.587 51.756,32.587 24.919,0 54.971,-13.533 55.589,-51.755 2.412,-36.3837 -26.837,-53.6723 -53.673,-53.6723 -26.836,1.9168 -44.088,19.1686 -53.672,36.4206 l -113.096,0 z m 210.856,16.2927 c 0,12.168 -6.441,22.044 -14.377,22.044 -7.935,0 -14.376,-9.876 -14.376,-22.044 0,-12.1677 6.441,-22.0437 14.376,-22.0437 7.936,0 14.377,9.876 14.377,22.0437 z"
+         id="path808"
+         sodipodi:nodetypes="cccccccccccccccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="font-size:12px;fill-rule:evenodd;stroke:#000000;stroke-width:0.774998pt"
+         d="m 357.772,94.7983 c -4.75,5.111 -4.749,7.4347 3.166,12.5467 l 36.41,-4.183 c 3.694,-2.323 4.222,-7.4347 -3.166,-11.1517 l -36.41,2.788 z"
+         id="path809"
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0" />
+      <path
+         style="font-size:12px;fill-rule:evenodd;stroke:#000000;stroke-width:0.981394pt"
+         d="m 389.251,76.8318 8.868,29.3682 16.667,-6.6617 -8.834,-27.2582 -16.701,4.5517 z m -9.995,-10.3533 14.623,58.7975 89.458,-24.987 -14.383,-58.8024 -89.698,24.9919 z"
+         id="path814"
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       style="font-size:12px;fill-rule:evenodd;stroke:#000000;stroke-width:0.57346001pt"
+       d="m 179.113,80.5082 -60.267,36.8048 6.027,9.2 7.232,-3.451 0,43.706 94.018,0 0,-43.706 6.845,3.336 6.027,-9.201 -59.882,-36.6888 z m -26.517,41.4048 -0.262,13.861 54.241,0 0.262,-13.861 -54.241,0 z"
+       id="path824"
+       sodipodi:nodetypes="ccccccccccccccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/guest_house.svg b/images/presets/accommodation/guest_house.svg
new file mode 100644
index 0000000..3b145e0
--- /dev/null
+++ b/images/presets/accommodation/guest_house.svg
@@ -0,0 +1,129 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="guest_house.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="-6.2994363"
+     inkscape:cy="4.3181102"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8,-8.000001)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4140"
+       width="16"
+       height="16"
+       x="8"
+       y="8.000001" />
+    <path
+       style="font-size:12px;fill:#b3b3b3;fill-rule:evenodd;stroke:#000000;stroke-width:0.03181237"
+       d="m 16.249466,8.6436365 -5.563218,5.7098325 1.112637,0 0,8.564744 3.337938,0 0,-4.352519 2.30158,0 7e-6,4.352519 3.261638,0 0,-8.564744 1.112644,0 -5.563226,-5.7098325 0,0 0,0 z"
+       id="path645"
+       sodipodi:nodetypes="ccccccccccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 9.3392857,15.160715 9.25,22.125"
+       id="path2157"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 9.4285715,19.535715 22.821428,19.625"
+       id="path2159"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 22.910714,21.857143 23,17.303572"
+       id="path2161"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.14999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2163"
+       width="7.0535712"
+       height="1.25"
+       x="14.696428"
+       y="16.991074"
+       ry="0.625" />
+    <ellipse
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.47860229;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2167"
+       cx="12.53125"
+       cy="15.741072"
+       rx="0.97409177"
+       ry="0.86248463" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2169"
+       width="2.7232141"
+       height="0.22321428"
+       x="10.544642"
+       y="17.973215"
+       ry="0.11160714" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/hostel.svg b/images/presets/accommodation/hostel.svg
new file mode 100644
index 0000000..7f574e0
--- /dev/null
+++ b/images/presets/accommodation/hostel.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 0.625,0 C 0.25,0 0,0.25 0,0.75 L 0,14 l 1.25,0 0,-2 11.5,0 0,2 1.25,0 C 14.02275,14 14,0.75 14,0.75 14,0.25 13.75,0 13.375,0 13,0 12.75,0.25 12.75,0.75 l 0,4.25 -11.5,0 0,-4.25 C 1.25,0.25 1,0 0.625,0 z M 3.5,1 C 2.671573,1 2,1.671573 2,2.5 2,3.328427 2.671573,4 3.5,4 4.328427,4 5,3.328427 5,2.5 5,1.671573 4.328427,1 3.5,1 z m 2,1 0,2 6.5,0 C 12,3 10.963825,2 10,2 z m -4.25,4 11.5,0 0,5 -11.5,0 c 0.02355,0 0,-5 0,-5 z M 3.5,7 C 2.671573,7 2,7.671573 2,8.5 2,9.328427 2.671573 [...]
+</svg>
diff --git a/images/presets/accommodation/hotel.svg b/images/presets/accommodation/hotel.svg
new file mode 100644
index 0000000..91df320
--- /dev/null
+++ b/images/presets/accommodation/hotel.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 0.625,3 C 0.25,3 0,3.25 0,3.75 l 0,7.25 1.25,0 0,-1.75 c 0,0 10.380697,0.01892 11.5,0 L 12.75,11 14,11 14,8.625 14,4.75 C 14,4.4202582 13.86199,4 13.375,4 12.88801,4 12.75,4.4202582 12.75,4.75 l 0,3.25 -11.5,0 0,-4.25 C 1.25,3.25 1,3 0.625,3 z M 3.5,4 C 2.671573,4 2,4.671573 2,5.5 2,6.328427 2.671573,7 3.5,7 4.328427,7 5,6.328427 5,5.5 5,4.671573 4.328427,4 3.5,4 z m 2,1 0,2 6.5,0 C 12,6 10.963825,5 10,5 z" id="hotel" style="fill:#0092da;fill-opacity:1" transform="translate(1,1)"/>
+</svg>
diff --git a/images/presets/accommodation/motel.svg b/images/presets/accommodation/motel.svg
new file mode 100644
index 0000000..3123b97
--- /dev/null
+++ b/images/presets/accommodation/motel.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 0.625,0 C 0.25,0 0,0.25 0,0.75 l 0,5.75 1.25,0 0,-1.5 c 0,0 10.380697,0.01892 11.5,0 l 0,1.5 1.25,0 c -9.7e-5,0 0,-4.75 0,-4.75 C 14,1.4202582 13.861987,1 13.375,1 12.88801,1 12.713586,1.422275 12.75,1.75 l 0,2 -11.5,0 0,-3 C 1.25,0.25 1,0 0.625,0 z M 3.5,0 C 2.671573,0 2,0.671573 2,1.5 2,2.328427 2.671573,3 3.5,3 4.328427,3 5,2.328427 5,1.5 5,0.671573 4.328427,0 3.5,0 z m 2,1 0,2 6.5,0 C 12,2 10.963825,1 10,1 z M 4,6 3,9 C 2.527334,9 2,9.384295 2,10 l 0,3 1,0 c 0,0 0,1 1,1  [...]
+</svg>
diff --git a/images/presets/accommodation/shelter.svg b/images/presets/accommodation/shelter.svg
new file mode 100644
index 0000000..77a3348
--- /dev/null
+++ b/images/presets/accommodation/shelter.svg
@@ -0,0 +1,277 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2160"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="shelter2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/ms/OSM-Icon-Schutzhütte.png"
+   inkscape:export-xdpi="180"
+   inkscape:export-ydpi="180">
+  <defs
+     id="defs2162" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="11.278492"
+     inkscape:cy="7.4707741"
+     inkscape:current-layer="layer5"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     width="12px"
+     height="12px"
+     units="px"
+     inkscape:window-width="1018"
+     inkscape:window-height="712"
+     inkscape:window-x="177"
+     inkscape:window-y="168"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="7.920035"
+       originy="7.8065569"
+       spacingx="0.25px"
+       spacingy="0.25px"
+       color="#3f3fff"
+       empcolor="#3f3fff"
+       opacity="0.15"
+       empopacity="0.38"
+       empspacing="4" />
+    <sodipodi:guide
+       position="21.610955,-5.6265001"
+       orientation="0,1"
+       id="guide4162" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2165">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Layout"
+     style="display:none"
+     transform="translate(1.920035,2.1934433)">
+    <rect
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4134"
+       width="10"
+       height="10"
+       x="1"
+       y="1" />
+    <rect
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4136"
+       width="8"
+       height="8"
+       x="2"
+       y="2" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Rain"
+     style="display:inline"
+     transform="translate(1.920035,2.1934433)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 0.64273406,-1.3955207 -1.2836719,0.62844152"
+       id="path12890"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 1.3169762,0.9320359 -1.0563931,3.4255966"
+       id="path15803"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 4.2682672,0.36123925 1.8948979,2.8548"
+       id="path15805"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 0.35377318,3.9679792 -1.5087807,5.924856"
+       id="path15807"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 6.6762746,-0.14475131 4.3029053,2.3488094"
+       id="path15809"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 10.047485,-1.6627229 7.6741157,0.83083772"
+       id="path15811"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 11.010688,1.3732204 8.6373186,3.8667811"
+       id="path15813"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 13.70298,1.141624 11.946847,2.919606"
+       id="path15815"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 13.70298,-1.8943193 -1.756134,1.77798199"
+       id="path15817"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 13.766833,3.5821294 11.946846,5.4495588"
+       id="path15819"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 10.840079,4.1495069 10.020441,4.9435683"
+       id="path15821"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 8.3739807,2.1642162 7.1925142,3.3607906"
+       id="path15823"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#3881c2;stroke-width:0.59237456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 3.7091234,-1.6259773 2.3148172,-0.11633731"
+       id="path15825"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Frame"
+     style="display:inline"
+     transform="translate(1.920035,2.1934433)">
+    <path
+       style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.78983271;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:none"
+       d="M -1.2836719,7.2063187 5.9403504,3.1583943 13.164372,7.2063187 12.680678,7.7238123 10.265543,6.7003282 5.937768,6.1530982 1.6001083,6.6924222 -0.80238766,7.7124303 -1.2836719,7.2063187 Z"
+       id="path7057"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78983271;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7059"
+       width="0.96320301"
+       height="7.083868"
+       x="1.605937"
+       y="6.1943378" />
+    <rect
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.78983271;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7061"
+       width="0.96320301"
+       height="7.083868"
+       x="9.3115606"
+       y="6.1943378"
+       ry="0" />
+  </g>
+  <g
+     id="layer1"
+     inkscape:label="Filling"
+     inkscape:groupmode="layer"
+     style="display:inline"
+     transform="translate(1.920035,2.1934433)">
+    <path
+       style="fill:#dec600;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M -1.2836719,7.2063187 5.9403504,3.1583943 13.164372,7.2063187 12.680678,7.7238123 10.265543,6.7003282 5.937768,6.1530982 1.6001083,6.6924222 -0.80238766,7.7124303 -1.2836719,7.2063187 Z"
+       id="path5111"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#dec600;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7053"
+       width="0.96320301"
+       height="7.083868"
+       x="1.605937"
+       y="6.1943378" />
+    <rect
+       style="fill:#dec600;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7057"
+       width="0.96320301"
+       height="7.083868"
+       x="9.3115606"
+       y="6.1943378"
+       ry="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Fire"
+     style="display:inline"
+     transform="translate(1.920035,2.1934433)">
+    <path
+       style="fill:#fffd00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.42124653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 5.9657991,13.263533 c 4.8984169,0 0,-5.5377294 0,-5.5377294 0,0 -5.01293642,5.6967494 0,5.5377294 z"
+       id="path11916"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 5.9570443,12.768634 c 3.2132489,0 0,-2.526372 0,-2.526372 0,0 -3.2883711,2.598918 0,2.526372 z"
+       id="path11918"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 7.8959703,13.806557 c -0.5268813,-1.797494 -3.3657864,-1.794645 -3.8899559,0 0,0 3.8899559,0 3.8899559,0 z"
+       id="path10943"
+       sodipodi:nodetypes="csc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/shelter_lean_to.svg b/images/presets/accommodation/shelter_lean_to.svg
new file mode 100644
index 0000000..5ab1654
--- /dev/null
+++ b/images/presets/accommodation/shelter_lean_to.svg
@@ -0,0 +1,141 @@
+<?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"
+   width="16"
+   height="15.50009"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="7.0302917"
+     inkscape:cy="6.9737811"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2996"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-595px"
+       originy="-284.99991px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-595,-751.86218)">
+    <rect
+       style="fill:#502d16;fill-opacity:1;stroke:none"
+       id="rect3768"
+       width="2.0001533"
+       height="7.0000868"
+       x="608"
+       y="760.36218" />
+    <path
+       style="fill:#956531;fill-opacity:1;stroke:none"
+       d="m 608,767.36218 0,-7 -11,-2 0,9 z"
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#502d16;fill-opacity:1;stroke:none"
+       d="m 595,759.36218 16,3 0,-3 -16,-3 z"
+       id="path3770"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 597,756.36218 c 4,-4 4,-4 4,-4"
+       id="path3774"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 600,756.36218 1,-1"
+       id="path3776"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 602,754.36218 2,-2"
+       id="path3778"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 603,757.36218 3,-3"
+       id="path3782"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 596,754.36218 2,-2"
+       id="path3786"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 606,758.36218 1,-1"
+       id="path3788"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 608,756.36218 2,-2"
+       id="path3790"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#0000ff;stroke:#0078ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 609,758.36218 1,-1"
+       id="path3792"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#0078ff;fill-opacity:1;stroke:#0078ff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 607,753.36218 1,-1"
+       id="path3794"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/shelter_picnic_brown.png b/images/presets/accommodation/shelter_picnic_brown.png
new file mode 100644
index 0000000..51d57f1
Binary files /dev/null and b/images/presets/accommodation/shelter_picnic_brown.png differ
diff --git a/images/presets/accommodation/shelter_public_transport_brown.png b/images/presets/accommodation/shelter_public_transport_brown.png
new file mode 100644
index 0000000..cc463d1
Binary files /dev/null and b/images/presets/accommodation/shelter_public_transport_brown.png differ
diff --git a/images/presets/accommodation/water.svg b/images/presets/accommodation/water.svg
new file mode 100644
index 0000000..059581a
--- /dev/null
+++ b/images/presets/accommodation/water.svg
@@ -0,0 +1,116 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="water5.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="1.8789661"
+     inkscape:cy="8.5885856"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4139"
+       originx="-77.014282"
+       originy="-103.04766" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-400.02371,-399.8114)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4138"
+       width="16"
+       height="16"
+       x="400.02371"
+       y="399.8114" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.16123414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 402.09407,404.76262 c 0,0 3.31653,-0.12243 6.93585,-0.0515 1.31218,0.0257 2.98908,0.48752 3.04021,2.33107 0.0598,2.15699 0.0467,3.24441 0.0223,3.87188"
+       id="path2236"
+       sodipodi:nodetypes="csss"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.63157624;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 404.95441,401.48469 c 1.5944,0 3.24657,0 4.74597,0"
+       id="path3209"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.72041142;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 407.34026,401.53174 -0.0257,3.48451"
+       id="path3211"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3217"
+       d="m 411.39253,411.49497 0,4.03189"
+       style="fill:#0000ff;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.50572002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.01143998, 0.50571998;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.50572002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.01143998, 0.50571998;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 412.77521,411.49497 0,4.03189"
+       id="path3255"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/accommodation/wilderness_hut_blue.png b/images/presets/accommodation/wilderness_hut_blue.png
new file mode 100644
index 0000000..50735f5
Binary files /dev/null and b/images/presets/accommodation/wilderness_hut_blue.png differ
diff --git a/images/presets/adit.png b/images/presets/adit.png
deleted file mode 100644
index 3cb6c96..0000000
Binary files a/images/presets/adit.png and /dev/null differ
diff --git a/images/presets/aerialway.png b/images/presets/aerialway.png
deleted file mode 100644
index 9872760..0000000
Binary files a/images/presets/aerialway.png and /dev/null differ
diff --git a/images/presets/aerialway_station.png b/images/presets/aerialway_station.png
deleted file mode 100644
index 5c04a06..0000000
Binary files a/images/presets/aerialway_station.png and /dev/null differ
diff --git a/images/presets/aeroway_gate.png b/images/presets/aeroway_gate.png
deleted file mode 100644
index f5fb915..0000000
Binary files a/images/presets/aeroway_gate.png and /dev/null differ
diff --git a/images/presets/apron.png b/images/presets/apron.png
deleted file mode 100644
index 3e149a5..0000000
Binary files a/images/presets/apron.png and /dev/null differ
diff --git a/images/presets/arts_centre.png b/images/presets/arts_centre.png
deleted file mode 100644
index 645cf4f..0000000
Binary files a/images/presets/arts_centre.png and /dev/null differ
diff --git a/images/presets/athletics.png b/images/presets/athletics.png
deleted file mode 100644
index 9fe46a3..0000000
Binary files a/images/presets/athletics.png and /dev/null differ
diff --git a/images/presets/baker.png b/images/presets/baker.png
deleted file mode 100644
index a264e96..0000000
Binary files a/images/presets/baker.png and /dev/null differ
diff --git a/images/presets/barrier.png b/images/presets/barrier/barrier.png
similarity index 100%
rename from images/presets/barrier.png
rename to images/presets/barrier/barrier.png
diff --git a/images/presets/barrier/block.svg b/images/presets/barrier/block.svg
new file mode 100644
index 0000000..22b0951
--- /dev/null
+++ b/images/presets/barrier/block.svg
@@ -0,0 +1,92 @@
+<?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"
+   width="15.9375"
+   height="15.90625"
+   id="svg2991"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs2993" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.839192"
+     inkscape:cx="8.7345822"
+     inkscape:cy="0.77463682"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata2996">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-520.5625,-261.5625)">
+    <path
+       style="fill:#636363;fill-opacity:1;stroke:#a1a1a1;stroke-width:0.61757529;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 520.93727,277.14901 0.43342,-2.75321 c 0.59954,-1.65335 0.5523,-1.69959 -0.29402,-3.35297 l 0.15463,-3.30654 c -0.77624,-1.91374 0.41183,-2.13154 1.17607,-3.52857 0.39414,-0.41334 1.66547,-0.98756 2.51754,-1.5393 1.23749,-0.94198 1.39145,-0.57462 2.8292,-0.57462 l 2.09934,0.1 1.76851,-0.33291 c 1.56613,0.0583 1.27751,0.62457 2.84366,1.26694 0.9367,0.52299 0.93856,1.72359 1.37687,2.37878 0.30036,1.40567 -0.60684,1.78242 -0.68934,2.28294 -0.12421,0.44912 0.34135,1.34055 0.47351 [...]
+       id="path2998-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccccccc"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:#636363;fill-opacity:1;stroke:none"
+       d="m 521.31863,276.70969 -0.11161,0.74777 14.48996,5.2e-4 -0.13672,-0.63728 z"
+       id="path3796"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:#757575;fill-opacity:1;stroke:none"
+       d="m 527.84111,264.44981 c -1.76883,0.20851 -2.49432,0.83814 -3.24732,1.36222 -1.06232,1.07184 -0.93912,1.28632 -1.27453,2.43794 0.19654,1.52154 0.0224,3.33515 0.71142,5.2642 0.0279,1.38016 -0.32493,2.70954 -0.84349,3.9438 l 10.07172,-0.006 c -0.35262,-1.57014 0.8333,-2.95204 0.74312,-4.7397 -0.11859,-1.26013 -0.97632,-2.10065 -0.77067,-4.81984 0.21686,-0.87139 1.29168,-1.85288 0.13081,-3.1302 -1.2011,-1.03943 -4.22603,-0.14496 -5.52094,-0.31263 z"
+       id="path3768-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccc"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+    <path
+       style="fill:#828282;fill-opacity:1;stroke:none"
+       d="m 526.68506,271.90563 c 0.42328,1.23632 1.16173,2.27527 2.48108,2.2234 1.0884,-0.65293 1.2408,-1.91124 1.48473,-3.11035 0.47943,-1.30027 0.34598,-2.67871 -0.28479,-4.12057 -0.84116,-0.25535 -1.34969,0.77276 -2.49872,1.38847 -0.84256,0.45148 -1.46729,2.96948 -1.18233,3.61905 z"
+       id="path3770-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccscc"
+       inkscape:export-xdpi="90"
+       inkscape:export-ydpi="90" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/bollard.svg b/images/presets/barrier/bollard.svg
new file mode 100644
index 0000000..f1a2d91
--- /dev/null
+++ b/images/presets/barrier/bollard.svg
@@ -0,0 +1,212 @@
+<?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"
+   width="6.9861817"
+   height="16"
+   id="svg2160"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="bollard.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/ms/OSM-Icon-Schutzhütte.png"
+   inkscape:export-xdpi="180"
+   inkscape:export-ydpi="180">
+  <defs
+     id="defs2162">
+    <linearGradient
+       id="linearGradient5233">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5235" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5237" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="4.9368567"
+     inkscape:cy="7.4767966"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     width="12px"
+     height="12px"
+     units="px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="4.9683771"
+       originy="8.0000004"
+       spacingx="0.25px"
+       spacingy="0.25px"
+       color="#3f3fff"
+       empcolor="#3f3fff"
+       opacity="0.15"
+       empopacity="0.38"
+       empspacing="4" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2165">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Layout"
+     style="display:none"
+     transform="translate(-1.0316229,1.9999999)">
+    <rect
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4134"
+       width="10"
+       height="10"
+       x="1"
+       y="1" />
+    <rect
+       style="display:inline;fill:none;stroke:#000000;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4136"
+       width="8"
+       height="8"
+       x="2"
+       y="2" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Schatten"
+     style="display:inline"
+     transform="translate(-1.0316229,1.9999999)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="Rahmen"
+     style="display:inline"
+     transform="translate(-1.0316229,1.9999999)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Streifen"
+     style="display:inline"
+     transform="translate(-1.0316229,1.9999999)" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="glanz"
+     style="display:inline"
+     transform="translate(-1.0316229,1.9999999)">
+    <g
+       id="g5618"
+       transform="matrix(2.0253165,0,0,2.0253165,-4.6392633,-6.1518987)">
+      <path
+         sodipodi:nodetypes="cscscc"
+         id="path5584"
+         d="m 4.8698904,9.4954858 c 0,0 0.8732259,-1.1124102 1.1232259,-1.3624102 0.25,-0.25 -0.382891,-0.4406386 -0.7578125,-0.4296875 -0.3531977,0.00693 -0.9707272,0.1236 -1.2421875,0.4296875 C 3.5239366,8.6621034 3.0069672,9.2438827 3.0069672,9.2438827 l 1.8629232,0.2516031 z"
+         style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <rect
+         rx="1"
+         ry="0.50390625"
+         y="2.25"
+         x="3"
+         height="7.5"
+         width="2"
+         id="rect5588"
+         style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         rx="1"
+         ry="0.50390625"
+         y="2.25"
+         x="3"
+         height="7.5"
+         width="2"
+         id="rect4213"
+         style="display:inline;fill:#d50000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="0.50390625"
+         rx="0.9296875"
+         y="5.5"
+         x="3"
+         height="3"
+         width="2"
+         id="rect5188"
+         style="display:inline;fill:#d2d2d2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="0.50390625"
+         rx="0.9296875"
+         y="3.5"
+         x="3"
+         height="3"
+         width="2"
+         id="rect5184"
+         style="display:inline;fill:#d50000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         ry="0.50390625"
+         rx="0.9296875"
+         y="2.25"
+         x="3"
+         height="2.25"
+         width="2"
+         id="rect5186"
+         style="display:inline;fill:#d2d2d2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="csssc"
+         id="path5212"
+         d="M 3,2.75 C 3,3.0912603 3.4505635,3.407152 4,3.4096272 4.5519855,3.412114 4.9959964,3.0928343 5,2.75 4.9959962,2.9807125 4.5519854,3.1163708 4,3.1146973 3.4505635,3.1130315 3,2.9796532 3,2.75 Z"
+         style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40000001;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         transform="matrix(1,0,0,0.962963,0,0.1203704)"
+         id="path5223"
+         d="M 4,3.25 3.75,5.25 4,10 4.25,5.25 4,3.25 Z"
+         style="fill:#ffffff;fill-opacity:0.875;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5579)"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/barrier/cattle_grid.png b/images/presets/barrier/cattle_grid.png
new file mode 100644
index 0000000..1e42a98
Binary files /dev/null and b/images/presets/barrier/cattle_grid.png differ
diff --git a/images/presets/barrier/chain.svg b/images/presets/barrier/chain.svg
new file mode 100644
index 0000000..f01aec1
--- /dev/null
+++ b/images/presets/barrier/chain.svg
@@ -0,0 +1,131 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="117.87615"
+   height="58.078815"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="chain4.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient2821">
+      <stop
+         id="stop2823"
+         style="stop-color:#d3b900"
+         offset="0" />
+      <stop
+         id="stop2825"
+         style="stop-color:#fdffb8"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3015">
+      <stop
+         id="stop3017"
+         style="stop-color:#d3b900"
+         offset="0" />
+      <stop
+         id="stop3019"
+         style="stop-color:#fdffb8"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2821"
+       id="linearGradient3074"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.79122639,0.79132847,-0.49627482,0.80779249,595.29906,195.27852)"
+       x1="43.924"
+       y1="116"
+       x2="6.1457"
+       y2="80.056999" />
+    <linearGradient
+       id="linearGradient3022">
+      <stop
+         id="stop3024"
+         style="stop-color:#d3b900"
+         offset="0" />
+      <stop
+         id="stop3026"
+         style="stop-color:#fdffb8"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.959798"
+     inkscape:cx="33.521001"
+     inkscape:cy="24.736169"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3022"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-318.20685,-903.31257)">
+    <path
+       id="path1088"
+       sodipodi:nodetypes="cccccccccccccccccc"
+       style="fill:#c3b115;stroke:#000000;stroke-width:1.01582050000000000pt;fill-opacity:1"
+       d="m 365.47268,916.11412 c -5.9451,-5.89629 -13.37874,-8.75591 -20.7045,-10.35151 -6.60377,-1.29775 -13.98653,-0.77513 -19.51572,4.51425 -4.84286,4.71179 -7.055,13.0358 -6.24819,20.60167 0.94503,7.78283 5.6612,13.84091 10.84357,17.58061 6.06318,4.29986 12.903,6.69387 19.77907,7.6079 6.23886,0.71996 13.07328,-0.5785 17.85807,-6.13856 4.00136,-4.79819 5.6317,-11.34662 4.91861,-18.2487 -3.21202,1.11033 -5.99692,2.09088 -8.88286,4.24026 -1.08062,1.39626 -1.32556,3.45773 -2.80114,4.728 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path1089"
+       sodipodi:nodetypes="cccccccccccccccccccccc"
+       style="fill:#c3b115;stroke:#000000;stroke-width:1.01582050000000000pt;fill-opacity:1"
+       d="m 401.74299,923.12266 c -4.20052,-3.90946 -9.28559,-6.11872 -14.46752,-6.49452 -6.6287,-0.49459 -13.35739,0.60201 -19.65551,3.29848 -1.47317,0.85788 -3.51475,1.69983 -5.09258,2.87871 -3.44749,2.45522 -6.45337,5.97903 -8.67829,10.13809 -1.69172,3.27813 -2.58713,6.74619 -1.30014,10.39664 3.02216,-0.0741 6.48998,-0.49412 8.28666,-3.87429 -0.015,-2.53291 1.91379,-3.9279 3.6063,-4.80986 6.70332,-4.03491 14.13632,-5.6474 21.49961,-5.90958 2.48322,-0.0226 5.1245,0.19589 7.56664,1.1235 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path1100"
+       sodipodi:nodetypes="cccccccccccccccccc"
+       style="fill:#c3b115;stroke:#000000;stroke-width:1.01582050000000000pt;fill-opacity:1"
+       d="m 428.8948,908.45001 c -4.84247,-5.0574 -11.66682,-5.35257 -17.47964,-3.33998 -6.52906,2.29494 -13.56453,6.94676 -18.82858,12.32345 3.00375,0.28511 8.74115,4.16294 10.62475,6.59495 4.41716,-3.48861 9.72128,-7.53933 15.05399,-7.49823 3.22852,-0.1068 6.28184,2.79821 7.03431,6.81656 0.94225,4.81608 -1.61072,9.32498 -4.17773,12.49896 -3.91145,4.61838 -8.56608,8.20336 -13.51084,10.70943 -3.47001,1.6177 -7.75167,2.78961 -11.0584,0.009 -2.72825,-2.35537 -3.76456,-7.23784 -2.34541,-11. [...]
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/city_wall.svg b/images/presets/barrier/city_wall.svg
new file mode 100644
index 0000000..e8bface
--- /dev/null
+++ b/images/presets/barrier/city_wall.svg
@@ -0,0 +1,104 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="stadtmauer.svg"
+   inkscape:export-filename="d:\stadtmauer.png"
+   inkscape:export-xdpi="22.5"
+   inkscape:export-ydpi="22.5">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="6.0711747"
+     inkscape:cx="40.521429"
+     inkscape:cy="31.585685"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="fill:#803300;fill-opacity:1;stroke:#803300;stroke-width:7;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:7, 7;stroke-dashoffset:0"
+       id="rect3708"
+       width="59.346462"
+       height="34.597725"
+       x="7.323606"
+       y="1031.6541" />
+    <g
+       id="g3716"
+       transform="translate(-5.555839,-0.25253814)">
+      <rect
+         y="1014.4814"
+         x="-11.616755"
+         height="47.477169"
+         width="24.748737"
+         id="rect3704"
+         style="fill:#552200;fill-opacity:1;stroke:none" />
+      <path
+         id="path3710"
+         d="m -16.162441,1018.2695 17.6776698,-22.98094 16.1624402,22.72844 -33.84011,0.2525 z"
+         style="fill:#aa4400;stroke:none" />
+    </g>
+    <g
+       id="g3720"
+       transform="translate(67.932758,-0.50507628)">
+      <rect
+         style="fill:#552200;fill-opacity:1;stroke:none"
+         id="rect3722"
+         width="24.748737"
+         height="47.477169"
+         x="-11.616755"
+         y="1014.4814" />
+      <path
+         style="fill:#aa4400;stroke:none"
+         d="m -16.162441,1018.2695 17.6776698,-22.98094 16.1624402,22.72844 -33.84011,0.2525 z"
+         id="path3724" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/barrier/cycle_barrier.svg b/images/presets/barrier/cycle_barrier.svg
new file mode 100644
index 0000000..2e08dd6
--- /dev/null
+++ b/images/presets/barrier/cycle_barrier.svg
@@ -0,0 +1,122 @@
+<?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"
+   width="391.34286"
+   height="331.34286"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="cycle_barrier2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\cycle_barrier2.png"
+   inkscape:export-xdpi="3.6796379"
+   inkscape:export-ydpi="3.6796379">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="134.56013"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-299.58571,-446.14933)">
+    <g
+       id="g3722"
+       transform="translate(34.285714,-51.428571)">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#646464;stroke-width:13.68050575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 398.37403,630.13244 L 371.92773,658.78258 L 369.28311,819.22337"
+         id="path3720"
+         sodipodi:nodetypes="ccc" />
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path3718"
+         d="M 620.71168,632.98959 L 647.15798,661.63973 L 649.8026,822.08052"
+         style="fill:none;fill-rule:evenodd;stroke:#646464;stroke-width:13.68050575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <g
+         transform="translate(97.142857,-20)"
+         id="g3666">
+        <path
+           sodipodi:nodetypes="cc"
+           id="path3155"
+           d="M 291.42857,655.21933 C 320,655.21933 528.57143,655.21933 528.57143,655.21933"
+           style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:15.19999981;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:15.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:45.6, 45.6;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 291.42857,655.21933 C 320,655.21933 528.57143,655.21933 528.57143,655.21933"
+           id="path2383"
+           sodipodi:nodetypes="cc" />
+      </g>
+    </g>
+    <g
+       transform="translate(-62.857143,-177.14286)"
+       id="g3729">
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path3731"
+         d="M 398.37403,630.13244 L 371.92773,658.78258 L 369.28311,819.22337"
+         style="fill:none;fill-rule:evenodd;stroke:#646464;stroke-width:13.68050575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#646464;stroke-width:13.68050575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 620.71168,632.98959 L 647.15798,661.63973 L 649.8026,822.08052"
+         id="path3733"
+         sodipodi:nodetypes="ccc" />
+      <g
+         id="g3735"
+         transform="translate(97.142857,-20)">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:15.19999981;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 291.42857,655.21933 C 320,655.21933 528.57143,655.21933 528.57143,655.21933"
+           id="path3737"
+           sodipodi:nodetypes="cc" />
+        <path
+           sodipodi:nodetypes="cc"
+           id="path3739"
+           d="M 291.42857,655.21933 C 320,655.21933 528.57143,655.21933 528.57143,655.21933"
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:15.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:45.6, 45.6;stroke-dashoffset:0;stroke-opacity:1" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/douane.png b/images/presets/barrier/douane.png
similarity index 100%
rename from images/presets/douane.png
rename to images/presets/barrier/douane.png
diff --git a/images/presets/barrier/entrance.svg b/images/presets/barrier/entrance.svg
new file mode 100644
index 0000000..684f83e
--- /dev/null
+++ b/images/presets/barrier/entrance.svg
@@ -0,0 +1,110 @@
+<?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"
+   width="422.4534"
+   height="353.39154"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="entrance.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\entrance.png"
+   inkscape:export-xdpi="3.4086599"
+   inkscape:export-ydpi="3.4086599">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend"
+       style="overflow:visible">
+      <path
+         id="path3193"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path3169"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-645.71429"
+     inkscape:cy="517.14286"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1050"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-168.6157,-392.774)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4152"
+       width="450"
+       height="420"
+       x="168.61571"
+       y="326.16553" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:31.10000038;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 575.51909,661.05595 L 209.8048,658.19881"
+       id="path2391" />
+    <path
+       id="path4464"
+       d="M 184.16803,495.34167 L 549.88232,492.48453"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:31.10000038;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/fence.svg b/images/presets/barrier/fence.svg
new file mode 100644
index 0000000..d5b0238
--- /dev/null
+++ b/images/presets/barrier/fence.svg
@@ -0,0 +1,111 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="fence2.svg">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.959798"
+     inkscape:cx="0.74667306"
+     inkscape:cy="31.333147"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51300001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4144"
+       width="64"
+       height="64"
+       x="0"
+       y="988.36224" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M -25.376512,1032.8201 41.645953,965.7977"
+       id="path3596" />
+    <path
+       id="path3598"
+       d="M -13.454592,1043.7905 53.312603,976.82186"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M -2.1010477,1055.4133 64.509653,988.2316"
+       id="path3600" />
+    <path
+       id="path3602"
+       d="M 10.313989,1065.6323 76.362323,999.32804"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       id="path3604"
+       d="m 21.450801,1077.159 65.365701,-65.3657"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       id="path3606"
+       d="M -3.3061865,985.60195 63.716392,1052.6244"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m -15.938932,998.2347 66.968754,66.7671"
+       id="path3608" />
+    <path
+       id="path3610"
+       d="m -28.613687,1010.9094 67.181805,66.6107"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 9.2121991,973.08357 75.516555,1039.1319"
+       id="path3612" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 21.858556,960.43721 65.365743,65.36569"
+       id="path3614" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/gate.png b/images/presets/barrier/gate.png
new file mode 100644
index 0000000..74bc491
Binary files /dev/null and b/images/presets/barrier/gate.png differ
diff --git a/images/presets/barrier/hedge.svg b/images/presets/barrier/hedge.svg
new file mode 100644
index 0000000..a6dec31
--- /dev/null
+++ b/images/presets/barrier/hedge.svg
@@ -0,0 +1,86 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="hecke.svg"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\new-icons\hecke20.png"
+   inkscape:export-xdpi="28.129999"
+   inkscape:export-ydpi="28.129999">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8.5859376"
+     inkscape:cx="66.814755"
+     inkscape:cy="31.585685"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:2.96550941;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:5.93101857, 2.96550929, 1.48275465, 2.96550929;stroke-dashoffset:3.55861091"
+       id="rect2816"
+       width="24.607599"
+       height="40.697472"
+       x="18.632122"
+       y="1013.4156" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:2.98682618;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:5.97365235, 2.98682618, 1.49341309, 2.98682618;stroke-dashoffset:3.58419118"
+       id="path3594"
+       sodipodi:cx="41.037449"
+       sodipodi:cy="23.34136"
+       sodipodi:rx="13.763329"
+       sodipodi:ry="8.3337584"
+       d="m 54.800777,23.341499 c -1.27e-4,4.602608 -6.162282,8.333696 -13.763558,8.333619 -7.60104,-7.6e-5 -13.762891,-3.731066 -13.763099,-8.33353 l 13.763329,-2.28e-4 z"
+       transform="matrix(0.85080766,0,0,-1.9314556,-4.1053213,1059.1524)"
+       sodipodi:start="1.6702519e-05"
+       sodipodi:end="3.1415653" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/kerb.svg b/images/presets/barrier/kerb.svg
new file mode 100644
index 0000000..44bfc1f
--- /dev/null
+++ b/images/presets/barrier/kerb.svg
@@ -0,0 +1,88 @@
+<?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"
+   width="16"
+   height="14"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="kerb2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4"
+     inkscape:cx="32.281141"
+     inkscape:cy="-21.23972"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     borderlayer="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-334.84375px"
+       originy="-479.73718px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-334.84375,-558.625)">
+    <path
+       style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.57555842;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 335.30336,572.28073 4.11304,0 0,-3.57957 -1.22303,-3.52309 -0.83349,-0.0564 -2.05652,0 z"
+       id="path2987"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.57555842;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 335.13153,565.17807 11.31089,-6.26427 c 1.66835,0.0118 2.4437,-0.13232 3.08481,0.8949 l 1.02826,2.68468 0,3.57959 -11.31089,6.26425 0,-3.57957 -1.02828,-2.68468 c -0.4803,-1.25403 -1.65447,-0.8949 -3.08479,-0.8949 z"
+       id="path3777"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccsc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.47963202;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 339.2446,568.75765 11.31089,-6.26427"
+       id="path3757"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/lift_gate.svg b/images/presets/barrier/lift_gate.svg
new file mode 100644
index 0000000..e57856b
--- /dev/null
+++ b/images/presets/barrier/lift_gate.svg
@@ -0,0 +1,193 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="53.149605"
+   height="53.149605"
+   id="svg2168"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="lift_gate4.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs2170" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.656854"
+     inkscape:cx="9.0410103"
+     inkscape:cy="33.424919"
+     inkscape:current-layer="g4143"
+     showgrid="true"
+     inkscape:grid-bbox="false"
+     inkscape:document-units="mm"
+     width="15mm"
+     height="15mm"
+     inkscape:window-width="1680"
+     inkscape:window-height="968"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     units="mm"
+     gridanglex="8.4666669mm"
+     gridanglez="8.4666669mm"
+     grid_units="mm"
+     inkscape:object-points="true"
+     inkscape:object-nodes="true"
+     objecttolerance="2.1"
+     gridtolerance="2.1"
+     guidetolerance="2.1"
+     inkscape:grid-points="true"
+     inkscape:guide-points="true"
+     inkscape:object-bbox="true"
+     inkscape:guide-bbox="true"
+     showguides="true"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="1mm"
+       spacingy="1mm"
+       color="#3f3fff"
+       empcolor="#3f3fff"
+       opacity="0.15"
+       empopacity="0.38"
+       empspacing="5" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2173">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>SlowRider</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Helper"
+     style="display:none"
+     sodipodi:insensitive="true" />
+  <g
+     id="layer1"
+     inkscape:label="Default"
+     inkscape:groupmode="layer"
+     style="display:inline">
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#c6c6f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35433072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+       id="rect2163"
+       width="3.5433071"
+       height="14.173228"
+       x="46.062992"
+       y="31.889763"
+       inkscape:export-xdpi="58.169998"
+       inkscape:export-ydpi="58.169998" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#c6c6f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35433072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+       id="rect2167"
+       width="3.5433071"
+       height="14.173228"
+       x="10.629921"
+       y="31.889763"
+       inkscape:export-filename="/home/ce/Desktop/rect2163.png"
+       inkscape:export-xdpi="58.169998"
+       inkscape:export-ydpi="58.169998" />
+    <g
+       id="g4143"
+       transform="matrix(0.7686478,-0.6396722,0.6396722,0.7686478,-18.500018,15.304206)"
+       inkscape:export-filename="/home/ce/Desktop/rect2163.png"
+       inkscape:export-xdpi="58.169998"
+       inkscape:export-ydpi="58.169998">
+      <rect
+         y="24.521818"
+         x="16.167543"
+         height="4.1407399"
+         width="46.703278"
+         id="rect2169"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57100457;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+         transform="matrix(0.9894068,0.14516952,-0.20227707,0.97932833,0,0)" />
+      <rect
+         y="23.998608"
+         x="8.317915"
+         height="6.1761885"
+         width="7.0867329"
+         id="rect2171"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.46780869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+         transform="matrix(0.98427942,0.1766183,-0.17194346,0.98510682,0,0)" />
+      <rect
+         y="24.521818"
+         x="20.27013"
+         height="4.1407433"
+         width="4.3423495"
+         id="rect3162"
+         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ff0011;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57100457;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+         transform="matrix(0.9894068,0.14516952,-0.20227707,0.97932833,0,0)" />
+      <use
+         height="53.149605"
+         width="53.149605"
+         transform="translate(8.2375898,1.2086505)"
+         id="use4135"
+         xlink:href="#rect3162"
+         y="0"
+         x="0" />
+      <use
+         height="53.149605"
+         width="53.149605"
+         transform="translate(8.4015524,1.2327078)"
+         id="use4137"
+         xlink:href="#use4135"
+         y="0"
+         x="0" />
+      <use
+         height="53.149605"
+         width="53.149605"
+         transform="translate(8.4015524,1.2327076)"
+         id="use4139"
+         xlink:href="#use4137"
+         y="0"
+         x="0" />
+      <use
+         height="53.149605"
+         width="53.149605"
+         transform="translate(8.4015524,1.2327076)"
+         id="use4141"
+         xlink:href="#use4139"
+         y="0"
+         x="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/barrier/retaining_wall.svg b/images/presets/barrier/retaining_wall.svg
new file mode 100644
index 0000000..5e59cc5
--- /dev/null
+++ b/images/presets/barrier/retaining_wall.svg
@@ -0,0 +1,80 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="stuetzmauer.svg"
+   inkscape:export-filename="F:\stuetzmauer16.png"
+   inkscape:export-xdpi="22.5"
+   inkscape:export-ydpi="22.5">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.959798"
+     inkscape:cx="40.521429"
+     inkscape:cy="31.585685"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <path
+       style="fill:#aa4400;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M -13.637059,3.8959235 25.253814,8.4416099 53.285547,70.81853 -5.555839,71.323606 -13.637059,3.8959235 z"
+       id="path3732"
+       transform="translate(0,988.36218)" />
+    <rect
+       style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+       id="rect3730"
+       width="12.214773"
+       height="90.775215"
+       x="-492.26758"
+       y="1119.0051"
+       transform="matrix(0.99999991,4.2594974e-4,0.4555856,0.89019198,0,0)" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/sally_port.svg b/images/presets/barrier/sally_port.svg
new file mode 100644
index 0000000..9459bf9
--- /dev/null
+++ b/images/presets/barrier/sally_port.svg
@@ -0,0 +1,94 @@
+<?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"
+   width="15"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="sally_port.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\entrance.png"
+   inkscape:export-xdpi="3.7227273"
+   inkscape:export-ydpi="3.7227273">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="-6.7723074"
+     inkscape:cy="7.6843872"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1050"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-334.28571,-719.21936)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4138"
+       width="15"
+       height="16"
+       x="334.28571"
+       y="719.21936" />
+    <rect
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:19.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2383"
+       width="13"
+       height="9.4549999"
+       x="335.28571"
+       y="725.76434" />
+    <ellipse
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:none;stroke-width:19.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3155"
+       cx="341.78571"
+       cy="726.31042"
+       rx="6.5"
+       ry="4.0909095" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/spikes.svg b/images/presets/barrier/spikes.svg
new file mode 100644
index 0000000..af66280
--- /dev/null
+++ b/images/presets/barrier/spikes.svg
@@ -0,0 +1,100 @@
+<?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"
+   width="16"
+   height="8"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="44.8"
+     inkscape:cx="6.4592619"
+     inkscape:cy="4.2969784"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-361px"
+       originy="-385px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-361,-659.36218)">
+    <path
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       d="m 361,667.36218 2.5,-8 2.5,8 z"
+       id="path2989"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       d="m 366,667.36218 2.5,-8 2.5,8 z"
+       id="path2989-1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       d="m 371,667.36218 2.5,-8 2.5,8 z"
+       id="path2989-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       d="m 361,667.36218 2.5,-5.05357 2.5,5.05357 z"
+       id="path2989-0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       d="m 366,667.36218 2.5,-5.05357 2.5,5.05357 z"
+       id="path2989-1-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       d="m 371,667.36218 2.5,-5.05357 2.5,5.05357 z"
+       id="path2989-7-4"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/stile.svg b/images/presets/barrier/stile.svg
new file mode 100644
index 0000000..b7d9849
--- /dev/null
+++ b/images/presets/barrier/stile.svg
@@ -0,0 +1,110 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="cattle_grid.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4"
+     inkscape:cx="2.3970333"
+     inkscape:cy="-1.8865791"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2996"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-650px"
+       originy="-370px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-650,-666.36218)">
+    <rect
+       style="fill:#45d749;fill-opacity:1;stroke:none"
+       id="rect3006"
+       width="16"
+       height="16"
+       x="650"
+       y="666.36218" />
+    <g
+       id="g3008"
+       style="fill:#5f5100;fill-opacity:1">
+      <rect
+         ry="0"
+         y="666.36218"
+         x="657"
+         height="16"
+         width="2"
+         id="rect2998"
+         style="fill:#5f5100;fill-opacity:1;stroke:none" />
+      <rect
+         y="676.36218"
+         x="650"
+         height="1.9998977"
+         width="15.999958"
+         id="rect3000"
+         style="fill:#5f5100;fill-opacity:1;stroke:none" />
+      <rect
+         y="678.36218"
+         x="652"
+         height="4"
+         width="1"
+         id="rect3002"
+         style="fill:#5f5100;fill-opacity:1;stroke:none" />
+      <rect
+         y="678.36218"
+         x="663"
+         height="4"
+         width="1"
+         id="rect3004"
+         style="fill:#5f5100;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/barrier/swing_gate.svg b/images/presets/barrier/swing_gate.svg
new file mode 100644
index 0000000..1de1c2f
--- /dev/null
+++ b/images/presets/barrier/swing_gate.svg
@@ -0,0 +1,196 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="53.149605"
+   height="53.149605"
+   id="svg2168"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="swing_gate3.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs2170" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="12.369187"
+     inkscape:cy="24.715247"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="false"
+     inkscape:document-units="mm"
+     width="15mm"
+     height="15mm"
+     inkscape:window-width="1680"
+     inkscape:window-height="968"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     units="mm"
+     gridanglex="8.4666669mm"
+     gridanglez="8.4666669mm"
+     grid_units="mm"
+     inkscape:object-points="true"
+     inkscape:object-nodes="true"
+     objecttolerance="2.1"
+     gridtolerance="2.1"
+     guidetolerance="2.1"
+     inkscape:grid-points="true"
+     inkscape:guide-points="true"
+     inkscape:object-bbox="true"
+     inkscape:guide-bbox="true"
+     showguides="true"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="1mm"
+       spacingy="1mm"
+       color="#3f3fff"
+       empcolor="#3f3fff"
+       opacity="0.15"
+       empopacity="0.38"
+       empspacing="5" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2173">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>SlowRider</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Helper"
+     style="display:none"
+     sodipodi:insensitive="true" />
+  <g
+     id="layer1"
+     inkscape:label="Default"
+     inkscape:groupmode="layer"
+     style="display:inline">
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#c6c6f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35433072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+       id="rect2163"
+       width="3.5433071"
+       height="14.173228"
+       x="46.240158"
+       y="21.082676"
+       inkscape:export-xdpi="58.169998"
+       inkscape:export-ydpi="58.169998" />
+    <rect
+       style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#c6c6f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35433072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+       id="rect2167"
+       width="3.5433071"
+       height="14.173228"
+       x="7.2637796"
+       y="24.625982"
+       inkscape:export-filename="/home/ce/Desktop/rect2163.png"
+       inkscape:export-xdpi="58.169998"
+       inkscape:export-ydpi="58.169998" />
+    <g
+       id="g4143"
+       transform="matrix(0.93829624,0.3458324,-0.3458324,0.93829624,8.7373232,-4.3095727)"
+       inkscape:export-filename="/home/ce/Desktop/rect2163.png"
+       inkscape:export-xdpi="58.169998"
+       inkscape:export-ydpi="58.169998">
+      <g
+         id="g4145">
+        <rect
+           transform="matrix(0.9894068,0.14516952,-0.20227707,0.97932833,0,0)"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57100457;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+           id="rect2169"
+           width="46.703278"
+           height="4.1407399"
+           x="16.167543"
+           y="24.521818" />
+        <rect
+           transform="matrix(0.98427942,0.1766183,-0.17194346,0.98510682,0,0)"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.46780869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+           id="rect2171"
+           width="7.0867329"
+           height="6.1761885"
+           x="8.317915"
+           y="23.998608" />
+        <rect
+           transform="matrix(0.9894068,0.14516952,-0.20227707,0.97932833,0,0)"
+           style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ff0011;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57100457;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
+           id="rect3162"
+           width="4.3423495"
+           height="4.1407433"
+           x="20.27013"
+           y="24.521818" />
+        <use
+           x="0"
+           y="0"
+           xlink:href="#rect3162"
+           id="use4135"
+           transform="translate(8.2375898,1.2086505)"
+           width="53.149605"
+           height="53.149605" />
+        <use
+           x="0"
+           y="0"
+           xlink:href="#use4135"
+           id="use4137"
+           transform="translate(8.4015524,1.2327078)"
+           width="53.149605"
+           height="53.149605" />
+        <use
+           x="0"
+           y="0"
+           xlink:href="#use4137"
+           id="use4139"
+           transform="translate(8.4015524,1.2327076)"
+           width="53.149605"
+           height="53.149605" />
+        <use
+           x="0"
+           y="0"
+           xlink:href="#use4139"
+           id="use4141"
+           transform="translate(8.4015524,1.2327076)"
+           width="53.149605"
+           height="53.149605" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/toll_station.png b/images/presets/barrier/toll_station.png
similarity index 100%
rename from images/presets/toll_station.png
rename to images/presets/barrier/toll_station.png
diff --git a/images/presets/barrier/turnstile.svg b/images/presets/barrier/turnstile.svg
new file mode 100644
index 0000000..6f321a3
--- /dev/null
+++ b/images/presets/barrier/turnstile.svg
@@ -0,0 +1,102 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="turnstile7.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\turnstile.png"
+   inkscape:export-xdpi="2.5587654"
+   inkscape:export-ydpi="2.5587654">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="4.8549449"
+     inkscape:cy="7.8663632"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4138"
+       originx="-7.006836e-007"
+       originy="2.5976562e-006" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-108.61428,-746.31934)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4137"
+       width="16"
+       height="16"
+       x="108.61428"
+       y="746.31934" />
+    <path
+       style="fill:#4d4d4d;fill-rule:evenodd;stroke:#999999;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 109.61428,754.31934 14,0"
+       id="path3155"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3157"
+       d="m 116.61428,761.31934 0,-14"
+       style="fill:#4d4d4d;fill-rule:evenodd;stroke:#999999;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <circle
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:14.19999981;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2383"
+       cx="116.61428"
+       cy="754.31934"
+       r="2" />
+  </g>
+</svg>
diff --git a/images/presets/barrier/wall.svg b/images/presets/barrier/wall.svg
new file mode 100644
index 0000000..e095157
--- /dev/null
+++ b/images/presets/barrier/wall.svg
@@ -0,0 +1,235 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="mauer.svg"
+   inkscape:export-filename="F:\zaun16.png"
+   inkscape:export-xdpi="22.5"
+   inkscape:export-ydpi="22.5">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.959798"
+     inkscape:cx="40.521429"
+     inkscape:cy="31.585685"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect3618"
+       width="65.154839"
+       height="42.17387"
+       x="-0.50507623"
+       y="1010.6934" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3616"
+       width="16.162441"
+       height="5.6073775"
+       x="-2.0203049"
+       y="1047.5125" />
+    <rect
+       y="1047.5125"
+       x="15.97304"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3620"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3622"
+       width="16.162441"
+       height="5.6073775"
+       x="33.966385"
+       y="1047.5125" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3624"
+       width="16.162441"
+       height="5.6073775"
+       x="51.959728"
+       y="1047.5125" />
+    <rect
+       y="1039.9363"
+       x="-10.859139"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3636"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3638"
+       width="16.162441"
+       height="5.6073775"
+       x="7.1342049"
+       y="1039.9363" />
+    <rect
+       y="1039.9363"
+       x="25.12755"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3640"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       y="1039.9363"
+       x="43.120892"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3642"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       y="1039.9363"
+       x="61.114235"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3644"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3646"
+       width="16.162441"
+       height="5.6073775"
+       x="-1.7677665"
+       y="1032.1075" />
+    <rect
+       y="1032.1075"
+       x="16.225578"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3648"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3650"
+       width="16.162441"
+       height="5.6073775"
+       x="34.218922"
+       y="1032.1075" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3652"
+       width="16.162441"
+       height="5.6073775"
+       x="52.212265"
+       y="1032.1075" />
+    <rect
+       y="1024.5314"
+       x="-10.859139"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3656"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3658"
+       width="16.162441"
+       height="5.6073775"
+       x="7.1342053"
+       y="1024.5314" />
+    <rect
+       y="1024.5314"
+       x="25.127548"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3660"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       y="1024.5314"
+       x="43.120892"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3662"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       y="1024.5314"
+       x="61.114231"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3664"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3666"
+       width="16.162441"
+       height="5.6073775"
+       x="-2.0203047"
+       y="1016.9553" />
+    <rect
+       y="1016.9553"
+       x="15.973041"
+       height="5.6073775"
+       width="16.162441"
+       id="rect3668"
+       style="fill:#c83737;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3670"
+       width="16.162441"
+       height="5.6073775"
+       x="33.966385"
+       y="1016.9553" />
+    <rect
+       style="fill:#c83737;fill-opacity:1;stroke:none"
+       id="rect3672"
+       width="16.162441"
+       height="5.6073775"
+       x="51.959728"
+       y="1016.9553" />
+    <rect
+       style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+       id="rect3676"
+       width="73.236061"
+       height="7.323606"
+       x="-4.5456862"
+       y="1007.9154" />
+  </g>
+</svg>
diff --git a/images/presets/basketball.png b/images/presets/basketball.png
deleted file mode 100644
index d787263..0000000
Binary files a/images/presets/basketball.png and /dev/null differ
diff --git a/images/presets/battlefield.png b/images/presets/battlefield.png
deleted file mode 100644
index 2cb572f..0000000
Binary files a/images/presets/battlefield.png and /dev/null differ
diff --git a/images/presets/beachvolleyball.png b/images/presets/beachvolleyball.png
deleted file mode 100644
index 7f2e3a3..0000000
Binary files a/images/presets/beachvolleyball.png and /dev/null differ
diff --git a/images/presets/bed.png b/images/presets/bed.png
deleted file mode 100644
index 45cc9a2..0000000
Binary files a/images/presets/bed.png and /dev/null differ
diff --git a/images/presets/bench.png b/images/presets/bench.png
deleted file mode 100644
index b595bb3..0000000
Binary files a/images/presets/bench.png and /dev/null differ
diff --git a/images/presets/bicycle_rental.png b/images/presets/bicycle_rental.png
deleted file mode 100644
index a6b2e9b..0000000
Binary files a/images/presets/bicycle_rental.png and /dev/null differ
diff --git a/images/presets/bike.png b/images/presets/bike.png
deleted file mode 100644
index 6ac7313..0000000
Binary files a/images/presets/bike.png and /dev/null differ
diff --git a/images/presets/board.png b/images/presets/board.png
deleted file mode 100644
index 053b065..0000000
Binary files a/images/presets/board.png and /dev/null differ
diff --git a/images/presets/boatyard.png b/images/presets/boatyard.png
deleted file mode 100644
index e637273..0000000
Binary files a/images/presets/boatyard.png and /dev/null differ
diff --git a/images/presets/bollard.png b/images/presets/bollard.png
deleted file mode 100644
index 4d17cd4..0000000
Binary files a/images/presets/bollard.png and /dev/null differ
diff --git a/images/presets/boule.png b/images/presets/boule.png
deleted file mode 100644
index 0bda495..0000000
Binary files a/images/presets/boule.png and /dev/null differ
diff --git a/images/presets/bus.png b/images/presets/bus.png
deleted file mode 100644
index a56b284..0000000
Binary files a/images/presets/bus.png and /dev/null differ
diff --git a/images/presets/bus_small.png b/images/presets/bus_small.png
deleted file mode 100644
index fa69aac..0000000
Binary files a/images/presets/bus_small.png and /dev/null differ
diff --git a/images/presets/cable_car.png b/images/presets/cable_car.png
deleted file mode 100644
index cfb15ec..0000000
Binary files a/images/presets/cable_car.png and /dev/null differ
diff --git a/images/presets/car.png b/images/presets/car.png
deleted file mode 100644
index e5f3319..0000000
Binary files a/images/presets/car.png and /dev/null differ
diff --git a/images/presets/car_rental.png b/images/presets/car_rental.png
deleted file mode 100644
index abae051..0000000
Binary files a/images/presets/car_rental.png and /dev/null differ
diff --git a/images/presets/car_repair.png b/images/presets/car_repair.png
deleted file mode 100644
index a121550..0000000
Binary files a/images/presets/car_repair.png and /dev/null differ
diff --git a/images/presets/car_sharing.png b/images/presets/car_sharing.png
deleted file mode 100644
index afb68ca..0000000
Binary files a/images/presets/car_sharing.png and /dev/null differ
diff --git a/images/presets/car_wash.png b/images/presets/car_wash.png
deleted file mode 100644
index d962510..0000000
Binary files a/images/presets/car_wash.png and /dev/null differ
diff --git a/images/presets/cemetery.png b/images/presets/cemetery.png
deleted file mode 100644
index bd74935..0000000
Binary files a/images/presets/cemetery.png and /dev/null differ
diff --git a/images/presets/chair_lift.png b/images/presets/chair_lift.png
deleted file mode 100644
index 8508598..0000000
Binary files a/images/presets/chair_lift.png and /dev/null differ
diff --git a/images/presets/cinema.png b/images/presets/cinema.png
deleted file mode 100644
index 0cf8f0b..0000000
Binary files a/images/presets/cinema.png and /dev/null differ
diff --git a/images/presets/city_wall.png b/images/presets/city_wall.png
deleted file mode 100644
index 7fa12e9..0000000
Binary files a/images/presets/city_wall.png and /dev/null differ
diff --git a/images/presets/confectionery.png b/images/presets/confectionery.png
deleted file mode 100644
index 4850712..0000000
Binary files a/images/presets/confectionery.png and /dev/null differ
diff --git a/images/presets/construction.png b/images/presets/construction.png
deleted file mode 100644
index 2b84ccd..0000000
Binary files a/images/presets/construction.png and /dev/null differ
diff --git a/images/presets/craft/painter.png b/images/presets/craft/painter.png
new file mode 100644
index 0000000..0114e87
Binary files /dev/null and b/images/presets/craft/painter.png differ
diff --git a/images/presets/craft/plumber.png b/images/presets/craft/plumber.png
new file mode 100644
index 0000000..d8faf63
Binary files /dev/null and b/images/presets/craft/plumber.png differ
diff --git a/images/presets/craft/pottery.png b/images/presets/craft/pottery.png
new file mode 100644
index 0000000..07cde5f
Binary files /dev/null and b/images/presets/craft/pottery.png differ
diff --git a/images/presets/craft/roofer.svg b/images/presets/craft/roofer.svg
new file mode 100644
index 0000000..30f0246
--- /dev/null
+++ b/images/presets/craft/roofer.svg
@@ -0,0 +1,91 @@
+<?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"
+   width="11"
+   height="16"
+   viewBox="0 0 11 16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="roofer.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="6.2353"
+     inkscape:cy="6.8030461"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="-365"
+       originy="-559.99997" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <circle
+       style="opacity:1;fill:#d45500;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="path4141"
+       cx="5.5"
+       cy="1046.8622"
+       r="5.5" />
+    <path
+       style="fill:#d45500;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 0,1046.8622 0,-10.5 11,0 0,10.5 z"
+       id="path4136"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/craft/tiler.png b/images/presets/craft/tiler.png
new file mode 100644
index 0000000..4b5e2f3
Binary files /dev/null and b/images/presets/craft/tiler.png differ
diff --git a/images/presets/craft/window_construction.png b/images/presets/craft/window_construction.png
new file mode 100644
index 0000000..8647bb9
Binary files /dev/null and b/images/presets/craft/window_construction.png differ
diff --git a/images/presets/crane.png b/images/presets/crane.png
deleted file mode 100644
index c1255ea..0000000
Binary files a/images/presets/crane.png and /dev/null differ
diff --git a/images/presets/diy_store.png b/images/presets/diy_store.png
deleted file mode 100644
index 2901b42..0000000
Binary files a/images/presets/diy_store.png and /dev/null differ
diff --git a/images/presets/drag_lift.png b/images/presets/drag_lift.png
deleted file mode 100644
index a8cfd93..0000000
Binary files a/images/presets/drag_lift.png and /dev/null differ
diff --git a/images/presets/education/college.png b/images/presets/education/college.png
new file mode 100644
index 0000000..c620e58
Binary files /dev/null and b/images/presets/education/college.png differ
diff --git a/images/presets/education/driving_school.png b/images/presets/education/driving_school.png
new file mode 100644
index 0000000..0dbe5e0
Binary files /dev/null and b/images/presets/education/driving_school.png differ
diff --git a/images/presets/education/kindergarten.svg b/images/presets/education/kindergarten.svg
new file mode 100644
index 0000000..84bf344
--- /dev/null
+++ b/images/presets/education/kindergarten.svg
@@ -0,0 +1,100 @@
+<?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"
+   version="1.0"
+   width="344.12"
+   height="344.51999"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="kindergarten.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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="0.6879914"
+     inkscape:cx="198.30586"
+     inkscape:cy="334.3065"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs11">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 335.76001 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="753.12 : 335.76001 : 1"
+       inkscape:persp3d-origin="376.56 : 223.84001 : 1"
+       id="perspective14" />
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4137"
+     width="344.12"
+     height="344.51999"
+     x="0"
+     y="-9.8632813e-007" />
+  <path
+     d="m 245.65209,60.332072 c 0,14.79633 -11.9948,26.79113 -26.79112,26.79113 -14.79634,0 -26.79113,-11.9948 -26.79113,-26.79113 0,-14.79634 11.99479,-26.79112 26.79113,-26.79112 14.79632,0 26.79112,11.99478 26.79112,26.79112 z"
+     style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path5681"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 68.975261,308.74492 -5.17213,-117.80968 -32.75684,26.43535 c -7.16156,-0.56763 -14.7311,-0.57428 -18.61329,-5.65104 l 51.17857,-49.99727 c 11.6192,3.25298 22.60625,2.2916 32.94839,-2.96919 l 36.779609,7.47086 17.81512,36.7796 c -5.51414,1.04564 -8.44572,6.19298 -20.68853,-3.44809 l -9.1949,-18.3898 -14.94171,-0.57468 13.21767,52.87068 34.48088,4.02277 c 9.1748,1.12084 9.74583,9.32715 12.06831,16.09108 l -55.74409,0.57468 -9.76959,-13.79235 -16.091079,4.59745 0.57469,52.87069 c  [...]
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5675"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 120.18778,142.59355 c 7.2242,-2.25756 80.36919,-47.408788 80.36919,-47.408788 17.07423,9.550968 31.45487,2.55559 45.60274,-5.86966 l 45.60275,14.448388 23.93015,46.95728 c -9.38939,4.96278 -18.57808,3.70403 -27.54225,-4.51512 l -12.19083,-24.38167 -25.28469,-8.57873 6.32117,58.6966 20.31805,49.21484 45.60275,19.86654 c 11.33556,12.73831 7.09452,19.08434 5.86966,27.54226 l -67.27534,-27.09074 c -3.52449,-0.65817 -4.8229,-4.65547 -6.77268,-7.67571 l -21.22108,-49.66636 -22.57562, [...]
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path5677"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 100.85158,130.49687 c 0,13.03481 -10.566799,23.60161 -23.601599,23.60161 -13.03481,0 -23.60161,-10.5668 -23.60161,-23.60161 0,-13.03481 10.5668,-23.6016 23.60161,-23.6016 13.0348,0 23.601599,10.56679 23.601599,23.6016 z"
+     style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path5679"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/school.png b/images/presets/education/school.png
similarity index 100%
rename from images/presets/school.png
rename to images/presets/education/school.png
diff --git a/images/presets/education/university.png b/images/presets/education/university.png
new file mode 100644
index 0000000..52b5153
Binary files /dev/null and b/images/presets/education/university.png differ
diff --git a/images/presets/aed.svg b/images/presets/emergency/aed.svg
similarity index 100%
rename from images/presets/aed.svg
rename to images/presets/emergency/aed.svg
diff --git a/images/presets/emergency/ambulance_station.svg b/images/presets/emergency/ambulance_station.svg
new file mode 100644
index 0000000..cea7f11
--- /dev/null
+++ b/images/presets/emergency/ambulance_station.svg
@@ -0,0 +1,76 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg3835"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ambulance_station.svg">
+  <defs
+     id="defs3837" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="7.3398769"
+     inkscape:cy="4.9455986"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3840">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-534.8525,-552.90935)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:#cc0000;stroke-opacity:1"
+       id="path3002"
+       sodipodi:cx="-8.5"
+       sodipodi:cy="5.5"
+       sodipodi:rx="5.5"
+       sodipodi:ry="5.5774221"
+       d="m -3,5.5 c 0,3.0803252 -2.4624339,5.577422 -5.5,5.577422 -3.037566,0 -5.5,-2.4970968 -5.5,-5.577422 0,-3.0803252 2.462434,-5.57742214 5.5,-5.57742214 3.0375661,0 5.5,2.49709694 5.5,5.57742214 z"
+       transform="matrix(1.3341078,0,0,1.315587,554.19242,553.67363)" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 544.8525,562.90935 3,0 0,-4 -3,0 0,-3 -4,0 0,3 -3,0 0,4 3,0 0,3 4,0 z"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path1883"
+       sodipodi:nodetypes="ccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/emergency/assembly_point.svg b/images/presets/emergency/assembly_point.svg
new file mode 100644
index 0000000..83ba55c
--- /dev/null
+++ b/images/presets/emergency/assembly_point.svg
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
+     version="1.1"
+     width="400px"
+     height="400px"
+     viewBox="0 0 178 178"
+     id="svg2">
+    <defs />
+    <rect
+         width="178"
+         height="178"
+         x="0"
+         y="0"
+         style="fill:#ffffff" />
+    <rect
+         width="168"
+         height="168"
+         x="5"
+         y="5"
+         style="fill:#008855;fill-rule:evenodd" />
+	<g style="fill:#ffffff;fill-rule:evenodd">
+    <path d="M 44.9,117.94 44.9,88.84 C 44.9,86.32 47.1,84.64 49.4,84.64 H 76.7 C 76.6,88.08 79,90.5 80.9,93.04 H 74 C 69,93.04 66.5,96.15 66.5,101.74 V 117.94 H 56.9 V 96.04 H 52.7 V 117.94 z M 70.7,127.84 70.7,101.44 C 70.7,98.41 72.7,96.94 75.5,96.94 H 102.5 C 105.8,96.94 107.3,99.73 107.3,101.14 V 127.84 H 101.6 V 106.54 H 97.4 V 127.84 H 80.9 V 106.54 H 76.4 V 127.84 z M 133.1,117.94 133.1,90.04 C 133.1,86.99 131.5,84.64 128.6,84.64 H 101.3 C 101.3,87.95 99,90.54 97.1,93.04 H 103.7  [...]
+    <path d="M 97.86,58.49 A 8.855,8.855 0 0 1 80.15,58.49 8.855,8.855 0 1 1 97.86,58.49 z" />
+    <path d="M 122.54,71.069 A 8.8551,8.8551 0 0 1 104.83,71.069 8.8551,8.8551 0 1 1 122.54,71.069 z" />
+    <path d="M 72.283,70.693 A 8.8551,8.8551 0 0 1 54.573,70.693 8.8551,8.8551 0 1 1 72.283,70.693 z" />
+    <path d="M 97.702,83.413 A 8.8551,8.8551 0 0 1 79.992,83.413 8.8551,8.8551 0 1 1 97.702,83.413 z" />
+    <path d="M 14.761,8.9 8.9,14.496 35.275,40.999 H 16.714 L 24.53,48.95 H 48.95 V 25.097 L 41.136,17.146 V 35.404 L 14.761,8.9" />
+    <path d="M 163.24,8.902 169.1,14.492 142.72,40.999 H 161.28 L 153.47,48.95 H 129.05 V 25.092 L 136.86,17.142 V 35.402 L 163.24,8.902" />
+    <path d="M 14.761,169.1 8.9,163.5 35.275,137 H 16.714 L 24.53,129.05 H 48.95 V 152.9 L 41.136,160.85 V 142.59 L 14.761,169.1" />
+    <path d="M 163.24,169.1 169.1,163.51 142.72,137 H 161.28 L 153.47,129.05 H 129.05 V 152.91 L 136.86,160.86 V 142.6 L 163.24,169.1" />
+	</g>
+</svg>
diff --git a/images/presets/emergency/fire_extinguisher.svg b/images/presets/emergency/fire_extinguisher.svg
new file mode 100644
index 0000000..76f55bb
--- /dev/null
+++ b/images/presets/emergency/fire_extinguisher.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<path fill="#FF3333" d="M4,7.042C4,5.086,5.586,3.5,7.542,3.5l0,0c1.956,0,3.542,1.586,3.542,3.542v5.416
+	c0,1.956-1.586,3.542-3.542,3.542l0,0C5.586,16,4,14.414,4,12.458V7.042z"/>
+<rect x="6" y="1" fill="#666666" width="3" height="3"/>
+<path fill="none" stroke="#666666" stroke-width="2" d="M7.5,2H12c0,0,2,0,2,2v5"/>
+<rect x="5.5" y="8" fill="#666666" width="4.5" height="4"/>
+</svg>
diff --git a/images/presets/emergency/fire_hose.svg b/images/presets/emergency/fire_hose.svg
new file mode 100644
index 0000000..8729f5d
--- /dev/null
+++ b/images/presets/emergency/fire_hose.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+
+<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"
+   version="1.1"
+   id="Ebene_1"
+   x="0px"
+   y="0px"
+   width="16px"
+   height="16px"
+   viewBox="0 0 16 16"
+   enable-background="new 0 0 16 16"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="fire_hose.svg"><metadata
+   id="metadata21"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+   id="defs19" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview17"
+   showgrid="true"
+   inkscape:zoom="29.5"
+   inkscape:cx="3.0504169"
+   inkscape:cy="7.108022"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Ebene_1"><inkscape:grid
+     type="xygrid"
+     id="grid3004" /></sodipodi:namedview>
+<rect
+   style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.59999999999999998"
+   id="rect3006"
+   width="16"
+   height="16"
+   x="0"
+   y="0"
+   ry="0" /><g
+   id="g3">
+	<path
+   d="M1,7.156c0.02,4.616,5.878,8.566,10.124,6.496"
+   id="path5"
+   stroke="#000000"
+   fill="none" />
+	<path
+   d="M1,7.156C1,4.05,3.473,1.532,6.523,1.532c3.049,0,5.523,2.519,5.523,5.625"
+   id="path7"
+   stroke="#000000"
+   fill="none" />
+	<path
+   d="M3.455,7.156L3.455,7.156c0,2.416,1.923,4.375,4.295,4.375s4.296-1.959,4.296-4.375v0"
+   id="path9"
+   stroke="#000000"
+   fill="none" />
+	<path
+   d="M5.909,7.156L5.909,7.156c0,1.036,0.825,1.875,1.841,1.875s1.841-0.839,1.841-1.875v0"
+   id="path11"
+   stroke="#000000"
+   fill="none" />
+	<path
+   d="M3.455,7.156c0-1.726,1.374-3.125,3.068-3.125c1.694,0,3.068,1.399,3.068,3.125"
+   id="path13"
+   stroke="#000000"
+   fill="none" />
+	<polyline
+   points="9.544,12.118 11.527,15.361 15.002,12.12 14.007,10.5  "
+   id="polyline15"
+   fill="#0092DA" />
+</g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/emergency/siren.svg b/images/presets/emergency/siren.svg
new file mode 100644
index 0000000..5b2409e
--- /dev/null
+++ b/images/presets/emergency/siren.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+
+<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"
+   version="1.1"
+   id="Ebene_1"
+   x="0px"
+   y="0px"
+   width="16px"
+   height="16px"
+   viewBox="0 0 16 16"
+   enable-background="new 0 0 16 16"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="siren.svg"><metadata
+   id="metadata11"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+   id="defs9" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview7"
+   showgrid="true"
+   inkscape:zoom="29.5"
+   inkscape:cx="8.8863159"
+   inkscape:cy="5.6147308"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Ebene_1"><inkscape:grid
+     type="xygrid"
+     id="grid2999" /></sodipodi:namedview>
+<path
+   inkscape:connector-curvature="0"
+   d="M 14,6 C 14,2.6865 11.3132,0 8,0 4.6844,0 2,2.6865 2,6"
+   id="path5-7"
+   style="fill:#ffffff" /><rect
+   x="6"
+   y="5"
+   width="4"
+   height="11"
+   id="rect3-1"
+   style="fill:#ffffff" /><rect
+   x="7"
+   y="4.6"
+   width="2"
+   height="11.4"
+   id="rect3" />
+<path
+   d="M13,5c0-2.209-2.239-4-5-4C5.237,1,3,2.791,3,5"
+   id="path5" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/emergency/water_tank.svg b/images/presets/emergency/water_tank.svg
new file mode 100644
index 0000000..578aa5c
--- /dev/null
+++ b/images/presets/emergency/water_tank.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
+<rect x="1" y="1" fill="#FFFFFF" stroke="#000000" stroke-width="2" width="14" height="14"/>
+<rect x="1" y="6" fill="#0092DA" width="14" height="9"/>
+<rect x="1" y="1" fill="none" stroke="#000000" stroke-width="2" width="14" height="14"/>
+</svg>
diff --git a/images/presets/empty.png b/images/presets/empty.png
deleted file mode 100644
index d4d269e..0000000
Binary files a/images/presets/empty.png and /dev/null differ
diff --git a/images/presets/fence.png b/images/presets/fence.png
deleted file mode 100644
index 3809900..0000000
Binary files a/images/presets/fence.png and /dev/null differ
diff --git a/images/presets/fire_hydrant.png b/images/presets/fire_hydrant.png
deleted file mode 100644
index 48887d8..0000000
Binary files a/images/presets/fire_hydrant.png and /dev/null differ
diff --git a/images/presets/firebrigade.png b/images/presets/firebrigade.png
deleted file mode 100644
index 356ab91..0000000
Binary files a/images/presets/firebrigade.png and /dev/null differ
diff --git a/images/presets/food/bar.svg b/images/presets/food/bar.svg
new file mode 100644
index 0000000..fff6d27
--- /dev/null
+++ b/images/presets/food/bar.svg
@@ -0,0 +1,101 @@
+<?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"
+   width="15"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="bar2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="9.3802765"
+     inkscape:cy="5.2609214"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-16)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4138"
+       width="15"
+       height="16"
+       x="0"
+       y="16" />
+    <path
+       style="fill:#ff2a2a;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.00438809;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 7.5,22 0,8"
+       id="path2159"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0062ff;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.15268402;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+       d="m 7.5146895,23.181551 -5.7356411,-6.07237 11.2797726,0 -5.5441315,6.07237 z"
+       id="path2157"
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 5,30.5 5,0"
+       id="path2161"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/biergarten.png b/images/presets/food/biergarten.png
similarity index 100%
rename from images/presets/biergarten.png
rename to images/presets/food/biergarten.png
diff --git a/images/presets/cafe.png b/images/presets/food/cafe.png
similarity index 100%
rename from images/presets/cafe.png
rename to images/presets/food/cafe.png
diff --git a/images/presets/food/drinking_water.png b/images/presets/food/drinking_water.png
new file mode 100644
index 0000000..c866b87
Binary files /dev/null and b/images/presets/food/drinking_water.png differ
diff --git a/images/presets/fastfood.png b/images/presets/food/fastfood.png
similarity index 100%
rename from images/presets/fastfood.png
rename to images/presets/food/fastfood.png
diff --git a/images/presets/food/food_court.png b/images/presets/food/food_court.png
new file mode 100644
index 0000000..66fee62
Binary files /dev/null and b/images/presets/food/food_court.png differ
diff --git a/images/presets/food/icecream.png b/images/presets/food/icecream.png
new file mode 100644
index 0000000..11712a0
Binary files /dev/null and b/images/presets/food/icecream.png differ
diff --git a/images/presets/pub.png b/images/presets/food/pub.png
similarity index 100%
rename from images/presets/pub.png
rename to images/presets/food/pub.png
diff --git a/images/presets/food/restaurant.svg b/images/presets/food/restaurant.svg
new file mode 100644
index 0000000..681c93d
--- /dev/null
+++ b/images/presets/food/restaurant.svg
@@ -0,0 +1,57 @@
+<?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"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="restaurant.16.svg">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1106"
+     inkscape:window-height="767"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="14.75"
+     inkscape:cx="8"
+     inkscape:cy="8"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
+  <rect width="16" height="16" fill="white" />
+  <path
+     d="M 5,1 C 4,1 2,3 2,6 c 0,3 2.25,4 2.25,4 l -0.5,5 2.5,0 -0.5,-5 C 5.75,10 8,9 8,6 8,3 6,1 5,1 z M 9,1.75 9,8 c 0,1 1.75,1 1.75,2 l -0.5,5 2.5,0 -0.5,-5 C 12.25,9 14,9 14,8 l 0,-6.25 c 0,-1 -1,-1 -1,0 L 13,7 c 0,0.5632885 -1,0.5632884 -1,0 l 0,-5.25 c 0,-1 -1,-1 -1,0 L 11,7 c 0,0.5273339 -1,0.5273339 -1,0 l 0,-5.25 c 0,-1 -1,-1 -1,0 z"
+     id="path4"
+     style="fill:#734a08;fill-opacity:1" />
+</svg>
diff --git a/images/presets/football.png b/images/presets/football.png
deleted file mode 100644
index 3b0def2..0000000
Binary files a/images/presets/football.png and /dev/null differ
diff --git a/images/presets/fuel.png b/images/presets/fuel.png
deleted file mode 100644
index b849385..0000000
Binary files a/images/presets/fuel.png and /dev/null differ
diff --git a/images/presets/gasometer.png b/images/presets/gasometer.png
deleted file mode 100644
index 7df4fd4..0000000
Binary files a/images/presets/gasometer.png and /dev/null differ
diff --git a/images/presets/glacier.png b/images/presets/glacier.png
deleted file mode 100644
index 48030bd..0000000
Binary files a/images/presets/glacier.png and /dev/null differ
diff --git a/images/presets/goods.png b/images/presets/goods.png
deleted file mode 100644
index e51c13d..0000000
Binary files a/images/presets/goods.png and /dev/null differ
diff --git a/images/presets/graveyard.png b/images/presets/graveyard.png
deleted file mode 100644
index 882ad3a..0000000
Binary files a/images/presets/graveyard.png and /dev/null differ
diff --git a/images/presets/guidepost.png b/images/presets/guidepost.png
deleted file mode 100644
index 53804ea..0000000
Binary files a/images/presets/guidepost.png and /dev/null differ
diff --git a/images/presets/hangar.png b/images/presets/hangar.png
deleted file mode 100644
index 1ed8566..0000000
Binary files a/images/presets/hangar.png and /dev/null differ
diff --git a/images/presets/health/baby_hatch.svg b/images/presets/health/baby_hatch.svg
new file mode 100644
index 0000000..fe1fa53
--- /dev/null
+++ b/images/presets/health/baby_hatch.svg
@@ -0,0 +1,239 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__baby_hatch3.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="-29.320109"
+     inkscape:cy="15.23225"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254"
+       width="16.000004"
+       height="16.000042"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2.0000017" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4293"
+       cx="11.062386"
+       cy="1045.5758"
+       rx="3.7681696"
+       ry="5.7863278" />
+    <path
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 14.717651,1039.5637 c -4e-6,2.0577 -1.668114,3.7258 -3.725831,3.7258 -2.057717,0 -3.7258269,-1.6681 -3.7258307,-3.7258 z"
+       id="circle4295"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cscc" />
+    <circle
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4291"
+       cx="10.99182"
+       cy="1039.5637"
+       r="2.201627" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4311"
+       width="5"
+       height="8"
+       x="0.9999997"
+       y="1040.3621"
+       rx="0" />
+  </g>
+</svg>
diff --git a/images/presets/health/clinic.svg b/images/presets/health/clinic.svg
new file mode 100644
index 0000000..c304348
--- /dev/null
+++ b/images/presets/health/clinic.svg
@@ -0,0 +1,235 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__clinic.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="-20.679487"
+     inkscape:cy="8.9290067"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254"
+       width="16.000008"
+       height="16.000046"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2.0000021" />
+    <g
+       id="g4302"
+       transform="matrix(0.85716634,0,0,0.85716634,2.8596806,150.89059)">
+      <path
+         sodipodi:nodetypes="cccccccccccccscc"
+         inkscape:connector-curvature="0"
+         id="path3772-4-3-0"
+         d="m 7.8178461,1041.8617 c -0.8260795,0 -1.4905882,0.7755 -1.4905882,1.7382 l 0,6.9336 c -0.013155,1.0862 1.3917706,1.0862 1.3785772,0 l 0,-5.722 0.710423,0 0,6.5506 4.4223349,0 0,-6.5506 0.78274,0 0,5.722 c -0.0133,1.0862 1.391832,1.0862 1.378576,0 l 0,-6.9342 c 0,-0.9625 -0.665741,-1.7381 -1.491821,-1.7381 l -5.6902419,0 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;strok [...]
+      <ellipse
+         style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="ellipse4298-7"
+         cx="10.663416"
+         cy="1039.2753"
+         rx="1.9127603"
+         ry="1.9127849" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       d="m 6.0000019,1042.3621 3.000001,0 0,-2 -3.000001,0 0,-3 -2.0000009,0 0,3 -3.000001,0 0,2 3.000001,0 0,3 2.0000009,0 z"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1883-7"
+       sodipodi:nodetypes="ccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/health/dentist.svg b/images/presets/health/dentist.svg
new file mode 100644
index 0000000..d61b1ef
--- /dev/null
+++ b/images/presets/health/dentist.svg
@@ -0,0 +1,235 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__dentist5.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="7.0126666"
+     inkscape:cy="3.0118006"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302-4"
+       width="16.000004"
+       height="16.000004"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       ry="2.0000398" />
+    <g
+       id="g4302"
+       transform="matrix(0.85716634,0,0,0.85716634,3.1425054,151.1699)">
+      <path
+         sodipodi:nodetypes="csccccccccccccccsscc"
+         inkscape:connector-curvature="0"
+         id="path3772-4-3-0"
+         d="m 7.8178461,1041.8617 c -0.8260795,0 -1.4905882,0.7755 -1.4905882,1.7382 l 0,0.9897 c -5.667e-4,0.019 -5.667e-4,0.038 0,0.056 l 0,0.1659 0,5.722 c -0.013155,1.0862 1.3917706,1.0862 1.3785772,0 l 0,-5.722 0.710423,0 0,6.5506 4.4223349,0 0,-6.5506 0.78274,0 0,5.722 c -0.0133,1.0862 1.391832,1.0862 1.378576,0 l 0,-5.8884 0,-1.0458 c 0,-0.9625 -0.665741,-1.7381 -1.491821,-1.7381 l -5.6902419,0 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;strok [...]
+      <ellipse
+         style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="ellipse4298-7"
+         cx="10.663416"
+         cy="1039.2753"
+         rx="1.9127603"
+         ry="1.9127849" />
+    </g>
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81100017;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 2.9550687,1049.6092 c 0.2522249,0 1.0224663,-7.1573 2.0449317,-7.1573 1.0224651,0 1.8452307,7.1573 2.0449303,7.1573 0.1997009,0 2.0449306,-7.1573 2.0449306,-8.1797 -1.1e-6,-3.0674 -0.798849,-4.1218 -2.0449306,-4.09 -1.2461294,0.032 -1.1183212,1.0863 -2.0449303,1.0226 -0.9266092,-0.063 -0.9266102,-1.0226 -2.0449317,-1.0226 -1.1183212,0 -2.04493037,1.0226 -2.04493037,4.09 0,1.0224 1.83724217,8.1797 2.04493037,8.1797 z"
+       id="path4290"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="szzszzzss" />
+  </g>
+</svg>
diff --git a/images/presets/health/doctors.svg b/images/presets/health/doctors.svg
new file mode 100644
index 0000000..2c972ee
--- /dev/null
+++ b/images/presets/health/doctors.svg
@@ -0,0 +1,243 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__doctors6.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568543"
+     inkscape:cx="28.078209"
+     inkscape:cy="-41.468809"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-others="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-grids="false"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302-4"
+       width="16.000004"
+       height="16.000004"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       ry="2.0000398" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 3.0575769,1044.1832 c -1.4348265,0 -2.58901897,1.3471 -2.58901897,3.0193 l 0,5.1595 15.06362407,0 0,-5.1608 c 0,-1.6717 -1.156334,-3.0189 -2.591161,-3.0189 l -9.8834441,0 z"
+       id="path3772-4-3-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccscc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.48800027;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 11.391375,1047.2349 c 0,0 1.95345,-5.1396 -3.1353008,-5.0913 -5.0381319,0.2084 -1.6479095,4.6118 -1.6479095,4.6118"
+       id="path4276"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.48800027;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 9.6431604,1050.1396 c 0,0 -0.9446954,-4.6105 -3.0349957,-3.3842 -2.2615752,1.3268 0.9432796,4.3927 0.9432796,4.3927"
+       id="path4278"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <ellipse
+       ry="3.3223372"
+       rx="3.322294"
+       cy="1039.6909"
+       cx="8.0000792"
+       id="ellipse4298-7"
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/health/hospital.svg b/images/presets/health/hospital.svg
new file mode 100644
index 0000000..3d9b3e9
--- /dev/null
+++ b/images/presets/health/hospital.svg
@@ -0,0 +1,218 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__hospital5.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-4.7044422"
+     inkscape:cy="9.9634056"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254"
+       width="16.000004"
+       height="16.000042"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2.0000017" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 10.000001,1046.3621 5.000001,0 0,-4 -5.000001,0 0,-5 -4.0000004,0 0,5 -5.0000009,0 0,4 5.0000009,0 0,5 4.0000004,0 z"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1883"
+       sodipodi:nodetypes="ccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/health/pharmacy.svg b/images/presets/health/pharmacy.svg
new file mode 100644
index 0000000..bf44fe8
--- /dev/null
+++ b/images/presets/health/pharmacy.svg
@@ -0,0 +1,218 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__pharmacy.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="13.45603"
+     inkscape:cy="8.5318054"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254"
+       width="16.000004"
+       height="16.000042"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2.0000017" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 10.000001,1046.3621 5.000001,0 0,-4 -5.000001,0 0,-5 -4.0000004,0 0,5 -5.0000009,0 0,4 5.0000009,0 0,5 4.0000004,0 z"
+       style="fill:#007704;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1883"
+       sodipodi:nodetypes="ccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/health/veterinary.svg b/images/presets/health/veterinary.svg
new file mode 100644
index 0000000..31ead60
--- /dev/null
+++ b/images/presets/health/veterinary.svg
@@ -0,0 +1,224 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__veterinary.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="-20.679487"
+     inkscape:cy="8.9290067"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254"
+       width="16.000004"
+       height="16.000042"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2.0000017" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 6.0000006,1042.3621 3.0000005,0 0,-2 -3.0000005,0 0,-3 -2.0000004,0 0,3 -3.0000005,0 0,2 3.0000005,0 0,3 2.0000004,0 z"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1883-7"
+       sodipodi:nodetypes="ccccccccccccc" />
+    <path
+       style="fill:#000000;stroke:none"
+       d="m 11.478895,1041.0537 -1.7913937,4.949 -5.660158,0 c -1.703812,0 -2.316408,1.9582 -2.316408,3.125 1.102218,-1.9407 2.314454,-1.9571 2.314454,-1.9571 l -0.8687628,4.9124 1.515626,0 0.666015,-2.6015 5.3515635,0 0.544923,2.6015 1.580079,0 -0.867189,-4.9512 0.943361,-1.6738 1.853516,0.7656 0.972656,-2.1875 -3.316407,-1.4121 z"
+       id="path4288-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccscccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/hedge.png b/images/presets/hedge.png
deleted file mode 100644
index 0bfdf11..0000000
Binary files a/images/presets/hedge.png and /dev/null differ
diff --git a/images/presets/hunting_stand.png b/images/presets/hunting_stand.png
deleted file mode 100644
index f558ce7..0000000
Binary files a/images/presets/hunting_stand.png and /dev/null differ
diff --git a/images/presets/ice_hockey.png b/images/presets/ice_hockey.png
deleted file mode 100644
index 7ebc6c1..0000000
Binary files a/images/presets/ice_hockey.png and /dev/null differ
diff --git a/images/presets/informationoffice.png b/images/presets/informationoffice.png
deleted file mode 100644
index 83df168..0000000
Binary files a/images/presets/informationoffice.png and /dev/null differ
diff --git a/images/presets/island.png b/images/presets/island.png
deleted file mode 100644
index 763da66..0000000
Binary files a/images/presets/island.png and /dev/null differ
diff --git a/images/presets/islet.png b/images/presets/islet.png
deleted file mode 100644
index 84cfcc6..0000000
Binary files a/images/presets/islet.png and /dev/null differ
diff --git a/images/presets/karting.png b/images/presets/karting.png
deleted file mode 100644
index 2779ab6..0000000
Binary files a/images/presets/karting.png and /dev/null differ
diff --git a/images/presets/kindergarten.png b/images/presets/kindergarten.png
deleted file mode 100644
index 0c10edd..0000000
Binary files a/images/presets/kindergarten.png and /dev/null differ
diff --git a/images/presets/kiosk.png b/images/presets/kiosk.png
deleted file mode 100644
index 83a1e80..0000000
Binary files a/images/presets/kiosk.png and /dev/null differ
diff --git a/images/presets/landmark/adit.svg b/images/presets/landmark/adit.svg
new file mode 100644
index 0000000..9bd934c
--- /dev/null
+++ b/images/presets/landmark/adit.svg
@@ -0,0 +1,171 @@
+<?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"
+   version="1.0"
+   width="308.12"
+   height="308.12"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="adit.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata21">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="964"
+     inkscape:window-width="1400"
+     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"
+     inkscape:zoom="1.564853"
+     inkscape:cx="92.135243"
+     inkscape:cy="68.846607"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     id="rect2172"
+     width="308.1167"
+     height="235.54376"
+     x="2.0433588"
+     y="1.0586861" />
+  <g
+     id="g8184"
+     transform="translate(-87.091039,-129.47691)">
+    <path
+       d="m 240.1875,155.15625 c -72.85179,0 -121.78125,63.87446 -121.78125,101.15625 0,0 0.0937,0.34375 0.0937,0.34375 l 0,90.90625 240.84375,-1.8125 0,-89.09375 0.40625,-0.21875 c 0,-36.90234 -47.93698,-99.84709 -119.5625,-101.125 l 0,-0.15625 z"
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+       id="path3703"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 381.915,346.95341 -288.069634,0.59395 1.781874,-105.72452 23.16436,-45.73477 39.20123,-39.79519 52.86226,-22.5704 53.45623,0 54.05018,22.5704 43.06195,40.68613 20.78853,46.03175 -0.29698,103.94265 z"
+       style="color:#000000;fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+       id="path1882"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 97.438084,244.21377 20.438476,11.80016"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path2780"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 119.27765,196.38505 17.21967,13.56026"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3667"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 158.75688,156.29288 11.75977,19.6331"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3670"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 212.09583,133.92681 1.67997,22.36607"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3672"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 96.178108,301.50351 20.159602,0"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3674"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 380.09252,244.84375 -20.43848,11.80016"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3685"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 358.25295,197.01503 -17.21967,13.56026"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3687"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 318.77372,156.92286 -11.75977,19.6331"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3689"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 265.43477,134.55679 -1.67997,22.36607"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3691"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 381.35249,302.13349 -20.1596,0"
+       style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3693"
+       inkscape:connector-curvature="0" />
+  </g>
+  <path
+     d="m 33.115632,134.39536 c 0.49958,0 0.49958,0 0,0 z"
+     style="fill:none;stroke:none"
+     id="path3709"
+     inkscape:connector-curvature="0" />
+  <g
+     id="g3792"
+     transform="matrix(1.8831168,0,0,1.9689361,22.772979,-300.97041)">
+    <path
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0"
+       id="path3784"
+       d="m 8.9465267,230.15741 17.8078503,57.51338 60.92159,0 19.682363,-57.51339 z"
+       style="fill:#aa4400;stroke:none" />
+    <path
+       transform="translate(-14.697867,-5.1123011)"
+       d="m 102.24602,292.46356 c 0,7.94094 -6.437402,14.37835 -14.378344,14.37835 -7.940942,0 -14.378348,-6.43741 -14.378348,-14.37835 0,-7.94094 6.437406,-14.37835 14.378348,-14.37835 7.940942,0 14.378344,6.43741 14.378344,14.37835 z"
+       sodipodi:ry="14.378347"
+       sodipodi:rx="14.378347"
+       sodipodi:cy="292.46356"
+       sodipodi:cx="87.867676"
+       id="path3786"
+       style="opacity:0.98999999;color:#000000;fill:#552200;fill-opacity:1;stroke:none;stroke-width:8;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.98999999;color:#000000;fill:#552200;fill-opacity:1;stroke:none;stroke-width:8;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3790"
+       sodipodi:cx="87.867676"
+       sodipodi:cy="292.46356"
+       sodipodi:rx="14.378347"
+       sodipodi:ry="14.378347"
+       d="m 102.24602,292.46356 c 0,7.94094 -6.437402,14.37835 -14.378344,14.37835 -7.940942,0 -14.378348,-6.43741 -14.378348,-14.37835 0,-7.94094 6.437406,-14.37835 14.378348,-14.37835 7.940942,0 14.378344,6.43741 14.378344,14.37835 z"
+       transform="translate(-47.288787,-5.1123011)" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/beacon.png b/images/presets/landmark/beacon.png
new file mode 100644
index 0000000..a178821
Binary files /dev/null and b/images/presets/landmark/beacon.png differ
diff --git a/images/presets/landmark/building.svg b/images/presets/landmark/building.svg
new file mode 100644
index 0000000..adb38b6
--- /dev/null
+++ b/images/presets/landmark/building.svg
@@ -0,0 +1,95 @@
+<?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"
+   width="12.528"
+   height="16.000069"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="building2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\misc\landmark\building.png"
+   inkscape:export-xdpi="45"
+   inkscape:export-ydpi="45">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective14" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="-0.15660126"
+     inkscape:cy="9.4201333"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-15.999932)">
+    <path
+       style="font-size:12px;fill:#b3b3b3;fill-rule:evenodd;stroke:#000000;stroke-width:0.03557852"
+       d="m 6.2639954,16.017721 -6.22182601,6.385799 1.24435701,0 0,9.578691 3.733104,0 0,-4.867796 2.574055,0 8e-6,4.867796 3.6477716,0 0,-9.578691 1.244365,0 -6.2218346,-6.385799 0,0 0,0 z"
+       id="path645"
+       sodipodi:nodetypes="ccccccccccccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/bunker.svg b/images/presets/landmark/bunker.svg
new file mode 100644
index 0000000..013624c
--- /dev/null
+++ b/images/presets/landmark/bunker.svg
@@ -0,0 +1,111 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="362.25629"
+   height="249.91148"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\misc\landmark"
+   sodipodi:docname="bunker.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="215.38745"
+     inkscape:cy="126.94806"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="176"
+     inkscape:window-y="232"
+     height="250px"
+     width="362.76px" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-267.74313,-518.16443)">
+    <rect
+       style="fill:#aaccff;fill-opacity:1;stroke:none;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3176"
+       width="362.14288"
+       height="234.28571"
+       x="267.74313"
+       y="518.16443" />
+    <path
+       style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00115538px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 268.24372,709.23698 C 268.24372,709.23698 384.77515,686.92278 456.64722,695.22382 L 629.99943,715.24556 L 629.99943,768.07591 L 268.24372,768.07591 L 268.24372,709.23698 z "
+       id="path2160"
+       sodipodi:nodetypes="cscccc" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:7.09289646;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3134"
+       width="238.9071"
+       height="121.76425"
+       x="329.11783"
+       y="610.05145" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3136"
+       sodipodi:cx="464.28571"
+       sodipodi:cy="540.93359"
+       sodipodi:rx="115.71429"
+       sodipodi:ry="62.857143"
+       d="M 579.99999 540.93359 A 115.71429 62.857143 0 1 1  348.57142,540.93359 A 115.71429 62.857143 0 1 1  579.99999 540.93359 z"
+       transform="matrix(1.0331906,0,0,0.998601,-30.767094,67.899626)" />
+    <rect
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3140"
+       width="157.14285"
+       height="43.882164"
+       x="369.99997"
+       y="617.05139" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3138"
+       width="42.857143"
+       height="43.377083"
+       x="427.14282"
+       y="617.55646" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/bunker_silo.svg b/images/presets/landmark/bunker_silo.svg
new file mode 100644
index 0000000..4882d07
--- /dev/null
+++ b/images/presets/landmark/bunker_silo.svg
@@ -0,0 +1,201 @@
+<?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"
+   width="917.01813"
+   height="982.49854"
+   id="svg3157"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs3159">
+    <clipPath
+       id="presentation_clip_path"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         x="0"
+         y="0"
+         width="21000"
+         height="29700"
+         id="rect7" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="116.36642"
+     inkscape:cy="468.39287"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3162">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-258.63358,-18.256528)">
+    <g
+       style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"
+       clip-path="url(#presentation_clip_path)"
+       class="Slide"
+       id="id1"
+       transform="matrix(0.04819248,0,0,0.03543307,211.12182,-16.67605)">
+      <g
+         id="g54"
+         class="Page">
+        <g
+           id="g56"
+           class="com.sun.star.drawing.PolyPolygonShape">
+          <g
+             id="id3">
+            <path
+               style="fill:#b3b3b3;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path59"
+               d="m 1000,28700 0,-8589 710,0 0,8589 -710,0 z" />
+            <path
+               style="fill:#4d4d4d;stroke:#666666"
+               inkscape:connector-curvature="0"
+               id="path61"
+               d="m 1000,28700 0,-8589 710,0 0,8589 -710,0 z" />
+          </g>
+        </g>
+        <g
+           id="g63"
+           class="com.sun.star.drawing.PolyPolygonShape">
+          <g
+             id="id4">
+            <path
+               style="fill:#1a1a1a;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path66"
+               d="m 10056,1859 0,8589 4972,0 3907,-8589 -8879,0 z" />
+            <path
+               style="fill:none;stroke:#666666"
+               inkscape:connector-curvature="0"
+               id="path68"
+               d="m 10056,1859 0,8589 4972,0 3907,-8589 -8879,0 z" />
+          </g>
+        </g>
+        <g
+           id="g70"
+           class="com.sun.star.drawing.PolyPolygonShape">
+          <g
+             id="id5">
+            <path
+               style="fill:#333333;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path73"
+               d="m 1710,20111 8346,-18252 0,8589 -8346,18252 0,-8589 z" />
+            <path
+               style="fill:none;stroke:#999999"
+               inkscape:connector-curvature="0"
+               id="path75"
+               d="m 1710,20111 8346,-18252 0,8589 -8346,18252 0,-8589 z" />
+          </g>
+        </g>
+        <g
+           id="g77"
+           class="com.sun.star.drawing.ClosedFreeHandShape">
+          <g
+             id="id6">
+            <path
+               style="fill:#cccc00;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path80"
+               d="m 10054,4906 c -218,294 -404,674 -381,1067 26,457 -243,741 -382,1100 -138,354 15,697 -59,1065 -77,380 -43,809 -351,1101 -299,283 -442,743 -677,1102 -209,320 -161,730 -176,1099 -15,367 49,747 -87,1102 -130,339 -135,730 -117,1099 18,359 -23,794 -382,960 -337,156 -654,430 -852,816 -172,335 -257,726 -352,1101 -90,359 -50,746 -147,1102 -102,376 -153,775 -295,1136 -153,388 36,781 61,1170 22,357 -32,711 -61,1065 -33,398 48,879 382,1067 286,162 609,164 911,284 335,133 598,490 6 [...]
+            <path
+               style="fill:none;stroke:#cccc00"
+               inkscape:connector-curvature="0"
+               id="path82"
+               d="m 10054,4906 c -218,294 -404,674 -381,1067 26,457 -243,741 -382,1100 -138,354 15,697 -59,1065 -77,380 -43,809 -351,1101 -299,283 -442,743 -677,1102 -209,320 -161,730 -176,1099 -15,367 49,747 -87,1102 -130,339 -135,730 -117,1099 18,359 -23,794 -382,960 -337,156 -654,430 -852,816 -172,335 -257,726 -352,1101 -90,359 -50,746 -147,1102 -102,376 -153,775 -295,1136 -153,388 36,781 61,1170 22,357 -32,711 -61,1065 -33,398 48,879 382,1067 286,162 609,164 911,284 335,133 598,490 6 [...]
+          </g>
+        </g>
+        <g
+           id="g84"
+           class="com.sun.star.drawing.PolyPolygonShape">
+          <g
+             id="id7">
+            <path
+               style="fill:#4d4d4d;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path87"
+               d="m 10589,28700 0,-8589 710,0 0,8589 -710,0 z" />
+            <path
+               style="fill:none;stroke:#666666"
+               inkscape:connector-curvature="0"
+               id="path89"
+               d="m 10589,28700 0,-8589 710,0 0,8589 -710,0 z" />
+          </g>
+        </g>
+        <g
+           id="g91"
+           class="com.sun.star.drawing.PolyPolygonShape">
+          <g
+             id="id8">
+            <path
+               style="fill:#4d4d4d;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path94"
+               d="m 11299,28700 0,-8589 8701,-19111 -178,9019 -8523,18681 z" />
+            <path
+               style="fill:none;stroke:#999999"
+               inkscape:connector-curvature="0"
+               id="path96"
+               d="m 11299,28700 0,-8589 8701,-19111 -178,9019 -8523,18681 z" />
+          </g>
+        </g>
+        <g
+           id="g98"
+           class="com.sun.star.drawing.PolyPolygonShape">
+          <g
+             id="id9">
+            <path
+               style="fill:#e6e6e6;stroke:none"
+               inkscape:connector-curvature="0"
+               id="path101"
+               d="m 1000,20111 8701,-19111 10299,0 -8701,19111 -710,0 8346,-18252 -8879,0 -8346,18252 -710,0 z" />
+            <path
+               style="fill:#4d4d4d;stroke:#999999"
+               inkscape:connector-curvature="0"
+               id="path103"
+               d="m 1000,20111 8701,-19111 10299,0 -8701,19111 -710,0 8346,-18252 -8879,0 -8346,18252 -710,0 z" />
+          </g>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/cave_entrance.png b/images/presets/landmark/cave_entrance.png
similarity index 100%
rename from images/presets/cave_entrance.png
rename to images/presets/landmark/cave_entrance.png
diff --git a/images/presets/chimney.png b/images/presets/landmark/chimney.png
similarity index 100%
rename from images/presets/chimney.png
rename to images/presets/landmark/chimney.png
diff --git a/images/presets/landmark/crane.svg b/images/presets/landmark/crane.svg
new file mode 100644
index 0000000..063375e
--- /dev/null
+++ b/images/presets/landmark/crane.svg
@@ -0,0 +1,92 @@
+<?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"
+   version="1.0"
+   width="16"
+   height="14.127"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="crane.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Christian Koerner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="31.416667"
+     inkscape:cx="5.6049592"
+     inkscape:cy="6.7204503"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4133"
+       originx="-16.085257"
+       originy="-15.4365" />
+  </sodipodi:namedview>
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4135"
+     width="15.999872"
+     height="14.127"
+     x="0"
+     y="1.4495849e-007" />
+  <path
+     d="m 2.9204844,1.6979566 0,1.403644 1.414964,0.01132 0,0.475428 3.260077,0.01132 0.690503,0 -0.01132,-0.656543 -0.611265,-0.01132 0.565986,-0.271673 4.4146876,-0.04528 0,0.316952 0.396189,0 0,2.184705 c -0.05459,0.0057 -0.114211,0.0072 -0.158476,0.01132 -0.110638,0.05826 -0.226394,0.237714 -0.226394,0.237714 l 0,0.38487 0.305632,0.588625 0.09056,0 0,0.305633 c 0,0 -0.0076,0.100867 0.07924,0.147156 0.161292,0.08596 0.144725,0.294809 0.01132,0.316952 -0.05936,0.0099 -0.145587,-0.08886 [...]
+     style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.94199997;stroke-miterlimit:4;stroke-opacity:1"
+     id="symbol1"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/landmark/cutline.svg b/images/presets/landmark/cutline.svg
new file mode 100644
index 0000000..dc8dd4a
--- /dev/null
+++ b/images/presets/landmark/cutline.svg
@@ -0,0 +1,46 @@
+<?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"
+   version="1.1"
+   width="16"
+   height="16"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(-310,-586.36218)"
+     id="layer1">
+    <rect
+       width="16"
+       height="16"
+       x="310"
+       y="586.36218"
+       id="rect2987"
+       style="fill:#447821;fill-opacity:1;stroke:none" />
+    <rect
+       width="2"
+       height="16"
+       x="317"
+       y="586.36218"
+       id="rect2989"
+       style="fill:#99ff55;fill-opacity:1;stroke:none" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/forest.svg b/images/presets/landmark/forest.svg
new file mode 100644
index 0000000..0bf468b
--- /dev/null
+++ b/images/presets/landmark/forest.svg
@@ -0,0 +1,700 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg1"
+   sodipodi:docname="jean-victor-balin-plain-tree.svg"
+   inkscape:export-filename="/datas/Projs/Cliparts Stocker/plain_tree.png"
+   viewBox="0 0 1118.8397 1227.8107"
+   sodipodi:version="0.32"
+   inkscape:export-xdpi="72.000000"
+   version="1.0"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-ydpi="72.000000"
+   inkscape:version="0.48.5 r10040"
+   width="100%"
+   height="100%">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient5877"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883-1"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-7"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-4"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-0"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-9"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-4"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5877-8"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-8"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-2"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3020"
+       xlink:href="#linearGradient5877-8"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5883-1-7"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-7-1"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-4-1"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-0-5"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-9-2"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-4-7"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3020-6"
+       xlink:href="#linearGradient5877-8-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5877-8-1"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-8-4"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-2-2"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883-3"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-2"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-2"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-1"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-6"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-8"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5877-5"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-7"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-6"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3098"
+       xlink:href="#linearGradient5877-5"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5883-1-7-3"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-7-1-1"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-4-1-2"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-0-5-3"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-9-2-3"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-4-7-4"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3020-6-1"
+       xlink:href="#linearGradient5877-8-1-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5877-8-1-1"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-8-4-3"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-2-2-8"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883-3-7"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-2-4"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-2-2"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-1-7"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-6-7"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-8-9"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3098-3"
+       xlink:href="#linearGradient5877-5-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5877-5-1"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-7-9"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-6-8"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883-1-6"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-7-5"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-4-0"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-0-2"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-9-8"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-4-6"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3020-0"
+       xlink:href="#linearGradient5877-8-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5877-8-2"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-8-48"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-2-6"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3213"
+       xlink:href="#linearGradient5877-8-2"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-y="-4"
+     pagecolor="#ffffff"
+     inkscape:window-height="1003"
+     inkscape:zoom="0.41427105"
+     inkscape:window-x="-4"
+     showgrid="true"
+     borderopacity="1.0"
+     inkscape:current-layer="svg1"
+     inkscape:cx="105.70544"
+     inkscape:cy="678.68539"
+     inkscape:window-width="1680"
+     inkscape:pageopacity="0.0"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2995"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-0.66599997px"
+       originy="255.623px" />
+  </sodipodi:namedview>
+  <g
+     id="g5885"
+     transform="translate(-82.251123,-23.332313)">
+    <path
+       id="path1545"
+       style="fill:url(#linearGradient5883);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path909"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path4679"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5877);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z"
+       inkscape:connector-curvature="0" />
+  </g>
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2008-05-26T12:05:38</dc:date>
+        <dc:description />
+        <dc:source>https://openclipart.org/detail/17043/plain_tree-by-jean_victor_balin</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>jean_victor_balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>forest</rdf:li>
+            <rdf:li>garden</rdf:li>
+            <rdf:li>plant</rdf:li>
+            <rdf:li>tree</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g5885-4"
+     transform="translate(193.73388,-23.332313)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-5"
+       style="fill:url(#linearGradient5883-1);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-5"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-0);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-1"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3020);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+  <g
+     id="g5885-1"
+     transform="translate(477.93588,-23.332313)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-8"
+       style="fill:url(#linearGradient5883-3);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-9"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-1);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-2"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3098);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+  <g
+     id="g5885-4-7"
+     transform="translate(753.92088,-23.332313)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-5-9"
+       style="fill:url(#linearGradient5883-1-7);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-5-5"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-0-5);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-1-4"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3020-6);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+  <g
+     id="g5885-4-5"
+     transform="translate(58.781997,232.29069)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-5-0"
+       style="fill:url(#linearGradient5883-1-6);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-5-9"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-0-2);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-1-0"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3213);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+  <g
+     id="g5885-1-0"
+     transform="translate(342.984,232.29069)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-8-6"
+       style="fill:url(#linearGradient5883-3-7);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-9-1"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-1-7);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-2-3"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3098-3);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+  <g
+     id="g5885-4-7-8"
+     transform="translate(618.969,232.29069)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-5-9-9"
+       style="fill:url(#linearGradient5883-1-7-3);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-5-5-3"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-0-5-3);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-1-4-4"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3020-6-1);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/gasometer.svg b/images/presets/landmark/gasometer.svg
new file mode 100644
index 0000000..4a83184
--- /dev/null
+++ b/images/presets/landmark/gasometer.svg
@@ -0,0 +1,107 @@
+<?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"
+   width="16"
+   height="15.848646"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="gasometer4.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="15.526228"
+     inkscape:cy="14.198624"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="-7.9595485"
+       originy="-4.8440194" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-7.9595485,-11.307335)">
+    <path
+       style="fill:#b9bcbc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.55431867px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.2684542,14.673855 0,10.455372 c 1.5657193,2.273225 13.3840888,2.386411 15.3421488,0.0089 0.08328,-1.574186 0.0562,-10.595522 0.0562,-10.595522 L 8.2684532,14.673846 Z"
+       id="path3366"
+       sodipodi:nodetypes="ccccc"
+       inkscape:transform-center-x="-0.64640991"
+       inkscape:transform-center-y="0.45841658"
+       inkscape:connector-curvature="0" />
+    <ellipse
+       style="fill:#ffffff;fill-opacity:1;stroke:#130d0d;stroke-width:0.84639627;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="path3176"
+       inkscape:transform-center-y="-9.3565694"
+       inkscape:transform-center-x="-0.642514"
+       cx="15.959558"
+       cy="14.337715"
+       rx="7.5750284"
+       ry="2.0786033" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 17.459549,26.555981 0,-1.9 -3,0 0,-3 -3.000001,0 0,-3 -2.8999995,0"
+       id="path4160"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/glacier.svg b/images/presets/landmark/glacier.svg
new file mode 100644
index 0000000..9b88b77
--- /dev/null
+++ b/images/presets/landmark/glacier.svg
@@ -0,0 +1,95 @@
+<?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"
+   width="15.999999"
+   height="10.95183"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="glacier.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective8" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="-32.014053"
+     inkscape:cy="9.8537159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8.8303575,-18.153193)">
+    <path
+       style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.31793761px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 8.8303575,29.105023 16.843533,18.153193 24.830357,29.05783 8.8303575,29.105023 Z"
+       id="path3382"
+       sodipodi:nodetypes="cccc"
+       inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\misc\landmark\volcano_small.png"
+       inkscape:export-xdpi="59"
+       inkscape:export-ydpi="59"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/hunting_stand.png b/images/presets/landmark/hunting_stand.png
new file mode 100644
index 0000000..56f39c1
Binary files /dev/null and b/images/presets/landmark/hunting_stand.png differ
diff --git a/images/presets/landmark/lighthouse.svg b/images/presets/landmark/lighthouse.svg
new file mode 100644
index 0000000..60ff4f4
--- /dev/null
+++ b/images/presets/landmark/lighthouse.svg
@@ -0,0 +1,126 @@
+<?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"
+   width="13"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="lighthouse7.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="5.0571059"
+     inkscape:cy="9.425331"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4139"
+       originx="1.0000003"
+       originy="1.0000002" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-12.493748,-7.716536)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.53100002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4141"
+       width="13"
+       height="16"
+       x="12.493748"
+       y="7.716536" />
+    <path
+       style="fill:#db1313;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36983016;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 13.694308,22.53162 4.674558,1e-6 -0.370997,-4.562816 -3.932565,0 -0.370996,4.562815 z"
+       id="path3370"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.34807542;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 14.055311,17.980854 3.952551,10e-7 -0.313694,-4.407982 -3.325162,0 -0.313695,4.407981 z"
+       id="path3372"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#db1313;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.33010414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 14.362373,13.584595 3.338426,0 L 17.435845,9.2461036 16.031587,8.709302 14.627328,9.2461041 14.362373,13.584595 Z"
+       id="path3374"
+       sodipodi:nodetypes="cccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 18.959525,9.423279 5.3125,-1.0267857"
+       id="path3134"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 19.022658,10.915914 5.3125,-0.04464"
+       id="path3138"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.63690597;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 19.13797,12.605958 5.187409,1.36117"
+       id="path3140"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/mine.svg b/images/presets/landmark/mine.svg
new file mode 100644
index 0000000..36eee94
--- /dev/null
+++ b/images/presets/landmark/mine.svg
@@ -0,0 +1,76 @@
+<?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"
+   version="1.0"
+   width="430"
+   height="430"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="mine.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.87674419"
+     inkscape:cx="20.530505"
+     inkscape:cy="213.85942"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.60000002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4133"
+     width="430"
+     height="430"
+     x="0"
+     y="-4.9960036e-015" />
+  <path
+     d="M 90.99997,385.61425 C 76.28281,380.5685 74.6516,379.13624 71.50838,368.49999 C 68.56032,358.52412 68.56171,357.13217 71.52034,356.5208 C 73.21478,356.17066 90.71541,338.46781 124.92406,302.49999 C 152.90991,273.07499 179.38947,245.33909 183.76755,240.86465 C 189.73363,234.76725 191.51128,232.34851 190.86383,231.20917 C 189.03292,227.98729 112.69583,147.78913 110.7488,147.04198 C 109.99268,146.75183 107.99981,147.97368 106.32019,149.75721 C 102.45213,153.86459 83.49183,179.15596  [...]
+     style="fill:black;fill-opacity:1"
+     id="path1935" />
+</svg>
diff --git a/images/presets/landmark/mountain_pass.svg b/images/presets/landmark/mountain_pass.svg
new file mode 100644
index 0000000..0692660
--- /dev/null
+++ b/images/presets/landmark/mountain_pass.svg
@@ -0,0 +1,236 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="mountain_pass2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="8.4693267"
+     inkscape:cy="10.742348"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4309"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:#aa4400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 3,1040.3621 c -1.037884,0 -1.9776167,0.6718 -3,2 l 0,10 16,0 0,-8 c 0,0 -1.573787,-0.7207 -2.617609,-0.7207 -1.368957,0 -2.77797,1.2382 -3.9374998,2.7285 -1.631842,-2.5745 -4.3718088,-6.0078 -6.4448931,-6.0078 z"
+       id="path4288"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sccccscs" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4225"
+       d="m 9,1036.866 0,3.4962 -1.503907,0 c -0.447994,2e-4 -0.669761,0.5441 -0.349609,0.8575 l 2,2.0039 c 0.195265,0.1952 0.511766,0.1952 0.7070307,0 l 2,-2.0039 c 0.374791,-0.3616 0.03953,-0.8621 -0.351562,-0.8594 l -1.501954,0 0,-3.4943 c 0,-0.6757 -1,-0.6679 -1,0 z"
+       style="color:#000000;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:nodetypes="ccccccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#cccccc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9.5,1045.7019 c 1.6e-6,2 -6.5312501,2.7344 -6.5312501,3.7344 0,1 11.0312525,1.9258 13.0312525,1.9258"
+       id="path4207"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+  </g>
+</svg>
diff --git a/images/presets/peak.svg b/images/presets/landmark/peak.svg
similarity index 100%
rename from images/presets/peak.svg
rename to images/presets/landmark/peak.svg
diff --git a/images/presets/landmark/plant.svg b/images/presets/landmark/plant.svg
new file mode 100644
index 0000000..852f956
--- /dev/null
+++ b/images/presets/landmark/plant.svg
@@ -0,0 +1,147 @@
+<?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://web.resource.org/cc/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="56.345924"
+   id="svg2"
+   inkscape:export-filename="/home/nicu/Desktop/rpg_color.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\misc\landmark"
+   sodipodi:docname="plant.svg"
+   sodipodi:version="0.32"
+   width="61.581997"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>tree - RPG map elements</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient2057"
+       inkscape:collect="always">
+      <stop
+         id="stop2059"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2061"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="14.207293"
+       cy="222.04396"
+       fx="14.207293"
+       fy="222.04396"
+       gradientTransform="scale(1.39523,0.716728)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1991"
+       inkscape:collect="always"
+       r="8.2519293"
+       xlink:href="#linearGradient2057" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-24.321306"
+     inkscape:cy="-48.836658"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="791"
+     inkscape:window-width="1151"
+     inkscape:window-x="1"
+     inkscape:window-y="24"
+     inkscape:zoom="1"
+     pagecolor="#ffffff" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-26.966145,-38.21491)">
+    <g
+       id="g1928"
+       transform="matrix(2.469674,0,0,2.469674,17.5242,-459.6608)">
+      <path
+         d="M 17.714937,206.59397 C 18.01549,206.63025 19.106157,206.30166 19.609583,206.9729 C 20.008876,207.50529 20.637595,207.72724 21.409497,207.92022 C 22.023558,208.07373 22.171392,207.73176 22.546284,207.82549 C 23.38197,208.03441 23.515931,208.67808 24.630394,208.67808 C 25.259492,208.67808 25.213047,208.97653 25.672449,209.43594 C 26.212213,209.9757 26.846077,209.80083 27.282898,210.38326 C 27.82218,211.1023 27.95147,210.64567 28.135489,209.9096 C 28.212565,209.60129 27.220572, [...]
+         id="path2843"
+         sodipodi:nodetypes="cccccccccccccccc"
+         style="fill:#00b300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 14.778237,206.21504 C 14.559093,206.60463 13.969146,206.9729 13.26252,206.9729 C 12.809635,206.9729 12.462057,207.58389 12.125733,207.92022 C 11.688548,208.3574 11.456374,208.77904 10.988945,209.24647 C 10.544534,209.69088 9.6000106,209.60937 8.9995671,209.9096 C 8.4970879,210.16084 8.2078498,210.96522 7.8627797,211.42531 C 7.2163604,212.28721 6.723641,211.46003 6.2523308,212.08844 C 5.7576589,212.748 5.7555797,213.14781 5.0208111,213.69889 C 4.491284,214.09603 4.4823951,21 [...]
+         id="path2847"
+         sodipodi:nodetypes="ccccccccccccccccccccc"
+         style="fill:#00b300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 28.401713 158.69876 A 7.9437737 4.0807056 0 1 1  12.514165,158.69876 A 7.9437737 4.0807056 0 1 1  28.401713 158.69876 z"
+         id="path1349"
+         sodipodi:cx="20.457939"
+         sodipodi:cy="158.69876"
+         sodipodi:rx="7.9437737"
+         sodipodi:ry="4.0807056"
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient1991);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1"
+         transform="translate(-2.837734,61.63138)" />
+      <path
+         d="M 12.124592,201.60237 C 11.345532,201.63361 10.550972,201.77197 10.093342,202.00862 C 7.9764322,203.10331 5.6512822,206.26981 6.0933422,207.44612 C 6.1629122,207.63123 5.9065722,208.36334 5.5308422,209.10237 C 5.1550922,209.84137 4.8433322,210.659 4.8433422,210.91487 C 4.8433422,211.17075 4.5909422,211.9638 4.2808422,212.66487 C 3.6919022,213.99625 3.6716222,215.01621 4.2183422,215.19612 C 4.3948922,215.25421 5.0620322,214.63597 5.6870922,213.78987 C 6.3196422,212.9336 6.9651 [...]
+         id="path1649"
+         style="fill:#5c2700;fill-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/landmark/reef.svg b/images/presets/landmark/reef.svg
new file mode 100644
index 0000000..f600f87
--- /dev/null
+++ b/images/presets/landmark/reef.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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="Calque_1"
+   enable-background="new 0 0 307 229"
+   xml:space="preserve"
+   viewBox="0 0 297.0498 213.31735"
+   version="1.1"
+   y="0px"
+   x="0px"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="16.svg"
+   width="297.0498"
+   height="213.31735"><defs
+   id="defs19" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview17"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="1.4574428"
+   inkscape:cx="3.9839805"
+   inkscape:cy="191.8494"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Calque_1" />
+<g
+   id="g3"
+   style="fill:#00ffff;stroke:#0893a1;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+   transform="translate(-3.4592507,-8.790634)">
+	<path
+   d="m 142.04,214.03 c 0,0 2.866,-59.186 -5.322,-75.972 -8.19,-16.79 -22.52,-38.49 -22.93,-45.86 -0.409,-7.37 -1.638,-28.25 0,-36.848 1.638,-8.598 6.961,-29.479 11.874,-16.787 4.913,12.692 -3.686,23.747 -3.275,25.794 0.409,2.047 -3.686,18.015 7.778,31.935 11.464,13.92 8.598,-9.417 8.598,-9.417 0,0 -5.987,-28.66 3.762,-30.707 9.75,-2.047 7.703,17.605 6.475,22.928 -1.229,5.323 2.535,26.203 1.063,27.841 -1.472,1.638 1.349,21.291 0.348,23.338 -1.001,2.047 1.865,32.345 5.96,20.062 4.094,-12. [...]
+   id="path5"
+   style="fill:#00ffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+   inkscape:connector-curvature="0" />
+	<path
+   d="m 112.75,218.42 c 0,0 2.457,-7.755 -11.464,-27.816 -13.92,-20.062 -27.021,-13.511 -29.888,-28.251 -2.866,-14.739 2.457,-16.377 6.142,-10.645 3.685,5.731 6.312,9.417 14.21,11.873 7.898,2.457 11.993,10.646 7.489,-8.188 C 94.735,136.56 92.688,134.675 86.957,128.043 81.225,121.41 52.564,102.986 29.228,100.939 5.887,98.899 3.431,91.53 5.477,87.435 c 2.047,-4.094 29.888,0 29.888,0 l 9.417,0.819 c 0,0 23.746,13.102 4.503,-15.558 C 30.043,44.036 24.311,35.438 31.271,35.029 c 6.961,-0.409 1 [...]
+   id="path7"
+   style="fill:#00ffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+   inkscape:connector-curvature="0" />
+	<path
+   d="m 207.26,215.85 c 0,0 -3.361,-7.407 8.074,-28.982 11.435,-21.575 25.223,-16.629 26.316,-31.604 1.092,-14.976 -4.389,-15.969 -7.365,-9.839 -2.977,6.129 -5.146,10.101 -12.697,13.479 -7.551,3.379 -10.641,11.996 -8.41,-7.239 2.232,-19.235 4.041,-21.35 8.943,-28.616 4.902,-7.268 31.168,-28.97 54.096,-33.778 22.928,-4.808 24.49,-12.418 21.971,-16.24 -2.519,-3.822 -29.676,3.555 -29.676,3.555 l -9.252,1.933 c 0,0 -22.02,15.833 -6.322,-14.912 15.698,-30.745 20.365,-39.964 13.406,-39.542 -6. [...]
+   id="path9"
+   style="fill:#00ffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+   inkscape:connector-curvature="0" />
+	<path
+   d="m 128.92,218.84 c 0,0 3.275,-24.975 -6.96,-28.25 -10.235,-3.275 -37.667,-4.913 -36.029,-13.102 1.638,-8.189 12.282,0 15.148,0 2.866,0 13.921,0.818 18.015,0.818 4.095,0 10.646,-10.235 3.275,-24.155 -7.369,-13.921 -15.558,-18.016 -18.833,-27.432 -3.275,-9.417 4.094,-3.275 -5.732,-24.565 -9.843,-21.298 -17.213,-47.911 -6.568,-41.36 10.645,6.551 9.417,22.928 9.417,22.928 l 3.685,-1.228 c 0,0 5.342,-11.055 3.285,-15.149 -2.057,-4.094 -4.514,-19.652 -4.514,-19.652 0,0 2.866,-13.92 6.961, [...]
+   id="path11"
+   style="fill:#00ffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+   inkscape:connector-curvature="0" />
+	<path
+   d="m 171.18,216.93 c 0,0 -2.504,-28.407 7.949,-32.632 10.452,-4.225 27.509,-22.591 26.116,-31.879 -1.391,-9.287 -5.695,-5.385 -8.592,-5.251 -2.898,0.134 -10.093,22.758 -14.231,22.949 -4.138,0.191 -10.43,-11.207 -2.531,-27.47 7.898,-16.265 16.31,-21.33 19.925,-32.251 3.615,-10.922 -4.033,-3.555 6.586,-28.361 10.621,-24.806 18.93,-55.584 7.957,-47.595 -10.973,7.989 -10.26,26.66 -10.26,26.66 l -3.684,-1.232 c 0,0 -5.045,-12.392 -2.832,-17.169 2.211,-4.778 5.197,-22.685 5.197,-22.685 0,0  [...]
+   id="path13"
+   style="fill:#00ffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+   inkscape:connector-curvature="0" />
+</g>
+<metadata
+   id="metadata15"><rdf:RDF><cc:Work><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license
+         rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /><dc:publisher><cc:Agent
+           rdf:about="http://openclipart.org/"><dc:title>Openclipart</dc:title></cc:Agent></dc:publisher><dc:title></dc:title><dc:date>2012-09-11T16:16:42</dc:date><dc:description /><dc:source>https://openclipart.org/detail/172292/corals-by-presquesage-172292</dc:source><dc:creator><cc:Agent><dc:title>presquesage</dc:title></cc:Agent></dc:creator><dc:subject><rdf:Bag><rdf:li>corals</rdf:li><rdf:li>coraux</rdf:li></rdf:Bag></dc:subject></cc:Work><cc:License
+       rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
+         rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>
\ No newline at end of file
diff --git a/images/presets/landmark/reservoir_covered.svg b/images/presets/landmark/reservoir_covered.svg
new file mode 100644
index 0000000..d84f946
--- /dev/null
+++ b/images/presets/landmark/reservoir_covered.svg
@@ -0,0 +1,109 @@
+<?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"
+   width="16"
+   height="9.4910717"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="reservoir_covered.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="6.8108334"
+     inkscape:cy="-0.24925507"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="906"
+     inkscape:window-height="897"
+     inkscape:window-x="375"
+     inkscape:window-y="75"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4135"
+       originx="-8"
+       originy="-10.745535" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8,-11.763393)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.60000002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4137"
+       width="16"
+       height="9.4910717"
+       x="8"
+       y="11.763393" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.57275552px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.6166998,19.798413 3.2749852,-6.439376 8.265438,-0.05031 3.119034,6.439375"
+       id="path3447"
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#08f7f7;fill-opacity:1;stroke:#1f151d;stroke-width:0.51937479;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="path3449"
+       sodipodi:cx="16.000763"
+       sodipodi:cy="15.672711"
+       sodipodi:rx="3.6424451"
+       sodipodi:ry="3.6934266"
+       d="M 19.629572,15.353425 A 3.6424451,3.6934266 0 0 1 17.902864,18.82254 3.6424451,3.6934266 0 0 1 14.070629,18.804958 3.6424451,3.6934266 0 0 1 12.374952,15.32014"
+       sodipodi:start="6.1966302"
+       sodipodi:end="3.2371973"
+       sodipodi:open="true" />
+  </g>
+</svg>
diff --git a/images/presets/ridge.svg b/images/presets/landmark/ridge.svg
similarity index 100%
rename from images/presets/ridge.svg
rename to images/presets/landmark/ridge.svg
diff --git a/images/presets/saddle.svg b/images/presets/landmark/saddle.svg
similarity index 100%
rename from images/presets/saddle.svg
rename to images/presets/landmark/saddle.svg
diff --git a/images/presets/landmark/silo.svg b/images/presets/landmark/silo.svg
new file mode 100644
index 0000000..41db873
--- /dev/null
+++ b/images/presets/landmark/silo.svg
@@ -0,0 +1,107 @@
+<?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"
+   width="16"
+   height="15.848646"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="silo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="4.869978"
+     inkscape:cy="14.136124"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="-7.9595485"
+       originy="-4.8440194" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-7.9595485,-11.307335)">
+    <path
+       style="fill:#c7db92;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.55431867px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.2684542,14.673855 0,10.455372 c 1.5657193,2.273225 13.3840888,2.386411 15.3421488,0.0089 0.08328,-1.574186 0.0562,-10.595522 0.0562,-10.595522 L 8.2684532,14.673846 Z"
+       id="path3366"
+       sodipodi:nodetypes="ccccc"
+       inkscape:transform-center-x="-0.64640991"
+       inkscape:transform-center-y="0.45841658"
+       inkscape:connector-curvature="0" />
+    <ellipse
+       style="fill:#ffffff;fill-opacity:1;stroke:#130d0d;stroke-width:0.84639627;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="path3176"
+       inkscape:transform-center-y="-9.3565694"
+       inkscape:transform-center-x="-0.642514"
+       cx="15.959558"
+       cy="14.337715"
+       rx="7.5750284"
+       ry="2.0786033" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 17.459549,26.555981 0,-1.9 -3,0 0,-3 -3.000001,0 0,-3 -2.8999995,0"
+       id="path4160"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/spring.svg b/images/presets/landmark/spring.svg
new file mode 100644
index 0000000..26017f7
--- /dev/null
+++ b/images/presets/landmark/spring.svg
@@ -0,0 +1,103 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_spring.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="0.4190404"
+     inkscape:cy="4.2891919"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-page="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       id="XMLID_164_-0"
+       class="st0"
+       d="m 16,1048.8152 c 0,0 -14,0.2721 -14,-1.4531 0,-2.0207 12.1696238,0.3841 12.0781268,-2.5625 -0.05623,-1.811 -5.8615235,-1.0431 -6.6140873,-2.4265 -0.4067771,-0.7478 -1.4158735,-0.309 -1.1307543,0.4893 0.6093778,1.5884 4.1135776,1.3598 6.1447586,1.9615 C 8.5588211,1045.1734 0,1044.3621 0,1047.3621 c 0,5 16,5 16,5 z"
+       inkscape:connector-curvature="0"
+       style="fill:#208ece;fill-opacity:1"
+       sodipodi:nodetypes="csssccscc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#208ece;stroke-width:1.28;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.28800018, 1.288;stroke-dashoffset:1.288;stroke-opacity:1"
+       d="m 6.846187,1042.3319 c 0.2209709,-4.0659 4.341426,-7.8043 6.153815,-2.9698"
+       id="path4136"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path4162"
+       d="m 6.7568882,1042.3319 c -0.2209709,-4.0659 -4.341426,-7.8043 -6.15381503,-2.9698"
+       style="fill:none;fill-rule:evenodd;stroke:#208ece;stroke-width:1.288;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.288, 1.288;stroke-dashoffset:1.288;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/storage_tank.svg b/images/presets/landmark/storage_tank.svg
new file mode 100644
index 0000000..bc1b51d
--- /dev/null
+++ b/images/presets/landmark/storage_tank.svg
@@ -0,0 +1,107 @@
+<?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"
+   width="16"
+   height="15.848646"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="storage_tank.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="-12.849433"
+     inkscape:cy="21.169587"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="-7.9595485"
+       originy="-4.8440194" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-7.9595485,-11.307335)">
+    <path
+       style="fill:#7a6a56;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.55431867px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.2684542,14.673855 0,10.455372 c 1.5657193,2.273225 13.3840888,2.386411 15.3421488,0.0089 0.08328,-1.574186 0.0562,-10.595522 0.0562,-10.595522 L 8.2684532,14.673846 Z"
+       id="path3366"
+       sodipodi:nodetypes="ccccc"
+       inkscape:transform-center-x="-0.64640991"
+       inkscape:transform-center-y="0.45841658"
+       inkscape:connector-curvature="0" />
+    <ellipse
+       style="fill:#ffffff;fill-opacity:1;stroke:#130d0d;stroke-width:0.84639627;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="path3176"
+       inkscape:transform-center-y="-9.3565694"
+       inkscape:transform-center-x="-0.642514"
+       cx="15.959558"
+       cy="14.337715"
+       rx="7.5750284"
+       ry="2.0786033" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 17.459549,26.555981 0,-1.9 -3,0 0,-3 -3.000001,0 0,-3 -2.8999995,0"
+       id="path4160"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/survey_point.svg b/images/presets/landmark/survey_point.svg
new file mode 100644
index 0000000..06e64f0
--- /dev/null
+++ b/images/presets/landmark/survey_point.svg
@@ -0,0 +1,141 @@
+<?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"
+   width="8.9999828"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="survey_point9.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="44.8"
+     inkscape:cx="3.7784127"
+     inkscape:cy="9.9005901"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4702" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-229.47063,-396.58615)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.60000002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4700"
+       width="8.9999828"
+       height="16"
+       x="229.47063"
+       y="396.58615" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.50982672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 233.04169,400.82574 -2.43982,11.44835"
+       id="path2162"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.61820948;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 233.97559,400.63153 0,11.64553"
+       id="path2164"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.45019591;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 234.91207,400.7333 2.23389,11.50873"
+       id="path2166"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#a48400;fill-opacity:1;fill-rule:nonzero;stroke:#a38000;stroke-width:0.11668267;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2170"
+       width="3.0015075"
+       height="0.80185407"
+       x="232.31554"
+       y="397.49536" />
+    <rect
+       style="fill:#bc9700;fill-opacity:1;fill-rule:nonzero;stroke:#bc9800;stroke-width:0.47049302;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3143"
+       width="0.94115269"
+       height="3.6000743"
+       x="233.47867"
+       y="396.82141"
+       ry="0.70796764" />
+    <rect
+       transform="matrix(0.99188404,0.1271458,0,1,0,0)"
+       y="367.58832"
+       x="236.79115"
+       height="0.59331709"
+       width="0.77663118"
+       id="rect3147"
+       style="fill:#a48400;fill-opacity:1;fill-rule:nonzero;stroke:#a38000;stroke-width:0.10998045;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:#a48400;fill-opacity:1;fill-rule:nonzero;stroke:#a38000;stroke-width:0.10998045;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3151"
+       width="0.77663118"
+       height="0.59331709"
+       x="236.79115"
+       y="-428.22842"
+       transform="matrix(0.99188404,-0.1271458,0,-1,0,0)" />
+    <rect
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.12400209;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3155"
+       width="3.0522008"
+       height="0.73168725"
+       x="232.43062"
+       y="400.17728"
+       ry="0.36140096" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/tower.png b/images/presets/landmark/tower.png
new file mode 100644
index 0000000..35e2aa3
Binary files /dev/null and b/images/presets/landmark/tower.png differ
diff --git a/images/presets/landmark/tree_row.svg b/images/presets/landmark/tree_row.svg
new file mode 100644
index 0000000..805c12f
--- /dev/null
+++ b/images/presets/landmark/tree_row.svg
@@ -0,0 +1,378 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg1"
+   sodipodi:docname="02.svg"
+   inkscape:export-filename="/datas/Projs/Cliparts Stocker/plain_tree.png"
+   viewBox="0 0 970.83973 972.18771"
+   sodipodi:version="0.32"
+   inkscape:export-xdpi="72.000000"
+   version="1.0"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-ydpi="72.000000"
+   inkscape:version="0.48.5 r10040"
+   width="100%"
+   height="100%">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient5877"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883-1-7"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-7-1"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-4-1"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-0-5"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-9-2"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-4-7"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3020-6"
+       xlink:href="#linearGradient5877-8-1"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5877-8-1"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-8-4"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-2-2"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5883-3"
+       y2="478.01001"
+       gradientUnits="userSpaceOnUse"
+       y1="476.92999"
+       gradientTransform="scale(0.61633,1.6225)"
+       x2="384.09"
+       x1="345.53"
+       inkscape:collect="always">
+      <stop
+         id="stop3434-2"
+         style="stop-color:#6c2f07"
+         offset="0" />
+      <stop
+         id="stop3435-2"
+         style="stop-color:#7e4932"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5880-1"
+       y2="457.35999"
+       gradientUnits="userSpaceOnUse"
+       y1="32.316002"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="383.14001"
+       x1="383.14001"
+       inkscape:collect="always">
+      <stop
+         id="stop2187-6"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop2188-8"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5877-5"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-7"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-6"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3098"
+       xlink:href="#linearGradient5877-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="183.60001"
+       x2="207.92999"
+       y1="349.29999"
+       x1="466.13"
+       gradientTransform="scale(0.61308,1.6311)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3020-0"
+       xlink:href="#linearGradient5877-8-2"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5877-8-2"
+       y2="183.60001"
+       gradientUnits="userSpaceOnUse"
+       y1="349.29999"
+       gradientTransform="scale(0.61308,1.6311)"
+       x2="207.92999"
+       x1="466.13"
+       inkscape:collect="always">
+      <stop
+         id="stop5303-8-48"
+         style="stop-color:#002f00"
+         offset="0" />
+      <stop
+         id="stop5304-2-6"
+         style="stop-color:#009300"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-y="-4"
+     pagecolor="#ffffff"
+     inkscape:window-height="1003"
+     inkscape:zoom="0.41427105"
+     inkscape:window-x="-4"
+     showgrid="true"
+     borderopacity="1.0"
+     inkscape:current-layer="svg1"
+     inkscape:cx="-42.294561"
+     inkscape:cy="423.0624"
+     inkscape:window-width="1680"
+     inkscape:pageopacity="0.0"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2995"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-148.666px"
+       originy="1.0382462e-005px" />
+  </sodipodi:namedview>
+  <g
+     id="g5885"
+     transform="translate(-82.251123,-23.332315)">
+    <path
+       id="path1545"
+       style="fill:url(#linearGradient5883);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path909"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path4679"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5877);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z"
+       inkscape:connector-curvature="0" />
+  </g>
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2008-05-26T12:05:38</dc:date>
+        <dc:description />
+        <dc:source>https://openclipart.org/detail/17043/plain_tree-by-jean_victor_balin</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>jean_victor_balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>forest</rdf:li>
+            <rdf:li>garden</rdf:li>
+            <rdf:li>plant</rdf:li>
+            <rdf:li>tree</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g5885-1"
+     transform="translate(267.93589,-23.332315)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-8"
+       style="fill:url(#linearGradient5883-3);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-9"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-1);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-2"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3098);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+  <g
+     id="g5885-4-7"
+     transform="translate(605.92089,-23.332315)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1545-5-9"
+       style="fill:url(#linearGradient5883-1-7);fill-rule:evenodd"
+       d="m 193.88,772.09 -9.78,223.43 h 84.88 L 254.1,772.09 h -60.22 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path909-5-5"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient5880-0-5);fill-opacity:0.75;fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.11,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4679-1-4"
+       sodipodi:nodetypes="ccccccccccccc"
+       style="fill:url(#linearGradient3020-6);fill-rule:evenodd"
+       d="m 223.51,23.337 c -8.1,0.571 -72.67,106.71 -87.16,176.56 -21.53,125.42 -31.83,285.19 -50.937,410.97 -5.671,29.1 -3.298,64.86 3.812,82.34 7.231,23.7 27.775,48.49 52.345,62.81 29.99,19.43 52.51,18.91 81.75,19.29 0.15,0.09 0.35,0.11 0.53,0 30.62,-0.04 53.49,-1.24 81.75,-19.29 24.57,-14.32 45.11,-39.11 52.34,-62.81 7.11,-17.48 9.49,-53.24 3.82,-82.34 -19.12,-125.78 -29.41,-285.55 -50.94,-410.97 -14.49,-69.85 -79.06,-175.99 -87.16,-176.56 -0.02,-0.005 -0.11,-0.006 -0.15,-0.003 z" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/trees.svg b/images/presets/landmark/trees.svg
new file mode 100644
index 0000000..eab5243
--- /dev/null
+++ b/images/presets/landmark/trees.svg
@@ -0,0 +1,177 @@
+<?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://web.resource.org/cc/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="86.665833"
+   id="svg2"
+   inkscape:export-filename="/home/nicu/Desktop/rpg_color.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\misc\landmark"
+   sodipodi:docname="trees.svg"
+   sodipodi:version="0.32"
+   width="87.893135"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata2239">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>tree - RPG map elements</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <radialGradient
+       cx="14.207293"
+       cy="222.04396"
+       fx="14.207293"
+       fy="222.04396"
+       gradientTransform="scale(1.39523,0.716728)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1843"
+       inkscape:collect="always"
+       r="8.2519293"
+       xlink:href="#linearGradient2057" />
+    <linearGradient
+       id="linearGradient2057"
+       inkscape:collect="always">
+      <stop
+         id="stop2059"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2061"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="14.207293"
+       cy="222.04396"
+       fx="14.207293"
+       fy="222.04396"
+       gradientTransform="scale(1.39523,0.716728)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1535"
+       inkscape:collect="always"
+       r="8.2519293"
+       xlink:href="#linearGradient2057" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-3.233205"
+     inkscape:cy="-48.836658"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="791"
+     inkscape:window-width="1151"
+     inkscape:window-x="1"
+     inkscape:window-y="24"
+     inkscape:zoom="1"
+     pagecolor="#ffffff" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-27.381469,-24.881498)">
+    <g
+       id="g1881"
+       transform="matrix(2.469674,0,0,2.469674,-95.4758,-295.6608)">
+      <path
+         d="M 70.859749,130.14501 C 70.718823,130.16869 69.724056,130.33448 69.059836,130.33448 C 68.332554,130.33448 67.629078,130.6448 66.975726,130.80814 C 66.44186,130.9416 65.640856,131.76695 65.365277,132.13439 C 64.966561,132.66601 64.523224,133.07118 64.039025,133.55537 C 63.593032,134.00137 63.056917,134.44275 62.712773,134.78689 C 62.432483,135.06718 62.438369,135.97924 62.333844,136.39734 C 62.183436,136.99897 61.584564,137.71502 61.197056,138.10252 C 60.580061,138.71952 60.27 [...]
+         id="path2825"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccc"
+         style="fill:#00b300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 28.401713 158.69876 A 7.9437737 4.0807056 0 1 1  12.514165,158.69876 A 7.9437737 4.0807056 0 1 1  28.401713 158.69876 z"
+         id="path1317"
+         sodipodi:cx="20.457939"
+         sodipodi:cy="158.69876"
+         sodipodi:rx="7.9437737"
+         sodipodi:ry="4.0807056"
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient1535);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1"
+         transform="translate(50.02288,2.044779)" />
+      <path
+         d="M 70.871227,129.79134 C 69.551187,129.79134 65.183727,130.95147 65.183727,131.69759 C 65.183727,131.99177 64.064787,133.12656 62.902477,134.01009 C 62.072537,134.64098 61.863377,134.94733 61.964977,135.47884 C 62.053017,135.9393 61.887767,136.40296 61.402477,136.94759 C 60.372117,138.10402 59.129887,140.40963 58.871227,141.66634 C 58.675327,142.61817 58.780637,143.04611 59.652477,144.88509 C 60.604347,146.89282 60.717847,147.01915 61.996227,147.47884 C 63.394227,147.98155 64. [...]
+         id="path1689"
+         style="fill:#5c2700;fill-opacity:1" />
+    </g>
+    <g
+       id="g1916"
+       transform="matrix(2.469674,0,0,2.469674,-82.378686,-368.50967)">
+      <path
+         d="M 52.802315,169.0909 C 53.128168,170.70625 53.904649,172.15566 54.121663,173.79306 C 54.434734,174.63916 55.087436,175.54204 55.333198,176.41623 C 55.835547,177.24247 56.557869,177.86204 56.970235,178.7449 C 57.570858,179.49161 57.939689,180.3004 57.984697,181.30381 C 58.131425,182.12792 58.431219,182.93565 58.429083,183.77917 C 58.238488,184.78185 57.005429,185.37961 56.086393,184.96711 C 54.039163,184.45755 51.909844,184.26641 49.806374,184.44558 C 48.263577,184.46933 46.28 [...]
+         id="path2841"
+         sodipodi:nodetypes="ccccccccccccccccc"
+         style="fill:#00b300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 28.401713 158.69876 A 7.9437737 4.0807056 0 1 1  12.514165,158.69876 A 7.9437737 4.0807056 0 1 1  28.401713 158.69876 z"
+         id="path1329"
+         sodipodi:cx="20.457939"
+         sodipodi:cy="158.69876"
+         sodipodi:rx="7.9437737"
+         sodipodi:ry="4.0807056"
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient1843);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1"
+         transform="translate(31.92901,31.60125)" />
+      <path
+         d="M 50.822033,165.59365 C 50.204613,165.59364 49.538223,167.43478 49.322033,169.7499 C 49.199863,171.05825 48.972373,171.8009 48.603283,172.1874 C 47.556083,173.28401 47.286763,173.93267 47.134533,175.78115 C 46.990283,177.53258 46.757463,178.28782 46.165783,178.9999 C 45.055373,180.33624 45.403854,180.57999 45.403854,180.78248 C 45.403854,181.25687 45.292543,181.04452 45.884533,180.1874 C 46.220443,179.70103 46.699383,179.02828 46.947033,178.6874 C 47.205583,178.33152 47.48899 [...]
+         id="path1674"
+         sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccc"
+         style="fill:#5c2700;fill-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/landmark/trees_broad_leaved.svg b/images/presets/landmark/trees_broad_leaved.svg
new file mode 100644
index 0000000..f50782b
--- /dev/null
+++ b/images/presets/landmark/trees_broad_leaved.svg
@@ -0,0 +1,148 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="86.519859"
+   id="svg2"
+   inkscape:export-filename="/home/nicu/Desktop/rpg_color.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="trees_broad_leaved.svg"
+   sodipodi:version="0.32"
+   width="65.564247"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata2239">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient2057"
+       inkscape:collect="always">
+      <stop
+         id="stop2059"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2061"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="14.207293"
+       cy="222.04396"
+       fx="14.207293"
+       fy="222.04396"
+       gradientTransform="scale(1.39523,0.716728)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1535"
+       inkscape:collect="always"
+       r="8.2519293"
+       xlink:href="#linearGradient2057" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-196.0621"
+     inkscape:cy="-49.982635"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="791"
+     inkscape:window-width="1151"
+     inkscape:window-x="1"
+     inkscape:window-y="24"
+     inkscape:zoom="1"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-49.71036,-24.881498)">
+    <g
+       id="g1881"
+       transform="matrix(2.469674,0,0,2.469674,-95.4758,-295.6608)">
+      <path
+         d="m 70.859749,130.14501 c -0.140926,0.0237 -1.135693,0.18947 -1.799913,0.18947 -0.727282,0 -1.430758,0.31032 -2.08411,0.47366 -0.533866,0.13346 -1.33487,0.95881 -1.610449,1.32625 -0.398716,0.53162 -0.842053,0.93679 -1.326252,1.42098 -0.445993,0.446 -0.982108,0.88738 -1.326252,1.23152 -0.28029,0.28029 -0.274404,1.19235 -0.378929,1.61045 -0.150408,0.60163 -0.74928,1.31768 -1.136788,1.70518 -0.616995,0.617 -0.922425,1.02718 -1.231519,1.79992 -0.273882,0.6847 -0.378929,1.20757 -0.3 [...]
+         id="path2825"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccc"
+         style="fill:#00b300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         id="path1317"
+         style="fill:url(#radialGradient1535);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1"
+         transform="translate(50.02288,2.044779)"
+         cx="20.457939"
+         cy="158.69876"
+         rx="7.9437737"
+         ry="4.0807056" />
+      <path
+         d="m 70.871227,129.79134 c -1.32004,0 -5.6875,1.16013 -5.6875,1.90625 0,0.29418 -1.11894,1.42897 -2.28125,2.3125 -0.82994,0.63089 -1.0391,0.93724 -0.9375,1.46875 0.08804,0.46046 -0.07721,0.92412 -0.5625,1.46875 -1.03036,1.15643 -2.27259,3.46204 -2.53125,4.71875 -0.1959,0.95183 -0.09059,1.37977 0.78125,3.21875 0.95187,2.00773 1.06537,2.13406 2.34375,2.59375 1.398,0.50271 2.26758,1.39643 2,2.09375 -0.08671,0.22595 0.22394,0.94266 0.71875,1.59375 0.69615,0.91602 1.25379,1.282 2.531 [...]
+         id="path1689"
+         style="fill:#5c2700;fill-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/landmark/trees_conifer.svg b/images/presets/landmark/trees_conifer.svg
new file mode 100644
index 0000000..44c1347
--- /dev/null
+++ b/images/presets/landmark/trees_conifer.svg
@@ -0,0 +1,149 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="16"
+   id="svg2"
+   inkscape:export-filename="/home/nicu/Desktop/rpg_color.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="trees_conifer2.svg"
+   sodipodi:version="0.32"
+   width="8.8303804"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata2239">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <radialGradient
+       cx="14.207293"
+       cy="222.04396"
+       fx="14.207293"
+       fy="222.04396"
+       gradientTransform="scale(1.39523,0.716728)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1843"
+       inkscape:collect="always"
+       r="8.2519293"
+       xlink:href="#linearGradient2057" />
+    <linearGradient
+       id="linearGradient2057"
+       inkscape:collect="always">
+      <stop
+         id="stop2059"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2061"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-70.71429"
+     inkscape:cy="-13.156109"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="791"
+     inkscape:window-width="1151"
+     inkscape:window-x="1"
+     inkscape:window-y="24"
+     inkscape:zoom="2.8284271"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-42.58481,-67.999996)">
+    <g
+       id="g1916"
+       transform="matrix(0.55580515,0,0,0.55580515,17.883064,-24.037807)">
+      <path
+         d="m 52.802315,169.0909 c 0.325853,1.61535 1.102334,3.06476 1.319348,4.70216 0.313071,0.8461 0.965773,1.74898 1.211535,2.62317 0.502349,0.82624 1.224671,1.44581 1.637037,2.32867 0.600623,0.74671 0.969454,1.5555 1.014462,2.55891 0.146728,0.82411 0.446522,1.63184 0.444386,2.47536 -0.190595,1.00268 -1.423654,1.60044 -2.34269,1.18794 -2.04723,-0.50956 -4.176549,-0.7007 -6.280019,-0.52153 -1.542797,0.0238 -3.523231,-0.59375 -4.875884,-1.38665 0.0564,-0.37899 -0.486805,-0.46048 0.1218 [...]
+         id="path2841"
+         sodipodi:nodetypes="ccccccccccccccccc"
+         style="fill:#00b300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         id="path1329"
+         style="fill:url(#radialGradient1843);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1"
+         transform="translate(31.92901,31.60125)"
+         cx="20.457939"
+         cy="158.69876"
+         rx="7.9437737"
+         ry="4.0807056" />
+      <path
+         d="m 50.822033,165.59365 c -0.61742,-1e-5 -1.28381,1.84113 -1.5,4.15625 -0.12217,1.30835 -0.34966,2.051 -0.71875,2.4375 -1.0472,1.09661 -1.31652,1.74527 -1.46875,3.59375 -0.14425,1.75143 -0.37707,2.50667 -0.96875,3.21875 -1.11041,1.33634 -0.761929,1.58009 -0.761929,1.78258 0,0.47439 -0.111311,0.26204 0.480679,-0.59508 0.33591,-0.48637 0.81485,-1.15912 1.0625,-1.5 0.25855,-0.35588 0.54196,-1.48892 0.65625,-2.65625 0.16754,-1.71109 0.31399,-2.18743 1,-2.96875 0.65709,-0.7484 0.853 [...]
+         id="path1674"
+         sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccc"
+         style="fill:#5c2700;fill-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/landmark/trees_palm.png b/images/presets/landmark/trees_palm.png
new file mode 100644
index 0000000..b744f12
Binary files /dev/null and b/images/presets/landmark/trees_palm.png differ
diff --git a/images/presets/valley.svg b/images/presets/landmark/valley.svg
similarity index 100%
rename from images/presets/valley.svg
rename to images/presets/landmark/valley.svg
diff --git a/images/presets/landmark/volcano.svg b/images/presets/landmark/volcano.svg
new file mode 100644
index 0000000..cd536d4
--- /dev/null
+++ b/images/presets/landmark/volcano.svg
@@ -0,0 +1,95 @@
+<?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"
+   width="15.999999"
+   height="10.95183"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="volcano_small2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective8" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="-16.790839"
+     inkscape:cy="9.9430016"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8.8303575,-18.153193)">
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.31793761px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 8.8303575,29.105023 16.843533,18.153193 24.830357,29.05783 8.8303575,29.105023 Z"
+       id="path3382"
+       sodipodi:nodetypes="cccc"
+       inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\misc\landmark\volcano_small.png"
+       inkscape:export-xdpi="59"
+       inkscape:export-ydpi="59"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/wastewater_plant.svg b/images/presets/landmark/wastewater_plant.svg
new file mode 100644
index 0000000..cfd5d73
--- /dev/null
+++ b/images/presets/landmark/wastewater_plant.svg
@@ -0,0 +1,178 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="451.42859"
+   height="451.42859"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\misc\landmark"
+   sodipodi:docname="wastewater_plant.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="259.14551"
+     inkscape:cy="234.52043"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1400"
+     inkscape:window-height="960"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-160,-318.07648)">
+    <rect
+       style="fill:#37c837;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2160"
+       width="451.42859"
+       height="451.42859"
+       x="160.71428"
+       y="320.21933" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="534.28571"
+       sodipodi:cy="452.36218"
+       sodipodi:rx="88.571426"
+       sodipodi:ry="88.571426"
+       d="M 622.85713 452.36218 A 88.571426 88.571426 0 1 1  445.71428,452.36218 A 88.571426 88.571426 0 1 1  622.85713 452.36218 z"
+       transform="matrix(0.5175438,0,0,0.5175438,52.055178,293.60206)" />
+    <g
+       id="g3200">
+      <rect
+         y="678.07648"
+         x="220"
+         height="48.57143"
+         width="271.42859"
+         id="rect2170"
+         style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         id="path3147"
+         d="M 289.2898,678.07241 L 288.56734,725.93773"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g3196"
+       transform="translate(0.7142857,15)">
+      <rect
+         y="580.93359"
+         x="220"
+         height="48.57143"
+         width="271.42856"
+         id="rect2168"
+         style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 375.71837,581.64384 L 374.99591,629.50916"
+         id="path3149" />
+    </g>
+    <g
+       id="g3179"
+       transform="matrix(0,1,-1,0,814.50505,12.362187)">
+      <path
+         sodipodi:type="arc"
+         style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path3173"
+         sodipodi:cx="302.85715"
+         sodipodi:cy="478.07648"
+         sodipodi:rx="62.857143"
+         sodipodi:ry="62.857143"
+         d="M 365.71429 478.07648 A 62.857143 62.857143 0 1 1  240,478.07648 A 62.857143 62.857143 0 1 1  365.71429 478.07648 z"
+         transform="translate(97.857143,-64.285714)" />
+      <path
+         style="fill:#999999;fill-rule:evenodd;stroke:#636363;stroke-width:11.83791447;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 397.19799,418.6473 L 362.80198,463.21999"
+         id="path3175" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path3177"
+         sodipodi:cx="212.5"
+         sodipodi:cy="198.92859"
+         sodipodi:rx="4.6428571"
+         sodipodi:ry="4.6428571"
+         d="M 217.14286 198.92859 A 4.6428571 4.6428571 0 1 1  207.85714,198.92859 A 4.6428571 4.6428571 0 1 1  217.14286 198.92859 z"
+         transform="translate(188.57143,214.50505)" />
+    </g>
+    <g
+       id="g3184"
+       transform="translate(-144.28571,-0.7142857)">
+      <path
+         transform="translate(97.857143,-64.285714)"
+         d="M 365.71429 478.07648 A 62.857143 62.857143 0 1 1  240,478.07648 A 62.857143 62.857143 0 1 1  365.71429 478.07648 z"
+         sodipodi:ry="62.857143"
+         sodipodi:rx="62.857143"
+         sodipodi:cy="478.07648"
+         sodipodi:cx="302.85715"
+         id="path3186"
+         style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         id="path3188"
+         d="M 397.19799,418.6473 L 362.80198,463.21999"
+         style="fill:#999999;fill-rule:evenodd;stroke:#636363;stroke-width:11.83791447;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         transform="translate(188.57143,214.50505)"
+         d="M 217.14286 198.92859 A 4.6428571 4.6428571 0 1 1  207.85714,198.92859 A 4.6428571 4.6428571 0 1 1  217.14286 198.92859 z"
+         sodipodi:ry="4.6428571"
+         sodipodi:rx="4.6428571"
+         sodipodi:cy="198.92859"
+         sodipodi:cx="212.5"
+         id="path3190"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+    </g>
+    <rect
+       style="fill:#c8c4b7;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3192"
+       width="67.14286"
+       height="137.14285"
+       x="342.85715"
+       y="45.714302"
+       transform="translate(160,318.07648)" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/water_tower.svg b/images/presets/landmark/water_tower.svg
new file mode 100644
index 0000000..353fb77
--- /dev/null
+++ b/images/presets/landmark/water_tower.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 2,0 2,3.5 C 2,4.9469172 2.7905512,5.9802716 3.90625,6.625 L 3,14 4.5,14 4.6875,12.53125 7,11 9.3125,12.5625 9.5,14 11,14 10.09375,6.65625 C 11.21821,6.0132746 12,4.9628112 12,3.5 l 0,-3.5 -1.5,0 0,1.5 -0.5,0 C 8.8728814,2 8,2 7,1.5 6,1 5.0381356,1 4,1.5 l -0.5,0 0,-1.5 z m 3.34375,7.1875 c 1.069224,0.2671613 2.2426846,0.2935662 3.3125,0.03125 L 8.84375,8.78125 7,10 5.15625,8.78125 z m -0.3125,2.5 L 6.25,10.5 4.8125,11.46875 z m 3.9375,0 L 9.1875,11.46875 7.75,10.5 z" id="wat [...]
+</svg>
diff --git a/images/presets/landmark/water_well.svg b/images/presets/landmark/water_well.svg
new file mode 100644
index 0000000..2cca7bb
--- /dev/null
+++ b/images/presets/landmark/water_well.svg
@@ -0,0 +1,139 @@
+<?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"
+   width="64"
+   height="61.370972"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="water_well2.svg"
+   inkscape:export-filename="D:\water_well20.png"
+   inkscape:export-xdpi="31.809999"
+   inkscape:export-ydpi="31.809999">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="35.583372"
+     inkscape:cy="59.755196"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-0.78495419,-991.01227)">
+    <rect
+       style="fill:#803300;fill-opacity:1;stroke:none"
+       id="rect2816"
+       width="39.022484"
+       height="22.088198"
+       x="5.2025919"
+       y="1030.295" />
+    <rect
+       y="997.1629"
+       x="0.78495419"
+       height="3.681366"
+       width="49.330311"
+       id="rect3596"
+       style="fill:#666666;fill-opacity:1;stroke:none" />
+    <rect
+       style="fill:#666666;fill-opacity:1;stroke:none"
+       id="rect3598"
+       width="18.765123"
+       height="3.681366"
+       x="997.1629"
+       y="-53.275997"
+       transform="matrix(0,1,-1,0,0,0)" />
+    <rect
+       transform="scale(-1,-1)"
+       y="-1014.921"
+       x="-64.785217"
+       height="3.681366"
+       width="14.725466"
+       id="rect3600"
+       style="fill:#666666;fill-opacity:1;stroke:none" />
+    <rect
+       transform="matrix(0,1,-1,0,0,0)"
+       y="-23.340126"
+       x="996.12158"
+       height="1.8591826"
+       width="28.001375"
+       id="rect3602"
+       style="fill:#d45500;fill-opacity:1;stroke:none" />
+    <rect
+       y="-43.488804"
+       x="991.27271"
+       height="5.0199256"
+       width="32.737999"
+       id="rect3592"
+       style="fill:#803300;fill-opacity:1;stroke:none"
+       transform="matrix(0,1,-1,0,0,0)" />
+    <rect
+       transform="matrix(0,1,-1,0,0,0)"
+       style="fill:#803300;fill-opacity:1;stroke:none"
+       id="rect3604"
+       width="32.737999"
+       height="5.0199256"
+       x="991.01227"
+       y="-11.991062" />
+    <rect
+       style="fill:#d45500;fill-opacity:1;stroke:none"
+       id="rect3606"
+       width="11.193412"
+       height="7.8093576"
+       x="20.264999"
+       y="994.54181" />
+    <rect
+       style="fill:#552200;fill-opacity:1;stroke:none"
+       id="rect3590"
+       width="47.121494"
+       height="7.3627324"
+       x="1.5212268"
+       y="1023.6688" />
+  </g>
+</svg>
diff --git a/images/presets/water_works.png b/images/presets/landmark/water_works.png
similarity index 100%
rename from images/presets/water_works.png
rename to images/presets/landmark/water_works.png
diff --git a/images/presets/landmark/watermill.svg b/images/presets/landmark/watermill.svg
new file mode 100644
index 0000000..1b75b48
--- /dev/null
+++ b/images/presets/landmark/watermill.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="330.99997"
+   height="328.14285"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="watermill.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\watermill.png"
+   inkscape:export-xdpi="4.3076925"
+   inkscape:export-ydpi="4.3076925">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-158.57143"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="cm"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-245.71428,-400.93359)">
+    <rect
+       style="opacity:1;fill:#c8beb7;fill-opacity:1;stroke:none;stroke-width:22;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2383"
+       width="248.57141"
+       height="151.42857"
+       x="287.14282"
+       y="523.79077" />
+    <rect
+       style="opacity:1;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:22;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3155"
+       width="277.14282"
+       height="134.28572"
+       x="274.28571"
+       y="400.93359" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#832e00;stroke-width:22;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3157"
+       sodipodi:cx="534.28571"
+       sodipodi:cy="683.79077"
+       sodipodi:rx="94.285713"
+       sodipodi:ry="94.285713"
+       d="M 628.57142,683.79077 A 94.285713,94.285713 0 1 1 439.99999,683.79077 A 94.285713,94.285713 0 1 1 628.57142,683.79077 z"
+       transform="matrix(0.5440021,-0.5440021,0.5440021,0.5440021,-168.1493,566.7454)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#832e00;stroke-width:14.71691608;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 442.69881,699.86446 L 546.27482,596.28846"
+       id="path3159" />
+    <path
+       id="path3161"
+       d="M 442.69882,596.28846 L 546.27482,699.86447"
+       style="fill:none;fill-rule:evenodd;stroke:#832e00;stroke-width:14.71691608;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:16.60000038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3163"
+       width="334.28571"
+       height="28.571426"
+       x="245.71428"
+       y="703.36218" />
+    <rect
+       style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:16.60000038000000100;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3165"
+       width="48.57143"
+       height="60"
+       x="82.85714"
+       y="159.57143"
+       transform="translate(245.71428,400.93359)" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/windmill.svg b/images/presets/landmark/windmill.svg
new file mode 100644
index 0000000..a780118
--- /dev/null
+++ b/images/presets/landmark/windmill.svg
@@ -0,0 +1,116 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="windmill2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="-4.7040363"
+     inkscape:cy="13.846201"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137"
+       originx="-8"
+       originy="-8" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8,-8)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51300001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4139"
+       width="16"
+       height="16"
+       x="8"
+       y="8" />
+    <path
+       style="fill:#7c6f49;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.43272474px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 12.351647,23.189167 1.780339,-10.51938 1.676316,-1.008352 1.639766,1.035246 c 0,0 1.501304,10.663533 1.326761,10.578009 -0.174543,-0.08552 -6.388273,0.04276 -6.423182,-0.08552 z"
+       id="path3457"
+       sodipodi:nodetypes="ccccsc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.56863064px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 11.873852,8.8554939 7.921939,7.6464671"
+       id="path3459"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.56863064px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 11.907563,16.501962 19.660949,8.9319586"
+       id="path3461"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="opacity:1;fill:#fcf8eb;fill-opacity:1;stroke:#000000;stroke-width:0.23421623;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect3463"
+       width="1.5121064"
+       height="1.2493937"
+       x="15.09977"
+       y="14.136353" />
+  </g>
+</svg>
diff --git a/images/presets/landmark/works.svg b/images/presets/landmark/works.svg
new file mode 100644
index 0000000..ec7c061
--- /dev/null
+++ b/images/presets/landmark/works.svg
@@ -0,0 +1,84 @@
+<?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"
+   width="13.178609"
+   height="14.517858"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="works2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="-17.799716"
+     inkscape:cy="4.4719076"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-9.8392348,-9.1160716)">
+    <path
+       style="fill:#87743d;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.63950872px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 10.160591,9.435826 2.645439,0 0.04133,9.973864 3.252127,-2.848431 0.04796,2.927159 3.313337,-2.984769 0,3.163341 3.237305,-3.163341 0,6.810526 -12.539063,0 0.0016,-13.878349 z"
+       id="path3453"
+       sodipodi:nodetypes="ccccccccccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/landuse/allotments.svg b/images/presets/landuse/allotments.svg
new file mode 100644
index 0000000..533aa15
--- /dev/null
+++ b/images/presets/landuse/allotments.svg
@@ -0,0 +1,426 @@
+<?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"
+   width="205.20241"
+   height="171.37407"
+   id="svg3197"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs3199" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-110.9473"
+     inkscape:cy="-71.449229"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="463"
+     inkscape:window-height="453"
+     inkscape:window-x="25"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata3202">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-485.9473,-289.53888)">
+    <g
+       id="g3800"
+       inkscape:export-ydpi="82.942017"
+       inkscape:export-xdpi="82.942017"
+       inkscape:export-filename="C:\Documents and Settings\laurent\Mes documents\dessin 2d\objet\arrosoir1.png"
+       transform="matrix(0.67159997,0,0,0.67159997,346.11522,-184.28742)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path2436"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#a70432;stroke:#000000;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:bevel"
+         d="m 483.94,785.96 0.72,162.14 c -20.18,13.47 -96.13,17.81 -133.93,0.35 L 348.59,785.6 c 5.37,10.35 97.9,18.53 135.35,0.36 z" />
+      <path
+         id="path2440"
+         sodipodi:rx="70.714287"
+         sodipodi:ry="12.321428"
+         style="fill:#d4043f;stroke:#000000;stroke-width:1.79149997;stroke-linecap:round;stroke-linejoin:bevel"
+         sodipodi:type="arc"
+         d="m 486.07143,450.39789 c 0,6.80494 -31.65986,12.32143 -70.71428,12.32143 -39.05442,0 -70.71429,-5.51649 -70.71429,-12.32143 0,-6.80494 31.65987,-12.32143 70.71429,-12.32143 39.05442,0 70.71428,5.51649 70.71428,12.32143 z"
+         transform="matrix(0.975,0,0,0.70851,11.309,468.07)"
+         sodipodi:cy="450.39789"
+         sodipodi:cx="415.35715" />
+      <path
+         id="path2438"
+         sodipodi:rx="70.714287"
+         sodipodi:ry="12.321428"
+         style="fill:#d4043f;stroke:#000000;stroke-width:2.03699994;stroke-linecap:round;stroke-linejoin:bevel"
+         sodipodi:type="arc"
+         d="m 486.07143,450.39789 c 0,6.80494 -31.65986,12.32143 -70.71428,12.32143 -39.05442,0 -70.71429,-5.51649 -70.71429,-12.32143 0,-6.80494 31.65987,-12.32143 70.71429,-12.32143 39.05442,0 70.71428,5.51649 70.71428,12.32143 z"
+         transform="matrix(0.92822,0,0,0.57567,29.347,527.47)"
+         sodipodi:cy="450.39789"
+         sodipodi:cx="415.35715" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3805"
+         sodipodi:nodetypes="csc"
+         style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+         d="m 433.87,779.65 c -29.76,-0.92 -39.5,7.63 -22.4,11.63 4.2,0.98 10,1.68 17.52,1.91" />
+      <path
+         inkscape:connector-curvature="0"
+         id="rect2444"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#a70432;stroke:#000000;stroke-width:1.4892;stroke-linecap:round;stroke-linejoin:bevel"
+         transform="matrix(0.75047,-0.6609,0.67842,0.73467,0,0)"
+         d="M -328.67,746.35 -328.84,879 c -0.51,4.1 -5.53,13.07 -19.71,22.05 l -0.78,-154.7 c 3.36,-3.16 18.78,-5.78 20.66,0 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path2463"
+         sodipodi:nodetypes="css"
+         style="fill:#a70432;stroke:#000000;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:bevel"
+         d="m 266.69,725.94 c 3.71,2.35 3.03,30.54 -13.01,46.42 -16.04,15.88 -40.49,14.19 -44.21,11.84" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path2448"
+         sodipodi:nodetypes="ccccccsccc"
+         style="fill:#a70432;fill-rule:evenodd;stroke:#000000;stroke-width:1.48899996px"
+         d="m 369.74,785.97 c -0.46,-39.87 6.78,-69.3 53.59,-70.69 51.08,3.02 88.09,20.83 79.77,62.94 -6.62,20.5 -12.23,33.52 -18.86,54.02 -2.82,9.76 -2.88,18.39 -0.38,28.15 10.96,-33.08 12.87,-27.47 29.13,-92.65 -1.02,-5.64 -1.45,-18.46 -4.17,-23.31 -24.16,-43.14 -108.54,-52.07 -138.84,-14.66 -7.18,8.18 -13.06,40.29 -11.18,56.38 5.38,1.96 8.6,0.14 10.94,-0.18 z" />
+      <path
+         id="path2446"
+         sodipodi:rx="2.6784978"
+         sodipodi:ry="42.735233"
+         style="fill:#d4043f;stroke:#000000;stroke-width:1.48280001;stroke-linecap:round;stroke-linejoin:bevel"
+         sodipodi:type="arc"
+         d="m 219.82135,430.57648 c 0,23.60201 -1.1992,42.73523 -2.6785,42.73523 -1.47929,0 -2.6785,-19.13322 -2.6785,-42.73523 0,-23.60202 1.19921,-42.73524 2.6785,-42.73524 1.47106,0 2.66683,18.9287 2.67842,42.39865"
+         sodipodi:open="true"
+         transform="matrix(0.92073,0.56745,-0.67232,0.68088,327.43,338.67)"
+         sodipodi:cy="430.57648"
+         sodipodi:cx="217.14285"
+         sodipodi:end="6.2753092"
+         sodipodi:start="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3460"
+         style="fill:#7e0325"
+         d="m 424.15,780.12 c -5.66,0.05 -11.39,0.77 -16.73,2.7 -1.57,0.7 -3.63,1.51 -4.06,3.38 0.17,1.8 2.14,2.67 3.58,3.34 6.75,2.59 14.12,2.95 21.26,3.36 0.57,-0.1 0.72,0.6 1.33,0.45 11.67,-0.26 23.35,-0.92 34.95,-2.25 4.81,-0.69 9.76,-1.24 14.29,-3.03 0.75,-0.25 1.95,-1.17 1.08,-1.96 -2.05,-1.49 -4.71,-1.78 -7.12,-2.4 -11.7,-2.27 -23.65,-2.74 -35.53,-3.32 -4.35,-0.17 -8.7,-0.3 -13.05,-0.27 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3462"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#a70432;fill-rule:evenodd;stroke:#000000;stroke-width:1.48899996px"
+         d="m 375.56,817.99 -67.88,-0.9 3.39,3.93 64.14,0.36 0.35,-3.39 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3466"
+         style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+         d="m 260.37,766.24 91.92,109.09" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3468"
+         style="fill:#7e0325;stroke:#000000;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:bevel"
+         d="m 280.46,789.21 c 0.39,1.32 1.82,2.25 2.57,3.44 22.7,27.12 45.48,54.18 68.36,81.16 1,0.23 0.39,-1.37 0.47,-1.9 -0.32,-3.02 -0.72,-6.27 -2.88,-8.57 -8.6,-10.23 -17.91,-19.86 -26.91,-29.76 -13.7,-14.83 -27.32,-29.73 -41.14,-44.44 -0.19,-0.17 -0.32,-0.07 -0.47,0.07 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3470"
+         sodipodi:nodetypes="cccc"
+         style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+         d="m 464.42,721.79 c 17.79,1.74 29.38,11.21 39.14,22.98 13.47,29.17 -9.45,66.53 -20.71,101.27" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3472"
+         style="fill:#7e0325;stroke:#000000;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:bevel"
+         d="m 469.17,722.85 c -0.52,0.93 1.37,1.06 1.87,1.47 11.97,4.7 23.5,12.31 29.27,24.12 2.99,5.88 4.22,12.46 4.01,19.04 0.11,4.81 -0.52,9.6 -2.17,14.12 -5.69,17.62 -12.74,34.79 -18.09,52.52 -0.94,3.42 -1.67,6.99 -1.53,10.52 1.12,-0.19 1,-2.26 1.63,-3.14 5.53,-15.47 12.14,-30.56 17.43,-46.13 4.01,-12.83 7.46,-26.5 5.01,-39.99 -1.01,-4.63 -2,-9.7 -5.54,-13.12 -7.07,-7.83 -15.52,-14.91 -25.78,-17.98 -1.99,-0.53 -4.05,-1.39 -6.11,-1.43 z" />
+      <g
+         id="g3630"
+         transform="translate(0,1.0102)">
+        <path
+           inkscape:connector-curvature="0"
+           id="path3602"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+           d="m 352.08,826.07 c 44.18,9.93 86.89,9.16 128.21,-1.71" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3610"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+           d="m 352.08,827.92 c 44.18,9.93 86.89,9.16 128.21,-1.71" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3614"
+           style="fill:#65021e"
+           d="m 478.64,825.02 c -2.8,0.49 -5.47,1.32 -8.25,1.86 -22.51,5.03 -46.45,7.19 -70.11,5.95 -15.39,-0.75 -30.61,-2.89 -45.34,-5.98 -0.71,-0.05 -1.91,-0.59 -2.37,0 -0.06,0.52 -0.07,1.24 0.96,1.22 18.7,4.08 38.27,6.49 57.93,6.68 21.94,0.09 43.89,-2.51 64.51,-7.63 1.14,-0.33 2.44,-0.49 3.47,-0.93 0.03,-0.41 0.2,-1.27 -0.8,-1.17 z" />
+      </g>
+      <g
+         id="g3625"
+         transform="translate(0,1.0102)">
+        <path
+           inkscape:connector-curvature="0"
+           id="path3604"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+           d="m 352.43,833.43 c 43.44,9.68 85.61,7.25 127.15,-1.22" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3612"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+           d="m 352.43,835.28 c 43.44,9.68 85.61,7.26 127.15,-1.22" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3616"
+           style="fill:#65021e"
+           d="m 478.61,832.62 c -4,0.62 -7.91,1.53 -11.91,2.16 -16.75,2.84 -33.92,4.69 -51.2,4.98 -10,0.09 -20.02,-0.11 -29.93,-1.05 -10.45,-0.91 -20.73,-2.53 -30.81,-4.61 -0.62,-0.16 -1.87,-0.28 -1.8,0.41 -0.44,0.96 1.2,0.92 2.09,1.17 17.25,3.68 35.33,5.59 53.41,5.68 23.57,0.17 47.01,-2.64 69.57,-7.14 0.99,-0.06 1.77,-0.4 1.41,-1.15 0.01,-0.3 -0.42,-0.49 -0.83,-0.45 z" />
+      </g>
+      <g
+         id="g3620">
+        <path
+           inkscape:connector-curvature="0"
+           id="path3606"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+           d="m 353.86,840.69 c 41.54,8.2 83.59,7.56 126.07,-0.49" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3608"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+           d="m 353.86,842.54 c 41.54,8.2 83.59,7.56 126.07,-0.49" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3618"
+           style="fill:#65021e"
+           d="m 478.84,840.6 c -6.18,1.01 -12.33,2.13 -18.58,2.92 -29.27,3.99 -59.71,4.3 -89,0.21 -5.88,-0.79 -11.67,-1.84 -17.47,-2.88 -0.78,0.12 -0.37,0.92 -0.45,1.33 0.05,0.58 1.09,0.26 1.61,0.46 7.41,1.28 14.85,2.58 22.41,3.42 12.02,1.38 24.19,2.25 36.39,2.09 8.23,-0.02 16.49,-0.12 24.67,-0.81 13.76,-1 27.38,-2.8 40.72,-5.3 0.35,-0.33 0.46,-0.99 0.1,-1.36 -0.11,-0.06 -0.26,-0.09 -0.4,-0.08 z" />
+      </g>
+      <path
+         inkscape:connector-curvature="0"
+         id="path3635"
+         sodipodi:nodetypes="cc"
+         style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+         d="m 350.36,944.51 c 53.52,14.72 99.61,17.3 134.64,-1.79" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3637"
+         sodipodi:nodetypes="cc"
+         style="fill:none;stroke:#000000;stroke-width:1.48899996px"
+         d="m 350.36,941.22 c 53.52,14.72 99.61,17.31 134.64,-1.79" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3639"
+         style="fill:#65021e"
+         d="m 483.81,940.35 c -18.89,9.69 -40.46,13.29 -61.61,12.78 -24.04,-0.42 -47.69,-5.26 -70.86,-11.36 -0.83,0.78 -0.64,2.81 0.79,2.94 20.73,5.54 41.9,9.97 63.37,11.02 13.18,0.11 26.51,0.4 39.44,-2.54 10.04,-2.08 19.99,-5.31 28.93,-10.31 0.66,-0.5 0.82,-2.32 -0.06,-2.53 z" />
+      <g
+         id="g3641"
+         transform="matrix(1.1044,-1.0131,0.16075,0.17522,-85.823,913.63)">
+        <path
+           id="path3663"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,467.38,5.2326)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3665"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,473.98,6.1255)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3667"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,481.31,6.3041)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3677"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,474.34,15.768)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3679"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,467.91,14.161)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3681"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,463.09,11.304)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3683"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,457.73,9.3398)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3685"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,453.09,7.3755)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3691"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,461.13,20.054)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3693"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,456.66,16.304)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3695"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,448.27,13.983)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3697"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,442.38,11.84)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3701"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,449.34,18.536)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3705"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,439.16,18)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3707"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,439.34,22.911)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3709"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,441.66,26.483)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3713"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,454.07,24.608)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+        <path
+           id="path3715"
+           sodipodi:rx="1.5178572"
+           sodipodi:ry="2.3214285"
+           style="fill:#65021e"
+           sodipodi:type="arc"
+           d="m 235.89286,410.04074 c 0,1.28209 -0.67957,2.32143 -1.51786,2.32143 -0.83829,0 -1.51786,-1.03934 -1.51786,-2.32143 0,-1.28209 0.67957,-2.32143 1.51786,-2.32143 0.83829,0 1.51786,1.03934 1.51786,2.32143 z"
+           transform="matrix(0.52388,0.85179,-0.85179,0.52388,433.19,21.733)"
+           sodipodi:cy="410.04074"
+           sodipodi:cx="234.375" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/landuse/cemetery.svg b/images/presets/landuse/cemetery.svg
new file mode 100644
index 0000000..f47f453
--- /dev/null
+++ b/images/presets/landuse/cemetery.svg
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+
+<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"
+   height="16"
+   id="svg378"
+   version="1.0"
+   width="10.232131"
+   x="0"
+   y="0"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="graveyard.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="8.511827"
+     inkscape:cx="4.0147771"
+     inkscape:cy="15.083597"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg378"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4147"
+       originx="-115"
+       originy="-158" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs380" />
+  <g
+     id="g3136"
+     transform="matrix(0.05790833,0.01108883,0,0.05790833,-10.994098,-10.451187)">
+    <rect
+       y="208.01161"
+       x="189.85349"
+       height="178.57507"
+       width="176.69531"
+       id="rect2159"
+       style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <ellipse
+       transform="matrix(0.9690722,0,0,1,4.0501558,37.594749)"
+       id="path3132"
+       style="fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       cx="282.90048"
+       cy="167.59726"
+       rx="91.167267"
+       ry="76.129364" />
+  </g>
+  <rect
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4149"
+     width="2"
+     height="9"
+     x="4.0000024"
+     y="4.000001" />
+  <rect
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4151"
+     width="6"
+     height="2"
+     x="2.0000026"
+     y="6.000001" />
+</svg>
diff --git a/images/presets/landuse/commercial.svg b/images/presets/landuse/commercial.svg
new file mode 100644
index 0000000..3fc3ca5
--- /dev/null
+++ b/images/presets/landuse/commercial.svg
@@ -0,0 +1,86 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="32"
+   height="32"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="/home/tweety/svn.openstreetmap.org/applications/share/map-icons/svg/people"
+   sodipodi:docname="work.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="42.017637"
+     inkscape:cy="9.1839918"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="906"
+     inkscape:window-height="596"
+     inkscape:window-x="485"
+     inkscape:window-y="420" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9520275px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect2159"
+       width="11.297972"
+       height="8.0836868"
+       x="10.154585"
+       y="9.6545858"
+       ry="2.425106" />
+    <rect
+       style="fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect2157"
+       width="25.892857"
+       height="15.535714"
+       x="3.0357144"
+       y="13.964286"
+       ry="2.6785717" />
+  </g>
+</svg>
diff --git a/images/presets/landuse/construction.svg b/images/presets/landuse/construction.svg
new file mode 100644
index 0000000..6653860
--- /dev/null
+++ b/images/presets/landuse/construction.svg
@@ -0,0 +1,84 @@
+<?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="svg1353"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   width="188"
+   height="188"
+   sodipodi:docname="proposed.svg"
+   version="1.0"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata1358">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs1356" />
+  <sodipodi:namedview
+     inkscape:window-height="960"
+     inkscape:window-width="1400"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="2.0000001"
+     inkscape:cx="56.633754"
+     inkscape:cy="147.08609"
+     inkscape:window-x="0"
+     inkscape:window-y="29"
+     inkscape:current-layer="svg1353"
+     showgrid="false"
+     inkscape:window-maximized="0" />
+  <rect
+     style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4167"
+     width="188"
+     height="188"
+     x="0"
+     y="0" />
+  <g
+     style="fill:#000000"
+     transform="matrix(0.4735274,0,0,0.6014868,-8.6841662,-66.089097)"
+     id="g3176">
+    <path
+       sodipodi:nodetypes="cssccscssccsssscscssszssssssssssscccssssss"
+       style="fill:#000000"
+       d="M 29.741704,379.69056 C 29.274804,378.6479 91.034624,264.83965 91.795414,264.34874 C 93.383114,263.32424 128.58093,281.41529 132.10177,285.06549 L 157.23742,323.41428 L 160.72165,410.74131 C 147.69352,410.74131 142.95642,405.40748 137.94891,397.59812 L 133.31145,334.24131 C 133.31145,334.24131 105.21922,293.26864 104.76113,294.00232 C 99.286734,302.77019 49.478114,393.21491 40.130204,407.59659 C 39.837084,408.04755 29.741704,406.19606 29.741704,379.69056 z M 178.08727,403.15613 [...]
+       id="path1364" />
+    <path
+       sodipodi:nodetypes="csssc"
+       id="path1387"
+       d="M 224.14325,146.866 C 229.66265,158.8388 224.45771,172.74051 212.62928,178.11966 C 200.80085,183.49879 186.80599,178.32842 181.39081,166.57866 C 175.97575,154.82889 181.18069,140.92717 193.00912,135.54802 C 204.75846,130.20487 218.6412,135.25156 224.14325,146.866 z "
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.1878264;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:6.5;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/landuse/farmland.png b/images/presets/landuse/farmland.png
new file mode 100644
index 0000000..c999446
Binary files /dev/null and b/images/presets/landuse/farmland.png differ
diff --git a/images/presets/landuse/farmyard.png b/images/presets/landuse/farmyard.png
new file mode 100644
index 0000000..7812c3d
Binary files /dev/null and b/images/presets/landuse/farmyard.png differ
diff --git a/images/presets/garages.png b/images/presets/landuse/garages.png
similarity index 100%
rename from images/presets/garages.png
rename to images/presets/landuse/garages.png
diff --git a/images/presets/landuse/graveyard.svg b/images/presets/landuse/graveyard.svg
new file mode 100644
index 0000000..fa12767
--- /dev/null
+++ b/images/presets/landuse/graveyard.svg
@@ -0,0 +1,96 @@
+<?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"
+   width="11"
+   height="16"
+   viewBox="0 0 11 16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="graveyard.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="19.905193"
+     inkscape:cy="9.3012307"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     units="px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4138"
+       originx="-2"
+       originy="-1.6429138e-005" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-2,-1036.3622)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4140"
+       width="5"
+       height="16"
+       x="5"
+       y="1036.3622" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4142"
+       width="11"
+       height="5.0000162"
+       x="2"
+       y="1039.3622" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4146"
+       width="9"
+       height="3.0000165"
+       x="3"
+       y="1040.3622" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4148"
+       width="3"
+       height="14"
+       x="6"
+       y="1037.3622" />
+  </g>
+</svg>
diff --git a/images/presets/greenhouse_horticulture.png b/images/presets/landuse/greenhouse_horticulture.png
similarity index 100%
rename from images/presets/greenhouse_horticulture.png
rename to images/presets/landuse/greenhouse_horticulture.png
diff --git a/images/presets/landuse/landfill.svg b/images/presets/landuse/landfill.svg
new file mode 100644
index 0000000..5c3954b
--- /dev/null
+++ b/images/presets/landuse/landfill.svg
@@ -0,0 +1,185 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="landfill5.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="12.174252"
+     inkscape:cy="4.6565139"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:#d2691e;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 0.58657473,1051.8611 15.00000227,0 c 0,0 -2.207106,-3.5 -3.207106,-4.5 -1,-1 -3.3605066,-3.3512 -5.3794702,-2.9885 -3.2347189,0.5811 -3.2962021,4.5644 -6.41342607,7.4885 z"
+       id="path4138"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsac" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="M 7.3710938 7.4707031 C 7.2188245 7.4744924 7.0655994 7.4900031 6.9121094 7.5175781 C 5.0996053 7.8431781 4.1394134 9.16926 3.3144531 10.630859 C 2.489493 12.092459 1.7213234 13.749166 0.24414062 15.134766 L 0 15.363281 L 0 16 L 0.5859375 16 L 16 16 L 16 15.216797 C 15.991027 15.202592 15.447876 14.34323 14.771484 13.34375 C 14.089531 12.33615 13.308606 11.220731 12.732422 10.644531 C 12.231873 10.143931 11.372579 9.2837312 10.355469 8.5820312 C 9.4654972 7.9680439 8.4369781 7. [...]
+       transform="translate(-4.7683724e-7,1036.3621)"
+       id="path4326" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217"
+       width="1.4062501"
+       height="1.4062501"
+       x="-533.07709"
+       y="904.95404"
+       transform="matrix(0.85618767,-0.51666495,0.516665,0.85618764,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-5"
+       width="1.4062504"
+       height="1.4062502"
+       x="44.132889"
+       y="1037.7678"
+       transform="matrix(0.9990994,0.04243094,-0.04243095,0.9990994,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-6"
+       width="1.4062504"
+       height="1.4062502"
+       x="111.6073"
+       y="1042.0021"
+       transform="matrix(0.99503719,0.09950371,-0.09950372,0.99503719,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-1"
+       width="1.4062502"
+       height="1.4062504"
+       x="-911.00604"
+       y="523.46515"
+       transform="matrix(0.49613898,-0.86824312,0.86824314,0.49613894,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-2"
+       width="1.4062504"
+       height="1.4062502"
+       x="755.56451"
+       y="721.45312"
+       transform="matrix(0.69678574,0.71727933,-0.71727937,0.6967857,0,0)" />
+    <rect
+       style="opacity:1;fill:#d2691e;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-11"
+       width="1.4062504"
+       height="1.4062502"
+       x="699.23071"
+       y="764.93848"
+       transform="matrix(0.73994012,0.67267274,-0.67267278,0.73994008,0,0)" />
+    <rect
+       style="opacity:1;fill:#d2691e;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-5-6"
+       width="1.4062505"
+       height="1.4062505"
+       x="-1028.5599"
+       y="-196.33882"
+       transform="matrix(-0.18884702,-0.98200652,0.98200652,-0.188847,0,0)" />
+    <rect
+       style="opacity:1;fill:#d2691e;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-6-7"
+       width="1.4062506"
+       height="1.4062504"
+       x="-485.01459"
+       y="922.5155"
+       transform="matrix(0.88311578,-0.46915511,0.46915515,0.88311576,0,0)" />
+    <rect
+       style="opacity:1;fill:#d2691e;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-1-0"
+       width="1.4062506"
+       height="1.4062504"
+       x="-560.87421"
+       y="877.91223"
+       transform="matrix(0.84227149,-0.53905356,0.5390536,0.84227146,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-5-7"
+       width="1.4062504"
+       height="1.4062502"
+       x="709.27008"
+       y="759.42615"
+       transform="matrix(0.73409949,0.67904193,-0.67904197,0.73409945,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:0.89302326;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4217-5-7-6"
+       width="1.4062504"
+       height="1.4062502"
+       x="296.84924"
+       y="999.92236"
+       transform="matrix(0.95938413,0.28210298,-0.28210301,0.95938412,0,0)" />
+  </g>
+</svg>
diff --git a/images/presets/landuse.png b/images/presets/landuse/landuse.png
similarity index 100%
rename from images/presets/landuse.png
rename to images/presets/landuse/landuse.png
diff --git a/images/presets/landuse_water.png b/images/presets/landuse/landuse_water.png
similarity index 100%
rename from images/presets/landuse_water.png
rename to images/presets/landuse/landuse_water.png
diff --git a/images/presets/landuse/meadow.svg b/images/presets/landuse/meadow.svg
new file mode 100644
index 0000000..57a94d2
--- /dev/null
+++ b/images/presets/landuse/meadow.svg
@@ -0,0 +1,447 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg10449"
+   sodipodi:docname="02.svg"
+   viewBox="0 0 253.87779 244.00716"
+   sodipodi:version="0.32"
+   version="1.0"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%">
+  <defs
+     id="defs10451">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4051">
+      <stop
+         style="stop-color:#e5e7e5;stop-opacity:1;"
+         offset="0"
+         id="stop4053" />
+      <stop
+         style="stop-color:#e5e7e5;stop-opacity:0;"
+         offset="1"
+         id="stop4055" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10445"
+       y2="799.21997"
+       gradientUnits="userSpaceOnUse"
+       x2="485.07999"
+       gradientTransform="matrix(0.35688993,0,0,1,-21.34532,-352.88)"
+       y1="872.76001"
+       x1="487.89999"
+       inkscape:collect="always">
+      <stop
+         id="stop10441"
+         style="stop-color:#ffffff;stop-opacity:.22857"
+         offset="0" />
+      <stop
+         id="stop10443"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4051"
+       id="linearGradient4059"
+       x1="35.255001"
+       y1="400.91"
+       x2="253.08803"
+       y2="400.91"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-y="-8"
+     pagecolor="#ffffff"
+     inkscape:window-height="988"
+     inkscape:zoom="2.8284271"
+     inkscape:window-x="-8"
+     showgrid="false"
+     borderopacity="1.0"
+     inkscape:current-layer="layer1"
+     inkscape:cx="208.98721"
+     inkscape:cy="127.32706"
+     inkscape:window-width="1680"
+     inkscape:pageopacity="0.0"
+     inkscape:document-units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3281"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-3.7829572e-006px"
+       originy="-8.9279299e-006px" />
+  </sodipodi:namedview>
+  <g
+     id="layer1"
+     inkscape:label="Capa 1"
+     inkscape:groupmode="layer"
+     transform="translate(-23.026004,-299.46)">
+    <path
+       id="rect10447"
+       sodipodi:nodetypes="ccccccccccscccc"
+       style="fill:#484b2a"
+       d="m 26.561411,503.25 30.569814,-6.36 23.943402,6.36 13.717721,-0.05 2.994691,20.49 -1.287472,-32.54 20.740603,6.45 25.18854,-6.22 c 5.62959,2.15 15.5484,7.69 21.954,7.65 l 35.16379,1.4 c 6.13399,32.7 2.43384,5.87 20.62773,-4.17 10.1904,-5.61 41.96797,6.66 50.47585,6.99 v 40 H 26.56 l 0.0014,-40 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path9586"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccscccccccccccccccccccccccccccccccccccccccccccccccccccc"
+       style="fill:#4f6e32"
+       d="m 263.48,461.67 c -1.05,-0.23 -2.08,-0.41 -3.09,-0.57 -0.59,-0.12 -1.2,-0.24 -1.78,-0.34 33.44177,-58.34267 -19.71404,-22.75461 8.4,-39.28 l 0.35,-1.91 -0.72,2.13 c -3.32,2.07 -6.61,4.45 -9.88,7.09 l 0.72,-3.62 0.63,-1.85 -0.41,0.69 0.78,-3.91 -2.22,6.32 -3.31,5.56 c -6.19,-0.65 -12.98,-2.88 -19.09,-2.97 l 0.84,-4.5 0.56,-1.72 -0.37,0.66 0.72,-3.88 -2.1,6.25 -1.9,3.28 c -3.73,0.31 -7.1,1.62 -9.85,4.88 6.58,-10.98 13.72,-20.84 21.25,-28.41 1.15,-1.1 2.28,-2.15 3.44,-3.15 1.37,0. [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path9121"
+       style="fill:#1a6718;fill-opacity:1;stroke:url(#linearGradient4059)"
+       d="m 121.44,299.96 -1.06,6.97 -9.31,27.15 c 0,0 -5.68,40.13 -11.346,80.5 -0.095,-0.01 -0.187,-0.02 -0.281,-0.03 -60.495,-10.59 -63.688,86.5 -63.688,86.5 l 3.094,0.25 c -10e-4,0.02 0,0.19 0,0.19 l 4.563,0.37 c 0,0 0.033,-1.08 0.093,-2.65 l 0.719,0.19 c -0.037,0.27 -0.125,0.84 -0.125,0.84 l 5.75,1.62 c 0,0 0.138,-1.34 0.531,-3.78 l 2.563,0.94 c -0.071,0.15 -0.375,0.78 -0.375,0.78 l 5.625,2.06 c 0,0 15.662,-34.13 38.719,-67.25 -2.814,20.1 -5.423,38.97 -7.063,50.88 -1.239,7.35 -1.712, [...]
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+    <g
+       transform="translate(-83.044,-153.33)"
+       id="g6606">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 106.07,694.77 c 0,0 9.8,-179.05 93.44,-147.99 -81.83,-19.19 -87.38,149 -87.38,149 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6608" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 110.11,695.78 c 0,0 9.8,-179.05 93.44,-147.99 -81.83,-19.19 -87.38,149 -87.38,149 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6610" />
+    </g>
+    <g
+       transform="translate(-134.227,-144.85)"
+       id="g6618">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 260.92,687.14 c 0,0 7.6,-103.23 72.43,-85.32 -63.42,-11.07 -67.73,85.9 -67.73,85.9 l -4.7,-0.58 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6620" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 264.05,687.72 c 0,0 7.6,-103.23 72.43,-85.32 -63.42,-11.07 -67.73,85.9 -67.73,85.9 l -4.7,-0.58 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6622" />
+    </g>
+    <g
+       transform="translate(-109.077,-149.09)"
+       id="g6624">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 323.85,690.17 c 0,0 -5.14128,-117.08994 52.42872,-131.36994 C 325.36872,589.46006 329.92,691.18 329.92,691.18 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6626" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 328.25,691.54 c 0,0 -5.4055,-114.35928 47.4745,-132.43928 C 326.0745,587.29072 334.31,692.55 334.31,692.55 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6628" />
+    </g>
+    <g
+       transform="translate(-275.185,-146.09)"
+       id="g6630">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 411.25,688.54 c 0,0 17.57,-70.18 48.13,-114 10.74,-15.39 29.09,-0.3 42.83,-5 -12.51,7.1 -29.74,-7.24 -39.53,8.05 -29.01,45.37 -45.37,111.96 -45.37,111.96 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cscscc"
+         id="path6632" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 408.07,687.12 c 0,0 17.56,-70.18 48.13,-113.99 10.73,-15.39 31.91,0.4 45.66,-4.3 -12.52,7.11 -32.93,-8.3 -42.71,7 -29.02,45.36 -45.02,112.3 -45.02,112.3 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cscscc"
+         id="path6634" />
+    </g>
+    <g
+       inkscape:tile-y0="362.49224"
+       transform="matrix(0.19804,-0.043822,0.038307,0.26455,-62.495,288.57)"
+       inkscape:tile-x0="313.37179"
+       id="g6642">
+      <path
+         inkscape:connector-curvature="0"
+         d="M 308.15,1010.1 C 309.58,1001.6 490,389.51 490,389.51 l 62.86,-111.43 -224.71,739.22 -20,-7.2 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="ccccc"
+         id="path6644" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 343.06,1020.3 c 3.38,-8 190.26,-621.64 190.26,-621.64 l 20.44,-134.12 -231.42,751.06 20.72,4.7 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="ccccc"
+         id="path6646" />
+    </g>
+    <g
+       inkscape:tile-y0="509.7813"
+       inkscape:tile-cy="634.91727"
+       inkscape:tile-cx="84.960712"
+       inkscape:tile-h="250.27194"
+       transform="matrix(0.24818,-0.016252,0.017562,0.26818,-33.108,344.2)"
+       inkscape:tile-w="19.843426"
+       inkscape:tile-x0="75.038999"
+       id="g6654">
+      <path
+         inkscape:connector-curvature="0"
+         d="M 383.34,756.09 C 384.77,747.52 490,389.51 490,389.51 l 62.86,-111.43 -149.52,485.15 -20,-7.14 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="ccccc"
+         id="path6656" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 422.61,768.62 c 3.37,-8.01 110.71,-369.96 110.71,-369.96 l 20.44,-134.12 -154.54,497.23 23.39,6.85 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="ccccc"
+         id="path6658" />
+    </g>
+    <g
+       transform="matrix(0.98973,0.14294,-0.14294,0.98973,151.765,-162.78)"
+       id="g6660">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 106.07,694.77 c 0,0 9.8,-179.05 93.44,-147.99 -81.83,-19.19 -87.38,149 -87.38,149 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6662" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 110.11,695.78 c 0,0 9.8,-179.05 93.44,-147.99 -81.83,-19.19 -87.38,149 -87.38,149 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6664" />
+    </g>
+    <g
+       transform="matrix(0.98973,0.14294,-0.14294,0.98973,-36.361,-175.76)"
+       id="g6666">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 196.47,697.29 c 0,0 -7.07,-120.71 66.67,-132.83 -63.13,18.18 -63.13,133.34 -63.13,133.34 l -3.54,-0.51 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6668" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 192.43,696.79 c 0,0 -7.57,-118.69 66.17,-130.82 -65.16,15.16 -62.63,131.32 -62.63,131.32 l -3.54,-0.5 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6670" />
+    </g>
+    <g
+       transform="matrix(0.99917,-0.040816,0.040816,0.99917,-34.803,-148.01)"
+       id="g6678">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 106.07,694.77 c 0,0 9.8,-179.05 93.44,-147.99 -81.83,-19.19 -87.38,149 -87.38,149 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6680" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 110.11,695.78 c 0,0 9.8,-179.05 93.44,-147.99 -81.83,-19.19 -87.38,149 -87.38,149 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6682" />
+    </g>
+    <g
+       transform="matrix(0.99917,-0.040816,0.040816,0.99917,-89.02,-145.6)"
+       id="g6684">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 196.47,697.29 c 0,0 -7.07,-120.71 66.67,-132.83 -63.13,18.18 -63.13,133.34 -63.13,133.34 l -3.54,-0.51 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6686" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 192.43,696.79 c 0,0 -7.57,-118.69 66.17,-130.82 -65.16,15.16 -62.63,131.32 -62.63,131.32 l -3.54,-0.5 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6688" />
+    </g>
+    <g
+       transform="matrix(0.73956012,0.10822,-0.08050778,0.99413,-48.65829,-187.2)"
+       id="g6702">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 411.25,688.54 c 0,0 17.57,-70.18 48.13,-114 10.74,-15.39 29.09,-0.3 42.83,-5 -12.51,7.1 -29.74,-7.24 -39.53,8.05 -29.01,45.37 -45.37,111.96 -45.37,111.96 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cscscc"
+         id="path6704" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 408.07,687.12 c 0,0 17.56,-70.18 48.13,-113.99 10.73,-15.39 31.91,0.4 45.66,-4.3 -12.52,7.11 -32.93,-8.3 -42.71,7 -29.02,45.36 -45.02,112.3 -45.02,112.3 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cscscc"
+         id="path6706" />
+    </g>
+    <g
+       transform="matrix(0.99413,0.10822,-0.10822,0.99413,-292.735,-201.43)"
+       id="g6708">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 488.19,692.48 c 0,0 0.07,-41.68 30.63,-85.5 10.74,-15.39 31.15,25.38 42.89,28.68 -12.51,-14.4 -29.8,-40.92 -39.59,-25.63 -29.01,45.37 -27.87,83.46 -27.87,83.46 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cscscc"
+         id="path6710" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 492.25,694.04 c 0,0 0.07,-41.68 30.63,-85.5 10.74,-15.39 30.09,25.2 41.83,28.5 -12.51,-14.4 -28.74,-40.74 -38.53,-25.45 -29.01,45.37 -27.87,83.46 -27.87,83.46 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cscscc"
+         id="path6712" />
+    </g>
+    <g
+       transform="matrix(0.98209,0.1884,-0.1884,0.98209,-120.06,-199.67)"
+       id="g6714">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 323.85,690.17 c 0,0 39.76,-143.96 97.33,-158.24 -50.91,30.66 -91.26,159.25 -91.26,159.25 l -6.07,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cccc"
+         id="path6716" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 328.25,691.54 c 0,0 40.91,-142.29 93.79,-160.37 -49.65,28.19 -87.73,161.38 -87.73,161.38 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cccc"
+         id="path6718" />
+    </g>
+    <g
+       transform="matrix(0.3930782,0.1884,-0.07540646,0.98209,114.77093,-212.36)"
+       id="g6720">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 411.25,688.54 c 0,0 17.57,-70.18 48.13,-114 10.74,-15.39 29.09,-0.3 42.83,-5 -12.51,7.1 -29.74,-7.24 -39.53,8.05 -29.01,45.37 -45.37,111.96 -45.37,111.96 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cscscc"
+         id="path6722" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 408.07,687.12 c 0,0 17.56,-70.18 48.13,-113.99 10.73,-15.39 31.91,0.4 45.66,-4.3 -12.52,7.11 -32.93,-8.3 -42.71,7 -29.02,45.36 -45.02,112.3 -45.02,112.3 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cscscc"
+         id="path6724" />
+    </g>
+    <g
+       transform="matrix(0.98209,0.1884,-0.1884,0.98209,-190.869,-233.02)"
+       id="g6726">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 488.19,692.48 c 0,0 0.07,-41.68 30.63,-85.5 10.74,-15.39 31.15,25.38 42.89,28.68 -12.51,-14.4 -29.8,-40.92 -39.59,-25.63 -29.01,45.37 -27.87,83.46 -27.87,83.46 l -6.06,-1.01 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="cscscc"
+         id="path6728" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 492.25,694.04 c 0,0 0.07,-41.68 30.63,-85.5 10.74,-15.39 30.09,25.2 41.83,28.5 -12.51,-14.4 -28.74,-40.74 -38.53,-25.45 -29.01,45.37 -27.87,83.46 -27.87,83.46 l -6.06,-1.01 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="cscscc"
+         id="path6730" />
+    </g>
+    <g
+       inkscape:tile-y0="509.7813"
+       inkscape:tile-cy="634.91727"
+       inkscape:tile-cx="84.960712"
+       inkscape:tile-h="250.27194"
+       transform="matrix(0.24828,0.014648,-0.015828,0.26829,107.975,331.05)"
+       inkscape:tile-w="19.843426"
+       inkscape:tile-x0="75.038999"
+       id="g6744">
+      <path
+         inkscape:connector-curvature="0"
+         d="M 383.34,756.09 C 384.77,747.52 490,389.51 490,389.51 l 62.86,-111.43 -149.52,485.15 -20,-7.14 z"
+         style="fill:#4e9a06"
+         sodipodi:nodetypes="ccccc"
+         id="path6746" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 422.61,768.62 c 3.37,-8.01 110.71,-369.96 110.71,-369.96 l 20.44,-134.12 -154.54,497.23 23.39,6.85 z"
+         style="fill:#73d216"
+         sodipodi:nodetypes="ccccc"
+         id="path6748" />
+    </g>
+    <g
+       transform="matrix(0.88770175,0,0,1,304.48274,-153.33)"
+       id="g6750" />
+    <g
+       transform="matrix(0.88696496,-0.040816,0.03623243,0.99917,254.04353,-148.01)"
+       id="g6822" />
+    <rect
+       id="rect10437"
+       style="fill:url(#linearGradient10445)"
+       height="131.52"
+       width="246.95"
+       y="410.57999"
+       x="23.358" />
+  </g>
+  <metadata
+     id="metadata161">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2009-01-20T22:49:54</dc:date>
+        <dc:description />
+        <dc:source>https://openclipart.org/detail/21212/grass-texture-by-rg1024-21212</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>rg1024</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>color</rdf:li>
+            <rdf:li>grass</rdf:li>
+            <rdf:li>green</rdf:li>
+            <rdf:li>nature</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/images/presets/landuse/military.svg b/images/presets/landuse/military.svg
new file mode 100644
index 0000000..c470bc9
--- /dev/null
+++ b/images/presets/landuse/military.svg
@@ -0,0 +1,141 @@
+<?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"
+   version="1.0"
+   width="349.48529"
+   height="197.26103"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="military3.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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="1.1102041"
+     inkscape:cx="30.661688"
+     inkscape:cy="174.67076"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 135 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="490 : 135 : 1"
+       inkscape:persp3d-origin="245 : 90 : 1"
+       id="perspective20" />
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4144"
+     width="349.48529"
+     height="197.26103"
+     x="0"
+     y="0" />
+  <g
+     transform="translate(-49.544584,-524.92884)"
+     id="g3554"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\tank.png"
+     inkscape:export-xdpi="4.4546924"
+     inkscape:export-ydpi="4.4546924">
+    <path
+       d="m 290.61109,594.7957 -70.62176,0 -21.67599,-11.65375 0,-32.8636 138.91278,-12.81913 0,42.88583 -46.61503,9.08992 0,5.36073 z"
+       style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+       id="path5534"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 65.22745,640.14176 318.38061,0.56974 -0.0533,-59.20108 -91.31212,20.04446 -132.85282,0 -94.16235,25.17211 c -5.54704,2.24346 -7.3857,13.41477 0,13.41477 z"
+       style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+       id="path5536"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 155.81493,666.86299 c -3e-5,11.30705 -9.15117,20.48115 -20.45818,20.50952 -11.30701,0.0284 -20.50407,-9.09969 -20.56084,-20.4066 -0.0568,-11.3069 9.04816,-20.52686 20.35489,-20.61203 11.30672,-0.0852 20.54952,8.99658 20.66309,20.30305"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1874"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 201.97733,666.86299 c -3e-5,11.30705 -9.15117,20.48115 -20.45818,20.50952 -11.30701,0.0284 -20.50407,-9.09969 -20.56084,-20.4066 -0.0568,-11.3069 9.04816,-20.52686 20.35489,-20.61203 11.30672,-0.0852 20.54952,8.99658 20.66309,20.30305"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1876"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 247.33033,666.86299 c -3e-5,11.30705 -9.15117,20.48115 -20.45818,20.50952 -11.30701,0.0284 -20.50407,-9.09969 -20.56084,-20.4066 -0.0568,-11.3069 9.04816,-20.52686 20.35489,-20.61203 11.30672,-0.0852 20.54952,8.99658 20.66309,20.30305"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1880"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 293.76333,666.86299 c -3e-5,11.30705 -9.15117,20.48115 -20.45818,20.50952 -11.30701,0.0284 -20.50407,-9.09969 -20.56084,-20.4066 -0.0568,-11.3069 9.04816,-20.52686 20.35489,-20.61203 11.30672,-0.0852 20.54952,8.99658 20.66309,20.30305"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3511"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 83.75265,646.62921 -9.5625,0.4375 c -5.32566,13.2481 -0.88992,25.37037 13.75,34.34375 16.49748,10.11194 36.32098,19.84936 42.0625,20 l 195.0625,0.0625 c 5.74152,-0.15064 25.56503,-9.88804 42.0625,-20 14.63992,-8.97338 19.07566,-21.1269 13.75,-34.375 l -9.5625,-0.40625 c 2.87764,12.39545 5.36125,20.76159 -12.5625,29.25 -14.66994,6.94744 -30.17637,15.21816 -32.59375,15.71875 l -197.25,-0.0312 c -2.41737,-0.50061 -17.89256,-8.80256 -32.5625,-15.75 -17.92375,-8.4884 -15.47139,-16 [...]
+       style="display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+       id="path1890"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 339.83623,667.93559 c -3e-5,11.30705 -9.15117,20.48115 -20.45818,20.50952 -11.30701,0.0284 -20.50407,-9.09969 -20.56084,-20.4066 -0.0568,-11.3069 9.04816,-20.52686 20.35489,-20.61203 11.30672,-0.0852 20.54952,8.99658 20.66309,20.30305"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1884"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 368.27196,658.40424 c -2e-5,6.44528 -5.21638,11.67474 -11.66165,11.69091 -6.44527,0.0162 -11.68781,-5.18704 -11.72017,-11.63225 -0.0324,-6.4452 5.15767,-11.7008 11.60277,-11.74935 6.44511,-0.0486 11.71372,5.12827 11.77846,11.57323"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1886"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 110.01126,658.40424 c -2e-5,6.44528 -5.21638,11.67474 -11.66165,11.69091 -6.44527,0.0162 -11.68781,-5.18704 -11.72017,-11.63225 -0.03236,-6.4452 5.15767,-11.7008 11.60277,-11.74935 6.44511,-0.0486 11.71372,5.12827 11.77846,11.57323"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1888"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/landuse/mud.svg b/images/presets/landuse/mud.svg
new file mode 100644
index 0000000..3a3527b
--- /dev/null
+++ b/images/presets/landuse/mud.svg
@@ -0,0 +1,196 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="mud.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="256"
+     inkscape:cx="15.195365"
+     inkscape:cy="0.39139597"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       id="XMLID_33_"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       class="st0"
+       width="16.000002"
+       height="16.000042"
+       style="fill:#c87137" />
+    <rect
+       id="XMLID_32_"
+       x="8.000001"
+       y="1040.3622"
+       class="st1"
+       width="4.000001"
+       height="0.99997616"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_31_"
+       x="13.000002"
+       y="1037.3621"
+       class="st1"
+       width="3.0000005"
+       height="1.0201575"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_30_"
+       x="11.000002"
+       y="1049.3621"
+       class="st1"
+       width="4.0000005"
+       height="1.0000415"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_29_"
+       x="0.0046444535"
+       y="1044.3621"
+       class="st1"
+       width="2.9953556"
+       height="0.99997544"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_28_"
+       x="5.0000005"
+       y="1047.3621"
+       class="st1"
+       width="4.0000005"
+       height="1.0000411"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_27_"
+       x="0.93384117"
+       y="1050.3621"
+       class="st1"
+       width="4.0661592"
+       height="1.0000416"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_26_"
+       x="1.9999999"
+       y="1038.3621"
+       class="st1"
+       width="4.000001"
+       height="1.0000395"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_25_"
+       x="4.0000005"
+       y="1042.3621"
+       class="st1"
+       width="4.0000005"
+       height="1.0000402"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_24_"
+       x="10.000001"
+       y="1045.3621"
+       class="st1"
+       width="4.0000014"
+       height="1.0000405"
+       style="fill:#ffffff" />
+    <g
+       id="g25"
+       transform="matrix(0.07235156,0,0,0.07235156,-25.927739,1028.6929)">
+      <path
+         class="st3"
+         d="M 362.7,285.1"
+         id="path27"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#1f3d8a;stroke-miterlimit:10" />
+    </g>
+    <g
+       id="g29"
+       transform="matrix(0.07235156,0,0,0.07235156,-25.927739,1028.6929)">
+      <path
+         class="st3"
+         d="M 354.7,296.1"
+         id="path31"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#1f3d8a;stroke-miterlimit:10" />
+    </g>
+    <g
+       id="g33"
+       transform="matrix(0.07235156,0,0,0.07235156,-25.927739,1028.6929)">
+      <path
+         class="st4"
+         d="M 354.7,296.1"
+         id="path35"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#9c672c;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2, 1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/landuse/orchard.svg b/images/presets/landuse/orchard.svg
new file mode 100644
index 0000000..71f2743
--- /dev/null
+++ b/images/presets/landuse/orchard.svg
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+
+<!-- Created by jmrivera (jmanuel1995 at yahoo.es) 16-07-04 -->
+
+<!-- tree_whit_fruits - arbol_con_frutas -->
+
+<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="svg602"
+   space="preserve"
+   viewBox="0 0 670.93 802.78"
+   sodipodi:version="0.32"
+   version="1.0"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="18.svg"
+   width="100%"
+   height="100%">
+  <defs
+     id="defs24" />
+  <sodipodi:namedview
+     id="base"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     snaptoguides="true"
+     inkscape:zoom="0.8780247"
+     inkscape:window-height="988"
+     showgrid="false"
+     inkscape:current-layer="svg602"
+     inkscape:cx="227.24694"
+     inkscape:cy="436.22506"
+     inkscape:window-width="1680"
+     inkscape:window-maximized="1" />
+  <path
+     sodipodi:cx="155.39099"
+     sodipodi:cy="403.24664"
+     transform="matrix(1.7173094,0,0,1.6101263,-102.20154,-415.5397)"
+     d="m 251.27054,403.24664 a 95.879547,89.267166 0 1 1 -191.759096,0 95.879547,89.267166 0 1 1 191.759096,0 z"
+     sodipodi:type="arc"
+     style="fill:#000000;fill-rule:evenodd"
+     sodipodi:ry="89.267166"
+     sodipodi:rx="95.879547"
+     id="path623" />
+  <path
+     sodipodi:cx="277.72006"
+     sodipodi:cy="323.89801"
+     transform="matrix(1.5797738,0,0,1.507896,-105.15067,-350.46672)"
+     d="m 368.08929,323.89801 a 90.369225,91.471298 0 1 1 -180.73845,0 90.369225,91.471298 0 1 1 180.73845,0 z"
+     sodipodi:type="arc"
+     style="fill:#000000;fill-rule:evenodd"
+     sodipodi:ry="91.471298"
+     sodipodi:rx="90.369225"
+     id="path624" />
+  <path
+     sodipodi:cx="535.60297"
+     sodipodi:cy="438.51266"
+     transform="matrix(1.5867553,0,0,1.5142196,-332.80356,-452.04485)"
+     d="m 632.58458,438.51266 a 96.981613,95.879547 0 1 1 -193.96323,0 96.981613,95.879547 0 1 1 193.96323,0 z"
+     sodipodi:type="arc"
+     style="fill:#000000;fill-rule:evenodd"
+     sodipodi:ry="95.879547"
+     sodipodi:rx="96.981613"
+     id="path625" />
+  <path
+     inkscape:connector-curvature="0"
+     d="m 240.05644,438.46485 c 26.66933,0.96171 53.33866,1.93658 80.00799,2.89828 5.13839,48.40128 7.19095,64.85561 24.63073,84.20821 30.77446,-17.41603 49.23354,-34.84523 55.39122,-60.96927 0,0 120.02595,-17.4292 76.93613,0 -27.68862,66.77901 -77.51739,83.45946 -86.74693,138.63217 -11.28211,64.8556 4.21164,124.95322 11.40259,186.89737 -57.45775,-0.9617 -124.22881,0.97488 -181.68656,0 31.80771,-109.37055 47.66033,-126.37132 60.99499,-206.70637 -2.05256,-61.94415 -26.5762,-91.72425 -40.9 [...]
+     style="fill:#b85e00;fill-rule:evenodd;stroke:#000000;stroke-width:24.75204468"
+     sodipodi:nodetypes="cccccccccc"
+     id="path628" />
+  <path
+     sodipodi:cx="189.55496"
+     sodipodi:cy="480.39108"
+     transform="matrix(1.6516833,0,0,1.475488,-34.570636,-348.74883)"
+     d="m 279.92419,480.39108 a 90.369225,82.654755 0 1 1 -180.738452,0 90.369225,82.654755 0 1 1 180.738452,0 z"
+     sodipodi:type="arc"
+     style="fill:#000000;fill-rule:evenodd"
+     sodipodi:ry="82.654755"
+     sodipodi:rx="90.369225"
+     id="path626" />
+  <path
+     sodipodi:cx="392.33472"
+     sodipodi:cy="463.86011"
+     transform="matrix(1.5458437,0,0,1.469428,-158.71986,-314.27775)"
+     d="m 484.90808,463.86011 a 92.573364,85.960983 0 1 1 -185.14673,0 92.573364,85.960983 0 1 1 185.14673,0 z"
+     sodipodi:type="arc"
+     style="fill:#000000;fill-rule:evenodd"
+     sodipodi:ry="85.960983"
+     sodipodi:rx="92.573364"
+     id="path627" />
+  <path
+     sodipodi:cx="392.33472"
+     sodipodi:cy="463.86011"
+     transform="matrix(1.3963,0,0,1.3174,-110.79758,-259.73739)"
+     d="m 484.90808,463.86011 a 92.573364,85.960983 0 1 1 -185.14673,0 92.573364,85.960983 0 1 1 185.14673,0 z"
+     sodipodi:type="arc"
+     style="fill:#80df00;fill-rule:evenodd"
+     sodipodi:ry="85.960983"
+     sodipodi:rx="92.573364"
+     id="path610" />
+  <path
+     sodipodi:cx="189.55496"
+     sodipodi:cy="480.39108"
+     transform="matrix(1.3963,0,0,1.3174,12.307344,-285.87118)"
+     d="m 279.92419,480.39108 a 90.369225,82.654755 0 1 1 -180.738452,0 90.369225,82.654755 0 1 1 180.738452,0 z"
+     sodipodi:type="arc"
+     style="fill:#80df00;fill-rule:evenodd"
+     sodipodi:ry="82.654755"
+     sodipodi:rx="90.369225"
+     id="path611" />
+  <path
+     sodipodi:cx="155.39099"
+     sodipodi:cy="403.24664"
+     transform="matrix(1.3963,0,0,1.3174,-52.323194,-297.48616)"
+     d="m 251.27054,403.24664 a 95.879547,89.267166 0 1 1 -191.759096,0 95.879547,89.267166 0 1 1 191.759096,0 z"
+     sodipodi:type="arc"
+     style="fill:#80df00;fill-rule:evenodd"
+     sodipodi:ry="89.267166"
+     sodipodi:rx="95.879547"
+     id="path612" />
+  <path
+     sodipodi:cx="535.60297"
+     sodipodi:cy="438.51266"
+     transform="matrix(1.3963,0,0,1.3174,-240.05713,-364.27176)"
+     d="m 632.58458,438.51266 a 96.981613,95.879547 0 1 1 -193.96323,0 96.981613,95.879547 0 1 1 193.96323,0 z"
+     sodipodi:type="arc"
+     style="fill:#80df00;fill-rule:evenodd"
+     sodipodi:ry="95.879547"
+     sodipodi:rx="96.981613"
+     id="path613" />
+  <path
+     sodipodi:cx="277.72006"
+     sodipodi:cy="323.89801"
+     transform="matrix(1.3963,0,0,1.3174,-55.400639,-277.16007)"
+     d="m 368.08929,323.89801 a 90.369225,91.471298 0 1 1 -180.73845,0 90.369225,91.471298 0 1 1 180.73845,0 z"
+     sodipodi:type="arc"
+     style="fill:#80df00;fill-rule:evenodd"
+     sodipodi:ry="91.471298"
+     sodipodi:rx="90.369225"
+     id="path609" />
+  <path
+     sodipodi:cx="126.95164"
+     sodipodi:cy="608.8667"
+     transform="matrix(1.2748778,0,0,1.1291962,-10.671565,-339.71937)"
+     d="m 165.37122,608.8667 a 38.419582,40.925201 0 1 1 -76.839165,0 38.419582,40.925201 0 1 1 76.839165,0 z"
+     sodipodi:type="arc"
+     style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:11.41699981999999900;fill-opacity:1"
+     sodipodi:ry="40.925201"
+     sodipodi:rx="38.419582"
+     id="path629" />
+  <path
+     sodipodi:cx="126.95164"
+     sodipodi:cy="608.8667"
+     transform="matrix(1.1231139,0,0,0.99476874,175.36586,-219.36039)"
+     d="m 165.37122,608.8667 a 38.419582,40.925201 0 1 1 -76.839165,0 38.419582,40.925201 0 1 1 76.839165,0 z"
+     sodipodi:type="arc"
+     style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:11.41699981999999900"
+     sodipodi:ry="40.925201"
+     sodipodi:rx="38.419582"
+     id="path630" />
+  <path
+     sodipodi:cx="126.95164"
+     sodipodi:cy="608.8667"
+     transform="matrix(1.0624028,0,0,0.91411751,411.64775,-169.15164)"
+     d="m 165.37122,608.8667 a 38.419582,40.925201 0 1 1 -76.839165,0 38.419582,40.925201 0 1 1 76.839165,0 z"
+     sodipodi:type="arc"
+     style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:11.41699981999999900"
+     sodipodi:ry="40.925201"
+     sodipodi:rx="38.419582"
+     id="path631" />
+  <path
+     sodipodi:cx="126.95164"
+     sodipodi:cy="608.8667"
+     transform="matrix(1.1231139,0,0,0.99476874,96.056022,-399.80994)"
+     d="m 165.37122,608.8667 a 38.419582,40.925201 0 1 1 -76.839165,0 38.419582,40.925201 0 1 1 76.839165,0 z"
+     sodipodi:type="arc"
+     style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:11.41699981999999900"
+     sodipodi:ry="40.925201"
+     sodipodi:rx="38.419582"
+     id="path632" />
+  <path
+     sodipodi:cx="126.95164"
+     sodipodi:cy="608.8667"
+     transform="matrix(1.2141666,0,0,1.1291962,253.60055,-423.3387)"
+     d="m 165.37122,608.8667 a 38.419582,40.925201 0 1 1 -76.839165,0 38.419582,40.925201 0 1 1 76.839165,0 z"
+     sodipodi:type="arc"
+     style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:11.41699981999999900"
+     sodipodi:ry="40.925201"
+     sodipodi:rx="38.419582"
+     id="path633" />
+  <path
+     sodipodi:cx="126.95164"
+     sodipodi:cy="608.8667"
+     transform="matrix(0.9713361,0,0,0.88722938,403.38165,-354.13568)"
+     d="m 165.37122,608.8667 a 38.419582,40.925201 0 1 1 -76.839165,0 38.419582,40.925201 0 1 1 76.839165,0 z"
+     sodipodi:type="arc"
+     style="fill:#ff0000;fill-rule:evenodd;stroke:#000000;stroke-width:11.41699981999999900"
+     sodipodi:ry="40.925201"
+     sodipodi:rx="38.419582"
+     id="path635" />
+  <metadata
+     id="metadata22">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2009-05-26T15:57:28</dc:date>
+        <dc:description>Simple tree with fruits (apple tree?) by jmrivera. From OCAL 0.18 release.</dc:description>
+        <dc:source>https://openclipart.org/detail/26259/tree-with-fruits-by-anonymous-26259</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Anonymous</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>apple</rdf:li>
+            <rdf:li>basic</rdf:li>
+            <rdf:li>cartoon</rdf:li>
+            <rdf:li>colour</rdf:li>
+            <rdf:li>fruit</rdf:li>
+            <rdf:li>green</rdf:li>
+            <rdf:li>nature</rdf:li>
+            <rdf:li>plant</rdf:li>
+            <rdf:li>red</rdf:li>
+            <rdf:li>simple</rdf:li>
+            <rdf:li>tree</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/images/presets/rail_light.png b/images/presets/landuse/rail_light.png
similarity index 100%
rename from images/presets/rail_light.png
rename to images/presets/landuse/rail_light.png
diff --git a/images/presets/landuse/sand.svg b/images/presets/landuse/sand.svg
new file mode 100644
index 0000000..7a8c028
--- /dev/null
+++ b/images/presets/landuse/sand.svg
@@ -0,0 +1,446 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="5.4393354"
+     inkscape:cy="9.3429067"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-765px"
+       originy="-460px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-765,-576.36218)">
+    <rect
+       style="fill:#ffcc00;fill-opacity:1;stroke:none"
+       id="rect2987"
+       width="16"
+       height="16"
+       x="765"
+       y="576.36218" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(5,3)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-1"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(1,5)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-7"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(1,2)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-4"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(4,1)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-0"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(4,5)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-9"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(-1,4)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-48"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(0,9)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-8"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(4,8)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-2"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(2,7)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-45"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(-1,12)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-5"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(2,11)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-17"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(5,12)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-11"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(6,10)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-52"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(7,7)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-76"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(8,4)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-14"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(6,0)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-23"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(3,-1)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-22"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(-2,-2)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-85"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(-1,7)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-761"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(9,1)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-89"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(10,-2)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-27"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(12,0)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-95"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(12,2)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-43"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(11,4)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-12"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(9,6)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-3"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(11,8)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-34"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(9,9)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-113"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(8,12)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-87"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(8,12)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-42"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(11,11)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-77"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(12,12)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-93"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(13,6)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-19"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(6,6)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-86"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(7,-2)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-50"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(3,13)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-28"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+    <path
+       transform="translate(-2,10)"
+       sodipodi:type="arc"
+       style="fill:#a05a2c;fill-opacity:1;stroke:none"
+       id="path3757-6"
+       sodipodi:cx="767.5"
+       sodipodi:cy="578.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 768,578.86218 c 0,0.27614 -0.22386,0.5 -0.5,0.5 -0.27614,0 -0.5,-0.22386 -0.5,-0.5 0,-0.27614 0.22386,-0.5 0.5,-0.5 0.27614,0 0.5,0.22386 0.5,0.5 z" />
+  </g>
+</svg>
diff --git a/images/presets/scrub.svg b/images/presets/landuse/scrub.svg
similarity index 100%
rename from images/presets/scrub.svg
rename to images/presets/landuse/scrub.svg
diff --git a/images/presets/fruits.png b/images/presets/landuse/vineyard.png
similarity index 100%
rename from images/presets/fruits.png
rename to images/presets/landuse/vineyard.png
diff --git a/images/presets/landuse/wetland.svg b/images/presets/landuse/wetland.svg
new file mode 100644
index 0000000..6c2b6c3
--- /dev/null
+++ b/images/presets/landuse/wetland.svg
@@ -0,0 +1,196 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="wetland.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="10.114146"
+     inkscape:cy="-7.4187777"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       id="XMLID_33_"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       class="st0"
+       width="16.000004"
+       height="16.000042"
+       style="fill:#ffffff" />
+    <rect
+       id="XMLID_32_"
+       x="8.000001"
+       y="1040.3622"
+       class="st1"
+       width="4.000001"
+       height="0.99997616"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_31_"
+       x="13.000002"
+       y="1037.3621"
+       class="st1"
+       width="3.0000005"
+       height="1.0201575"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_30_"
+       x="11.000002"
+       y="1049.3621"
+       class="st1"
+       width="4.0000005"
+       height="1.0000415"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_29_"
+       x="0.0046444535"
+       y="1044.3621"
+       class="st1"
+       width="2.9953556"
+       height="0.99997544"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_28_"
+       x="5.0000005"
+       y="1047.3621"
+       class="st1"
+       width="4.0000005"
+       height="1.0000411"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_27_"
+       x="0.93384117"
+       y="1050.3621"
+       class="st1"
+       width="4.0661592"
+       height="1.0000416"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_26_"
+       x="1.9999999"
+       y="1038.3621"
+       class="st1"
+       width="4.000001"
+       height="1.0000395"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_25_"
+       x="4.0000005"
+       y="1042.3621"
+       class="st1"
+       width="4.0000005"
+       height="1.0000402"
+       style="fill:#2090cf" />
+    <rect
+       id="XMLID_24_"
+       x="10.000001"
+       y="1045.3621"
+       class="st1"
+       width="4.0000014"
+       height="1.0000405"
+       style="fill:#2090cf" />
+    <g
+       id="g25"
+       transform="matrix(0.07235156,0,0,0.07235156,-25.927739,1028.6929)">
+      <path
+         class="st3"
+         d="M 362.7,285.1"
+         id="path27"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#1f3d8a;stroke-miterlimit:10" />
+    </g>
+    <g
+       id="g29"
+       transform="matrix(0.07235156,0,0,0.07235156,-25.927739,1028.6929)">
+      <path
+         class="st3"
+         d="M 354.7,296.1"
+         id="path31"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#1f3d8a;stroke-miterlimit:10" />
+    </g>
+    <g
+       id="g33"
+       transform="matrix(0.07235156,0,0,0.07235156,-25.927739,1028.6929)">
+      <path
+         class="st4"
+         d="M 354.7,296.1"
+         id="path35"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#9c672c;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:2, 1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/laundry.png b/images/presets/laundry.png
deleted file mode 100644
index 76c3889..0000000
Binary files a/images/presets/laundry.png and /dev/null differ
diff --git a/images/presets/leisure/advertising_column.svg b/images/presets/leisure/advertising_column.svg
new file mode 100644
index 0000000..be628d7
--- /dev/null
+++ b/images/presets/leisure/advertising_column.svg
@@ -0,0 +1,146 @@
+<?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"
+   width="9"
+   height="16.000002"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="01.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-9.401044"
+     inkscape:cy="15.432182"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-359px"
+       originy="-480px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-359,-556.36218)">
+    <rect
+       style="fill:#333333;fill-opacity:1;stroke:none"
+       id="rect2993"
+       width="9"
+       height="2"
+       x="359"
+       y="570.36218" />
+    <path
+       style="fill:#333333;fill-opacity:1;stroke:none"
+       d="m 359,559.36218 0,-2 4.5,-1 4.5,1 0,2 z"
+       id="path3765"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+    <rect
+       style="fill:#c87137;fill-opacity:1;stroke:none"
+       id="rect3769"
+       width="2"
+       height="1"
+       x="362"
+       y="559.36218" />
+    <rect
+       style="fill:#ffff00;fill-opacity:1;stroke:none"
+       id="rect3773"
+       width="5"
+       height="5"
+       x="362"
+       y="560.36218" />
+    <rect
+       style="fill:#008000;fill-opacity:1;stroke:none"
+       id="rect3775"
+       width="2"
+       height="4"
+       x="360"
+       y="560.36218" />
+    <rect
+       style="fill:#ff0000;fill-opacity:1;stroke:none"
+       id="rect3777"
+       width="3"
+       height="4"
+       x="360"
+       y="564.36218" />
+    <rect
+       style="fill:#0000ff;fill-opacity:1;stroke:none"
+       id="rect3779"
+       width="4"
+       height="3"
+       x="363"
+       y="565.36218" />
+    <rect
+       style="fill:#ffcc00;fill-opacity:1;stroke:none"
+       id="rect3781"
+       width="4"
+       height="3"
+       x="360"
+       y="567.36218" />
+    <rect
+       style="fill:#800080;fill-opacity:1;stroke:none"
+       id="rect3783"
+       width="3"
+       height="2"
+       x="364"
+       y="568.36218" />
+    <rect
+       style="fill:#008000;fill-opacity:1;stroke:none"
+       id="rect3771"
+       width="3"
+       height="3"
+       x="364"
+       y="559.36218" />
+    <rect
+       style="fill:#aa0000;fill-opacity:1;stroke:none"
+       id="rect3767"
+       width="2"
+       height="2"
+       x="360"
+       y="559.36218" />
+  </g>
+</svg>
diff --git a/images/presets/bbq.png b/images/presets/leisure/bbq.png
similarity index 100%
rename from images/presets/bbq.png
rename to images/presets/leisure/bbq.png
diff --git a/images/presets/leisure/bench.png b/images/presets/leisure/bench.png
new file mode 100644
index 0000000..9ddc134
Binary files /dev/null and b/images/presets/leisure/bench.png differ
diff --git a/images/presets/leisure/billboard.svg b/images/presets/leisure/billboard.svg
new file mode 100644
index 0000000..b1951b9
--- /dev/null
+++ b/images/presets/leisure/billboard.svg
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<!-- ClipArt by Arvin61r58 (http://openclipart.org/user-detail/Arvin61r58) -->
+
+<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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2"
+   viewBox="0 0 976.15625 729.85008"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="11.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview69"
+     showgrid="false"
+     inkscape:zoom="0.43628026"
+     inkscape:cx="797.85974"
+     inkscape:cy="398.68092"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <title
+     id="title4370">Billboard Frame</title>
+  <defs
+     id="defs4">
+    <filter
+       id="filter4278"
+       height="1"
+       width="1"
+       color-interpolation-filters="sRGB"
+       y="0"
+       x="0">
+      <feTurbulence
+         id="feTurbulence4280"
+         baseFrequency="0.021000000000000001 0.021000000000000001"
+         seed="0"
+         result="result0"
+         numOctaves="2"
+         type="turbulence" />
+      <feSpecularLighting
+         id="feSpecularLighting4282"
+         specularConstant="1"
+         result="result1"
+         specularExponent="24.29999924"
+         surfaceScale="2">
+        <feDistantLight
+           id="feDistantLight4284"
+           elevation="45"
+           azimuth="225" />
+      </feSpecularLighting>
+      <feDiffuseLighting
+         id="feDiffuseLighting4286"
+         surfaceScale="3"
+         in="result0"
+         result="result2"
+         diffuseConstant="1.21000004">
+        <feDistantLight
+           id="feDistantLight4288"
+           elevation="42"
+           azimuth="225" />
+      </feDiffuseLighting>
+      <feBlend
+         id="feBlend4290"
+         mode="multiply"
+         in2="SourceGraphic"
+         result="result91" />
+      <feComposite
+         id="feComposite4292"
+         in="result1"
+         in2="result91"
+         k3="1"
+         k2="1"
+         k1="0"
+         result="result92"
+         k4="0"
+         operator="arithmetic" />
+      <feComposite
+         id="feComposite4294"
+         operator="in"
+         result="result2"
+         in2="SourceAlpha" />
+    </filter>
+    <linearGradient
+       id="linearGradient4347"
+       y2="556.90997"
+       gradientUnits="userSpaceOnUse"
+       x2="456.60001"
+       gradientTransform="matrix(1.0492,0,0,0.83928,66.33,399.54)"
+       y1="556.90997"
+       x1="357.79999">
+      <stop
+         id="stop3825"
+         style="stop-color:#8a8a8a"
+         offset="0" />
+      <stop
+         id="stop3827"
+         style="stop-color:#676767"
+         offset=".071429" />
+      <stop
+         id="stop3829"
+         style="stop-color:#878787"
+         offset=".14286" />
+      <stop
+         id="stop3831"
+         style="stop-color:#b5b5b5"
+         offset=".21429" />
+      <stop
+         id="stop3833"
+         style="stop-color:#d7d7d7"
+         offset=".28571" />
+      <stop
+         id="stop3835"
+         style="stop-color:#d5d5d5"
+         offset=".35714" />
+      <stop
+         id="stop3837"
+         style="stop-color:#c3c3c3"
+         offset=".42857" />
+      <stop
+         id="stop3839"
+         style="stop-color:#b3b3b3"
+         offset=".5" />
+      <stop
+         id="stop3841"
+         style="stop-color:#a3a3a3"
+         offset=".57143" />
+      <stop
+         id="stop3843"
+         style="stop-color:#929292"
+         offset=".64286" />
+      <stop
+         id="stop3845"
+         style="stop-color:#7a7a7a"
+         offset=".71429" />
+      <stop
+         id="stop3847"
+         style="stop-color:#696969"
+         offset=".78571" />
+      <stop
+         id="stop3849"
+         style="stop-color:#686868"
+         offset=".85714" />
+      <stop
+         id="stop3851"
+         style="stop-color:#656565"
+         offset=".92857" />
+      <stop
+         id="stop3853"
+         style="stop-color:#797979"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4353"
+       y2="715.01001"
+       gradientUnits="userSpaceOnUse"
+       x2="446.25"
+       gradientTransform="translate(3.2022,122.35)"
+       y1="689.37"
+       x1="446.25">
+      <stop
+         id="stop4109"
+         style="stop-color:#717171"
+         offset="0" />
+      <stop
+         id="stop4111"
+         style="stop-color:#e3e3e3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4347"
+       id="linearGradient3096"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0492,0,0,0.83928,56.9452,90.310078)"
+       x1="357.79999"
+       y1="556.90997"
+       x2="456.60001"
+       y2="556.90997" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4353"
+       id="linearGradient3098"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(3.2022,122.35)"
+       x1="446.25"
+       y1="689.37"
+       x2="446.25"
+       y2="715.01001" />
+  </defs>
+  <rect
+     id="rect2985"
+     style="fill:url(#linearGradient3096);fill-rule:evenodd"
+     rx="12.852"
+     ry="11.842"
+     height="344.26999"
+     width="95.811996"
+     y="385.58008"
+     x="440.19519" />
+  <g
+     transform="matrix(1,0,0,1.0753,-7.25,-451.87197)"
+     id="g4132">
+    <g
+       transform="matrix(1,0,0,0.83333,21.422,173.53)"
+       id="g4125">
+      <rect
+         x="33.09"
+         y="740.15002"
+         width="16.011"
+         height="25.618"
+         style="fill:#000000;fill-rule:evenodd"
+         id="rect4115" />
+      <rect
+         x="898.76001"
+         y="740.15002"
+         width="16.011"
+         height="25.618"
+         style="fill:#000000;fill-rule:evenodd"
+         id="rect4117" />
+      <rect
+         x="682.34003"
+         y="740.15002"
+         width="16.011"
+         height="25.618"
+         style="fill:#000000;fill-rule:evenodd"
+         id="rect4119" />
+      <rect
+         x="249.50999"
+         y="740.15002"
+         width="16.011"
+         height="25.618"
+         style="fill:#000000;fill-rule:evenodd"
+         id="rect4121" />
+      <rect
+         x="465.92001"
+         y="740.15002"
+         width="16.011"
+         height="25.618"
+         style="fill:#000000;fill-rule:evenodd"
+         id="rect4123" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       d="m 966.48,812.6 9.1053,-0.0628 6.5646,23.891 -13.718,-0.2011 -473.09,0.061 -473.09,0.0242 -13.718,0.20109 6.5646,-23.891 9.1053,0.0628 471.13,-0.0833 z"
+       style="fill:url(#linearGradient3098);stroke:#000000;stroke-width:1.92869997"
+       id="path4083-2" />
+  </g>
+  <g
+     transform="matrix(1,0,0,1.0753,-4.8711,-332.50292)"
+     id="g4071"
+     style="fill:#803300">
+    <rect
+       x="14.971"
+       y="312.10001"
+       width="956"
+       height="366"
+       style="fill:#803300;stroke:#000000;stroke-width:5.78609991"
+       id="rect4043" />
+    <rect
+       x="20.938"
+       y="317.76999"
+       width="944.06"
+       height="354.66"
+       style="fill:#803300;fill-rule:evenodd;stroke:#828282;stroke-width:5.78609991"
+       id="rect4043-1" />
+  </g>
+  <metadata
+     id="metadata67">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title>Billboard Frame</dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <text
+     xml:space="preserve"
+     style="font-size:335.74322510000002000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:40.81823348999999700px;word-spacing:0px;fill:#ffcc00;fill-opacity:1;stroke:none;font-family:Calibri"
+     x="37.716553"
+     y="308.91446"
+     id="text3111"
+     sodipodi:linespacing="125%"
+     transform="scale(1.0174037,0.98289404)"><tspan
+       sodipodi:role="line"
+       id="tspan3113"
+       x="37.716553"
+       y="308.91446"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Calibri;fill:#ffcc00">JOSM</tspan></text>
+</svg>
diff --git a/images/presets/leisure/bird_hide.svg b/images/presets/leisure/bird_hide.svg
new file mode 100644
index 0000000..dc25de3
--- /dev/null
+++ b/images/presets/leisure/bird_hide.svg
@@ -0,0 +1,111 @@
+<?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"
+   width="4.5155554mm"
+   height="4.5155554mm"
+   viewBox="0 0 16 16"
+   id="svg3616"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="02.svg">
+  <defs
+     id="defs3618" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="10.68096"
+     inkscape:cy="1.3277302"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3644"
+       originx="3.0589981"
+       originy="3.0584999" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3621">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(522.28571,261.35208)">
+    <g
+       transform="matrix(1.6191054,0,0,1.6189416,-523.20536,-261.35208)"
+       id="g252">
+      <path
+         style="fill:#ffffff"
+         inkscape:connector-curvature="0"
+         d="M 1.75,0.2 C 1.209,0.2 0.768,0.64 0.768,1.18 l 0,7.523 c 0,0.54 0.441,0.979 0.982,0.979 l 7.52,0 c 0.541,0 0.98,-0.439 0.98,-0.979 l 0,-7.523 C 10.25,0.64 9.811,0.201 9.27,0.201 l -7.52,0 z"
+         id="path254" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 9.27,9.883 c 0.652,0 1.18,-0.527 1.18,-1.18 l 0,-7.523 C 10.449,0.527 9.922,0 9.27,0 L 1.75,0 C 1.098,0 0.568,0.527 0.568,1.18 l 0,7.523 c 0,0.652 0.529,1.18 1.182,1.18 l 7.52,0 z"
+         id="path256" />
+      <rect
+         style="fill:#ffffff"
+         x="3.6619999"
+         y="1.545"
+         width="1.2539999"
+         height="0.898"
+         id="rect258" />
+      <path
+         style="fill:#ffffff"
+         inkscape:connector-curvature="0"
+         d="M 6.332,5.42 C 6.213,5.42 6.117,5.324 6.117,5.205 l 0,-2.48 1.896,0 0.799,3.385 -0.003,0.218 0,1.496 c 0,0.115 -0.094,0.209 -0.209,0.209 l -1.844,0 C 6.641,8.033 6.547,7.939 6.547,7.824 l 0,-2.404 -0.199,0"
+         id="path260" />
+      <path
+         style="fill:#ffffff"
+         inkscape:connector-curvature="0"
+         d="M 4.695,5.426 C 4.814,5.426 4.91,5.33 4.91,5.211 l 0,-2.482 -1.892,0 -0.801,3.384 0.004,0.221 0,1.496 c 0,0.115 0.094,0.209 0.209,0.209 l 1.842,0 c 0.117,0 0.211,-0.094 0.211,-0.209 l 0,-2.404 0.197,0"
+         id="path262" />
+      <rect
+         style="fill:#ffffff"
+         x="5.1880002"
+         y="2.7290001"
+         width="0.64999998"
+         height="2.3050001"
+         id="rect264" />
+      <rect
+         style="fill:#ffffff"
+         x="6.1170001"
+         y="1.545"
+         width="1.256"
+         height="0.898"
+         id="rect266" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/leisure/casino.svg b/images/presets/leisure/casino.svg
new file mode 100644
index 0000000..8a1d971
--- /dev/null
+++ b/images/presets/leisure/casino.svg
@@ -0,0 +1,59 @@
+<?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"
+   version="1.1"
+   width="73%"
+   height="100%"
+   viewBox="0 0 272.83196 373.82317"
+   id="svg2"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="30.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview11"
+     showgrid="false"
+     inkscape:zoom="2.5252581"
+     inkscape:cx="53.270554"
+     inkscape:cy="272.63461"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     showguides="false" />
+  <title
+     id="title3924">Hotel has a casino</title>
+  <defs
+     id="defs25" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff;fill-rule:evenodd"
+     id="path127"
+     d="M 32.344551,373.81427 C 14.444566,373.84771 0.05259428,359.41983 0.01660512,341.50894 L -4.3678e-5,341.4633 0.02881424,32.389577 C 0.02778757,14.424621 14.455235,0.03133824 32.357482,-1.8391e-5 L 240.46501,0.04956728 C 258.36724,0.01821204 272.80486,14.429535 272.79011,32.347081 l 0.0418,309.121839 c 0.001,17.96494 -14.4269,32.35692 -32.34574,32.34265 l -208.129564,0.0111 z" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#ff0000;fill-rule:evenodd"
+     id="path131"
+     d="m 122.36392,119.93142 28.14385,-0.0363 -14.11474,-49.417165 -14.02911,49.453705 z m 34.77323,23.01259 -41.33333,-0.0905 -6.53008,22.67335 -26.646267,-0.0392 38.006617,-124.115479 31.56297,0.0091 38.02328,124.130789 -26.60858,0.0642 -6.47461,-22.6329 z" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#ff0000;fill-rule:evenodd"
+     id="path139"
+     d="m 108.40674,209.70696 c -3.22172,0.0565 -6.77182,0.81704 -10.688583,2.61468 -42.717784,33.19441 14.882693,86.74844 39.161733,132.70968 l 0.73451,0.26565 c 26.71877,-50.28116 77.6009,-105.58036 38.70954,-132.99128 -30.76775,-13.99543 -38.98711,32.63384 -39.27381,34.33274 -0.27863,-1.49166 -6.526,-37.06043 -28.64339,-36.93147 z" />
+</svg>
diff --git a/images/presets/leisure/cinema.svg b/images/presets/leisure/cinema.svg
new file mode 100644
index 0000000..9908e74
--- /dev/null
+++ b/images/presets/leisure/cinema.svg
@@ -0,0 +1,227 @@
+<?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"
+   width="12.044044"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="cinema2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="7.0350534"
+     inkscape:cy="18.011975"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1058"
+     inkscape:window-height="1017"
+     inkscape:window-x="334"
+     inkscape:window-y="0"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-9.6029775,-8.3191956)">
+    <g
+       id="g4636"
+       transform="matrix(0.44101501,-0.19152939,0.19428651,0.4347565,7.557687,11.629031)">
+      <rect
+         y="11.284021"
+         x="5.4614668"
+         height="9.067503"
+         width="11.761078"
+         id="rect3589"
+         style="opacity:1;fill:#12abdb;fill-opacity:1;stroke:#150b0b;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+      <rect
+         y="21.087101"
+         x="5.4614668"
+         height="9.067503"
+         width="11.761078"
+         id="rect3591"
+         style="opacity:1;fill:#12abdb;fill-opacity:1;stroke:#150b0b;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+      <rect
+         y="1.4123586"
+         x="5.456027"
+         height="9.067503"
+         width="11.761078"
+         id="rect3593"
+         style="opacity:1;fill:#12abdb;fill-opacity:1;stroke:#150b0b;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+      <g
+         transform="translate(0,0.5357143)"
+         id="g4616">
+        <g
+           id="g4588"
+           transform="translate(0,-1.7812501)">
+          <rect
+             y="6.7388401"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4566"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="10.595982"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4570"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="14.453125"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4572"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="18.310268"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4574"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="22.167412"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4576"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="26.024553"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4578"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="29.881697"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4584"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="2.8816965"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4586"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+        </g>
+        <g
+           id="g4598"
+           transform="translate(11.517858,-1.7812501)">
+          <rect
+             y="6.7388401"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4600"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="10.595982"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4602"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="14.453125"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4604"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="18.310268"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4606"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="22.167412"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4608"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="26.024553"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4610"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="29.881697"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4612"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+          <rect
+             y="2.8816965"
+             x="5.0558033"
+             height="1.2276785"
+             width="0.95982146"
+             id="rect4614"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/leisure/common.png b/images/presets/leisure/common.png
new file mode 100644
index 0000000..5e7f229
Binary files /dev/null and b/images/presets/leisure/common.png differ
diff --git a/images/presets/leisure/discoball.svg b/images/presets/leisure/discoball.svg
new file mode 100644
index 0000000..2c5bb93
--- /dev/null
+++ b/images/presets/leisure/discoball.svg
@@ -0,0 +1,220 @@
+<?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"
+   width="15.990621"
+   height="15.991365"
+   id="svg3328"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="13.svg">
+  <defs
+     id="defs3330" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="1.4122314"
+     inkscape:cy="9.4363036"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3336"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-370.04571px"
+       originy="-504px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3333">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-370.04571,-532.37082)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#808080;fill-opacity:1;stroke:#ffffff;stroke-width:0.20253333;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3015"
+       sodipodi:cx="7.9542899"
+       sodipodi:cy="7.9913654"
+       sodipodi:rx="8"
+       sodipodi:ry="8"
+       d="m 15.95429,7.9913654 a 8,8 0 1 1 -16.00000009,0 8,8 0 1 1 16.00000009,0 z"
+       transform="matrix(0.98749177,0,0,0.98749177,370.19091,532.47078)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.49520677;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 373.19531,534.36219 c 9.80919,0 9.80919,0 9.80919,0 l 0,0"
+       id="path3021"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.49083301000000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 370.29159,539.86219 c 15.41869,0 15.41869,0 15.41869,0"
+       id="path3023"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.49827286999999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 371.09799,536.86219 13.90344,0"
+       id="path3025"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.51020723999999995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 370.71031,542.86219 14.57747,0"
+       id="path3027"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.47750598000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 372.57736,545.86231 10.94457,0"
+       id="path3029"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 6.625,2.0851154 -0.0625,2.46875"
+       id="path3801"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.39328711999999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 374.01446,537.11219 0.0312,2.7491"
+       id="path3803"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 378.35821,537.04969 0,2.71875"
+       id="path3816"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 382.32696,536.92469 0,2.9375"
+       id="path3818"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 13.59375,4.3976154 -1.5625,-2.40625"
+       id="path3820"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 9.6875,4.5538654 9.40625,2.1476154"
+       id="path3822"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 372.67071,536.83094 1.34375,-2.28125"
+       id="path3824"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 5.09375,1.9288654 6.9116117,0.27640669"
+       id="path3826"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 10.8125,2.0226154 9.15625,0.33511543"
+       id="path3828"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 8.0625,2.0226154 0,-1.78124997"
+       id="path3830"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 1.375,7.6163654 2,10.366365"
+       id="path3834"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 5.5625,7.5538654 0.125,2.9999996"
+       id="path3836"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 10.25,7.6163654 0.15625,2.9374996"
+       id="path3838"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 14.5,7.6163654 14.15625,10.335115"
+       id="path3840"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 373.68633,542.98718 0.95313,2.8125"
+       id="path3842"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 7.90625,10.647615 0.125,2.90625"
+       id="path3844"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 381.60821,545.83093 0.4375,-2.75"
+       id="path3846"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 375.92071,546.01843 1.40625,2.0625"
+       id="path3848"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:0.40000000000000002;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 9.40625,15.647615 c 0.125,-0.28125 0.71875,-2.0625 0.71875,-2.0625"
+       id="path3850"
+       inkscape:connector-curvature="0"
+       transform="translate(370.04571,532.37082)" />
+  </g>
+</svg>
diff --git a/images/presets/leisure/dog.png b/images/presets/leisure/dog.png
new file mode 100644
index 0000000..c9fb408
Binary files /dev/null and b/images/presets/leisure/dog.png differ
diff --git a/images/presets/dogpark.png b/images/presets/leisure/dogpark.png
similarity index 100%
rename from images/presets/dogpark.png
rename to images/presets/leisure/dogpark.png
diff --git a/images/presets/equestrian.png b/images/presets/leisure/equestrian.png
similarity index 100%
rename from images/presets/equestrian.png
rename to images/presets/leisure/equestrian.png
diff --git a/images/presets/leisure/firepit.svg b/images/presets/leisure/firepit.svg
new file mode 100644
index 0000000..f0edd20
--- /dev/null
+++ b/images/presets/leisure/firepit.svg
@@ -0,0 +1,875 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg4688"
+   sodipodi:docname="fire01.svg"
+   sodipodi:modified="true"
+   height="459.80612"
+   sodipodi:version="0.32"
+   width="459.01599"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:version="0.48.4 r9939"
+   version="1.1">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient14630"
+       inkscape:collect="always">
+      <stop
+         id="stop14631"
+         style="stop-color:#ffffff"
+         offset="0" />
+      <stop
+         id="stop14632"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient17250">
+      <stop
+         id="stop17251"
+         style="stop-color:#dc0000"
+         offset="0" />
+      <stop
+         id="stop17252"
+         style="stop-color:#ffb200"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient26051">
+      <stop
+         id="stop26052"
+         style="stop-color:#ffffff;stop-opacity:.44928"
+         offset="0" />
+      <stop
+         id="stop26053"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient14625">
+      <stop
+         id="stop14626"
+         style="stop-color:#ffffff"
+         offset="0" />
+      <stop
+         id="stop14627"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3563"
+       y2="76.293999"
+       gradientUnits="userSpaceOnUse"
+       x2="507.63"
+       gradientTransform="translate(-313.09,42.247)"
+       y1="347.10001"
+       x1="494.23999"
+       inkscape:collect="always">
+      <stop
+         id="stop3559"
+         style="stop-color:black"
+         offset="0" />
+      <stop
+         id="stop3561"
+         style="stop-color:black;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <filter
+       id="filter4458"
+       inkscape:collect="always"
+       color-interpolation-filters="sRGB">
+      <feGaussianBlur
+         id="feGaussianBlur4460"
+         stdDeviation="8.8447956"
+         inkscape:collect="always" />
+    </filter>
+    <linearGradient
+       id="linearGradient4463"
+       y2="403.09"
+       xlink:href="#linearGradient14625"
+       gradientUnits="userSpaceOnUse"
+       x2="342.54001"
+       gradientTransform="matrix(0.68311,0,0,1.4639,22.742,-283.6)"
+       y1="246.21001"
+       x1="198.88"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4466"
+       y2="179.97"
+       xlink:href="#linearGradient26051"
+       gradientUnits="userSpaceOnUse"
+       x2="390.32001"
+       gradientTransform="matrix(0.54412,0,0,1.8378,0.3926,-250.42)"
+       y1="179.97"
+       x1="349.42999"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4470"
+       y2="306.76001"
+       xlink:href="#linearGradient17250"
+       gradientUnits="userSpaceOnUse"
+       x2="-1102.7"
+       gradientTransform="matrix(0.79621,0,0,1.7063,1125.5,-315.48)"
+       y1="404.57999"
+       x1="-1131"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4473"
+       y2="294.87"
+       xlink:href="#linearGradient26051"
+       gradientUnits="userSpaceOnUse"
+       x2="572.40997"
+       gradientTransform="matrix(0.60253,0,0,1.6597,0.3926,-252.45)"
+       y1="294.87"
+       x1="533.78003"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4476"
+       y2="485.78"
+       xlink:href="#linearGradient14625"
+       gradientUnits="userSpaceOnUse"
+       x2="317.14001"
+       gradientTransform="matrix(0.7951,0,0,1.2577,24.096,-278.86)"
+       y1="384.39999"
+       x1="501.39999"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4479"
+       y2="362.16"
+       xlink:href="#linearGradient17250"
+       gradientUnits="userSpaceOnUse"
+       x2="-857.96002"
+       gradientTransform="matrix(0.92675,0,0,1.4659,1125.5,-315.48)"
+       y1="438.47"
+       x1="-916.90002"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4489"
+       y2="853.09998"
+       gradientUnits="userSpaceOnUse"
+       x2="153.34"
+       gradientTransform="matrix(1.3317,0,0,0.75092,22.742,-276.15)"
+       y1="931.46002"
+       x1="124.57"
+       inkscape:collect="always">
+      <stop
+         id="stop13378"
+         style="stop-color:#fdffff"
+         offset="0" />
+      <stop
+         id="stop13379"
+         style="stop-color:#fdffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4498"
+       y2="500.79999"
+       gradientUnits="userSpaceOnUse"
+       x2="323.10001"
+       gradientTransform="matrix(0.80596,0,0,1.2407,18.001,-263.96)"
+       y1="256.78"
+       x1="9.6549997"
+       inkscape:collect="always">
+      <stop
+         id="stop29187"
+         style="stop-color:#ffffff"
+         offset="0" />
+      <stop
+         id="stop29188"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4501"
+       y2="232.89999"
+       xlink:href="#linearGradient26051"
+       gradientUnits="userSpaceOnUse"
+       x2="502.45001"
+       gradientTransform="matrix(0.60694,0,0,1.6476,0.3926,-250.42)"
+       y1="232.89999"
+       x1="468.41"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient4504"
+       y2="376.89999"
+       xlink:href="#linearGradient14625"
+       gradientUnits="userSpaceOnUse"
+       x2="239.46001"
+       gradientTransform="matrix(0.60192,0,0,1.6614,26.3,-269.45)"
+       y1="244.05"
+       x1="110.45"
+       inkscape:collect="always" />
+    <filter
+       id="filter6454"
+       height="1.3779"
+       width="1.136"
+       y="-0.18895"
+       x="-0.067992002"
+       inkscape:collect="always"
+       color-interpolation-filters="sRGB">
+      <feGaussianBlur
+         id="feGaussianBlur6456"
+         stdDeviation="7.2835937"
+         inkscape:collect="always" />
+    </filter>
+    <filter
+       id="filter8363"
+       height="1.6823"
+       width="1.2516"
+       y="-0.34112999"
+       x="-0.12582"
+       inkscape:collect="always"
+       color-interpolation-filters="sRGB">
+      <feGaussianBlur
+         id="feGaussianBlur8365"
+         stdDeviation="5.4634181"
+         inkscape:collect="always" />
+    </filter>
+    <linearGradient
+       id="linearGradient9274"
+       y2="1102.5"
+       xlink:href="#linearGradient14630"
+       gradientUnits="userSpaceOnUse"
+       x2="94.621002"
+       gradientTransform="matrix(1.1002,-1.2538,0.4506,0.39539,-311.02,864.05)"
+       y1="1126.7"
+       x1="82.559998"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient9276"
+       y2="713.54999"
+       xlink:href="#linearGradient14625"
+       gradientUnits="userSpaceOnUse"
+       x2="122.42"
+       gradientTransform="matrix(-0.34546,-1.1031,0.82555,-0.25853,-265.09,1483.1)"
+       y1="743.14001"
+       x1="78.646004"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3563"
+       id="linearGradient3221"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-313.09,42.247)"
+       x1="494.23999"
+       y1="347.10001"
+       x2="507.63"
+       y2="76.293999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3223"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.2948,-1.0517,-0.37798,0.46531,867.81,-33.651)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26051"
+       id="linearGradient3225"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.51746,-0.4067,0.36243,-0.74685,-331.74,418.2)"
+       x1="-960.97998"
+       y1="563.04999"
+       x2="-928.92999"
+       y2="563.04999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3227"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.6681,0,0,0.59948,24.837,-275.56)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14625"
+       id="linearGradient3229"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.156,0,0,0.86508,22.442,-276.15)"
+       x1="96.398003"
+       y1="789.25"
+       x2="142.50999"
+       y2="733.95001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3231"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.5531,0.60876,-0.21878,0.55814,242.02,-319.14)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3233"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1701,-1.1889,0.42727,0.4205,-456.67,35.746)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3235"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.69089,-1.5183,0.54565,0.24829,-495.04,283.93)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3237"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.70286,-1.5128,0.54367,-0.2526,-290.4,830.24)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3239"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.25641,-1.6483,-0.59236,-0.092149,851,668.48)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3241"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.74876,-1.4906,-0.5357,0.26909,944.83,255.49)"
+       x1="82.559998"
+       y1="1126.7"
+       x2="94.621002"
+       y2="1102.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26051"
+       id="linearGradient3243"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5769,-0.25828,0.2613,1.0001,490.26,-420.38)"
+       x1="-961.27002"
+       y1="562.82001"
+       x2="-929.40997"
+       y2="562.82001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26051"
+       id="linearGradient3245"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42511,-0.53051,0.57538,0.68663,219.53,-461.45)"
+       x1="-961.12"
+       y1="562.94"
+       x2="-929.15997"
+       y2="562.94" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26051"
+       id="linearGradient3247"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.019583,-0.86239,1.1799,-0.025248,-445.95,-360.55)"
+       x1="-961.33002"
+       y1="562.77002"
+       x2="-929.51001"
+       y2="562.77002" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26051"
+       id="linearGradient3249"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.5802,-0.42153,0.40645,-0.77422,-466.27,461.47)"
+       x1="-961.04999"
+       y1="562.98999"
+       x2="-929.03998"
+       y2="562.98999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient17250"
+       id="linearGradient3251"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93941,0,0,1.4462,1125.5,-315.48)"
+       x1="-1006.6"
+       y1="448.67999"
+       x2="-953.88"
+       y2="299.89001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4498"
+       id="linearGradient3253"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.80596,0,0,1.2407,18.001,-263.96)"
+       x1="9.6549997"
+       y1="256.78"
+       x2="323.10001"
+       y2="500.79999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient17250"
+       id="linearGradient3255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.70158,0,0,1.9364,1125.5,-315.48)"
+       x1="-1308.2"
+       y1="330.20001"
+       x2="-1335"
+       y2="272.82001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14625"
+       id="linearGradient3257"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.156,0,0,0.86508,22.742,-276.15)"
+       x1="78.646004"
+       y1="743.14001"
+       x2="122.42"
+       y2="713.54999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient26051"
+       id="linearGradient3259"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.60694,0,0,1.6476,0.3926,-250.42)"
+       x1="468.41"
+       y1="232.89999"
+       x2="502.45001"
+       y2="232.89999" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient14630"
+       id="linearGradient3261"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3185,0,0,0.75843,23.041,-277.35)"
+       x1="230.94"
+       y1="927.57001"
+       x2="163.66"
+       y2="832.44" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     pagecolor="#ffffff"
+     inkscape:zoom="0.9605174"
+     inkscape:window-x="-8"
+     borderopacity="1.0"
+     inkscape:current-layer="layer1"
+     inkscape:cx="485.96284"
+     inkscape:cy="176.01957"
+     inkscape:window-y="-8"
+     inkscape:window-height="988"
+     inkscape:pageopacity="0.0"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(-60.95064,-15.829491)">
+    <g
+       id="g9278"
+       transform="matrix(1.3860633,0,0,1,-23.530807,0)">
+      <path
+         id="path2412"
+         style="fill:url(#linearGradient3221);fill-rule:evenodd;filter:url(#filter4458)"
+         d="m 215.89,37.057 c -1.56,1.709 -3.13,3.417 -4.69,5.125 -9.31,12.175 -23.43,23.408 -22.69,40.282 -0.1,14.029 5.43,27.116 9.57,40.276 0.82,-0.94 1.64,-1.91 2.46,-2.9 0.18,0.48 0.35,0.94 0.54,1.44 7.16,-8.25 10.27,-14.33 11.31,-19.66 1.73,6.46 3,12.73 3.84,18.81 0.1,2.71 0.27,5.51 0.5,8.41 -7.8,32.63 -26.87,44.46 -23.4,79.69 -2.89,-19.64 -4.89,-36.69 -0.85,-51.13 -2.31,-17.9 -4.63,-33.2 -22.53,-45.91 5.49,22.24 11.83,55.76 -6.94,64.13 -2.99,6.15 -12.85,20.9 -15.25,43.28 -1.32,4.2 [...]
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15367"
+         style="fill:#924b00;fill-rule:evenodd;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 350.15,401.03 -77.1,-44.18 13,-10.39 77.1,19.06 -13,35.51 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15362"
+         style="fill:#c15300;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 340.42,373.48 c 5.31,-8.93 15.73,-12.26 23.25,-7.43 7.53,4.83 9.33,15.99 4.02,24.93 -5.32,8.93 -15.73,12.26 -23.26,7.43 -7.52,-4.83 -9.32,-15.99 -4.01,-24.93 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path18511"
+         style="fill:none;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 354.89,383.43 c 0.58,-0.49 0.89,0.63 0.74,1.07 -0.39,1.2 -1.86,1.18 -2.67,0.55 -1.46,-1.12 -1.37,-3.46 -0.3,-4.83 1.57,-2.01 4.43,-1.78 6.1,-0.03 2.23,2.34 1.95,6.31 -0.16,8.59 -2.64,2.87 -7.01,2.42 -9.51,-0.49 -3.03,-3.52 -2.55,-9.17 0.6,-12.34 3.71,-3.75 9.62,-3.07 12.94,1 3.83,4.69 3.14,12.04 -1.05,16.1 -4.77,4.62 -12.23,3.71 -16.36,-1.51 -4.63,-5.87 -3.75,-14.92 1.5,-19.87 5.83,-5.5 14.83,-4.35 19.78,2.04"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24798"
+         style="fill:url(#linearGradient3223);fill-rule:evenodd"
+         d="m 306.39,354.84 c -7.11,6.16 -11.78,4.67 -24.02,7.05 17.03,8.63 38.85,22.99 56.7,31.91 -3.76,-7.6 -3.23,-17.34 0.09,-25.41 -10.66,-0.66 -24.27,-3.26 -32.77,-13.55 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21020"
+         style="fill:url(#linearGradient3225)"
+         d="m 353.47,375.85 c 3.05,-6.29 9.03,-8.64 13.36,-5.24 4.32,3.4 5.36,11.26 2.3,17.55 -3.05,6.29 -9.03,8.63 -13.36,5.24 -4.32,-3.4 -5.35,-11.26 -2.3,-17.55 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15363"
+         style="fill:#924b00;fill-rule:evenodd;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 91.99,366.38 50.25,-13.86 39.85,3.47 -71.91,51.97 -6.93,-15.59 -11.26,-25.99 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15364"
+         style="fill:#924b00;fill-rule:evenodd;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 147.43,420.96 18.2,17.33 32.92,-48.52 -9.53,-9.53 -14.73,-1.73 -41.58,35.52 14.72,6.93 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15365"
+         style="fill:#924b00;fill-rule:evenodd;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 242.73,434.82 13.86,-5.2 -26.85,-97.03 -16.47,11.27 1.74,96.16 27.72,-5.2 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15366"
+         style="fill:#924b00;fill-rule:evenodd;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 300.77,437.42 -10.39,-3.47 -50.25,-66.7 14.73,-8.67 64.11,50.25 -15.6,11.26 -2.6,17.33 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path4578"
+         sodipodi:nodetypes="cccccccccccccccccccccccccccccc"
+         style="fill:#000000;fill-rule:evenodd;filter:url(#filter6454)"
+         d="m 180.81,316.6 -44.75,25.32 -0.32,-0.19 -5.09,9.84 33.69,23.1 8.62,-5 -5.94,9.47 0.29,0.09 -1.32,11 28.28,1.72 12.91,1.28 1.34,0.47 0.16,-0.31 1.34,0.12 -0.28,-2.56 12.66,-28.19 40.69,26.63 30.34,-8.66 v -11.28 l -0.06,0.03 v -0.19 l -1.16,0.38 -61.15,-33.38 v -12.75 l -16.19,4.03 -0.69,-0.37 -12.59,3.53 -20.78,-14.13 z m 77.21,31.19 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15358"
+         style="fill:#c15300;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 115.78,382.05 c 4.03,11.96 0.13,24.15 -8.7,27.22 -8.835,3.07 -19.271,-4.15 -23.299,-16.11 -4.027,-11.95 -0.128,-24.15 8.704,-27.21 8.835,-3.07 19.265,4.14 23.295,16.1 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15359"
+         style="fill:#c15300;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 160.64,415.1 c 8.4,8.21 10.21,19.99 4.05,26.29 -6.16,6.29 -17.97,4.74 -26.37,-3.47 -8.4,-8.21 -10.21,-19.98 -4.05,-26.28 6.16,-6.3 17.97,-4.75 26.37,3.46 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15360"
+         style="fill:#c15300;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 235.64,416.62 c 12.13,-0.3 22.14,7.77 22.34,18.01 0.2,10.24 -9.49,18.8 -21.62,19.1 -12.13,0.3 -22.14,-7.77 -22.34,-18.01 -0.2,-10.24 9.48,-18.8 21.62,-19.1 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15361"
+         style="fill:#c15300;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 290.65,412.58 c 5.4,-9.26 15.99,-12.71 23.64,-7.71 7.65,5.01 9.48,16.58 4.08,25.84 -5.4,9.26 -15.99,12.72 -23.64,7.71 -7.65,-5 -9.47,-16.58 -4.08,-25.84 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path16000"
+         style="fill:#994200;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+         d="m 135.38,341.58 44.97,-25.45 24.26,16.46 -22.45,30.98 -18.27,10.61 -28.51,-32.6 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path16001"
+         style="fill:#994200;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+         d="m 166.57,378.66 29.38,-46.93 34.65,-8.66 v 19.92 l -22.52,50.25 -41.51,-14.58 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15996"
+         style="fill:#c15300;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+         d="m 135.31,341.26 -5.1,9.83 33.68,23.09 3.76,-14.04 -32.34,-18.88 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15997"
+         style="fill:#c15300;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+         d="m 207.61,381.53 0.44,10.78 -42.5,-2.56 1.34,-11.24 40.72,3.02 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path17886"
+         style="fill:none;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 97.362,386.42 c 0.128,0.93 -0.879,0.42 -1.161,-0.05 -0.766,-1.28 -0.11,-2.72 0.738,-3.07 1.516,-0.61 3.301,1.2 3.911,3.27 0.89,3.04 -0.54,5.7 -2.64,6.07 -2.806,0.49 -5.789,-2.71 -6.656,-6.47 -1.091,-4.74 1.171,-8.75 4.537,-9.09 4.079,-0.41 8.289,4.23 9.399,9.69 1.31,6.44 -1.8,11.8 -6.433,12.1 -5.346,0.34 -10.801,-5.75 -12.15,-12.91 -1.533,-8.13 2.442,-14.86 8.337,-15.11 6.616,-0.28 13.316,7.27 14.896,16.12 1.76,9.83 -3.08,17.92 -10.236,18.12"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path18508"
+         style="fill:none;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 147.24,426.16 c 0.62,0.71 -0.5,0.83 -1,0.59 -1.34,-0.65 -1.58,-2.21 -1.06,-2.97 0.94,-1.34 3.42,-0.81 5.06,0.6 2.41,2.05 2.68,5.06 1.12,6.52 -2.08,1.95 -6.33,0.9 -9.12,-1.77 -3.51,-3.38 -3.8,-7.97 -1.17,-10.09 3.19,-2.58 9.25,-1 13.17,2.96 4.62,4.67 4.95,10.87 1.23,13.65 -4.28,3.21 -12.18,1.1 -17.23,-4.15 -5.73,-5.97 -6.09,-13.77 -1.29,-17.21 5.38,-3.85 15.12,-1.21 21.29,5.34 6.85,7.26 7.23,16.68 1.35,20.77"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path18509"
+         style="fill:none;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 234.69,436.26 c 0.81,0.24 0.07,1.1 -0.4,1.21 -1.28,0.3 -2.26,-0.97 -2.28,-2.01 -0.03,-1.85 2,-3.02 3.88,-2.83 2.76,0.27 4.5,2.84 4.15,5.22 -0.46,3.17 -4,5.05 -7.35,4.46 -4.21,-0.75 -6.79,-4.74 -6.03,-8.44 0.92,-4.49 6.02,-7.09 10.83,-6.08 5.67,1.19 9.09,6.63 7.91,11.65 -1.37,5.8 -8.04,9.14 -14.31,7.71 -7.13,-1.63 -11.4,-8.54 -9.78,-14.88 1.81,-7.11 10.05,-11.19 17.78,-9.32 8.59,2.07 13.71,10.43 11.66,18.09"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path18510"
+         style="fill:none;stroke:#000000;stroke-width:1.90069997;stroke-linejoin:bevel;stroke-opacity:0.34350999"
+         d="m 304.99,421.92 c 0.57,-0.25 0.49,0.78 0.25,1.11 -0.64,0.91 -1.73,0.5 -2.17,-0.26 -0.77,-1.35 -0.03,-3.3 1.16,-4.17 1.75,-1.28 3.83,-0.32 4.59,1.63 1,2.59 -0.34,5.87 -2.57,7.24 -2.81,1.71 -5.96,0.14 -7.01,-3 -1.26,-3.81 0.71,-8.47 3.98,-10.31 3.85,-2.17 8.1,0.02 9.43,4.37 1.53,5.02 -1.08,11.07 -5.39,13.37 -4.9,2.63 -10.24,-0.18 -11.85,-5.73 -1.8,-6.24 1.45,-13.67 6.8,-16.45 5.94,-3.08 12.38,0.35 14.27,7.11"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21024"
+         style="fill:url(#linearGradient3227);fill-rule:evenodd"
+         d="m 208.25,380.47 1.33,12.58 -43.39,-4.36 1.34,-11.24 40.72,3.02 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21022"
+         style="fill:url(#linearGradient3229);fill-rule:evenodd"
+         d="m 168.4,377.6 18.91,-31.66 7.71,0.92 21.25,12.74 -9.05,21.8 -38.82,-3.8 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24782"
+         style="fill:url(#linearGradient3231);fill-rule:evenodd"
+         d="m 165.29,361.27 -1.85,11.59 -32.22,-21.98 5.34,-9.98 28.73,20.37 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24788"
+         style="fill:url(#linearGradient3233);fill-rule:evenodd"
+         d="m 140.04,359.91 c 6.51,4.08 13.02,8.16 19.52,12.25 -14.44,9.91 -27.6,18.86 -43.33,29.74 2.89,-7.98 3.2,-17.23 -0.99,-24.88 10.52,-1.84 17.5,-5.94 24.8,-17.11 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24790"
+         style="fill:url(#linearGradient3235);fill-rule:evenodd"
+         d="m 171.55,390.97 c 9.12,0.64 15.02,0.31 24.46,1.26 -9.52,13.95 -15.27,23.01 -27.27,38.95 -0.03,-8.48 -4.84,-16.96 -11.4,-22.71 9.25,-5.34 11.18,-4.5 14.21,-17.5 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24792"
+         style="fill:url(#linearGradient3237);fill-rule:evenodd"
+         d="m 224.11,365.22 c 7.71,5.63 12.21,7.41 16.71,9.83 4.21,17 7.98,28.6 12.64,47.15 -6.45,-5.5 -15.01,-9.04 -23.64,-7.8 1.97,-10.5 2.19,-38.42 -5.71,-49.18 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24794"
+         style="fill:url(#linearGradient3239);fill-rule:evenodd"
+         d="m 223.63,363.88 c -4.26,5.9 -6.59,10.83 -9.56,15.45 0.66,17.51 0.68,28.58 1.33,47.69 5.32,-8.36 11.92,-12.85 20.56,-14.04 -4.8,-9.55 -16.94,-36.58 -12.33,-49.1 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24796"
+         style="fill:url(#linearGradient3241);fill-rule:evenodd"
+         d="m 262.94,388.47 c -3.73,-2.08 -0.45,1.27 -9.85,-5.07 10.05,13.57 21.5,29.29 34.11,44.76 -2.98,-10.01 4.18,-17.14 10.52,-23.13 -9.45,-4.98 -17.09,-19 -34.78,-16.56 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21016"
+         style="fill:url(#linearGradient3243)"
+         d="m 100.69,382.77 c 2.2,8.41 0.07,17 -4.756,19.16 -4.823,2.16 -10.522,-2.92 -12.721,-11.34 -2.2,-8.42 -0.07,-17 4.752,-19.16 4.823,-2.16 10.522,2.92 12.725,11.34 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21017"
+         style="fill:url(#linearGradient3245)"
+         d="m 148.09,418.45 c 4.84,5.78 5.89,14.07 2.33,18.51 -3.55,4.43 -10.36,3.34 -15.21,-2.44 -4.84,-5.78 -5.89,-14.07 -2.34,-18.51 3.56,-4.43 10.37,-3.34 15.22,2.44 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21018"
+         style="fill:url(#linearGradient3247)"
+         d="m 236.3,427.51 c 9.93,-0.22 18.12,5.46 18.28,12.67 0.17,7.21 -7.76,13.24 -17.69,13.45 -9.93,0.21 -18.12,-5.47 -18.29,-12.68 -0.16,-7.21 7.77,-13.23 17.7,-13.44 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21019"
+         style="fill:url(#linearGradient3249)"
+         d="m 302.09,417.57 c 3.42,-6.52 10.13,-8.95 14.98,-5.43 4.85,3.52 6.01,11.67 2.59,18.19 -3.42,6.52 -10.14,8.95 -14.99,5.43 -4.84,-3.53 -6,-11.67 -2.58,-18.19 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15991"
+         style="fill:url(#linearGradient3251);fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 135.31,265.02 c 19.34,57.18 49.95,87.5 104.82,90.97 60.35,19.34 116.38,-20.22 100.49,-82.3 -7.22,13.28 -11.84,20.5 -24.25,24.25 4.91,-34.36 -26.57,-40.14 -11.27,-77.1 10.69,-22.81 17.04,-50.82 -1.73,-73.64 -7.79,25.99 -17.32,43.32 -36.38,62.38 2.02,-31.77 18.77,-57.47 8.66,-87.5 1.44,-20.21 -31.77,-19.64 -32.05,-81.435 -21.08,26.568 -30.04,47.07 -26.86,87.495 -7.8,32.64 -26.86,44.47 -23.39,79.71 -2.89,-19.64 -4.91,-36.68 -0.87,-51.12 -2.31,-17.9 -4.62,-33.21 -22.52,-45.91 5 [...]
+         inkscape:connector-curvature="0" />
+      <path
+         id="path29198"
+         style="fill:url(#linearGradient3253);fill-rule:evenodd"
+         d="m 237.31,53.087 c -14.99,19.685 -21.35,44.824 -19.44,69.333 1.43,11.99 -4.94,23.15 -9.48,33.86 -8.34,15.96 -15.89,33.39 -13.61,51.83 -0.65,10.63 -5.37,-0.08 -4.88,-5.43 -2.26,-15.03 -3.23,-30.63 -0.14,-45.52 -1.56,-14.49 -5.23,-30.2 -17.2,-39.73 3.56,17.2 8.18,36.59 -0.4,53.03 -3.08,5.51 -9.96,7.01 -11.4,13.63 -14.45,25.3 -15.53,56.84 -4.57,83.63 2.28,6.1 5.26,11.92 7.84,17.9 -8.04,-4.6 -16.88,-7.72 -24.65,-12.75 10.77,31.54 31.26,62.58 63.6,74.86 12.71,5.41 26.58,6.42 40.02, [...]
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15990"
+         style="fill:url(#linearGradient3255);fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 234.07,347.32 c -45.92,-48.51 -53.72,-82.3 -23.39,-114.35 34.07,-60.64 25.7,-98.76 0.86,-135.15 23.39,80.57 -27.72,132.55 -44.18,155.94 -9.82,-30.32 -1.44,-43.32 12.13,-80.57 -26.57,28.88 -42.74,63.82 -32.92,97.03 17.9,49.96 60.06,60.93 87.5,77.1 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15994"
+         style="fill:#ffd700;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 289.79,164.02 c -6.16,-17.9 -1.13,-21.73 4.26,-29.55 5.56,-2.17 3.85,-9.72 6.89,-26.54 4.59,18.77 16.93,27.31 -11.15,56.09 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path20387"
+         style="fill:none;stroke:#000000;stroke-width:1.08610001pt;stroke-opacity:0.17938998"
+         d="m 168.17,360.4 13.06,-5.94"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path24159"
+         style="fill:url(#linearGradient3257);fill-rule:evenodd"
+         d="m 137.42,341.68 26.98,-14.9 22.08,17.69 -5.39,9.14 -13.84,5.94 -29.83,-17.87 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path28563"
+         style="fill:url(#linearGradient3259);fill-rule:evenodd"
+         d="m 296.71,104.99 c -1.88,7.98 -1.03,16.77 -4.5,24.22 -8.15,6.22 -11.7,17.77 -8.13,27.58 1.11,8.22 3.68,9.64 8.24,2.13 9.73,-10.01 18.84,-24.36 13.3,-38.71 -2.5,-7.32 -4.69,-14.75 -7.48,-21.973 -0.48,2.253 -0.96,4.503 -1.43,6.753 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path16002"
+         style="fill:#994200;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+         d="m 198.55,341.26 64.11,43.31 30.32,-14.72 -76.24,-41.59 -21.66,6.07 3.47,6.93 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path20388"
+         style="fill:none;stroke:#000000;stroke-width:1.08610001pt;stroke-opacity:0.17938998"
+         d="M 207.37,380.99 217.66,360"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21027"
+         style="fill:url(#linearGradient3261);fill-rule:evenodd"
+         d="m 195.53,339.72 64.11,43.31 30.32,-14.72 -76.24,-41.59 -21.66,6.07 3.47,6.93 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15998"
+         style="fill:#c15300;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+         d="m 195.08,334.33 v 10.39 l 67.58,44.19 30.32,-8.67 v -11.26 l -27.73,8.66 -70.17,-43.31 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path21028"
+         style="fill:url(#linearGradient4489);fill-rule:evenodd"
+         d="m 195.02,334.18 v 10.39 l 67.57,44.18 30.32,-8.66 v -11.26 l -27.72,8.66 -70.17,-43.31 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path6461"
+         style="fill:#000000;fill-rule:evenodd;filter:url(#filter8363)"
+         d="m 281.37,323.77 -20.65,22.5 66.56,8.63 0.87,0.9 19.41,-21.47 -7.28,-7.96 -0.69,0.81 -58.22,-3.41 z"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g30446"
+         transform="translate(34.258,-832.81)">
+        <path
+           id="path16003"
+           sodipodi:nodetypes="ccccc"
+           style="fill:#994200;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+           d="m 307.14,1159 -58.99,-3.5 -20.66,22.5 67.89,8.8 11.76,-27.8 z"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path15999"
+           sodipodi:nodetypes="ccccc"
+           style="fill:#c15300;fill-rule:evenodd;stroke:#000000;stroke-width:1.42550004;stroke-opacity:0.20229002"
+           d="m 288.13,1180.4 6.81,7.2 19.4,-21.5 -7.28,-8 -18.93,22.3 z"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path20389"
+           style="fill:none;stroke:#000000;stroke-width:1.08610001pt;stroke-opacity:0.17938998"
+           d="m 288.92,1180.4 -46.32,-6.3"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path24784"
+           sodipodi:nodetypes="ccccc"
+           style="fill:url(#linearGradient9274);fill-rule:evenodd"
+           d="m 307.55,1159.2 5.84,7 -18.42,20.7 -6.37,-7.2 18.95,-20.5 z"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path24786"
+           sodipodi:nodetypes="cccccc"
+           style="fill:url(#linearGradient9276);fill-rule:evenodd"
+           d="m 287.85,1179.8 -39.05,-5.8 23.98,-16.2 15.8,0.7 16.39,0.6 -17.12,20.7 z"
+           inkscape:connector-curvature="0" />
+      </g>
+      <path
+         id="path15993"
+         style="fill:#ffd700;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 329.36,273.69 c 15.88,-15.31 12.71,-21.95 11.26,-32.92 -4.62,-5.2 1.16,-12.13 6.93,-31.19 -14.72,17.04 -32.05,19.35 -18.19,64.11 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15992"
+         style="fill:url(#linearGradient4479);fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 254.86,347.32 c 17.9,-10.1 22.81,-41.87 25.12,-77.1 4.33,-34.08 13,-68.15 70.17,-73.64 -23.39,18.77 -42.45,41.87 -33.78,84.9 -2.31,62.67 -48.81,60.36 -61.51,65.84 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path26056"
+         style="fill:url(#linearGradient4476);fill-rule:evenodd"
+         d="m 343.56,191.6 c -24.38,3.46 -49.51,18.11 -56.66,42.99 -11.49,31.1 -5.14,66.49 -20.8,96.36 -5.95,2.58 -4.5,13.67 2.85,11.5 21.51,-3.9 41.94,-18.85 47.39,-40.78 5.25,-15.24 2.27,-31.35 1.71,-47 0.72,-22.69 13.86,-43.16 31.11,-57.16 3.02,-4.35 -2.02,-5.81 -5.6,-5.91 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path28562"
+         style="fill:url(#linearGradient4473);fill-rule:evenodd"
+         d="m 343.86,203.49 c -9.82,10.4 -24.08,20.13 -23.73,36.12 -0.73,11.46 3.35,22.38 5.89,33.38 8.53,-8.14 18.22,-18.74 15.1,-31.58 -0.03,-5.65 -4.29,-10.6 -0.94,-16.11 3.21,-8.73 6.57,-17.41 8.81,-26.47 -1.71,1.55 -3.42,3.1 -5.13,4.66 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15989"
+         style="fill:url(#linearGradient4470);fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 223.67,323.93 c -2.31,-27.72 -5.49,-47.65 29.46,-72.77 59.19,-41.29 30.03,-65.26 -6.93,-108.29 10.97,42.74 -6.65,76.81 -21.66,99.63 -9.82,14.15 -43.9,43.02 -0.87,81.43 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path15995"
+         style="fill:#ffd700;fill-rule:evenodd;stroke:#ffff00;stroke-width:2.15630007;stroke-opacity:0.50382002"
+         d="m 201.09,120.58 c 15.99,-18.41 11.88,-25.987 9.27,-38.663 -5.55,-5.843 0.13,-14.122 4.68,-36.476 -14.56,20.374 -33.35,23.763 -13.95,75.139 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path28564"
+         style="fill:url(#linearGradient4466);fill-rule:evenodd"
+         d="m 211.21,41.518 c -9.31,12.174 -23.43,23.408 -22.69,40.281 -0.1,14.03 5.43,27.121 9.56,40.281 8.44,-9.63 17.42,-21.87 13.66,-35.445 0.03,-5.372 -3.73,-9.542 -3.84,-14.616 2.06,-11.975 6.31,-23.543 7.99,-35.626 -1.56,1.708 -3.12,3.417 -4.68,5.125 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path26055"
+         style="fill:url(#linearGradient4463);fill-rule:evenodd"
+         d="m 245.3,135.71 c 6.41,29.13 -0.19,59.83 -14.93,85.42 -9.15,17.6 -27.2,31.08 -28.92,52.01 -2.76,18.25 10.39,33.46 22.57,45.24 4.96,6.24 0.71,-8.51 1.38,-11.96 -1.98,-17.95 1.1,-38.09 15.58,-50.4 16.13,-15.69 39.13,-26.56 46.85,-49.11 5.23,-19.91 -8.7,-37.76 -20.84,-51.9 -7.32,-8.88 -15.04,-17.41 -22.72,-25.99 0.35,2.23 0.69,4.46 1.03,6.69 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path26054"
+         style="fill:url(#linearGradient4504);fill-rule:evenodd"
+         d="m 216.21,109.86 c 0.63,13.78 4.55,27.42 2.75,41.33 -1.58,32.46 -15.84,63 -35.54,88.41 -3.65,5.19 -7.54,10.21 -11.31,15.32 -5.03,-16.77 -2.76,-34.86 4.02,-50.77 3.57,-8.51 6.08,-17.34 7.39,-26.48 -18.82,17.17 -32.11,40.57 -36.78,65.63 -3.79,23.17 4.36,46.99 19.73,64.4 19.32,22.8 47.11,35.61 74.05,47.06 -15.26,-21.46 -36.51,-40.83 -41.02,-67.96 -3.1,-15.75 3.1,-31.55 13.45,-43.33 11.84,-16.27 19.21,-35.61 23.59,-55.15 5.69,-25.43 1.13,-52.94 -12.77,-74.99 -3.43,-2.51 -9.56,-15. [...]
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+  <metadata
+     id="metadata125">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2006-10-24T11:35:21</dc:date>
+        <dc:description>This fire is of the commemorative parties of São João, June Holiday's.
+\n
+\nFogueira comemorativa das festas de São João. Festejos de Junho.
+\n
+\nProduced with Inkscape 0.44+Devel and the shadow is blur tool.</dc:description>
+        <dc:source>https://openclipart.org/detail/876/fire-june-holidays-by-valessiobrito</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>valessiobrito</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>camp</rdf:li>
+            <rdf:li>campfire</rdf:li>
+            <rdf:li>commemorative</rdf:li>
+            <rdf:li>evening</rdf:li>
+            <rdf:li>fire</rdf:li>
+            <rdf:li>flame</rdf:li>
+            <rdf:li>heat</rdf:li>
+            <rdf:li>holiday</rdf:li>
+            <rdf:li>light source</rdf:li>
+            <rdf:li>party</rdf:li>
+            <rdf:li>warm</rdf:li>
+            <rdf:li>wood</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/images/presets/leisure/fitness_station.svg b/images/presets/leisure/fitness_station.svg
new file mode 100644
index 0000000..2dee171
--- /dev/null
+++ b/images/presets/leisure/fitness_station.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="495.00113"
+   height="402.08099"
+   viewBox="0 0 495.00113 402.08099"
+   enable-background="new 0 0 580 580"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="02.svg"><metadata
+   id="metadata21"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs19">
+	
+
+		
+		
+		
+	</defs><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview17"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="1.1508772"
+   inkscape:cx="328.1643"
+   inkscape:cy="139.8993"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" />
+
+<path
+   d="m 282.975,61.863 c 8.312,0 15.545,-3 21.703,-9.002 6.155,-6.002 9.234,-13.31 9.234,-21.922 0,-8.622 -3.079,-15.934 -9.234,-21.936 C 298.52,3.002 291.286,0 282.975,0 c -8.614,0 -15.921,3.002 -21.922,9.003 -6.002,6.002 -9.004,13.313 -9.002,21.936 -0.002,8.612 3,15.92 9.002,21.922 6.001,6.002 13.307,9.002 21.922,9.002 z"
+   id="path11"
+   style="fill:#501616"
+   inkscape:connector-curvature="0" /><path
+   d="m 26.296,246.986 83.56,0 c 3.389,0 6.465,-0.306 9.228,-0.916 7.081,-1.23 12.007,-3.386 14.778,-6.467 l 41.082,-45.703 48.014,46.168 -19.386,86.32 c -0.62,1.851 -0.93,3.391 -0.93,4.621 0,5.541 2,10.312 6.001,14.313 4.001,4.001 8.772,6.002 14.315,6.002 10.462,0 16.928,-5.387 19.399,-16.16 l 23.542,-104.789 c 2.771,-11.083 1.541,-19.24 -3.691,-24.472 l -42.011,-42.013 45.703,-53.085 29.544,29.543 c 3.08,3.071 6.621,4.607 10.623,4.607 5.231,0 10.307,-2.306 15.229,-6.917 L 369.31,90.024 [...]
+   id="path13"
+   style="fill:#501616"
+   inkscape:connector-curvature="0" /><path
+   d="m 490.931,87.61 c 4.158,-2.724 5.321,-8.302 2.599,-12.46 -2.723,-4.157 -8.3,-5.323 -12.46,-2.599 l -113,74 c -3.451,2.26 -4.924,6.576 -3.574,10.475 l 73.093,211.055 -420.589,0 c -9.389,0 -17,7.611 -17,17 0,9.389 7.611,17 17,17 l 457,0 c 9.389,0 17,-7.611 17,-17 0,-9.389 -7.611,-17 -17,-17 l -17.362,0 -72.837,-210.315 107.13,-70.156 z"
+   id="path15"
+   style="fill:#ff0000"
+   inkscape:connector-curvature="0" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/leisure/garden.png b/images/presets/leisure/garden.png
new file mode 100644
index 0000000..61042bb
Binary files /dev/null and b/images/presets/leisure/garden.png differ
diff --git a/images/presets/leisure/nature_reserve.png b/images/presets/leisure/nature_reserve.png
new file mode 100644
index 0000000..da991ae
Binary files /dev/null and b/images/presets/leisure/nature_reserve.png differ
diff --git a/images/presets/leisure/nightclub.png b/images/presets/leisure/nightclub.png
new file mode 100644
index 0000000..cc937d1
Binary files /dev/null and b/images/presets/leisure/nightclub.png differ
diff --git a/images/presets/leisure/park.png b/images/presets/leisure/park.png
new file mode 100644
index 0000000..e680863
Binary files /dev/null and b/images/presets/leisure/park.png differ
diff --git a/images/presets/leisure/picnic.png b/images/presets/leisure/picnic.png
new file mode 100644
index 0000000..ad4a98b
Binary files /dev/null and b/images/presets/leisure/picnic.png differ
diff --git a/images/presets/leisure/playground.svg b/images/presets/leisure/playground.svg
new file mode 100644
index 0000000..5dfcbe4
--- /dev/null
+++ b/images/presets/leisure/playground.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   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"
+   version="1.0"
+   width="18"
+   height="18"
+   id="svg2">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <g
+     transform="matrix(6.7201909e-2,0,0,6.7227152e-2,-14.47422,-27.17495)"
+     id="g2168">
+    <rect
+       width="250"
+       height="250"
+       ry="48.57143"
+       x="224.28572"
+       y="413.07645"
+       style="fill:#c7f1a3;fill-opacity:1;stroke:#000000;stroke-width:17.79999924;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.10000002;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3165" />
+    <path
+       d="M 247.27748,532.72088 L 451.29396,572.95821"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:14.19999981;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.10000002;stroke-dasharray:none;stroke-opacity:1"
+       id="path2383" />
+    <path
+       d="M 349.28571,554.13022 L 327.77308,599.29833 L 370.79835,599.29833 L 349.28571,554.13022 z "
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.83189112px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path2385" />
+    <g
+       id="g3189" />
+    <g
+       transform="matrix(0.8785919,0.3718702,-0.3462376,0.9436356,143.99832,-69.706166)"
+       id="g3185">
+      <path
+         d="M 338.53918,463.22191 C 329.58668,464.8893 317.58246,511.84896 317.58246,511.84896 L 352.1962,507.06244 C 352.1962,507.06244 347.86669,522.57427 344.01118,534.07986 C 341.60652,541.25572 349.61825,543.57042 353.65106,535.609 C 361.10006,520.90345 366.70326,504.64933 366.70326,504.64933 C 366.70326,504.64933 347.9936,461.46108 338.53918,463.22191 z "
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.33470964px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3181" />
+      <path
+         d="M 286.86472,449.50504 C 286.86828,454.63621 283.15421,458.79796 278.57144,458.79796 C 273.98867,458.79796 270.2746,454.63621 270.27816,449.50504 C 270.2746,444.37387 273.98867,440.21212 278.57144,440.21212 C 283.15421,440.21212 286.86828,444.37387 286.86472,449.50504 z "
+         transform="matrix(-1.664894,-0.163643,-0.2881576,1.3383147,941.37379,-110.14043)"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:5.9000001;stroke-miterlimit:4;stroke-dasharray:none"
+         id="path3183" />
+    </g>
+    <g
+       transform="matrix(-0.9492779,-9.5302988e-2,-0.1490016,0.9940458,828.53274,98.070173)"
+       id="g3193">
+      <path
+         d="M 338.53918,463.22191 C 329.58668,464.8893 317.58246,511.84896 317.58246,511.84896 L 352.1962,507.06244 C 352.1962,507.06244 347.86669,522.57427 344.01118,534.07986 C 341.60652,541.25572 349.61825,543.57042 353.65106,535.609 C 361.10006,520.90345 366.70326,504.64933 366.70326,504.64933 C 366.70326,504.64933 347.9936,461.46108 338.53918,463.22191 z "
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.33470964px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path3195" />
+      <path
+         d="M 286.86472,449.50504 C 286.86828,454.63621 283.15421,458.79796 278.57144,458.79796 C 273.98867,458.79796 270.2746,454.63621 270.27816,449.50504 C 270.2746,444.37387 273.98867,440.21212 278.57144,440.21212 C 283.15421,440.21212 286.86828,444.37387 286.86472,449.50504 z "
+         transform="matrix(-1.664894,-0.163643,-0.2881576,1.3383147,941.37379,-110.14043)"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:5.9000001;stroke-miterlimit:4;stroke-dasharray:none"
+         id="path3197" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/leisure/sauna.png b/images/presets/leisure/sauna.png
new file mode 100644
index 0000000..6a3818c
Binary files /dev/null and b/images/presets/leisure/sauna.png differ
diff --git a/images/presets/leisure/stripclub.png b/images/presets/leisure/stripclub.png
new file mode 100644
index 0000000..cc00355
Binary files /dev/null and b/images/presets/leisure/stripclub.png differ
diff --git a/images/presets/theater.png b/images/presets/leisure/theater.png
similarity index 100%
rename from images/presets/theater.png
rename to images/presets/leisure/theater.png
diff --git a/images/presets/leisure/theme_park.svg b/images/presets/leisure/theme_park.svg
new file mode 100644
index 0000000..05e9e26
--- /dev/null
+++ b/images/presets/leisure/theme_park.svg
@@ -0,0 +1,335 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="687.5"
+   id="svg1"
+   inkscape:export-filename="P:\Artwork\baloon.png"
+   inkscape:export-xdpi="72.000000"
+   inkscape:export-ydpi="72.000000"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="recreation2.svg"
+   sodipodi:version="0.32"
+   width="687.5"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>festive</rdf:li>
+            <rdf:li>party</rdf:li>
+            <rdf:li>recreation</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Jean-Victor Balin (balin_j at epita.fr)</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin (balin_j at epita.fr)</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin (balin_j at epita.fr)</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient12909">
+      <stop
+         id="stop12910"
+         offset="0.00000000"
+         style="stop-color:#f5db94;stop-opacity:1.0000000;" />
+      <stop
+         id="stop12911"
+         offset="1.0000000"
+         style="stop-color:#be7900;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient12906">
+      <stop
+         id="stop12907"
+         offset="0.00000000"
+         style="stop-color:#67e869;stop-opacity:1.0000000;" />
+      <stop
+         id="stop12908"
+         offset="1.0000000"
+         style="stop-color:#1a4c00;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10342">
+      <stop
+         id="stop10343"
+         offset="0.00000000"
+         style="stop-color:#67e869;stop-opacity:1.0000000;" />
+      <stop
+         id="stop10344"
+         offset="1.0000000"
+         style="stop-color:#1a4c00;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient9715">
+      <stop
+         id="stop9716"
+         offset="0.00000000"
+         style="stop-color:#67ff69;stop-opacity:1.0000000;" />
+      <stop
+         id="stop9717"
+         offset="1.0000000"
+         style="stop-color:#1a7600;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient9088">
+      <stop
+         id="stop9089"
+         offset="0.00000000"
+         style="stop-color:#c5ab00;stop-opacity:1.0000000;" />
+      <stop
+         id="stop9090"
+         offset="1.0000000"
+         style="stop-color:#746b00;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8463">
+      <stop
+         id="stop8464"
+         offset="0.00000000"
+         style="stop-color:#ffe59e;stop-opacity:1.0000000;" />
+      <stop
+         id="stop8465"
+         offset="1.0000000"
+         style="stop-color:#db8e00;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4088">
+      <stop
+         id="stop4089"
+         offset="0.00000000"
+         style="stop-color:#a00000;stop-opacity:1.0000000;" />
+      <stop
+         id="stop4090"
+         offset="1.0000000"
+         style="stop-color:#510000;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3462">
+      <stop
+         id="stop3463"
+         offset="0.00000000"
+         style="stop-color:#ff5f5f;stop-opacity:1.0000000;" />
+      <stop
+         id="stop3464"
+         offset="1.0000000"
+         style="stop-color:#890000;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="0.19642857"
+       cy="0.2578125"
+       fx="0.2142857"
+       fy="0.2421875"
+       id="radialGradient3465"
+       inkscape:collect="always"
+       r="0.66089904"
+       xlink:href="#linearGradient3462" />
+    <linearGradient
+       id="linearGradient4087"
+       inkscape:collect="always"
+       x1="0.64754099"
+       x2="0.6557377"
+       xlink:href="#linearGradient4088"
+       y1="0.6484375"
+       y2="0.3046875" />
+    <radialGradient
+       cx="0.27528578"
+       cy="0.29355103"
+       fx="0.27044234"
+       fy="0.27903414"
+       id="radialGradient8466"
+       inkscape:collect="always"
+       r="0.64223677"
+       xlink:href="#linearGradient8463" />
+    <radialGradient
+       cx="0.19642857"
+       cy="0.2578125"
+       fx="0.2142857"
+       fy="0.2421875"
+       id="radialGradient9718"
+       inkscape:collect="always"
+       r="0.66089904"
+       xlink:href="#linearGradient9715" />
+    <linearGradient
+       id="linearGradient10341"
+       inkscape:collect="always"
+       x1="0.46666667"
+       x2="0.23333333"
+       xlink:href="#linearGradient10342"
+       y1="1.03125"
+       y2="0.1796875" />
+    <linearGradient
+       id="linearGradient12905"
+       inkscape:collect="always"
+       x1="0.49193549"
+       x2="0.69354838"
+       xlink:href="#linearGradient12909"
+       y1="0.875"
+       y2="0.34375" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:cx="-191.45345"
+     inkscape:cy="531.40175"
+     inkscape:grid-bbox="false"
+     inkscape:grid-points="false"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.42998505"
+     pagecolor="#ffffff"
+     showgrid="true"
+     inkscape:current-layer="svg1"
+     units="px"
+     inkscape:window-maximized="1" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.11514652;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4179"
+     width="686.38483"
+     height="686.38483"
+     x="0.55757326"
+     y="0.55760437" />
+  <g
+     id="g11034"
+     transform="translate(-34.88493,-27.61724)">
+    <path
+       d="m 270.41041,320.46525 c -15.69626,33.09767 13.93913,62.90464 35.91665,84.01144 21.65726,20.68541 22.63385,51.05096 17.18343,78.44573 -4.07195,34.22013 -1.18807,73.44199 26.19689,97.99113 22.5108,20.78411 46.01128,54.20099 26.95798,84.77566 -2.20285,3.72121 -4.93534,7.1374 -8.14372,10.04188"
+       id="path10369"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.66440129;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 118.73761,505.50611 c 5.92049,4.54502 8.14503,12.2066 8.89909,19.32712 0.59266,3.15428 0.11828,6.3348 0.17203,9.50269 0.0171,2.33202 1.32763,5.51901 4.18802,4.91107 2.01504,-0.53308 3.73287,-1.87874 5.42656,-3.07035 4.31033,-3.43035 7.4337,-8.72955 12.99766,-10.30624 4.61463,-0.89638 9.69879,-0.94788 13.53927,-4.03253 2.61724,-1.86527 1.95447,-6.0387 -1.15411,-6.96164 -3.20591,-1.42832 -6.8713,-1.91376 -9.60161,-4.3005 -7.01748,-4.78095 -11.38862,-12.43053 -14.36168,-20.20229 [...]
+       id="path9092"
+       style="fill:url(#linearGradient10341);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.710507,0,0,0.710507,163.3868,-43.44494)"
+       inkscape:connector-curvature="0" />
+    <ellipse
+       id="path9093"
+       style="fill:url(#radialGradient9718);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.598546,-0.416502,0.414663,0.595902,-137.1147,141.6126)"
+       cx="315.09225"
+       cy="321.40948"
+       rx="155.64345"
+       ry="181.74011" />
+  </g>
+  <g
+     id="g13540"
+     transform="translate(-34.88493,-27.61724)">
+    <path
+       d="m 302.33609,531.99524 c -3.80669,44.12102 -27.5241,91.41466 -4.53752,133.95036 30.05164,45.86764 97.20361,51.31306 120.33411,103.76106 19.35629,33.49601 16.2321,72.75129 12.64291,109.64194 -2.51541,28.90739 2.17293,60.27497 23.71764,81.49211 12.74109,17.14391 24.17359,37.40155 22.26754,59.54359"
+       id="path2211"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.710507,0,0,0.710507,163.3868,-43.44494)"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 292.88809,498.92725 c 2.26367,7.11233 -0.28649,14.67176 -3.73462,20.94718 -1.31519,2.92763 -3.52121,5.26733 -5.28653,7.89832 -1.31795,1.92395 -2.06257,5.28846 0.63256,6.42323 1.95847,0.71339 4.13712,0.59001 6.20797,0.57932 5.49737,-0.35376 11.0879,-2.91949 16.55551,-1.03567 4.29981,1.90001 8.50244,4.76169 13.41669,4.42334 3.2137,-0.0362 5.05345,-3.84038 3.02901,-6.3735 -1.81567,-3.00355 -4.54705,-5.49561 -5.4249,-9.0142 -3.02936,-7.93256 -2.24804,-16.70824 -0.24935,-24.78565  [...]
+       id="path1553"
+       style="fill:url(#linearGradient4087);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.710507,0,0,0.710507,163.3868,-43.44494)"
+       inkscape:connector-curvature="0" />
+    <ellipse
+       id="path930"
+       style="fill:url(#radialGradient3465);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.729199,0,0,0.725978,155.025,-51.69274)"
+       cx="315.09225"
+       cy="321.40948"
+       rx="155.64345"
+       ry="181.74011" />
+  </g>
+  <g
+     id="g16031">
+    <path
+       d="m 501.47092,536.35583 c -24.94245,36.68873 -40.01561,84.73953 -19.10656,126.80194 13.11516,41.23101 18.13066,90.84855 -10.52372,127.01771 -25.03396,36.0823 -27.41254,81.50345 -15.47412,122.64692 10.69088,42.80474 -9.67709,83.28638 -32.71557,117.9458 l -3.5782,5.6051"
+       id="path7211"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.710507,0,0,0.710507,128.5019,-71.06218)"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 500.45378,509.4209 c 0.031,7.46381 -4.66503,13.91331 -9.83347,18.86888 -2.13121,2.39972 -4.93642,3.97182 -7.40833,5.95377 -1.83342,1.44124 -3.55099,4.4286 -1.3191,6.31807 1.65514,1.26691 3.77083,1.80132 5.74993,2.41098 5.35121,1.30798 11.45341,0.53329 16.10645,3.96735 3.53393,3.09995 6.68729,7.08839 11.4775,8.23652 3.07718,0.92745 5.97129,-2.15166 4.7979,-5.17461 -0.83337,-3.40931 -2.69357,-6.60469 -2.47796,-10.22472 -0.51603,-8.47563 2.85628,-16.61507 7.18112,-23.72387 1.262 [...]
+       id="path4713"
+       style="fill:url(#linearGradient12905);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.710507,0,0,0.710507,128.5019,-71.06218)"
+       inkscape:connector-curvature="0" />
+    <ellipse
+       id="path4714"
+       style="fill:url(#radialGradient8466);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.695765,0.21827,-0.217306,0.692692,386.1197,-120.0155)"
+       cx="315.09225"
+       cy="321.40948"
+       rx="155.64345"
+       ry="181.74011" />
+  </g>
+  <g
+     id="g2276"
+     transform="matrix(1.8673999,0,0,1.8673999,70.603593,342.00444)">
+    <g
+       transform="matrix(-0.219859,-0.04957995,-0.05113941,0.226774,241.3023,-20.17933)"
+       id="layer1">
+      <path
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path5065"
+         d="m 374.44027,235.14714 c -28.09375,122.13341 -59.79626,271.36767 -87.88998,393.50115 -104.64634,-72.4596 -177.63194,-13.56495 -167.08109,69.36663 6.77066,53.21823 100.11352,110.19707 189.18223,23.31493 16.55572,-80.97898 46.36721,-214.48243 68.94394,-319.25223 l 164.99181,117.07957 c -16.83818,75.89794 -33.38271,151.30022 -51.511,230.1103 -104.64627,-72.4596 -177.70447,-13.58063 -167.15361,69.35096 6.77068,53.21822 100.12906,110.12465 189.19778,23.2425 L 614.20931,403.76291 c  [...]
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="matrix(0.201312,-0.02887594,0.03054284,0.212933,-55.20232,-50.90483)"
+       id="g1921">
+      <path
+         d="m 362.59871,675.56622 c -116.10037,-66.42706 -187.24323,1.80292 -168.71665,87.68095 11.88873,55.10904 114.72831,106.33231 200.14744,7.33314 12.43356,-106.95166 28.73083,-214.41848 41.16439,-321.37014 131.29429,115.75326 89.36426,185.78625 62.21946,266.43162 55.80618,-22.9978 143.21738,-124.53254 47.71918,-267.74342 -45.19059,-63.44081 -40.95062,-18.64564 -84.72471,-145.19409 -15.43211,-2.54878 -30.86428,-5.0976 -46.29637,-7.64635 -18.39872,130.40789 -33.11404,250.1004 -51.512 [...]
+         id="path2159"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/leisure/water_park.png b/images/presets/leisure/water_park.png
new file mode 100644
index 0000000..4aba27a
Binary files /dev/null and b/images/presets/leisure/water_park.png differ
diff --git a/images/presets/leisure/zoo.svg b/images/presets/leisure/zoo.svg
new file mode 100644
index 0000000..1cdab5a
--- /dev/null
+++ b/images/presets/leisure/zoo.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="12.74338"
+   width="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="zoo6.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <defs
+     id="defs9" />
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="24.870368"
+     inkscape:cx="-1.5853201"
+     inkscape:cy="6.3520616"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mammal</rdf:li>
+            <rdf:li />
+            <rdf:li>animal</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.02866707;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4133"
+     width="15.970996"
+     height="12.714715"
+     x="0.014333535"
+     y="0.014331081" />
+  <path
+     d="m 2.7610061,9.3704572 c 0.15602,0.0492 0.53925,0.007 0.40791,-0.26899 -0.0729,-0.15361 -0.41577,-0.34697 -0.56723,-0.39284 -0.22821,-0.0692 -0.61166,0.23091 -0.31863,0.42333 l -0.0637,0.20444 c -0.2454,-0.1254 -0.31534,-0.50912 -0.29536,-0.78368 0.014,-0.19309 0.17709,-0.39671 0.24169,-0.57924 0.17645,-0.49865 0.32138,-0.98871 0.45862,-1.4992 0.0549,-0.20406 0.0711,-0.59024 0.23701,-0.72479 0.15544,-0.12611 0.39417,-0.14447 0.56872,-0.23736 0.12866,-0.0684 0.21271,-0.20937 0.3510 [...]
+     style="fill:#000000;stroke:none"
+     id="path6"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/lift_gate.png b/images/presets/lift_gate.png
deleted file mode 100644
index ec99d3c..0000000
Binary files a/images/presets/lift_gate.png and /dev/null differ
diff --git a/images/presets/locality.png b/images/presets/locality.png
deleted file mode 100644
index f1cdba8..0000000
Binary files a/images/presets/locality.png and /dev/null differ
diff --git a/images/presets/lock_gate.png b/images/presets/lock_gate.png
deleted file mode 100644
index 9346d87..0000000
Binary files a/images/presets/lock_gate.png and /dev/null differ
diff --git a/images/presets/map.png b/images/presets/map.png
deleted file mode 100644
index f94369d..0000000
Binary files a/images/presets/map.png and /dev/null differ
diff --git a/images/presets/memorial.png b/images/presets/memorial.png
deleted file mode 100644
index 1642972..0000000
Binary files a/images/presets/memorial.png and /dev/null differ
diff --git a/images/presets/military.png b/images/presets/military.png
deleted file mode 100644
index 12b0d94..0000000
Binary files a/images/presets/military.png and /dev/null differ
diff --git a/images/presets/mine.png b/images/presets/mine.png
deleted file mode 100644
index 2391780..0000000
Binary files a/images/presets/mine.png and /dev/null differ
diff --git a/images/presets/mineshaft.png b/images/presets/mineshaft.png
deleted file mode 100644
index 87c7bf6..0000000
Binary files a/images/presets/mineshaft.png and /dev/null differ
diff --git a/images/presets/addresses.png b/images/presets/misc/addresses.png
similarity index 100%
rename from images/presets/addresses.png
rename to images/presets/misc/addresses.png
diff --git a/images/presets/boundaries.png b/images/presets/misc/boundaries.png
similarity index 100%
rename from images/presets/boundaries.png
rename to images/presets/misc/boundaries.png
diff --git a/images/presets/misc/boundary_stone.png b/images/presets/misc/boundary_stone.png
new file mode 100644
index 0000000..4558de6
Binary files /dev/null and b/images/presets/misc/boundary_stone.png differ
diff --git a/images/presets/misc/cliff-pattern.png b/images/presets/misc/cliff-pattern.png
new file mode 100644
index 0000000..f7b6b0c
Binary files /dev/null and b/images/presets/misc/cliff-pattern.png differ
diff --git a/images/presets/misc/cliff.svg b/images/presets/misc/cliff.svg
new file mode 100644
index 0000000..07c6af4
--- /dev/null
+++ b/images/presets/misc/cliff.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="cliff.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-2.0696195"
+     inkscape:cy="8.6023938"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#2090cf;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4294"
+       width="7.9999986"
+       height="2.999877"
+       x="8.000001"
+       y="1049.3621" />
+    <path
+       style="fill:#ac5b00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m -4.7683724e-7,1037.3621 c 0,0 9.37139197683724,0.072 9.00000157683724,1 -1.9999987,5 0,14 0,14 l -9.00000157683724,0 z"
+       id="path4292"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccc" />
+    <rect
+       style="opacity:1;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4317"
+       width="9"
+       height="1.9999602"
+       x="-4.7683727e-007"
+       y="1036.3621" />
+  </g>
+</svg>
diff --git a/images/presets/misc/construction.svg b/images/presets/misc/construction.svg
new file mode 100644
index 0000000..22b7088
--- /dev/null
+++ b/images/presets/misc/construction.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg height="76.7998" id="svg1117" inkscape:version="0.40" sodipodi:docbase="/mnt/donnees/09-Mes_images/Travaux/Travaux vectoriel/pictogrammes/sécu SVG/Avertissement" sodipodi:docname="BandeMarquageSecurite.svg" sodipodi:version="0.32" width="173.177" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns [...]
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>advertising</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li></rdf:li>
+            <rdf:li>caution</rdf:li>
+            <rdf:li>security</rdf:li>
+            <rdf:li>warning</rdf:li>
+            <rdf:li>signs_and_symbols</rdf:li>
+            <rdf:li>sign</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="svg1117" inkscape:cx="69.495649" inkscape:cy="33.813108" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="810" inkscape:window-width="1070" inkscape:window-x="111" inkscape:window-y="137" inkscape:zoom="6.9644045" pagecolor="#ffffff"/>
+  <defs id="defs1118">
+    <marker id="ArrowEnd" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="0" refY="5" viewBox="0 0 10 10">
+      <path d="M 0 0 L 10 5 L 0 10 z" id="path1120"/>
+    </marker>
+    <marker id="ArrowStart" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="10" refY="5" viewBox="0 0 10 10">
+      <path d="M 10 0 L 0 5 L 10 10 z" id="path1122"/>
+    </marker>
+  </defs>
+  <g id="g1123">
+    <path d="M 120.04 15.7225L 81.5306 15.7225L 157.455 55.8654L 157.455 35.5045L 120.04 15.7225z" id="path1124" style="stroke:none; fill:#000000"/>
+    <path d="M 157.455 15.7225L 120.04 15.7225L 157.455 35.5045L 157.455 15.7225z" id="path1125" style="stroke:none; fill:#ffcc00"/>
+    <path d="M 42.277700,15.722500 L 128.05900,61.077100 L 157.45500,61.077100 L 157.45500,55.865400 L 82.069052,15.543016 L 42.277700,15.722500 z " id="path1126" sodipodi:nodetypes="cccccc" style="stroke:none; fill:#ffcc00"/>
+    <path d="M 15.7224 15.7225L 15.7224 23.1283L 87.4967 61.0771L 128.059 61.0771L 42.2777 15.7225L 15.7224 15.7225z" id="path1127" style="stroke:none; fill:#000000"/>
+    <path d="M 15.7224 43.8822L 48.2439 61.0771L 87.4967 61.0771L 15.7224 23.1283L 15.7224 43.8822z" id="path1128" style="stroke:none; fill:#ffcc00"/>
+    <path d="M 15.7224 61.0771L 48.2439 61.0771L 15.7224 43.8822L 15.7224 61.0771z" id="path1129" style="stroke:none; fill:#000000"/>
+    <path d="M 157.455 61.0772L 157.455 15.7225L 15.7225 15.7225L 15.7225 61.0772L 157.455 61.0772z" id="path1130" style="stroke:#000000; stroke-width:3; fill:none"/>
+  </g>
+</svg>
diff --git a/images/presets/contact.png b/images/presets/misc/contact.png
similarity index 100%
rename from images/presets/contact.png
rename to images/presets/misc/contact.png
diff --git a/images/presets/misc/danger.svg b/images/presets/misc/danger.svg
new file mode 100644
index 0000000..61b20b0
--- /dev/null
+++ b/images/presets/misc/danger.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg height="144.407" id="svg1609" inkscape:version="0.40" sodipodi:docbase="/mnt/donnees/09-Mes_images/Travaux/Travaux vectoriel/pictogrammes/sécu SVG/Avertissement" sodipodi:docname="DangerGeneral.svg" sodipodi:version="0.32" width="156.262" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipod [...]
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>advertising</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li></rdf:li>
+            <rdf:li>caution</rdf:li>
+            <rdf:li>security</rdf:li>
+            <rdf:li>warning</rdf:li>
+            <rdf:li>signs_and_symbols</rdf:li>
+            <rdf:li>sign</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="svg1609" inkscape:cx="52.528651" inkscape:cy="59.396977" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="929" inkscape:window-width="1291" inkscape:window-x="140" inkscape:window-y="75" inkscape:zoom="4.9119411" pagecolor="#ffffff"/>
+  <defs id="defs1610">
+    <marker id="ArrowEnd" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="0" refY="5" viewBox="0 0 10 10">
+      <path d="M 0 0 L 10 5 L 0 10 z" id="path1612"/>
+    </marker>
+    <marker id="ArrowStart" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="10" refY="5" viewBox="0 0 10 10">
+      <path d="M 10 0 L 0 5 L 10 10 z" id="path1614"/>
+    </marker>
+  </defs>
+  <g id="g1615">
+    <path d="M 12.473000,121.08200 C 11.559033,122.84329 10.481800,124.49000 10.481700,126.42300 L 10.490728,127.23088 C 10.490728,131.40288 13.756600,133.92500 17.511300,133.92500 L 138.83100,133.92500 C 142.58600,133.92500 145.81986,130.79848 145.81986,126.62648 L 145.78000,125.81500 C 145.78000,123.88200 144.82971,122.20348 143.78900,120.47400 L 83.705600,12.693800 C 81.051000,9.7442300 76.747300,9.7442300 74.092300,12.694200 L 12.473000,121.08200 z " id="path1616" sodipodi:nodetypes= [...]
+    <path d="M 78.703 16.2915L 15.2797 128.128L 76.4667 128.128L 79.3188 128.128L 139.826 128.128L 79.5155 16.2915L 78.703 16.2915z" id="path1617" style="stroke:#000000; stroke-width:4.8516000000000004; stroke-linejoin:round; stroke-linecap:round; fill:#ffcc00"/>
+  </g>
+  <g id="g1618">
+    <path d="M 84.366054,45.157900 C 85.289904,46.139400 85.469800,46.370250 85.931700,48.160100 C 86.393600,49.949950 87.405817,53.469087 86.291592,57.462546 C 85.829592,64.390946 86.129850,70.967972 85.856575,77.979383 C 85.583663,84.981490 87.317400,93.426000 79.234100,95.042600 C 77.155600,95.273600 75.077100,93.887900 74.268800,91.924800 C 72.883100,77.837000 71.497500,64.442000 70.111700,50.700600 C 71.266400,47.120900 74.153200,43.656700 77.617500,43.194800 C 81.081800,42.732900 8 [...]
+    <path d="M 83.1603 103.357C 86.3936 105.32 86.9709 108.9 86.9709 112.479C 85.5852 115.944 84.0841 119.985 79.5806 119.985C 76.8092 119.87 74.1533 119.292 72.3057 117.214C 71.151 113.057 68.4951 108.784 72.3057 105.32C 75.1926 101.278 79.2341 102.318 83.1603 103.357z" id="path1620" style="stroke:none; fill:#000000"/>
+  </g>
+</svg>
diff --git a/images/presets/misc/deprecated.svg b/images/presets/misc/deprecated.svg
new file mode 100644
index 0000000..110a2cf
--- /dev/null
+++ b/images/presets/misc/deprecated.svg
@@ -0,0 +1,113 @@
+<?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="svg1353"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   width="16"
+   height="16"
+   sodipodi:docname="deprecated5.svg"
+   version="1.0"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata1358">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs1356" />
+  <sodipodi:namedview
+     inkscape:window-height="960"
+     inkscape:window-width="1400"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="68.974478"
+     inkscape:cx="13.088965"
+     inkscape:cy="8.0747837"
+     inkscape:window-x="0"
+     inkscape:window-y="29"
+     inkscape:current-layer="svg1353"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4139"
+       originx="-86"
+       originy="-86" />
+  </sodipodi:namedview>
+  <rect
+     style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4167"
+     width="16"
+     height="16"
+     x="0"
+     y="0" />
+  <g
+     id="g4287"
+     transform="matrix(0.01728763,0,0,0.01728763,0.39281,3.201322)">
+    <circle
+       id="circle6"
+       style="fill:none;stroke:#cc0000;stroke-width:93.75"
+       r="290"
+       cy="362.5"
+       cx="362.5" />
+    <path
+       id="path2770"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 372.12936,407.61704 558.5298,515.33292 590.56227,455.34484 417.87814,355.17057 372.12936,407.61704 Z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path1883"
+       style="fill:#cc0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 166.58744,209.24794 426.33219,359.97799 392.44564,419.24834 133.71666,270.26552 166.58744,209.24794 Z"
+       inkscape:connector-curvature="0" />
+  </g>
+  <rect
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.51300001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4711"
+     width="1.3189585"
+     height="5"
+     x="13.681042"
+     y="1" />
+  <rect
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.51300001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4713"
+     width="1.4349434"
+     height="1.4204453"
+     x="13.565057"
+     y="7.5795546" />
+</svg>
diff --git a/images/presets/misc/description.svg b/images/presets/misc/description.svg
new file mode 100644
index 0000000..275f63c
--- /dev/null
+++ b/images/presets/misc/description.svg
@@ -0,0 +1,102 @@
+<?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"
+   width="11"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-5.2146542"
+     inkscape:cy="10.452631"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-310px"
+       originy="-459px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-310,-577.36218)">
+    <rect
+       style="fill:#ffeeaa;fill-opacity:1;stroke:none"
+       id="rect2987"
+       width="11"
+       height="16"
+       x="310"
+       y="577.36218" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 311,580.36218 1,-1 2,1 1,-1 1,1 2,-1 1,1 1,-1 0,0"
+       id="path2989"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 311,583.36218 1,-1 2,1 1,-1 1,1 2,-1 1,1 1,-1 0,0"
+       id="path2989-1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 311,586.36218 1,-1 2,1 1,-1 1,1 2,-1 1,1 1,-1 0,0"
+       id="path2989-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 311,589.36218 1,-1 2,1 1,-1 1,1 2,-1 1,1 1,-1 0,0"
+       id="path2989-4"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 311,592.36218 1,-1 2,1 1,-1 1,1 2,-1 1,1 1,-1 0,0"
+       id="path2989-0"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/misc/embankment-pattern-centered.png b/images/presets/misc/embankment-pattern-centered.png
new file mode 100644
index 0000000..1967b72
Binary files /dev/null and b/images/presets/misc/embankment-pattern-centered.png differ
diff --git a/images/presets/misc/embankment-pattern.png b/images/presets/misc/embankment-pattern.png
new file mode 100644
index 0000000..ab85fe5
Binary files /dev/null and b/images/presets/misc/embankment-pattern.png differ
diff --git a/images/presets/misc/embankment.svg b/images/presets/misc/embankment.svg
new file mode 100644
index 0000000..762ed34
--- /dev/null
+++ b/images/presets/misc/embankment.svg
@@ -0,0 +1,245 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="embankment.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="7.6157614"
+     inkscape:cy="9.9143347"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-others="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4217"
+       d="m 16.000002,1039.8621 -16.00000247683724,0"
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4211"
+       d="m 8.000001,1036.3621 0,16"
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:6.00000095;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 13.000002,1036.8621 -10.0000019,0"
+       id="path4213"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 16.000001,1045.8621 -16.00000147683724,0"
+       id="path4219"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4221"
+       d="m 13.000002,1042.8621 -10.0000016,0"
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:1.00000018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4223"
+       d="m 16.000002,1051.8621 -16.00000213446518,0"
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:1.00000018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#d2691e;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 13.000002,1048.8621 -10.0000019,0"
+       id="path4225"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.00000095;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 8.000001,1036.3621 0,16"
+       id="path4212"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/misc/entrance-emergency.png b/images/presets/misc/entrance-emergency.png
new file mode 100644
index 0000000..9553b04
Binary files /dev/null and b/images/presets/misc/entrance-emergency.png differ
diff --git a/images/presets/misc/entrance-exit.png b/images/presets/misc/entrance-exit.png
new file mode 100644
index 0000000..3a37575
Binary files /dev/null and b/images/presets/misc/entrance-exit.png differ
diff --git a/images/presets/misc/entrance-main.png b/images/presets/misc/entrance-main.png
new file mode 100644
index 0000000..e5805a8
Binary files /dev/null and b/images/presets/misc/entrance-main.png differ
diff --git a/images/presets/misc/entrance-service.png b/images/presets/misc/entrance-service.png
new file mode 100644
index 0000000..677bde2
Binary files /dev/null and b/images/presets/misc/entrance-service.png differ
diff --git a/images/presets/misc/entrance-yes.png b/images/presets/misc/entrance-yes.png
new file mode 100644
index 0000000..c7d9d71
Binary files /dev/null and b/images/presets/misc/entrance-yes.png differ
diff --git a/images/presets/misc/fixme-annotation.png b/images/presets/misc/fixme-annotation.png
new file mode 100644
index 0000000..9edc88f
Binary files /dev/null and b/images/presets/misc/fixme-annotation.png differ
diff --git a/images/presets/flag.png b/images/presets/misc/flag.png
similarity index 100%
rename from images/presets/flag.png
rename to images/presets/misc/flag.png
diff --git a/images/presets/misc/fountain.png b/images/presets/misc/fountain.png
new file mode 100644
index 0000000..176fe67
Binary files /dev/null and b/images/presets/misc/fountain.png differ
diff --git a/images/presets/misc/grit_bin.svg b/images/presets/misc/grit_bin.svg
new file mode 100644
index 0000000..5bc6a17
--- /dev/null
+++ b/images/presets/misc/grit_bin.svg
@@ -0,0 +1,248 @@
+<?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"
+   width="16"
+   height="13"
+   viewBox="0 0 16 13"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__grit_bin.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="7.3093944"
+     inkscape:cy="7.7130252"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+    <sodipodi:guide
+       position="10.000001,1.0000001"
+       orientation="0,1"
+       id="guide4208" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1039.3621)">
+    <path
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 10.30469,1040.5228 a 0.50005003,0.50005003 0 0 0 -0.3496108,0.8594 l 3.0429698,3.043 -2.998048,0 c -0.5540224,0 -0.9999999,0.446 -0.9999999,1 l 0,5 c 0,0.554 0.4459775,1 0.9999999,1 l 4.000001,0 c 0.554022,0 1,-0.446 1,-1 l 0,-5 c 0,-0.2821 -0.118019,-0.5334 -0.304688,-0.7149 a 0.50005003,0.50005003 0 0 0 -0.0332,-0.035 l -4,-4 a 0.50005003,0.50005003 0 0 0 -0.357421,-0.1524 z"
+       id="rect4208"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4206"
+       d="m 1.2412669,1051.3621 c 0,0 1.7520542,-3.3347 3.5041086,-3.3347 1.7520544,0 3.5041087,3.3347 3.5041087,3.3347 z"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4227"
+       width="6"
+       height="7"
+       x="9"
+       y="1044.3621"
+       ry="1"
+       rx="1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 14.309365,1044.9644 -4,-4"
+       id="path4229"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#999999;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.2412669,1051.3621 c 0,0 1.7520541,-3.3346 3.5041084,-3.3346 1.7520543,0 3.5041086,3.3346 3.5041086,3.3346 z"
+       id="path4233"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/misc/housenumber.png b/images/presets/misc/housenumber.png
new file mode 100644
index 0000000..6a1e046
Binary files /dev/null and b/images/presets/misc/housenumber.png differ
diff --git a/images/presets/misc/information/board.svg b/images/presets/misc/information/board.svg
new file mode 100644
index 0000000..84d1ac2
--- /dev/null
+++ b/images/presets/misc/information/board.svg
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Creator: CorelDRAW -->
+
+<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"
+   xml:space="preserve"
+   width="16"
+   height="16"
+   style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
+   viewBox="0 0 4.5155555 4.5155555"
+   version="1.0"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="board.svg"
+   id="svg2"><metadata
+   id="metadata18"><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></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview16"
+   showgrid="false"
+   units="px"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="18.838582"
+   inkscape:cx="-2.5617452"
+   inkscape:cy="10.938397"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" />
+ <defs
+   id="defs4">
+  <style
+   type="text/css"
+   id="style6">
+   <![CDATA[
+    .str2 {stroke:#84C225;stroke-width:0.0762}
+    .str0 {stroke:#84C225;stroke-width:0.2}
+    .str1 {stroke:white;stroke-width:0.2}
+    .fil0 {fill:#84C225}
+    .fil1 {fill:white}
+    .fil2 {fill:#84C225;fill-rule:nonzero}
+   ]]>
+  </style>
+ 
+  
+  
+  
+  
+  <sodipodi:namedview
+   height="360px"
+   width="440px"
+   showgrid="true"
+   showborder="true"
+   inkscape:showpageshadow="false"
+   inkscape:current-layer="g2015"
+   inkscape:window-y="8"
+   inkscape:window-x="545"
+   inkscape:cy="175.14"
+   inkscape:cx="426.38288"
+   inkscape:zoom="1.05"
+   id="base"
+   pagecolor="white"
+   bordercolor="#666666"
+   borderopacity="1.0"
+   objecttolerance="10.0"
+   gridtolerance="10.0"
+   guidetolerance="10.0"
+   inkscape:pageopacity="1"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1024"
+   inkscape:window-height="749"><inkscape:grid
+     empspacing="20"
+     empopacity="0.38"
+     opacity="0.15"
+     empcolor="#3f3fff"
+     color="#3f3fff"
+     spacingy="1px"
+     spacingx="1px"
+     originy="0px"
+     originx="0px"
+     type="xygrid"
+     id="GridFromPre046Settings" /></sodipodi:namedview>
+ </defs>
+ <path
+   style="fill:#957f66;stroke:#957f66;stroke-width:0.04470847;stroke-opacity:1;fill-opacity:1"
+   inkscape:connector-curvature="0"
+   id="path10"
+   d="m 0.62082182,0.02235424 3.27391188,0 c 0.3304626,0 0.5984675,0.40199621 0.5984675,0.89770137 l 0,2.67544429 c 0,0.4956828 -0.2680049,0.897679 -0.5984675,0.897679 l -3.27391188,2.23e-5 C 0.29035916,4.4931789 0.02237659,4.0911827 0.02237659,3.5954775 L 0.02235424,0.92005561 C 0.02237659,0.42435045 0.29035916,0.02235424 0.62084417,0.02235424 Z"
+   class="fil0 str0" /><circle
+   style="fill:#ffffff;stroke:#ffffff;stroke-width:0.04470847"
+   id="circle12"
+   r="1.3412541"
+   cy="2.2577777"
+   cx="2.2577777"
+   class="fil1 str1" /><path
+   style="fill:#957f66;fill-rule:nonzero;stroke:#957f66;stroke-width:0.01703393;fill-opacity:1;stroke-opacity:1"
+   inkscape:connector-curvature="0"
+   d="m 2.2575318,1.660875 c -0.073814,0 -0.1343713,-0.021773 -0.1812257,-0.065766 -0.047302,-0.044015 -0.070975,-0.097487 -0.070975,-0.1613529 0,-0.065766 0.023673,-0.1192375 0.070975,-0.1608834 0.046854,-0.041646 0.1074121,-0.062458 0.1812257,-0.062458 0.075244,0 0.135802,0.020812 0.1826341,0.062458 0.046385,0.041646 0.070036,0.095117 0.070036,0.1608834 0,0.066705 -0.023651,0.1211153 -0.070036,0.1637001 -0.046832,0.042115 -0.1073897,0.063419 -0.1826341,0.063419 z m 0.2162326,1.6442434  [...]
+   class="fil2 str2"
+   id="_1" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/misc/information/guidepost.svg b/images/presets/misc/information/guidepost.svg
new file mode 100644
index 0000000..89ea149
--- /dev/null
+++ b/images/presets/misc/information/guidepost.svg
@@ -0,0 +1,91 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4182"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="guidepost.svg">
+  <defs
+     id="defs4184" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="11.158886"
+     inkscape:cy="11.679222"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4741"
+       originx="0"
+       originy="1.7382813e-005" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4187">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6,1052.3622 0,-5 -2,0 0,-5 -1,0 -3,-2.5 3,-2.5 3,0 0,-1 4,0 0,1 2,0 0,5 1,0 3,2.5 -3,2.5 -3,0 0,5 z"
+       id="path4756"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccccccc" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 7.0000001,1052.3622 0,-6 -2,0 0,-3 2,0 0,-2 -4,0 -2.0000001,-1.5 2.0000001,-1.5 4,0 0,-1 2,0 0,1 1.9999999,0 0,3 -1.9999999,0 0,2 3.9999999,0 2,1.5 -2,1.5 -3.9999999,0 0,6 z"
+       id="path4754"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/misc/information/information.svg b/images/presets/misc/information/information.svg
new file mode 100644
index 0000000..a304640
--- /dev/null
+++ b/images/presets/misc/information/information.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Creator: CorelDRAW -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   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"
+   height="58.232063"
+   id="svg2"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\misc"
+   sodipodi:docname="information.svg"
+   sodipodi:version="0.32"
+   space="preserve"
+   style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
+   viewBox="0 0 12.5915 12.5915"
+   width="58.232063"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>information sign</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>info</rdf:li>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>information</rdf:li>
+            <rdf:li>sign</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>mo</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>mo</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2"
+     inkscape:cx="66.650684"
+     inkscape:cy="63.877902"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="786"
+     inkscape:window-width="881"
+     inkscape:window-x="206"
+     inkscape:window-y="48"
+     inkscape:zoom="2.8506834"
+     pagecolor="#ffffff" />
+  <defs
+     id="defs4">
+    <style
+       id="style6"
+       type="text/css">
+   
+    .fil0 {fill:#EF7900}
+   
+  </style>
+  </defs>
+  <rect
+     style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect2159"
+     width="5.0062237"
+     height="10.240003"
+     x="3.9442973"
+     y="1.365423" />
+  <g
+     id="Layer_x0020_1"
+     transform="scale(0.9980632,0.9980632)"
+     style="fill:#0000ff">
+    <path
+       class="fil0"
+       d="M 6.29577,0 C 9.77228,0 12.59154,2.81926 12.59154,6.29577 C 12.59154,9.77228 9.77228,12.59154 6.29577,12.59154 C 2.81926,12.59154 0,9.77228 0,6.29577 C 0,2.81926 2.81926,0 6.29577,0 z M 7.241939,4.51008 L 7.241939,10.10704 L 7.988183,10.10704 L 7.988183,10.773334 L 7.854945,10.773334 L 4.603355,10.773334 L 4.603355,10.10704 L 5.349633,10.10704 L 5.349633,5.17637 L 4.603355,5.17637 L 4.603355,4.510076 L 4.736627,4.510076 L 7.241937,4.510076 L 7.241939,4.51008 z M 5.296309,2.7510 [...]
+       id="path10"
+       style="fill:#0000ff" />
+  </g>
+</svg>
diff --git a/images/presets/misc/information/informationoffice.svg b/images/presets/misc/information/informationoffice.svg
new file mode 100644
index 0000000..c27b889
--- /dev/null
+++ b/images/presets/misc/information/informationoffice.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Creator: CorelDRAW -->
+
+<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"
+   xml:space="preserve"
+   width="20mm"
+   height="20mm"
+   style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
+   viewBox="0 0 20 20"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="informationoffice2.svg"><metadata
+   id="metadata14"><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></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview12"
+   showgrid="false"
+   inkscape:zoom="6.6604444"
+   inkscape:cx="51.610128"
+   inkscape:cy="19.494288"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" />
+ <defs
+   id="defs4">
+  <style
+   type="text/css"
+   id="style6">
+   <![CDATA[
+    .str0 {stroke:white;stroke-width:0.2}
+    .fil0 {fill:#DA251D}
+   ]]>
+  </style>
+ 
+  
+  
+ </defs>
+ <rect
+   style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+   id="rect4143"
+   width="9.8777781"
+   height="18.344444"
+   x="5.0799999"
+   y="1.0911111" /><path
+   style="fill:#da251d;stroke:#ffffff;stroke-width:0.2"
+   inkscape:connector-curvature="0"
+   id="path10"
+   d="M 0,0 20,0 20,20 0,20 0,0 Z m 10,2 c 1.6566,0 2.9999,0.8957 2.9999,2 0,1.1043 -1.3433,2 -2.9999,2 C 8.3433,6 6.9999,5.1043 6.9999,4 6.9999,2.8957 8.3433,2 10,2 Z M 7,8 13,8 13,18 7,18 7,8 Z"
+   class="fil0 str0" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/misc/information/map.svg b/images/presets/misc/information/map.svg
new file mode 100644
index 0000000..abc86e8
--- /dev/null
+++ b/images/presets/misc/information/map.svg
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Creator: CorelDRAW -->
+
+<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"
+   xml:space="preserve"
+   width="16"
+   height="16"
+   style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
+   viewBox="0 0 4.5155555 4.5155555"
+   version="1.0"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="map3.svg"
+   id="svg2"><metadata
+   id="metadata18"><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></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview16"
+   showgrid="false"
+   units="px"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="3.3302222"
+   inkscape:cx="7.9999988"
+   inkscape:cy="7.6997182"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" />
+ <defs
+   id="defs4">
+  <style
+   type="text/css"
+   id="style6">
+   <![CDATA[
+    .str2 {stroke:#84C225;stroke-width:0.0762}
+    .str0 {stroke:#84C225;stroke-width:0.2}
+    .str1 {stroke:white;stroke-width:0.2}
+    .fil0 {fill:#84C225}
+    .fil1 {fill:white}
+    .fil2 {fill:#84C225;fill-rule:nonzero}
+   ]]>
+  </style>
+ </defs>
+ <g
+   id="Ebene_x0020_1"
+   transform="matrix(0.22354235,0,0,0.22354235,0.02235424,0.02235424)">
+  <metadata
+   id="CorelCorpID_0Corel-Layer" />
+  <path
+   class="fil0 str0"
+   d="M 2.6772,0 17.3228,0 C 18.8011,0 20,1.7983 20,4.0158 l 0,11.9684 c 0,2.2174 -1.1989,4.0157 -2.6772,4.0157 L 2.6772,20 C 1.1989,19.9999 1e-4,18.2016 1e-4,15.9841 L 0,4.0158 C 1e-4,1.7983 1.1989,0 2.6773,0 Z"
+   id="path10"
+   inkscape:connector-curvature="0"
+   style="fill:#84c225;stroke:#84c225;stroke-width:0.2" />
+  <circle
+   class="fil1 str1"
+   cx="10"
+   cy="10"
+   r="6"
+   id="circle12"
+   style="fill:#ffffff;stroke:#ffffff;stroke-width:0.2" />
+  <path
+   id="_1"
+   class="fil2 str2"
+   d="M 9.9989,7.3298 C 9.6687,7.3298 9.3978,7.2324 9.1882,7.0356 8.9766,6.8387 8.8707,6.5995 8.8707,6.3138 8.8707,6.0196 8.9766,5.7804 9.1882,5.5941 9.3978,5.4078 9.6687,5.3147 9.9989,5.3147 c 0.3366,0 0.6075,0.0931 0.817,0.2794 0.2075,0.1863 0.3133,0.4255 0.3133,0.7197 0,0.2984 -0.1058,0.5418 -0.3133,0.7323 -0.2095,0.1884 -0.4804,0.2837 -0.817,0.2837 z m 0.9673,7.3554 -1.9579,0 0,-6.35 1.9579,0 0,6.35 z"
+   inkscape:connector-curvature="0"
+   style="fill:#84c225;fill-rule:nonzero;stroke:#84c225;stroke-width:0.0762" />
+  <sodipodi:namedview
+   inkscape:window-height="749"
+   inkscape:window-width="1024"
+   inkscape:pageshadow="2"
+   inkscape:pageopacity="1"
+   guidetolerance="10.0"
+   gridtolerance="10.0"
+   objecttolerance="10.0"
+   borderopacity="1.0"
+   bordercolor="#666666"
+   pagecolor="white"
+   id="base"
+   inkscape:zoom="1.05"
+   inkscape:cx="426.38288"
+   inkscape:cy="175.14"
+   inkscape:window-x="545"
+   inkscape:window-y="8"
+   inkscape:current-layer="g2015"
+   inkscape:showpageshadow="false"
+   showborder="true"
+   showgrid="true"
+   width="440px"
+   height="360px"><inkscape:grid
+     id="GridFromPre046Settings"
+     type="xygrid"
+     originx="0px"
+     originy="0px"
+     spacingx="1px"
+     spacingy="1px"
+     color="#3f3fff"
+     empcolor="#3f3fff"
+     opacity="0.15"
+     empopacity="0.38"
+     empspacing="20" /></sodipodi:namedview>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/interpolation.png b/images/presets/misc/interpolation.png
similarity index 100%
rename from images/presets/interpolation.png
rename to images/presets/misc/interpolation.png
diff --git a/images/presets/message.png b/images/presets/misc/message.png
similarity index 100%
rename from images/presets/message.png
rename to images/presets/misc/message.png
diff --git a/images/presets/monitoring_station.png b/images/presets/misc/monitoring_station.png
similarity index 100%
rename from images/presets/monitoring_station.png
rename to images/presets/misc/monitoring_station.png
diff --git a/images/presets/multipolygon.png b/images/presets/misc/multipolygon.png
similarity index 100%
rename from images/presets/multipolygon.png
rename to images/presets/misc/multipolygon.png
diff --git a/images/presets/misc/no_icon.svg b/images/presets/misc/no_icon.svg
new file mode 100644
index 0000000..6866ced
--- /dev/null
+++ b/images/presets/misc/no_icon.svg
@@ -0,0 +1,91 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="no_icon.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 126.07143 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="252.14287 : 126.07143 : 1"
+       inkscape:persp3d-origin="126.07143 : 84.047623 : 1"
+       id="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.839192"
+     inkscape:cx="2.2843151"
+     inkscape:cy="10.356284"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-334.14286,-259.36219)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#0d0000;stroke-width:0.87272722;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4123"
+       width="15.127273"
+       height="15.127273"
+       x="334.57922"
+       y="259.79855"
+       ry="1.9715647" />
+  </g>
+</svg>
diff --git a/images/presets/misc/note-annotation.png b/images/presets/misc/note-annotation.png
new file mode 100644
index 0000000..0b8dc3b
Binary files /dev/null and b/images/presets/misc/note-annotation.png differ
diff --git a/images/presets/misc/note-fixme-annotation.png b/images/presets/misc/note-fixme-annotation.png
new file mode 100644
index 0000000..ac7cd90
Binary files /dev/null and b/images/presets/misc/note-fixme-annotation.png differ
diff --git a/images/presets/path.png b/images/presets/misc/path.png
similarity index 100%
rename from images/presets/path.png
rename to images/presets/misc/path.png
diff --git a/images/presets/misc/pipeline_marker.svg b/images/presets/misc/pipeline_marker.svg
new file mode 100644
index 0000000..bb37994
--- /dev/null
+++ b/images/presets/misc/pipeline_marker.svg
@@ -0,0 +1,176 @@
+<?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"
+   width="13"
+   height="16"
+   id="svg3042"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="10.svg">
+  <defs
+     id="defs3044" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="16.909011"
+     inkscape:cy="8.9007289"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3050"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-340px"
+       originy="-574px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3047">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-340,-462.36218)">
+    <rect
+       style="fill:#ffcc00;fill-opacity:1;stroke:none"
+       id="rect3052"
+       width="13"
+       height="16"
+       x="340"
+       y="462.36218"
+       ry="2" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect3054"
+       width="9"
+       height="1"
+       x="342"
+       y="468.36218"
+       ry="0" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect3056"
+       width="1"
+       height="5"
+       x="346"
+       y="469.36218" />
+    <rect
+       style="fill:#ffe680;fill-opacity:1;stroke:none"
+       id="rect3058"
+       width="3"
+       height="3"
+       x="341"
+       y="464.36218" />
+    <rect
+       style="fill:#ffe680;fill-opacity:1;stroke:none"
+       id="rect3060"
+       width="5"
+       height="3"
+       x="347"
+       y="464.36218" />
+    <rect
+       style="fill:#ffe680;fill-opacity:1;stroke:none"
+       id="rect3062"
+       width="4"
+       height="2"
+       x="341"
+       y="470.36218" />
+    <rect
+       style="fill:#ffe680;fill-opacity:1;stroke:none"
+       id="rect3064"
+       width="4"
+       height="2"
+       x="348"
+       y="470.36218" />
+    <rect
+       style="fill:#ffe680;fill-opacity:1;stroke:none"
+       id="rect3066"
+       width="7"
+       height="2"
+       x="343"
+       y="475.36218" />
+    <text
+       xml:space="preserve"
+       style="font-size:1.421085px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="327.96674"
+       y="488.47931"
+       id="text3068"
+       sodipodi:linespacing="125%"
+       transform="scale(1.051936,0.95062818)"><tspan
+         sodipodi:role="line"
+         id="tspan3070"
+         x="327.96674"
+         y="488.47931">GAS</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:4.3321867px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="329.89066"
+       y="483.10718"
+       id="text3068-1"
+       sodipodi:linespacing="125%"
+       transform="scale(1.0336891,0.96740886)"><tspan
+         sodipodi:role="line"
+         id="tspan3070-7"
+         x="329.89066"
+         y="483.10718">A</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:2.38257885px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="332.9227"
+       y="483.92914"
+       id="text3068-1-4"
+       sodipodi:linespacing="125%"
+       transform="scale(1.0249278,0.97567849)"><tspan
+         sodipodi:role="line"
+         id="tspan3070-7-0"
+         x="332.9227"
+         y="483.92914">1,2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:2.38257885px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="336.36353"
+       y="489.0759"
+       id="text3068-1-4-9"
+       sodipodi:linespacing="125%"
+       transform="scale(1.0249278,0.97567849)"><tspan
+         sodipodi:role="line"
+         id="tspan3070-7-0-4"
+         x="336.36353"
+         y="489.0759">3,4</tspan></text>
+  </g>
+</svg>
diff --git a/images/presets/relations.png b/images/presets/misc/relations.png
similarity index 100%
rename from images/presets/relations.png
rename to images/presets/misc/relations.png
diff --git a/images/presets/misc/rock.svg b/images/presets/misc/rock.svg
new file mode 100644
index 0000000..0d3b502
--- /dev/null
+++ b/images/presets/misc/rock.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+
+<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"
+   version="1.1"
+   id="Ebene_1"
+   x="0px"
+   y="0px"
+   width="16"
+   height="12.676259"
+   viewBox="0 0 16 12.676259"
+   enable-background="new 0 0 16 16"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="05.svg"><metadata
+   id="metadata9"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs7" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview5"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="32"
+   inkscape:cx="8.8945999"
+   inkscape:cy="3.398555"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Ebene_1"><inkscape:grid
+     type="xygrid"
+     id="grid2986"
+     empspacing="5"
+     visible="true"
+     enabled="true"
+     snapvisiblegridlinesonly="true"
+     originx="0.22577686px"
+     originy="2.4504823px" /></sodipodi:namedview>
+
+<path
+   style="fill:#636363;fill-opacity:1;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+   d="m 0.45,8.872259 c 1.6140233,1.408284 4.8950869,-0.8866663 6.4705465,4.391e-4 0.3838252,-0.6940654 1.029243,-1.56139 0,-2.2653676 -1.4392696,-0.6147503 -2.8785401,-4.886e-4 -4.3178094,0 -0.7074582,-1.1326923 -0.2086311,-2.2653766 0,-3.3980642 0.4562285,-0.8209334 0.724337,-1.6888664 2.1589047,-2.26537404 2.5810987,-0.4254466 5.1652443,-0.871682 7.5561662,0 1.474375,1.07176704 1.942152,2.22478294 2.158907,3.39806164 -0.475694,1.369464 -1.195326,2.1245872 -2.158907,2.2653766 -0.766809 [...]
+   id="path2988"
+   inkscape:connector-curvature="0"
+   sodipodi:nodetypes="cccccccccccccc" /><path
+   style="fill:none;stroke:#636363;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+   d="m 0.45,9.629259 0,2.597 15.1,0.006 0,-3.006"
+   id="path3758"
+   inkscape:connector-curvature="0"
+   sodipodi:nodetypes="cccc" /></svg>
\ No newline at end of file
diff --git a/images/presets/misc/stone.svg b/images/presets/misc/stone.svg
new file mode 100644
index 0000000..84937dd
--- /dev/null
+++ b/images/presets/misc/stone.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+
+<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"
+   version="1.1"
+   id="Ebene_1"
+   x="0px"
+   y="0px"
+   width="12"
+   height="10.419232"
+   viewBox="0 0 12 10.419232"
+   enable-background="new 0 0 16 16"
+   xml:space="preserve"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="04.svg"><metadata
+   id="metadata9"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs7" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview5"
+   showgrid="true"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="32"
+   inkscape:cx="5.1221722"
+   inkscape:cy="3.7958654"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Ebene_1"><inkscape:grid
+     type="xygrid"
+     id="grid2986"
+     empspacing="5"
+     visible="true"
+     enabled="true"
+     snapvisiblegridlinesonly="true"
+     originx="-3.0000001px"
+     originy="2.4192323px" /></sodipodi:namedview>
+
+<path
+   style="fill:#636363;fill-opacity:1;stroke:#000000;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+   d="m 3,10 7.34375,0 C 11.314823,10 11.966704,0.50513101 10,1 0.99999999,2 0.99999999,6 0.99999999,6.6875 1.2832209,8.0984233 1.8845196,9.2548843 3,10 z"
+   id="path2984"
+   inkscape:connector-curvature="0"
+   sodipodi:nodetypes="ccccc" /></svg>
\ No newline at end of file
diff --git a/images/presets/misc/streetlamp.png b/images/presets/misc/streetlamp.png
new file mode 100644
index 0000000..fd5754c
Binary files /dev/null and b/images/presets/misc/streetlamp.png differ
diff --git a/images/presets/misc/valve.svg b/images/presets/misc/valve.svg
new file mode 100644
index 0000000..6fdd1cf
--- /dev/null
+++ b/images/presets/misc/valve.svg
@@ -0,0 +1,57 @@
+<?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"
+   version="1.1"
+   width="100.5"
+   height="100.5"
+   id="svg3010">
+  <defs
+     id="defs3012" />
+  <metadata
+     id="metadata3015">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(-286.89286,-470.68361)"
+     id="layer1">
+    <rect
+       width="100"
+       height="100"
+       x="287.14285"
+       y="470.93362"
+       id="imagebot_36"
+       style="fill:#c0c0c0;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" />
+    <rect
+       width="14.585"
+       height="45.249001"
+       x="330.74487"
+       y="492.3006"
+       id="imagebot_32"
+       style="fill:#d1d1d1;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" />
+    <path
+       d="m 297.84386,565.10661 v -51.555 l 40.269,25.778 40.269,-25.778 v 51.555 l -40.269,-25.777 -40.269,25.777 z"
+       id="imagebot_31"
+       style="fill:#d1d1d1;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round" />
+    <rect
+       width="59.244999"
+       height="12.483"
+       x="308.59787"
+       y="479.80362"
+       id="imagebot_34"
+       style="fill:#d1d1d1;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none" />
+  </g>
+</svg>
diff --git a/images/presets/misc/wlan.svg b/images/presets/misc/wlan.svg
new file mode 100644
index 0000000..22db127
--- /dev/null
+++ b/images/presets/misc/wlan.svg
@@ -0,0 +1,115 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="wlan2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.919596"
+     inkscape:cx="1.708747"
+     inkscape:cy="7.5709017"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1027"
+     inkscape:window-height="898"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-7.6573291,-6.9863105)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4136"
+       width="16.000069"
+       height="16"
+       x="7.6573291"
+       y="6.9863105" />
+    <g
+       id="g3523"
+       transform="matrix(0.79409201,0,0,0.75334086,3.2063056,3.6026141)">
+      <path
+         transform="matrix(2.4344654e-4,-0.3229747,0.3466886,2.2679447e-4,-84.550573,28.281801)"
+         sodipodi:open="true"
+         sodipodi:end="3.1461198"
+         sodipodi:start="6.2818457"
+         d="M 64.999978,265.18224 A 25,23.928572 0 0 1 52.486661,285.94441 25,23.928572 0 0 1 27.444365,285.90621 25,23.928572 0 0 1 15.000256,265.10597"
+         sodipodi:ry="23.928572"
+         sodipodi:rx="25"
+         sodipodi:cy="265.21429"
+         sodipodi:cx="40"
+         id="path3417"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#090505;stroke-width:2.9884491;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(0.00169302,0.3229709,-0.3466846,0.00157722,115.89082,2.0256076)"
+         sodipodi:open="true"
+         sodipodi:end="3.1461198"
+         sodipodi:start="6.2818457"
+         d="M 64.999978,265.18224 A 25,23.928572 0 0 1 52.486661,285.94441 25,23.928572 0 0 1 27.444365,285.90621 25,23.928572 0 0 1 15.000256,265.10597"
+         sodipodi:ry="23.928572"
+         sodipodi:rx="25"
+         sodipodi:cy="265.21429"
+         sodipodi:cx="40"
+         id="path3423"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#090505;stroke-width:2.9884491;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/money/atm.svg b/images/presets/money/atm.svg
new file mode 100644
index 0000000..08bd802
--- /dev/null
+++ b/images/presets/money/atm.svg
@@ -0,0 +1,174 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="422.85715"
+   height="594.28571"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\money"
+   sodipodi:docname="atm.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="169.20564"
+     inkscape:cy="302.63872"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="640"
+     inkscape:window-x="386"
+     inkscape:window-y="186" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-220,-169.50504)">
+    <rect
+       style="fill:#e6e6e6;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2160"
+       width="422.85715"
+       height="594.28571"
+       x="220"
+       y="169.50504" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3150"
+       width="36.07143"
+       height="62.5"
+       x="155"
+       y="432.5"
+       transform="translate(220,169.50504)" />
+    <rect
+       style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3148"
+       width="108.57143"
+       height="125.71429"
+       x="47.142857"
+       y="432.85715"
+       transform="translate(220,169.50504)" />
+    <rect
+       style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3146"
+       width="35"
+       height="33.57143"
+       x="155"
+       y="495"
+       transform="translate(220,169.50504)" />
+    <rect
+       style="fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3144"
+       width="36.42857"
+       height="28.035715"
+       x="154.82143"
+       y="528.57141"
+       transform="translate(220,169.50504)" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:5.14380312;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2162"
+       width="161.99907"
+       height="21.999054"
+       x="447.57193"
+       y="687.0769" />
+    <rect
+       style="fill:#5599ff;fill-opacity:1;stroke:#000000;stroke-width:16.29839897;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3134"
+       width="317.11389"
+       height="333.7016"
+       x="276.92017"
+       y="209.79709" />
+    <path
+       style="font-size:12px;font-weight:900;fill:#333333;stroke-width:1pt;font-family:VAG Rounded Black SSi"
+       id="path828"
+       d="M 429.97329,511.86775 L 429.97329,497.461 C 419.74244,496.73021 409.30274,495.32087 398.65425,493.23295 C 388.0058,491.14503 378.45349,487.38674 369.99736,481.95811 C 361.64564,476.4251 357.46979,469.06508 357.46979,459.87822 C 357.46979,452.98804 359.6621,446.77643 364.04679,441.24336 C 368.53583,435.71035 374.01667,432.94385 380.48923,432.94385 C 383.30797,432.94385 388.37121,434.50975 395.67902,437.64167 C 402.98674,440.77359 408.93735,443.12254 413.53079,444.68845 C 418.228 [...]
+    <rect
+       y="-616.21143"
+       x="-599.56348"
+       height="14.841389"
+       width="126.26997"
+       id="rect3192"
+       style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:3.73003912;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       transform="scale(-1,-1)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 266.42857,698.07646 L 409.28571,698.07646"
+       id="path3206" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 268.92856,664.50503 L 408.21428,664.50503"
+       id="path3208" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 269.28571,630.9336 L 409.28571,630.9336"
+       id="path3210" />
+    <path
+       id="path3212"
+       d="M 266.42857,698.07646 L 409.28571,698.07646"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       id="path3214"
+       d="M 268.92856,664.50503 L 408.21428,664.50503"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       id="path3216"
+       d="M 269.28571,630.9336 L 409.28571,630.9336"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.93419689px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 338.92856,604.08319 L 338.92856,725.64116"
+       id="path3218" />
+    <path
+       id="path3220"
+       d="M 374.99999,602.75109 L 374.99999,728.40185"
+       style="fill:#decd87;fill-opacity:1;fill-rule:evenodd;stroke:#020200;stroke-width:5.08340359;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.93419689px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 302.85713,604.08319 L 302.85713,725.64116"
+       id="path3222" />
+    <rect
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3194"
+       width="143.75177"
+       height="126.60889"
+       x="266.69556"
+       y="601.91486" />
+  </g>
+</svg>
diff --git a/images/presets/money/bank.svg b/images/presets/money/bank.svg
new file mode 100644
index 0000000..e696c38
--- /dev/null
+++ b/images/presets/money/bank.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+
+<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="svg637"
+   sodipodi:version="0.32"
+   width="102.60609"
+   height="124.61005"
+   sodipodi:docname="bank2.svg"
+   inkscape:version="0.91 r13725"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata2259">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs639" />
+  <sodipodi:namedview
+     id="base"
+     showgrid="true"
+     snaptogrid="true"
+     inkscape:zoom="2.1326341"
+     inkscape:cx="88.526097"
+     inkscape:cy="53.393095"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg637"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <path
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccc"
+     id="path645-8"
+     d="M 51.352947,0.20153197 0.32176197,54.109825 l 12.28579103,0 0,70.361755 77.490779,0 0,-70.361755 12.186428,0 L 51.352947,0.20153197 Z"
+     style="font-size:12px;fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.27694866" />
+  <path
+     sodipodi:nodetypes="cccccccccc"
+     id="path645"
+     d="m 51.353245,5.849877 -44.028782,45.18912 8.805697,0 0,67.783653 70.446164,0 0,-67.783653 8.805748,0 -44.028827,-45.18912 0,0 z"
+     style="font-size:12px;fill-rule:evenodd;stroke:#000000;stroke-width:0.25177151"
+     inkscape:connector-curvature="0" />
+  <path
+     style="font-weight:900;font-size:12px;font-family:'VAG Rounded Black SSi';fill:#ffffff;stroke-width:1pt"
+     id="path828"
+     d="m 49.138398,105.84399 0,-3.76215 c -2.671675,-0.19084 -5.397871,-0.55887 -8.178587,-1.10412 -2.780722,-0.54523 -5.275192,-1.526664 -7.483408,-2.944294 -2.180957,-1.44488 -3.271435,-3.36684 -3.271435,-5.7659 0,-1.79929 0.572499,-3.42137 1.717505,-4.86627 1.172266,-1.444875 2.603517,-2.167301 4.293756,-2.167301 0.736074,0 2.058277,0.408923 3.966618,1.226783 1.908333,0.817848 3.462263,1.431248 4.661789,1.840178 1.226792,0.40893 2.658044,0.61339 4.293762,0.61339 l 0,-13.126626 c -3.4 [...]
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/money/dollar.svg b/images/presets/money/dollar.svg
new file mode 100644
index 0000000..9d1e4e8
--- /dev/null
+++ b/images/presets/money/dollar.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500" height="500">
+<path d="m 145,312 c -2,69 31,100 104,102 78,1 113,-34 109,-101 -6,-58 -62,-73 -106,-79 -48,-17 -99,-25 -99,-95 0,-48 32,-79 99,-78 60,0 97,25 96,84" style="fill:none;stroke:#000000;stroke-width:40"/>
+<path d="m 250,15 0,470" style="stroke:#000000;stroke-width:30"/>
+</svg>
\ No newline at end of file
diff --git a/images/presets/money/exchange.svg b/images/presets/money/exchange.svg
new file mode 100644
index 0000000..cb88b67
--- /dev/null
+++ b/images/presets/money/exchange.svg
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="473.94705"
+   id="svg2818"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="exchange2.svg"
+   sodipodi:version="0.32"
+   width="509.77814"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2818"
+     inkscape:cx="198.53756"
+     inkscape:cy="388.77381"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.61399264"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs2820">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path2823"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path2826"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51300001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4182"
+     width="509.77814"
+     height="473.94705"
+     x="0"
+     y="0" />
+  <g
+     id="g2828"
+     transform="translate(-167.75446,-164.86211)">
+    <g
+       id="g2830">
+      <path
+         d="m 623.795,399.016 0,-178.901 -403.68,0 0,178.901 403.68,0 z"
+         id="path2832"
+         style="fill:none;stroke:#000000;stroke-width:42"
+         inkscape:connector-curvature="0" />
+      <path
+         d="M 421.954,309.565"
+         id="path2834"
+         style="fill:none;stroke:#000000;stroke-width:42"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       d="M 478.562,557.236"
+       id="path2836"
+       style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g2838">
+      <g
+         id="g2840">
+        <path
+           d="m 423.484,367.158 c 31.436,0 56.922,-25.486 56.922,-56.922 0,-31.436 -25.486,-56.922 -56.922,-56.922 -31.436,0 -56.922,25.486 -56.922,56.922 0,31.436 25.486,56.922 56.922,56.922 z"
+           id="path2842"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 423.484,310.236"
+           id="path2844"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+      </g>
+      <g
+         id="g2846">
+        <path
+           d="m 392.543,320.323 14.865,0 c 0.941,4.289 2.179,9.476 8.95,11.401 l -0.018,-16.849 c -9.273,-1.333 -22.65,-5.399 -22.65,-20.312 0,-16.764 18.547,-21.991 22.668,-21.991 l 0,-10.137 13.98,0 0,10.137 c 9.427,0.546 23.109,8.426 23.109,23.406 l -14.719,0 c -0.374,-4.447 -3.821,-8.816 -8.243,-9.128 l 0,15.448 c 11.238,1.153 24.434,5.442 24.434,20.542 0,13.185 -13.247,22.801 -24.434,23.393 l 0,10.162 -14.127,0 0,-10.31 c -8.095,-1.184 -22.896,-8.989 -23.815,-25.762 z"
+           id="path2848"
+           style="fill:#ffffff;stroke:none"
+           inkscape:connector-curvature="0" />
+        <g
+           id="g2850">
+          <path
+             d="m 416.431,287.003 0,12.799 c -9.963,-0.156 -10.157,-11.023 0,-12.799 z"
+             id="path2852"
+             style="fill:#000000;stroke:none"
+             inkscape:connector-curvature="0" />
+          <g
+             id="g2854">
+            <path
+               d="m 430.649,317.278 c 12.328,0.312 13.7,12.561 -0.014,14.52"
+               id="path2856"
+               style="fill:#000000;stroke:none"
+               inkscape:connector-curvature="0" />
+            <path
+               d="m 430.635,331.798 0.014,-14.52"
+               id="path2858"
+               style="fill:#000000;stroke:none"
+               inkscape:connector-curvature="0" />
+          </g>
+        </g>
+      </g>
+    </g>
+    <g
+       id="g2860">
+      <g
+         id="g2862">
+        <path
+           d="m 516.758,466.408 c 31.436,0 56.922,-25.486 56.922,-56.922 0,-31.437 -25.486,-56.923 -56.922,-56.923 -31.437,0 -56.923,25.486 -56.923,56.923 0,31.436 25.486,56.922 56.923,56.922 z"
+           id="path2864"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 516.758,409.486"
+           id="path2866"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+      </g>
+      <path
+         d="m 543.053,432.234 0,12.271 -52.718,0 0,-12.271 c 5.99,-4.012 9.106,-14.159 7.189,-19.588 l -11.023,0 0,-12.506 8.865,0 c -2.396,-5.663 -2.396,-7.551 -2.396,-12.507 0,-4.955 4.075,-21.113 25.4,-21.001 19.638,0.104 25.338,16.284 25.338,27.845 l -14.95,0.009 c -1,-7 -3.75,-12.75 -10.25,-12.75 -9.944,0 -9.961,6.251 -9.961,8.376 0,2.123 0.358,7.314 2.396,10.147 l 12.94,0 0,12.27 -10.544,0 c 1.317,11.21 -5.152,15.929 -5.512,19.705 l 35.226,0 z"
+         id="path2868"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       id="g2870">
+      <g
+         id="g2872">
+        <path
+           d="m 478.758,614.408 c 31.436,0 56.922,-25.486 56.922,-56.922 0,-31.437 -25.486,-56.923 -56.922,-56.923 -31.437,0 -56.922,25.486 -56.922,56.923 0,31.436 25.485,56.922 56.922,56.922 z"
+           id="path2874"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 478.758,557.486"
+           id="path2876"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+      </g>
+      <path
+         d="m 446.766,522.577 16.535,0 15.336,27.067 16.64,-27.067 15.229,0 -24.68,43.648 18.45,0 0,13.898 -17.732,0 0,19.508 -15.096,0 0,-19.508 -18.931,0 0,-13.655 19.17,0 -24.921,-43.891 z"
+         id="path2878"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       id="g2880">
+      <g
+         id="g2882">
+        <path
+           d="m 299.258,549.908 c 31.437,0 56.923,-25.486 56.923,-56.922 0,-31.437 -25.486,-56.923 -56.923,-56.923 -31.436,0 -56.922,25.486 -56.922,56.923 0,31.436 25.486,56.922 56.922,56.922 z"
+           id="path2884"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 299.258,492.986"
+           id="path2886"
+           style="fill:#000000;stroke:#000000;stroke-width:1.85899997"
+           inkscape:connector-curvature="0" />
+      </g>
+      <g
+         id="g2888">
+        <path
+           d="m 304.973,482.13 14.378,0 0,7.189 c 3.116,-3.596 6.709,-7.43 14.377,-7.43 l 0,13.66 c -11.72,1.437 -14.377,7.687 -14.377,15.437 l 0,17.152 -14.378,0 0,-46.008 z"
+           id="path2890"
+           style="fill:#ffffff;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 301.067,482.13 0,13.538 -10.221,0 0,32.47 -14.497,0 0,-32.35 -8.626,0 0,-13.539 8.626,0 0,-12.1 c 0,-4.673 4.552,-18.932 21.685,-18.932 17.492,0 21.224,13.769 21.224,25.281 l -14.25,0 c 0,-7.387 -1,-11.263 -6.855,-11.263 -6.27,0 -7.307,4.313 -7.307,11.144 l 0,5.751 10.221,0 z"
+           id="path2892"
+           style="fill:#ffffff;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/monument.png b/images/presets/monument.png
deleted file mode 100644
index f2b2506..0000000
Binary files a/images/presets/monument.png and /dev/null differ
diff --git a/images/presets/motorbike.png b/images/presets/motorbike.png
deleted file mode 100644
index 6780790..0000000
Binary files a/images/presets/motorbike.png and /dev/null differ
diff --git a/images/presets/nautical/bay.svg b/images/presets/nautical/bay.svg
new file mode 100644
index 0000000..db03344
--- /dev/null
+++ b/images/presets/nautical/bay.svg
@@ -0,0 +1,100 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="bay.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="12.337305"
+     inkscape:cy="12.333068"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="3.3786003e-007"
+       y="1036.3622"
+       class="st1"
+       width="16.000008"
+       height="16.000044"
+       id="rect25"
+       style="fill:#2090cf" />
+    <path
+       style="fill:#ffbe34;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 13,1036.3621 -13.00000047683724,0 0,16 L 13,1052.3621 c 0.06378,-2.2208 1.872103,-6.3842 -0.338369,-6.0546 -3.7861414,0.5645 -3.2652544,4.1333 -7.5351073,2.4749 -2.8284272,-1.4805 -2.276,-4.3753 -2.2539029,-4.994 0.022097,-0.6187 1.016466,-4.9497 5.0381358,-4.3973 4.0216704,0.5524 2.8063304,2.4086 4.5078064,2.718 2.236126,0.2491 0.686854,-3.8141 0.581437,-5.747 z"
+       id="path4269"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccscsscc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/beach.svg b/images/presets/nautical/beach.svg
new file mode 100644
index 0000000..a2f1c8c
--- /dev/null
+++ b/images/presets/nautical/beach.svg
@@ -0,0 +1,100 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="beach.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.7685029"
+     inkscape:cy="7.4972391"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="1.9999999"
+       y="1036.3621"
+       class="st1"
+       width="14.000003"
+       height="16.000042"
+       id="rect25-1"
+       style="fill:#2090cf" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffbe34;fill-opacity:1"
+       d="m -4.7683724e-7,1036.3621 0,16 L 11.800784,1052.362 c 0.499658,-2.4463 0.786705,-6.0014 -0.800782,-9 -1.4635294,-2.8145 -1.8382424,-5.1361 -1.8964844,-7 z"
+       id="path27-2"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/boatyard.png b/images/presets/nautical/boatyard.png
new file mode 100644
index 0000000..c86a957
Binary files /dev/null and b/images/presets/nautical/boatyard.png differ
diff --git a/images/presets/nautical/breakwater.svg b/images/presets/nautical/breakwater.svg
new file mode 100644
index 0000000..7e89e80
--- /dev/null
+++ b/images/presets/nautical/breakwater.svg
@@ -0,0 +1,111 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="breakwater.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="10.535456"
+     inkscape:cy="1.4562662"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="3.3786003e-007"
+       y="1036.3622"
+       class="st1"
+       width="16.000008"
+       height="16.000044"
+       id="rect25"
+       style="fill:#2090cf" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffbe34;fill-opacity:1"
+       d="m -4.7683724e-7,1036.3621 0,16 4.00000067683724,0 c -0.2490234,-2 0,-3 1.0000002,-5 l 5.0000016,0 c -0.1876314,-0.746 -3.3291981,-4.0584 -4.0000014,-6 -0.5745244,-1.6629 -1.0000002,-4 -1.0000002,-5 z"
+       id="path27"
+       sodipodi:nodetypes="cccccscc" />
+    <g
+       transform="matrix(1,0,0,2.0000015,-246.89999,-78.638742)"
+       id="g51">
+      <rect
+         x="249.89999"
+         y="562"
+         class="st6"
+         width="11.000007"
+         height="0.99998534"
+         id="rect53" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/nautical/coast_line.svg b/images/presets/nautical/coast_line.svg
new file mode 100644
index 0000000..b9f1e6a
--- /dev/null
+++ b/images/presets/nautical/coast_line.svg
@@ -0,0 +1,105 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="coast_line.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="4.9807805"
+     inkscape:cy="9.8815167"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="3.3786003e-007"
+       y="1036.3622"
+       class="st1"
+       width="16.000008"
+       height="16.000044"
+       id="rect25"
+       style="fill:#2090cf" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffbe34;fill-opacity:1"
+       d="m -4.7683724e-7,1036.3621 0,16 9.80078297683724,0 c 0.4996585,-2.4463 0.7867055,-6.0014 -0.800782,-9 -1.463529,-2.8145 -1.838242,-5.1361 -1.896484,-7 l -7.10351697683724,0 z"
+       id="path27" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#010202"
+       d="m 6.0000006,1036.3621 c 0.0496,1.8916 0.4481683,4.5905 1.9687503,7.5625 1.386949,2.6478 1.4587272,6.0489 1.0312502,8.4375 l 1.9999999,0 c 0.490741,-2.517 0.586272,-5.945 -1,-9 -1.4515628,-2.7649 -1.953408,-5.1907 -2,-7 z"
+       id="path29"
+       sodipodi:nodetypes="ccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/dam.svg b/images/presets/nautical/dam.svg
new file mode 100644
index 0000000..d848353
--- /dev/null
+++ b/images/presets/nautical/dam.svg
@@ -0,0 +1,117 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_dam2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="6.6866533"
+     inkscape:cy="8.2375347"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="opacity:1;fill:#2090cf;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 0,3 0,16 l 16,2e-6 0,-2 c -0.03627,-2.94 -2,-4 -3,-4 l -7,0 0,-7 z"
+       transform="translate(-4.7683724e-7,1036.3621)"
+       id="rect4191-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6,1052.362 0,-4 7,0 1,4 z"
+       id="path4146"
+       inkscape:connector-curvature="0" />
+    <path
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 6,1036.36 4,0 2,10 -6,0 z"
+       id="rect4188"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6.5,1036.8621 0,9.025 5.5,0 -2.075,-9.025 z"
+       id="path4139"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="color:#000000;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       d="m 6,12 0,4 1,0 0,-3 5.21,0 0.79 3 1,0 -1,-4 z"
+       transform="translate(-4.7683724e-7,1036.3621)"
+       id="path4141"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/ferry.svg b/images/presets/nautical/ferry.svg
new file mode 100644
index 0000000..73e62eb
--- /dev/null
+++ b/images/presets/nautical/ferry.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+   ***************************************************************************
+   Bundesanstalt fuer Strassenwesen
+   RWB-Symbol Nr.: 9
+   Bezeichnung:
+   Hafen, Faehrhafen, Faehre
+   Ausdehnung in cm:
+         X_min     X_max     Y_min     Y_max
+         0.00000  15.00000   0.00000  15.00000
+-->
+
+<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"
+   width="16"
+   height="14"
+   version="1.0"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="43.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="true">
+  <metadata
+     id="metadata17">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs15" />
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="32"
+     inkscape:cx="3.6005368"
+     inkscape:cy="11.203125"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     width="140px"
+     height="80px"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4150"
+       originx="-62"
+       originy="-33" />
+  </sodipodi:namedview>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4167"
+     width="16"
+     height="14"
+     x="0"
+     y="0" />
+  <path
+     d="m 15.999588,11.18072 -0.2388,0.135912 -0.255856,0.145616 c -0.545829,0.310657 -1.159883,0.310657 -1.70571,0 l -0.511715,-0.291232 c -0.545827,-0.310656 -1.159882,-0.310656 -1.705709,0 l -0.511725,0.291232 c -0.545828,0.310657 -1.159883,0.310657 -1.705711,0 L 8.852649,11.171016 C 8.582411,11.017211 8.292551,10.938024 7.999794,10.938024 c -0.292757,0 -0.582617,0.07918 -0.852855,0.232992 l -0.511713,0.291232 c -0.545828,0.310657 -1.159883,0.310657 -1.70571,0 L 4.41779,11.171016 c -0 [...]
+     id="path6-6"
+     style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     inkscape:connector-curvature="0" />
+  <!--
+   ***************************************************************************
+-->
+  <!--
+      INHALT
+-->
+  <path
+     d="m 15.999588,8.217062 -0.2388,0.135913 -0.255856,0.145616 c -0.545829,0.310656 -1.159883,0.310656 -1.70571,0 L 13.287507,8.207358 c -0.545827,-0.310656 -1.159882,-0.310656 -1.705709,0 l -0.511725,0.291233 c -0.545828,0.310656 -1.159883,0.310656 -1.705711,0 L 8.852649,8.207358 C 8.582411,8.053553 8.292551,7.974366 7.999794,7.974366 c -0.292757,0 -0.582617,0.07918 -0.852855,0.232992 L 6.635226,8.498591 c -0.545828,0.310656 -1.159883,0.310656 -1.70571,0 L 4.41779,8.207358 c -0.545828 [...]
+     id="path6"
+     style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     inkscape:connector-curvature="0" />
+  <!--
+       OBERE WASSERWELLE
+       UNTERE WASSERWELLE
+-->
+  <!--
+      SCHIFF
+-->
+  <path
+     d="m 14.744728,5.3193174 0.01563,-1.3278205 -1.092296,0.016849 0.329492,-0.9938315 -2.391848,-0.02903 L 12.016875,2.0014552 8.7596676,2 9.0255522,1.0110491 5.9831785,0.988952 5.5140336,2.2982562 3.9731868,2.3017462 3.4029179,2.9991217 1.062612,3.000939 C 2.2619776,5.2429628 3,6 4.023266,7.0995886 c 0.545827,0.227428 1.159882,0.227428 1.70571,0 0.7530013,-0.1950567 1.1153851,-0.2986114 1.8880055,-0.321279 0.292757,0 0.9654295,0.05797 1.2356675,0.170571 l 0.511713,0.213208 c 0.545828, [...]
+     id="path10"
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     sodipodi:nodetypes="ccccccccccccccccccccccc"
+     inkscape:connector-curvature="0" />
+  <!--
+      HECK
+      AUFBAU
+      SCHORNSTEIN UNTERTEIL
+      VORDECK
+      BUG
+      GEWELLTE WASSERLINIE
+      SCHORNSTEIN
+-->
+</svg>
diff --git a/images/presets/nautical/groyne.svg b/images/presets/nautical/groyne.svg
new file mode 100644
index 0000000..2dc80c4
--- /dev/null
+++ b/images/presets/nautical/groyne.svg
@@ -0,0 +1,194 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="groyne2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-3.961104"
+     inkscape:cy="4.0710422"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="-4.7683727e-007"
+       y="1036.3621"
+       class="st1"
+       width="16.000011"
+       height="16.000046"
+       id="rect25-2"
+       style="fill:#208ece;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffbe34;fill-opacity:1"
+       d="m -1.9881402e-7,1036.362 0,16 7.24902599881402,0 c 0.499658,-2.4463 0.786705,-6.0014 -0.800782,-9 -1.46353,-2.8145 -1.838243,-5.1361 -1.896485,-7 z"
+       id="path27-8"
+       sodipodi:nodetypes="cccccc" />
+    <g
+       transform="matrix(0.33898304,0,0,2.0000018,-79.813555,-61.038921)"
+       id="g55-9">
+      <rect
+         x="250.2"
+         y="553.70001"
+         class="st6"
+         width="5.9000001"
+         height="1"
+         id="rect57-1" />
+    </g>
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4290"
+       width="1.9999993"
+       height="2.0000401"
+       x="7.0000024"
+       y="1046.3621" />
+    <g
+       transform="matrix(0.33898304,0,0,2.0000018,-75.813555,-61.038895)"
+       id="g55-9-6">
+      <rect
+         x="250.2"
+         y="553.70001"
+         class="st6"
+         width="5.9000001"
+         height="1"
+         id="rect57-1-2" />
+    </g>
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4290-6"
+       width="1.9999996"
+       height="2.0000403"
+       x="11.000005"
+       y="1046.3622" />
+    <g
+       transform="matrix(0.33898304,0,0,2.0000018,-71.813554,-61.038895)"
+       id="g55-9-6-4">
+      <rect
+         x="250.2"
+         y="553.70001"
+         class="st6"
+         width="5.9000001"
+         height="1"
+         id="rect57-1-2-4" />
+    </g>
+    <g
+       transform="matrix(0.33898304,0,0,2.0000018,-81.813558,-68.038921)"
+       id="g55-9-3">
+      <rect
+         x="250.2"
+         y="553.70001"
+         class="st6"
+         width="5.9000001"
+         height="1"
+         id="rect57-1-0" />
+    </g>
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4290-3"
+       width="1.9999996"
+       height="2.0000403"
+       x="5.0000014"
+       y="1039.3622" />
+    <g
+       transform="matrix(0.33898304,0,0,2.0000018,-77.813558,-68.038921)"
+       id="g55-9-6-2">
+      <rect
+         x="250.2"
+         y="553.70001"
+         class="st6"
+         width="5.9000001"
+         height="1"
+         id="rect57-1-2-7" />
+    </g>
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4290-6-1"
+       width="2"
+       height="2.0000405"
+       x="9.0000048"
+       y="1039.3623" />
+    <g
+       transform="matrix(0.33898304,0,0,2.0000018,-73.813557,-68.038921)"
+       id="g55-9-6-4-2">
+      <rect
+         x="250.2"
+         y="553.70001"
+         class="st6"
+         width="5.9000001"
+         height="1"
+         id="rect57-1-2-4-0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/nautical/lock_gate.svg b/images/presets/nautical/lock_gate.svg
new file mode 100644
index 0000000..21fa704
--- /dev/null
+++ b/images/presets/nautical/lock_gate.svg
@@ -0,0 +1,139 @@
+<?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"
+   width="16.000103"
+   height="11"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="lock_gate7.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="20.194162"
+     inkscape:cy="10.208621"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4143"
+       originx="-191.03119"
+       originy="-139.93956" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-430.5312,-479.06553)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.02750115;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4141"
+       width="15.972578"
+       height="10.972499"
+       x="430.54495"
+       y="479.07928" />
+    <rect
+       style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="rect2165"
+       width="2.3882399"
+       height="2.0347366"
+       x="436.11157"
+       y="480.9838" />
+    <rect
+       style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.0335051;stroke-opacity:1"
+       id="rect2162"
+       width="11.895884"
+       height="2.0676248"
+       x="430.54797"
+       y="487.98114" />
+    <rect
+       style="fill:#0000ff;fill-opacity:1;stroke:#000000;stroke-width:0.01417625;stroke-opacity:1"
+       id="rect2164"
+       width="3.9329076"
+       height="2.7384667"
+       x="442.59131"
+       y="481.7821" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.02220934;stroke-opacity:1"
+       id="rect2160"
+       width="2.9476049"
+       height="10.032261"
+       x="441.52005"
+       y="480.02216" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.03800494;stroke-opacity:1"
+       id="rect2166"
+       width="0"
+       height="0.43434215"
+       x="454.94067"
+       y="497.67023" />
+    <path
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.04456897;stroke-opacity:1"
+       d="m 431.35877,486.03705 c 0.32342,1.14005 1.12585,1.94383 2.07054,1.94383 l 4.44841,0 c 0.94461,0 1.74707,-0.80395 2.07054,-1.94383 l -8.58949,0 z"
+       id="rect2168"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03800494;stroke-opacity:1"
+       id="rect2176"
+       width="0.54292768"
+       height="6.9494743"
+       x="435.54517"
+       y="480.2738"
+       ry="0.27146384" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#6c6c6c;stroke-width:0.03800494px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 438.80275,486.89752 -3.04039,-5.75504 -2.93181,5.64645"
+       id="path2180"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/marina.png b/images/presets/nautical/marina.png
new file mode 100644
index 0000000..e27b17e
Binary files /dev/null and b/images/presets/nautical/marina.png differ
diff --git a/images/presets/nautical/marine_fuel.png b/images/presets/nautical/marine_fuel.png
new file mode 100644
index 0000000..bf580e2
Binary files /dev/null and b/images/presets/nautical/marine_fuel.png differ
diff --git a/images/presets/nautical/pier.svg b/images/presets/nautical/pier.svg
new file mode 100644
index 0000000..afa1dd7
--- /dev/null
+++ b/images/presets/nautical/pier.svg
@@ -0,0 +1,139 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="pier4.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="10.734206"
+     inkscape:cy="5.6898221"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="3.3786003e-007"
+       y="1036.3622"
+       class="st1"
+       width="16.000008"
+       height="16.000044"
+       id="rect25"
+       style="fill:#2090cf" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffbe34;fill-opacity:1"
+       d="m -4.7683724e-7,1036.3621 0,16 4.00000067683724,0 c -0.2490234,-2 -0.7849343,-2.9062 0,-5 2.6687815,-7.1188 2.0000004,-9 2.0000004,-11 z"
+       id="path27"
+       sodipodi:nodetypes="cccscc" />
+    <g
+       transform="matrix(0.99999949,0,0,2.0000015,-247.89987,-80.638742)"
+       id="g51">
+      <rect
+         x="248.89999"
+         y="562"
+         class="st6"
+         width="12.00001"
+         height="0.99998534"
+         id="rect53" />
+    </g>
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.745;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4140"
+       width="1"
+       height="4"
+       x="3"
+       y="1042.3621" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.745;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4142"
+       width="1"
+       height="4"
+       x="6.0000005"
+       y="1042.3621" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.745;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4146"
+       width="0.99999774"
+       height="4"
+       x="9.000001"
+       y="1042.3621" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.745;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4146-7"
+       width="0.99999791"
+       height="4.0000005"
+       x="12.000002"
+       y="1042.3621" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/slipway.png b/images/presets/nautical/slipway.png
new file mode 100644
index 0000000..ab6c77c
Binary files /dev/null and b/images/presets/nautical/slipway.png differ
diff --git a/images/presets/nautical/turning.svg b/images/presets/nautical/turning.svg
new file mode 100644
index 0000000..cc0bfc5
--- /dev/null
+++ b/images/presets/nautical/turning.svg
@@ -0,0 +1,85 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="700"
+   height="500"
+   id="svg2169"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\nautical"
+   sodipodi:docname="turning.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs2171" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="346.8323"
+     inkscape:cy="153.88218"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="270"
+     inkscape:window-y="162"
+     width="700px"
+     height="500px" />
+  <metadata
+     id="metadata2174">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-37.14286,-352.3622)">
+    <rect
+       style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="rect2177"
+       width="642.85718"
+       height="142.85715"
+       x="65.714287"
+       y="543.79077" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="path2181"
+       sodipodi:cx="417.14285"
+       sodipodi:cy="558.07648"
+       sodipodi:rx="140"
+       sodipodi:ry="140"
+       d="M 557.14285 558.07648 A 140 140 0 1 1  277.14285,558.07648 A 140 140 0 1 1  557.14285 558.07648 z"
+       transform="matrix(1.122449,0,0,1.122449,-81.078701,-11.193039)" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/water.svg b/images/presets/nautical/water.svg
new file mode 100644
index 0000000..4cb0aeb
--- /dev/null
+++ b/images/presets/nautical/water.svg
@@ -0,0 +1,94 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="natural_water.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.6561077"
+     inkscape:cy="7.6175991"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       x="-4.7683727e-007"
+       y="1036.3621"
+       class="st1"
+       width="16"
+       height="16"
+       id="rect25"
+       style="fill:#2090cf" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterfall.svg b/images/presets/nautical/waterfall.svg
new file mode 100644
index 0000000..6061605
--- /dev/null
+++ b/images/presets/nautical/waterfall.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_waterfall.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.000001"
+     inkscape:cx="26.851957"
+     inkscape:cy="14.987213"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:#808080;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 4.21875,1.9375 0,2 0,16 9,16 C 11.036162,14.221237 9.6178463,11.33203 6.4647303,11.446115 9.1202282,8.8778007 6.4268536,6.6786026 4.3867188,6.9199219 6.2930537,5.3457347 6.636446,3.1675457 4.21875,1.9375 Z"
+       transform="translate(-4.7683724e-7,1036.3621)"
+       id="path4165"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#2090cf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 4,1036.3621 c 0,0 7,0 9.4,5.0804 1.545,3.267 2.6,10.92 2.6,10.92 l -4,0 c -1,-12 -3,-14 -8,-14 l -4,0 0,-2 z"
+       id="path4141"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cscccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterway_canal.svg b/images/presets/nautical/waterway_canal.svg
new file mode 100644
index 0000000..9668d50
--- /dev/null
+++ b/images/presets/nautical/waterway_canal.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="16"
+   height="10"
+   viewBox="0 0 16 10"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_canal4.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="7.2389602"
+     inkscape:cy="4.7333146"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1042.3621)">
+    <path
+       style="fill:#1d8ece;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.0000002,1043.3621 12.0000018,0 -1.631965,8.2295 -8.6331209,0.2656 z"
+       id="path4245"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#000000;fill-opacity:1"
+       d="m 0,0 0,1.515625 1.3730469,0 1.1425779,8.138673 c 0.1251798,0.3151999 0.2942498,0.3367032 0.5214844,0.345703 l 9.9472658,0 c 0.278941,-0.01 0.400094,-0.1466498 0.458984,-0.3437498 l 0,-0.00195 1.234375,-8.1347669 1.322266,0 0,-1.51562495 -2.349609,0 L 12.125,8.6250012 3.7890623,8.5937511 2.3535156,0 Z"
+       transform="translate(0,1042.3621)"
+       id="polygon3436"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterway_ditch.svg b/images/presets/nautical/waterway_ditch.svg
new file mode 100644
index 0000000..c48df0e
--- /dev/null
+++ b/images/presets/nautical/waterway_ditch.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="11"
+   height="11"
+   viewBox="0 0 11 11"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_ditch3.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="4.661675"
+     inkscape:cy="2.3736913"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="false"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1041.3621)">
+    <path
+       style="fill:#1d8ece;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.0000001,1046.3621 6.9614378,0 -1.8453204,4.9783 -3.116068,0.022 z"
+       id="path4245"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#000000;fill-opacity:1"
+       d="m 431.47545,562.7808 2.5808,-8.7884 -1.27328,-0.44867 -2.50151,8.34591 -2.00783,0.0158 -2.58062,-8.34815 -1.21221,0.4543 2.63912,8.81555 c 0.10875,0.27376 0.30259,0.29222 0.5,0.3 l 3.45214,-0.0272 c 0.24233,-0.006 0.35223,-0.14802 0.40339,-0.31924 z"
+       id="polygon3436"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc"
+       transform="matrix(1.1510793,0,0,1.1510794,-488.63316,404.18931)" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterway_drain.svg b/images/presets/nautical/waterway_drain.svg
new file mode 100644
index 0000000..762d0bb
--- /dev/null
+++ b/images/presets/nautical/waterway_drain.svg
@@ -0,0 +1,98 @@
+<?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"
+   width="8"
+   height="7"
+   viewBox="0 0 8 7"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_drain3.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="0.58070291"
+     inkscape:cy="3.2701754"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1045.3621)">
+    <path
+       style="fill:#1d8ece;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.142857,1048.3621 5.7142869,0 -1.5238107,3.3308 -2.6666335,0 z"
+       id="path4245"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#000000;fill-opacity:1"
+       d="m 6.0047978,1052.1373 1.9952034,-6.3897 -1.1428573,-0.3855 -1.7801991,5.829 -2.1230756,-0.012 L 1.142857,1045.3622 2.8499999e-6,1045.7476 2.0104926,1052.1585 c 0.083454,0.2144 0.2322033,0.2287 0.3836929,0.2349 l 3.3036579,-0.021 c 0.1859607,0 0.2676949,-0.1002 0.3069544,-0.2348 z"
+       id="polygon3436"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterway_river.svg b/images/presets/nautical/waterway_river.svg
new file mode 100644
index 0000000..84dbb84
--- /dev/null
+++ b/images/presets/nautical/waterway_river.svg
@@ -0,0 +1,82 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_river2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="7.0154651"
+     inkscape:cy="9.8634013"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       id="XMLID_172_"
+       class="st0"
+       d="m 15.999998,1044.8546 c -3.327311,-0.4178 -5.847849,-0.6853 -8.7379577,-1.3254 -1.0764995,-0.2384 -1.7615565,-0.4248 -1.7509906,-0.5811 0.00212,-0.1271 2.6473992,0.2017 4.0266021,0.1042 1.3868742,-0.098 4.6457662,-0.1576 5.2345402,-2.0835 0.861618,-2.8131 -6.6416497,-1.8373 -7.7114935,-3.0681 -0.014361,-0.5627 3.2813355,-1.3715 3.6690635,-1.5386 -0.8687994,0.097 -4.7101856,0.2462 -4.6814639,1.8023 0.028723,1.3802 3.8198443,2.0484 4.6886449,2.277 -2.7069217,0.053 -5.3133197,-0.5 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#208ece"
+       sodipodi:nodetypes="cscscccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterway_riverbank.svg b/images/presets/nautical/waterway_riverbank.svg
new file mode 100644
index 0000000..a009707
--- /dev/null
+++ b/images/presets/nautical/waterway_riverbank.svg
@@ -0,0 +1,93 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_riverbank2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="10.251193"
+     inkscape:cy="7.9076999"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       id="XMLID_172_"
+       class="st0"
+       d="m 15.63024,1044.8222 c -2.800615,0.1618 -5.7012928,-0.3125 -8.4745147,-0.8239 -0.1780338,-0.031 -1.5925808,-0.3564 -1.5378017,-0.7444 0.061628,-0.4682 2.3226138,-0.1753 2.582818,-0.2156 1.3078651,-0.21 5.6970884,-0.019 6.2585804,-1.7841 0.821696,-2.5834 -6.3339034,-1.6873 -7.3541747,-2.8174 -0.013725,-0.5167 3.1292897,-1.2593 3.4990517,-1.4127 -0.8285424,0.088 -4.4919335,0.2259 -4.4645439,1.6549 0.027383,1.2673 3.6428506,1.881 4.4713929,2.0907 -2.5814945,0.049 -5.0671243,-0.516 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#208ece"
+       sodipodi:nodetypes="cccccccccccccccc" />
+    <g
+       id="XMLID_170_"
+       transform="matrix(0.06847461,0,0,0.08072631,-2.0841437,1002.6669)"
+       style="fill:#000080">
+      <path
+         style="fill:#000080"
+         d="M 264.1,615.6 C 204.04191,599.71348 143.49174,584.655 85.646918,561.70032 65.711544,553.06011 42.203521,544.22139 33.104688,522.67227 c -7.223309,-15.43301 0.868163,-33.71435 14.569091,-42.44742 20.673947,-14.17361 46.998496,-14.45239 71.135591,-14.81704 5.185,-0.4956 21.7258,2.18703 9.09341,-2.33835 -9.55373,-3.54351 -17.9853,-15.55705 -10.40283,-24.89605 10.64848,-11.34648 27.47346,-12.43666 41.98859,-14.72984 22.38835,-2.15632 44.81234,-3.97467 67.21146,-6.04357 -19.43803, [...]
+         id="XMLID_176_"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccccccccccccccccccsscccccccc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/nautical/waterway_stream.svg b/images/presets/nautical/waterway_stream.svg
new file mode 100644
index 0000000..15541d3
--- /dev/null
+++ b/images/presets/nautical/waterway_stream.svg
@@ -0,0 +1,80 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waterway_stream.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="15.025273"
+     inkscape:cy="9.2455363"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       id="XMLID_164_"
+       class="st0"
+       d="m 15.999938,1048.734 c -2.349253,-0.4988 -4.691597,-1.0417 -7.0201254,-1.6729 -1.2920892,-0.3486 -2.5841799,-0.7282 -3.8555412,-1.1828 -0.2418342,-0.088 -2.9538393,-0.9225 -2.9538393,-1.3728 0,-0.8473 6.6539155,-1.536 7.2895962,-1.6331 1.2851817,-0.1942 2.6118197,-0.3133 3.8693587,-0.715 0.732418,-0.2338 1.924319,-1.0063 0.791149,-1.7567 -0.82915,-0.5472 -2.556542,-0.9268 -3.513519,-1.0593 -1.2886362,-0.1758 -2.5565415,-0.428 -3.7588087,-0.6754 -1.3162729,-0.2735 0.5216731,-1.3 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#208ece" />
+  </g>
+</svg>
diff --git a/images/presets/nautical/weir.svg b/images/presets/nautical/weir.svg
new file mode 100644
index 0000000..3067ecc
--- /dev/null
+++ b/images/presets/nautical/weir.svg
@@ -0,0 +1,78 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg3001"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="weir3.svg">
+  <defs
+     id="defs3003" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="14.481547"
+     inkscape:cx="11.766361"
+     inkscape:cy="1.0402914"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3006">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-307.55961,-178.84817)">
+    <path
+       style="fill:#2090cf;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 307.55961,178.84817 0,16 16,0 0,-3 -1,0 c 0,0 -3,-13 -5,-13 z"
+       id="path4193"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none"
+       d="m 314.55961,182.84817 3,0 2.64063,12 -5.64063,0 z"
+       id="path4137"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 313.55961,181.84817 0,13 1,0 0,-12 2.205,-0.002 2.8,12 1,0 -3,-13 z"
+       id="path4145"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/office/accountant.svg b/images/presets/office/accountant.svg
new file mode 100644
index 0000000..a32a01f
--- /dev/null
+++ b/images/presets/office/accountant.svg
@@ -0,0 +1,113 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="accountant.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-8.1116609"
+     inkscape:cy="2.6919727"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       ry="0"
+       y="1041.8585"
+       x="0.49999952"
+       height="10.00354"
+       width="8.0039082"
+       id="rect4217"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4219"
+       d="m 4.5000504,1042.8692 0,8.1636"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cssc"
+       inkscape:connector-curvature="0"
+       id="path4221"
+       d="m 6.5402884,1044.0562 c 0,0 -4.086376,-1.3424 -4.086371,1.4593 4e-6,2.8016 4.068423,0.2334 4.068417,3.035 -6e-6,2.8017 -4.0579,1.109 -4.0579,1.109"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/office/administrative.svg b/images/presets/office/administrative.svg
new file mode 100644
index 0000000..593aa03
--- /dev/null
+++ b/images/presets/office/administrative.svg
@@ -0,0 +1,103 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="administrative.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-0.74560552"
+     inkscape:cy="4.0690032"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5664"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4162"
+       width="1"
+       height="9.0000019"
+       x="-5.3644186e-007"
+       y="1043.3621" />
+    <rect
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4175"
+       width="8.000001"
+       height="6.0000415"
+       x="0.9999997"
+       y="1043.3621" />
+  </g>
+</svg>
diff --git a/images/presets/office/advertising_agency.svg b/images/presets/office/advertising_agency.svg
new file mode 100644
index 0000000..ea3d9ed
--- /dev/null
+++ b/images/presets/office/advertising_agency.svg
@@ -0,0 +1,148 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="advertising_agency.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.999999"
+     inkscape:cx="3.2021092"
+     inkscape:cy="5.3780868"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6"
+       width="2.0000002"
+       height="3.5624599"
+       x="3.7500005"
+       y="1048.7996"
+       ry="0.00014840672" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto; [...]
+       id="rect4183"
+       width="8.5000019"
+       height="12.005615"
+       x="0.49999964"
+       y="1036.8621"
+       ry="0" />
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="path4292"
+       cx="3.5000002"
+       cy="1043.8621"
+       r="0.5" />
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="path4292-9"
+       cx="6.3507385"
+       cy="1043.8621"
+       r="0.50000012" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 2.8601247,1042.8621 4.1427251,0"
+       id="path4309"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 3.3035139,1041.3853 1.9666407,-0.022 1.0496117,1.3589 -3.8780388,0.1 z"
+       id="path4322"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6.0052678,1040.6026 1.7949404,-2.4797"
+       id="path4324"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.6464474,1047.0692 2,-2 2,2"
+       id="path4326"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0"
+       id="path4153"
+       d="m 3.8002073,1040.6026 -1.7949404,-2.4797"
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 4.9999995,1037.6771 0,2.685"
+       id="path4155"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/images/presets/office/architect.svg b/images/presets/office/architect.svg
new file mode 100644
index 0000000..53afd87
--- /dev/null
+++ b/images/presets/office/architect.svg
@@ -0,0 +1,138 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="architect.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-4.4474266"
+     inkscape:cy="18.729768"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 4.9497461,1037.314 -4.3310298,4.5741 8.9935159,-0.044 z"
+       id="path4146"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffdd55;fill-rule:evenodd;stroke:#808080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 0.3437477,1041.7293 4.6562509,-4.3672 4.6523446,4.3633"
+       id="path4154-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       style="opacity:1;fill:#ffdd55;fill-opacity:1;stroke:#808080;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4144-4"
+       width="8.9991627"
+       height="9.9960957"
+       x="0.49999967"
+       y="1041.866"
+       ry="0" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4148"
+       width="2.0000005"
+       height="3.0000005"
+       x="3.9999986"
+       y="1048.3621"
+       ry="0.00014840702" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4150"
+       width="2.0000005"
+       height="2.0000005"
+       x="1.999998"
+       y="1043.3621"
+       ry="0.00014840702" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152"
+       width="2.0000005"
+       height="2.0000005"
+       x="5.9999986"
+       y="1043.3621"
+       ry="0.00014840702" />
+  </g>
+</svg>
diff --git a/images/presets/office/association.svg b/images/presets/office/association.svg
new file mode 100644
index 0000000..8f122d7
--- /dev/null
+++ b/images/presets/office/association.svg
@@ -0,0 +1,152 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="association.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-27.750963"
+     inkscape:cy="14.817644"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#2ca02c;fill-opacity:1;stroke:none;stroke- [...]
+       d="M 5.5234375,4 C 5.2827341,4 5.04231,4.1887532 5.046875,4.5644531 c -0.00886,1.5873785 -0.00728,3.0618654 0,4.4453125 0,0.6044999 0.362299,1.1337034 0.9570312,1.0332034 l 0.4921876,0 0,5.957031 1.2265624,0 0,-3 0.6054688,0 0,3 1.2265625,0 0,-5.957031 0.5410155,0 0,3.958984 c -0.0092,0.7514 0.964248,0.7514 0.955078,0 l 0,-4.0742186 0,-0.7226563 c 0,-0.6657999 -0.461731,-1.203125 -1.033203,-1.203125 l -3.9355468,0 c -0.04495,0 -0.038507,0.00173 -0.082031,0.00195 L 6,4.5644531 C 6. [...]
+       id="path3772-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="scccccccccccccccsssccs"
+       transform="translate(-4.7683724e-7,1036.3621)" />
+    <ellipse
+       style="opacity:1;fill:#2ca02c;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-2"
+       cx="8.0502539"
+       cy="1042.569"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5664"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffcc00;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 4.0313961,1040.3621 c 0.2407035,0 0.4811276,0.1888 0.4765626,0.5645 0.00886,1.5873 0.00728,3.0618 0,4.4453 0,0.6045 -0.362299,1.1337 -0.9570313,1.0332 l -0.4921877,0 0,5.957 -1.2265631,0 0,-3 -0.605468,0 0,3 -1.22656300175,0 c -2.52e-4,-2.666 -3.52e-4,-5.332 0.001200002,-7.998 l 3.4715088,0 0.082031,0 2e-7,-3.4394 c -0.00456,-0.3757 0.2358591,-0.5645 0.4765625,-0.5645 z"
+       id="path3772-3-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccsccsc" />
+    <ellipse
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-2-4"
+       cx="-1.5045782"
+       cy="1042.5693"
+       rx="1.2044045"
+       ry="1.2043883"
+       transform="scale(-1,1)" />
+    <g
+       id="g4199"
+       transform="translate(0.04588891,0)">
+      <path
+         sodipodi:nodetypes="ccccccccccccsssccsc"
+         inkscape:connector-curvature="0"
+         id="path3772-3-0"
+         d="m 5.4776113,1043.8006 c -0.2407034,0 -0.4811276,0.1888 -0.4765626,0.5645 -0.00886,1.5873 -0.00728,3.0618 0,4.4453 0,0.6045 0.3622991,1.1337 0.9570314,1.0332 l 0.4921877,0 0,2.5127 3.0585942,0 0,-2.5127 0.541016,0 0,2.5127 0.955078,0 0,-2.628 0,-0.7226 c 0,-0.6658 -0.461731,-1.2031 -1.033203,-1.2031 l -3.9355479,0 -0.082031,0 -2e-7,-3.4394 c 0.00456,-0.3757 -0.2358592,-0.5645 -0.4765626,-0.5645 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#00ffff;fill-opacity:1;stroke:none;strok [...]
+      <ellipse
+         ry="1.2043883"
+         rx="1.2044045"
+         cy="1046.0077"
+         cx="8.0044289"
+         id="path4145-2-2"
+         style="opacity:1;fill:#00ffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4195"
+       transform="translate(0,-0.4375)">
+      <path
+         sodipodi:nodetypes="ccccccccsccsc"
+         inkscape:connector-curvature="0"
+         id="path3772-3-7-5"
+         d="m 4.0313968,1044.2381 c 0.2407036,0 0.4811277,0.1888 0.4765627,0.5645 0.00886,1.5873 0.00728,3.0618 0,4.4453 0,0.6045 -0.362299,1.1337 -0.9570314,1.0332 l -0.4921878,0 0,2.5195 -3.05859470175,0 c 0,0 -3.52e-4,-1.8945 0.001200002,-4.5605 l 3.4715094,0 0.082031,0 2e-7,-3.4394 c -0.00456,-0.3757 0.2358591,-0.5645 0.4765625,-0.5645 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ff5555;fill-opacity:1;stroke:none;strok [...]
+      <ellipse
+         transform="scale(-1,1)"
+         ry="1.2043883"
+         rx="1.2044045"
+         cy="1046.4451"
+         cx="-1.5045781"
+         id="path4145-2-4-0"
+         style="opacity:1;fill:#ff5555;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/office/educational_institution.svg b/images/presets/office/educational_institution.svg
new file mode 100644
index 0000000..65e1c1e
--- /dev/null
+++ b/images/presets/office/educational_institution.svg
@@ -0,0 +1,158 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="educational_institution.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627418"
+     inkscape:cx="-15.036468"
+     inkscape:cy="11.530192"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c87137;stroke-width:1.20000017;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1.4963127,1051.7548 3,-5 3,5"
+       id="path4333"
+       inkscape:connector-curvature="0" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5664"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:#c87137;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto; [...]
+       id="rect4183"
+       width="8.008234"
+       height="7.0303302"
+       x="0.49999964"
+       y="1040.8621"
+       ry="0" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6"
+       width="1.0000006"
+       height="1.0000402"
+       x="6.0000005"
+       y="1043.3621"
+       ry="4.1660169e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6-7"
+       width="1.0000011"
+       height="1.0000404"
+       x="1.9999999"
+       y="1043.3621"
+       ry="4.1660176e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6-7-5"
+       width="1.0000013"
+       height="1.0000407"
+       x="1.9999999"
+       y="1045.3621"
+       ry="4.1660183e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6-7-8"
+       width="3.0000002"
+       height="1.0000407"
+       x="4.0000005"
+       y="1045.3621"
+       ry="4.1660183e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6-7-6"
+       width="2.0000005"
+       height="1.0000407"
+       x="1.9999999"
+       y="1041.3621"
+       ry="4.1660183e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6-7-4"
+       width="1.0000001"
+       height="1.0000407"
+       x="5.0000005"
+       y="1041.3621"
+       ry="4.1660183e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6-7-0"
+       width="1.0000013"
+       height="1.0000407"
+       x="4.0000005"
+       y="1043.3621"
+       ry="4.1660183e-005" />
+  </g>
+</svg>
diff --git a/images/presets/office/employment_agency.svg b/images/presets/office/employment_agency.svg
new file mode 100644
index 0000000..e8efe2a
--- /dev/null
+++ b/images/presets/office/employment_agency.svg
@@ -0,0 +1,131 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="employment_agency.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="12.027543"
+     inkscape:cy="20.4988"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4254-9"
+       width="1.0000005"
+       height="6.0000429"
+       x="0.9999994"
+       y="1046.3621"
+       ry="1.6663518e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4258-4"
+       width="4.2044048"
+       height="1.0000005"
+       x="2.7955961"
+       y="1048.3621"
+       ry="4.1658514e-005" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 3.031466,1042.9534 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,0.8334 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-0.8334 0.491463,0 0,6.6097 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-3.247 0.606985,0 0,3.247 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-6.6097 0.541489,0 0,0.8334 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-0.9485 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.20 [...]
+       id="path3772-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4"
+       cx="5.0000005"
+       cy="1041.1577"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4254"
+       width="1.0000002"
+       height="6.000042"
+       x="8.000001"
+       y="1046.3621"
+       ry="1.6663515e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4258"
+       width="10.000001"
+       height="1.0000002"
+       x="1.7881413e-007"
+       y="1046.3621"
+       ry="4.1658506e-005" />
+  </g>
+</svg>
diff --git a/images/presets/office/foundation.svg b/images/presets/office/foundation.svg
new file mode 100644
index 0000000..b7dcbdf
--- /dev/null
+++ b/images/presets/office/foundation.svg
@@ -0,0 +1,150 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="foundation.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-7.27988"
+     inkscape:cy="5.6187523"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4"
+       cx="1.204404"
+       cy="1051.1577"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4-1"
+       cx="4.7356548"
+       cy="1051.1577"
+       rx="1.2044047"
+       ry="1.2043885" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4-1-9"
+       cx="8.2669058"
+       cy="1051.1577"
+       rx="1.204405"
+       ry="1.2043887" />
+    <ellipse
+       ry="1.2043883"
+       rx="1.2044045"
+       cy="1047.7599"
+       cx="1.204404"
+       id="ellipse4184"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="1.2043885"
+       rx="1.2044047"
+       cy="1047.7599"
+       cx="4.7356548"
+       id="ellipse4186"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="1.2043887"
+       rx="1.204405"
+       cy="1047.7599"
+       cx="8.2669058"
+       id="ellipse4188"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4190"
+       cx="1.204404"
+       cy="1044.3622"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4192"
+       cx="4.7356548"
+       cy="1044.3622"
+       rx="1.2044047"
+       ry="1.2043885" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4194"
+       cx="8.2669058"
+       cy="1044.3622"
+       rx="1.204405"
+       ry="1.2043887" />
+  </g>
+</svg>
diff --git a/images/presets/office/government.svg b/images/presets/office/government.svg
new file mode 100644
index 0000000..371a07c
--- /dev/null
+++ b/images/presets/office/government.svg
@@ -0,0 +1,103 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="government.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="6.5574036"
+     inkscape:cy="8.9030505"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5664"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4162"
+       width="1"
+       height="16.000042"
+       x="-3.5762773e-007"
+       y="1036.3621" />
+    <rect
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4175"
+       width="8.000001"
+       height="6.0000415"
+       x="0.9999997"
+       y="1036.3621" />
+  </g>
+</svg>
diff --git a/images/presets/office/insurance.svg b/images/presets/office/insurance.svg
new file mode 100644
index 0000000..c00e64d
--- /dev/null
+++ b/images/presets/office/insurance.svg
@@ -0,0 +1,119 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="insurance.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627418"
+     inkscape:cx="3.4840778"
+     inkscape:cy="6.8405064"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4144-4"
+       width="7.9895883"
+       height="11.997437"
+       x="0.49999964"
+       y="1039.8646"
+       ry="0" />
+    <rect
+       style="opacity:1;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152"
+       width="9.0000019"
+       height="2.0000408"
+       x="-4.7683727e-007"
+       y="1044.8633"
+       ry="0.00014841002" />
+    <rect
+       style="opacity:1;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4148"
+       width="2.0000005"
+       height="12.997803"
+       x="3.5039067"
+       y="1039.3643"
+       ry="0.00054400211" />
+  </g>
+</svg>
diff --git a/images/presets/office/it.svg b/images/presets/office/it.svg
new file mode 100644
index 0000000..234402c
--- /dev/null
+++ b/images/presets/office/it.svg
@@ -0,0 +1,158 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="it.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="4.6552983"
+     inkscape:cy="8.4648393"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto; [...]
+       id="rect4183"
+       width="6"
+       height="4"
+       x="1.4999995"
+       y="1040.8621"
+       ry="4.1658499e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a05a2c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4254"
+       width="1.0000002"
+       height="6.000042"
+       x="7.000001"
+       y="1046.3621"
+       ry="1.6663515e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a05a2c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4258"
+       width="9.000001"
+       height="1.0000002"
+       x="1.7881413e-007"
+       y="1046.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4274"
+       width="1.0000002"
+       height="1.0000002"
+       x="1.9999999"
+       y="1043.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276"
+       width="1.0000001"
+       height="1.9999604"
+       x="5.0000005"
+       y="1041.3621"
+       ry="8.3315339e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ac9393;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4287"
+       width="2.0000007"
+       height="1.0000002"
+       x="4"
+       y="1043.3621"
+       ry="4.1658506e-005" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4301-4"
+       width="1.0000005"
+       height="1.0000005"
+       x="3"
+       y="1042.3621"
+       ry="4.1658514e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="rect4185"
+       width="1"
+       height="1"
+       x="3.9999993"
+       y="1045.3621"
+       ry="4.1658499e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#a05a2c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4254-9"
+       width="1.0000005"
+       height="6.0000429"
+       x="0.9999997"
+       y="1046.3621"
+       ry="1.6663518e-005" />
+  </g>
+</svg>
diff --git a/images/presets/office/lawyer.svg b/images/presets/office/lawyer.svg
new file mode 100644
index 0000000..2923d63
--- /dev/null
+++ b/images/presets/office/lawyer.svg
@@ -0,0 +1,108 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="lawyer.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32.000001"
+     inkscape:cx="4.0768219"
+     inkscape:cy="8.7837436"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 3.031466,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,0.8334 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-0.8334 0.491463,0 0,1.5316 3.059322,0 0,-1.5316 0.541489,0 0,0.8334 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-0.9485 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.936446,0 z"
+       id="path3772-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccsscc" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4"
+       cx="5.0000005"
+       cy="1037.5665"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4258"
+       width="10.000001"
+       height="9.5912285"
+       x="1.7881413e-007"
+       y="1042.7709"
+       ry="0.00039955613" />
+  </g>
+</svg>
diff --git a/images/presets/office/newspaper.svg b/images/presets/office/newspaper.svg
new file mode 100644
index 0000000..f86919c
--- /dev/null
+++ b/images/presets/office/newspaper.svg
@@ -0,0 +1,198 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="newspaper.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="-0.061727405"
+     inkscape:cy="7.7775336"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4203"
+       width="9.0067482"
+       height="13.006809"
+       x="0.50000113"
+       y="1038.8621"
+       ry="0" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4260"
+       width="4.000001"
+       height="2.0000401"
+       x="1.9999998"
+       y="1040.3621"
+       ry="8.3318664e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4262"
+       width="1.0000002"
+       height="1.0000002"
+       x="7.000001"
+       y="1040.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4274"
+       width="1.0000002"
+       height="1.0000002"
+       x="1.9999999"
+       y="1043.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276"
+       width="2.0000005"
+       height="1.0000002"
+       x="6.0000005"
+       y="1043.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4285"
+       width="2.0000005"
+       height="1.0000002"
+       x="1.9999999"
+       y="1045.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4287"
+       width="1.0000002"
+       height="1.0000002"
+       x="5"
+       y="1045.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4291"
+       width="1.0000002"
+       height="1.0000002"
+       x="1.9999999"
+       y="1047.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4293"
+       width="2.0000005"
+       height="1.0000002"
+       x="4"
+       y="1047.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4295"
+       width="1.0000002"
+       height="1.0000002"
+       x="7.0000019"
+       y="1047.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4299"
+       width="3.0000005"
+       height="1.0000002"
+       x="1.9999999"
+       y="1049.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4301"
+       width="1.0000002"
+       height="1.0000002"
+       x="6"
+       y="1049.3621"
+       ry="4.1658506e-005" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4301-0"
+       width="1.0000005"
+       height="1.0000005"
+       x="7.000001"
+       y="1045.3621"
+       ry="4.1658514e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4301-4"
+       width="1.0000005"
+       height="1.0000005"
+       x="4"
+       y="1043.3621"
+       ry="4.1658514e-005" />
+  </g>
+</svg>
diff --git a/images/presets/office/notary.svg b/images/presets/office/notary.svg
new file mode 100644
index 0000000..ad3ff42
--- /dev/null
+++ b/images/presets/office/notary.svg
@@ -0,0 +1,171 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="notary.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="8.2497112"
+     inkscape:cy="7.5629731"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4203"
+       width="9.0067463"
+       height="13.006807"
+       x="0.49999964"
+       y="1038.8553"
+       ry="3.870315e-005" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9.0000011,1044.3621 c 0,0 -7.0000012,0 -7.0000012,7"
+       id="path4154"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4285"
+       width="2.0000005"
+       height="1.0000002"
+       x="1.9999994"
+       y="1040.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4287"
+       width="1.0000002"
+       height="1.0000002"
+       x="4.9999995"
+       y="1040.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4291"
+       width="1.0000002"
+       height="1.0000002"
+       x="1.9999994"
+       y="1042.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4293"
+       width="2.0000005"
+       height="1.0000002"
+       x="3.9999995"
+       y="1042.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4295"
+       width="1.0000002"
+       height="1.0000002"
+       x="7.0000014"
+       y="1042.3621"
+       ry="4.1658506e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4299"
+       width="1.0000007"
+       height="1.0000002"
+       x="1.9999994"
+       y="1044.3621"
+       ry="4.1658506e-005" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4301-0"
+       width="1.0000005"
+       height="1.0000005"
+       x="7.0000005"
+       y="1040.3621"
+       ry="4.1658514e-005" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4293-7"
+       width="4.0000005"
+       height="1.0000005"
+       x="-739.07898"
+       y="746.10168"
+       ry="4.1658514e-005"
+       transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
+  </g>
+</svg>
diff --git a/images/presets/office/ong.svg b/images/presets/office/ong.svg
new file mode 100644
index 0000000..18827a9
--- /dev/null
+++ b/images/presets/office/ong.svg
@@ -0,0 +1,192 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="ong.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-7.27988"
+     inkscape:cy="5.6187523"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4"
+       cx="1.204404"
+       cy="1051.1577"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4-1"
+       cx="4.7356548"
+       cy="1051.1577"
+       rx="1.2044047"
+       ry="1.2043885" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4-1-9"
+       cx="8.2669058"
+       cy="1051.1577"
+       rx="1.204405"
+       ry="1.2043887" />
+    <ellipse
+       ry="1.2043883"
+       rx="1.2044045"
+       cy="1047.7599"
+       cx="1.204404"
+       id="ellipse4184"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="1.2043885"
+       rx="1.2044047"
+       cy="1047.7599"
+       cx="4.7356548"
+       id="ellipse4186"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="1.2043887"
+       rx="1.204405"
+       cy="1047.7599"
+       cx="8.2669058"
+       id="ellipse4188"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4190"
+       cx="1.204404"
+       cy="1044.3622"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4192"
+       cx="4.7356548"
+       cy="1044.3622"
+       rx="1.2044047"
+       ry="1.2043885" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4194"
+       cx="8.2669058"
+       cy="1044.3622"
+       rx="1.204405"
+       ry="1.2043887" />
+    <ellipse
+       ry="1.2043883"
+       rx="1.2044045"
+       cy="1040.9644"
+       cx="1.204404"
+       id="ellipse4196"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="1.2043885"
+       rx="1.2044047"
+       cy="1040.9644"
+       cx="4.7356548"
+       id="ellipse4198"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="1.2043887"
+       rx="1.204405"
+       cy="1040.9644"
+       cx="8.2669058"
+       id="ellipse4200"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4148"
+       cx="1.204404"
+       cy="1037.5665"
+       rx="1.2044045"
+       ry="1.2043883" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4150"
+       cx="4.7356548"
+       cy="1037.5665"
+       rx="1.2044047"
+       ry="1.2043885" />
+    <ellipse
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4152"
+       cx="8.2669058"
+       cy="1037.5665"
+       rx="1.204405"
+       ry="1.2043887" />
+  </g>
+</svg>
diff --git a/images/presets/office/political_party.svg b/images/presets/office/political_party.svg
new file mode 100644
index 0000000..13e3bce
--- /dev/null
+++ b/images/presets/office/political_party.svg
@@ -0,0 +1,128 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="political_party.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568543"
+     inkscape:cx="-81.196118"
+     inkscape:cy="14.590393"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#2a7fff;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 1.031466,1044.3647 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,5.9565 1.226168,0 0,-3 0.606984,0 0,3 1.226169,0 0,-5.9565 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.936445,0 z"
+       id="path3772-3-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#2a7fff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-2-3"
+       cx="3"
+       cy="1042.569"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#2a7fff;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 6.0817199,1044.3647 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,5.9565 1.226168,0 0,-3 0.606984,0 0,3 1.226169,0 0,-5.9565 0.5414891,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.9364451,0 z"
+       id="path3772-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#2a7fff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-2"
+       cx="8.0502539"
+       cy="1042.569"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5664"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="opacity:1;fill:#2a7fff;fill-opacity:1;stroke:none;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4141"
+       width="5"
+       height="4"
+       x="0.9999997"
+       y="1036.3621" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1.20000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4143"
+       width="1"
+       height="9.000041"
+       x="-2.9802328e-007"
+       y="1036.3621" />
+  </g>
+</svg>
diff --git a/images/presets/office/private_company.svg b/images/presets/office/private_company.svg
new file mode 100644
index 0000000..3a2a44c
--- /dev/null
+++ b/images/presets/office/private_company.svg
@@ -0,0 +1,193 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="private_company.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627418"
+     inkscape:cx="6.2533127"
+     inkscape:cy="11.697794"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4321"
+       width="8"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="0.00014840699" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3621 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.919e-4,0.013 -3.919e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5664"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4232"
+       width="1"
+       height="16"
+       x="7.9999995"
+       y="1036.3621"
+       ry="0.00014840699" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234"
+       width="3.0000007"
+       height="2.0000396"
+       x="-1.3709068e-006"
+       y="1038.3621"
+       ry="0.00014840992" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-2"
+       width="3.0000012"
+       height="2.0000401"
+       x="3.9999995"
+       y="1038.3621"
+       ry="0.00014840995" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-4"
+       width="3.0000012"
+       height="2.0000401"
+       x="-3.8146968e-006"
+       y="1041.3621"
+       ry="0.00014840995" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-2-6"
+       width="3.0000017"
+       height="2.0000405"
+       x="3.9999981"
+       y="1041.3621"
+       ry="0.00014840998" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-1"
+       width="3.0000012"
+       height="2.0000401"
+       x="-3.2186504e-006"
+       y="1044.3621"
+       ry="0.00014840995" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-2-1"
+       width="3.0000017"
+       height="2.0000405"
+       x="3.9999981"
+       y="1044.3621"
+       ry="0.00014840998" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-4-6"
+       width="3.0000017"
+       height="2.0000405"
+       x="-5.8412552e-006"
+       y="1047.3621"
+       ry="0.00014840998" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-2-6-1"
+       width="3.0000021"
+       height="2.000041"
+       x="3.9999971"
+       y="1047.3621"
+       ry="0.00014841001" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-4-6-1"
+       width="3.0000021"
+       height="2.000041"
+       x="-3.3378601e-006"
+       y="1050.3621"
+       ry="0.00014841001" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4234-2-6-1-5"
+       width="3.0000026"
+       height="2.0000415"
+       x="4.0000005"
+       y="1050.3621"
+       ry="0.00014841004" />
+    <rect
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4323"
+       width="8"
+       height="1"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="0.00014840699" />
+  </g>
+</svg>
diff --git a/images/presets/office/real_state.svg b/images/presets/office/real_state.svg
new file mode 100644
index 0000000..4396a92
--- /dev/null
+++ b/images/presets/office/real_state.svg
@@ -0,0 +1,125 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="real_state.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-14.817651"
+     inkscape:cy="8.1817033"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 4.949747,1037.314 -4.33102905,4.5741 8.99351435,-0.044 z"
+       id="path4146"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffdd55;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 0.3437494,1041.7293 4.6562501,-4.3672 4.6523438,4.3633"
+       id="path4154"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <rect
+       style="opacity:1;fill:#ffdd55;fill-opacity:1;stroke:#ff0000;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4144"
+       width="8.9991608"
+       height="9.9960938"
+       x="0.50000155"
+       y="1041.866"
+       ry="0" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.81929415px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 4.9371319,1042.8107 0,8.1636"
+       id="path4366"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.87107658px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 6.9932009,1044.0175 c 0,0 -4.0863752,-1.3424 -4.0863703,1.4593 4.9e-6,2.8016 4.0684222,0.2334 4.0684164,3.035 -5.6e-6,2.8017 -4.0578992,1.109 -4.0578992,1.109"
+       id="path4368"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cssc" />
+  </g>
+</svg>
diff --git a/images/presets/office/religion.svg b/images/presets/office/religion.svg
new file mode 100644
index 0000000..78c3d59
--- /dev/null
+++ b/images/presets/office/religion.svg
@@ -0,0 +1,102 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="religion.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-2.1418789"
+     inkscape:cy="12.971447"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 3.0000001,1038.3621 0,14 2.0000003,0 0,-14 -2.0000003,0 z"
+       id="path4231"
+       inkscape:connector-curvature="0" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m -4.8841862e-7,1041.3621 0,2 8.00000148841862,0 0,-2 -8.00000148841862,0 z"
+       id="path4233"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/office/research.svg b/images/presets/office/research.svg
new file mode 100644
index 0000000..677a8bb
--- /dev/null
+++ b/images/presets/office/research.svg
@@ -0,0 +1,123 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="research.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.000001"
+     inkscape:cx="-2.2157162"
+     inkscape:cy="14.866346"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     showguides="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.7499994,1041.909 3.3437498,0 1.265625,5.1094 -5.7656248,0 z"
+       id="path4143"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#00aa00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.8251704,1046.3623 -1.29437828,5.4574 8.02493628,-0.019 -1.3255306,-5.4387 z"
+       id="path4164"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1.3078344,1041.9023 1.6156978,0 -2.42354659,9.9598 8.07848939,0 -2.4235466,-9.9598 1.6156985,0"
+       id="path4162"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00aa00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="path4199"
+       cx="3.5155647"
+       cy="1037.9656"
+       r="1.6034237" />
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00aa00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="path4206"
+       cx="4.5528994"
+       cy="1040.998"
+       r="1.0204619" />
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00aa00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="path4208"
+       cx="4.0849366"
+       cy="1043.8723"
+       r="0.5985868" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031467,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.921e-4,0.013 -3.921e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606985,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,- [...]
+       id="path3772-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-4"
+       cx="13.000001"
+       cy="1037.5665"
+       rx="1.2044045"
+       ry="1.2043883" />
+  </g>
+</svg>
diff --git a/images/presets/office/tax_advisor.svg b/images/presets/office/tax_advisor.svg
new file mode 100644
index 0000000..d874bb6
--- /dev/null
+++ b/images/presets/office/tax_advisor.svg
@@ -0,0 +1,126 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tax_advisor.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-10.189045"
+     inkscape:cy="10.56325"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <rect
+       ry="0"
+       y="1041.8585"
+       x="0.49999952"
+       height="10.00354"
+       width="8.0039082"
+       id="rect4217"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4219"
+       d="m 4.5000504,1042.8692 0,8.1636"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="cssc"
+       inkscape:connector-curvature="0"
+       id="path4221"
+       d="m 6.5402884,1044.0562 c 0,0 -4.086376,-1.3424 -4.086371,1.4593 4e-6,2.8016 4.068423,0.2334 4.068417,3.035 -6e-6,2.8017 -4.0579,1.109 -4.0579,1.109"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccc"
+       style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:1.20000017;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1.5019531,1038.3585 3.0000005,3 3.0000006,-3"
+       id="path4231"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="opacity:1;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4269"
+       width="2.0000012"
+       height="2.9844143"
+       x="3.5019531"
+       y="1036.3621" />
+  </g>
+</svg>
diff --git a/images/presets/office/telecommunication.svg b/images/presets/office/telecommunication.svg
new file mode 100644
index 0000000..a60fc98
--- /dev/null
+++ b/images/presets/office/telecommunication.svg
@@ -0,0 +1,132 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="telecommunication.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627416"
+     inkscape:cx="6.1022863"
+     inkscape:cy="7.0393083"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.07500005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="rect4276-0-6"
+       width="1.0000002"
+       height="10.593793"
+       x="4.5072579"
+       y="1041.7683"
+       ry="0.0004413214" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.031468,1039.3622 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.917e-4,0.013 -3.917e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.00913,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,10.2347 c -0.01173,0.9661 1.237895,0.9661 1.226168,0 l 0,-6.2782 0.606984,0 0,6.2782 c -0.01162,0.9659 1.237788,0.9659 1.226169,0 l 0,-10.2347 0.541489,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025, [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccccccsscc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="13.000002"
+       cy="1037.5665"
+       rx="1.2044042"
+       ry="1.204388" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff6600;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 6.5067825,1037.9151 c 0,0 1.530331,0.4918 1.530331,2 0,1.4861 -1.530328,2 -1.530328,2"
+       id="path4155"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff6600;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 7.4959485,1036.8653 c 0,0 1.999999,1 1.999999,3 0,2 -1.999999,3 -1.999999,3"
+       id="path4155-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <path
+       sodipodi:nodetypes="csc"
+       inkscape:connector-curvature="0"
+       id="path4190"
+       d="m 3.4891646,1038.0714 c 0,0 -1.530331,0.4918 -1.530331,2 0,1.4861 1.530328,2 1.530328,2"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6600;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       sodipodi:nodetypes="csc"
+       inkscape:connector-curvature="0"
+       id="path4192"
+       d="m 2.4999986,1037.0216 c 0,0 -1.99999896,1 -1.99999896,3 0,2 1.99999896,3 1.99999896,3"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6600;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <circle
+       style="opacity:1;fill:#ff6600;fill-opacity:1;stroke:#ff6600;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4194"
+       cx="5.0312495"
+       cy="1040.0183"
+       r="0.71875006" />
+  </g>
+</svg>
diff --git a/images/presets/parking.png b/images/presets/parking.png
deleted file mode 100644
index 82297e1..0000000
Binary files a/images/presets/parking.png and /dev/null differ
diff --git a/images/presets/pelota.png b/images/presets/pelota.png
deleted file mode 100644
index f6fe44a..0000000
Binary files a/images/presets/pelota.png and /dev/null differ
diff --git a/images/presets/place/island.svg b/images/presets/place/island.svg
new file mode 100644
index 0000000..734a2f9
--- /dev/null
+++ b/images/presets/place/island.svg
@@ -0,0 +1,118 @@
+<?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"
+   height="339.99463"
+   id="svg6271"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="island.svg"
+   sodipodi:version="0.32"
+   width="418.38162"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Island, palm, and the sun</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>vacation</rdf:li>
+            <rdf:li>palm</rdf:li>
+            <rdf:li>sun</rdf:li>
+            <rdf:li>plants</rdf:li>
+            <rdf:li>island</rdf:li>
+            <rdf:li>plant</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="52.218922"
+     inkscape:cy="165.57038"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.7"
+     pagecolor="#ffffff"
+     showgrid="false"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-72.469649,-255.22273)">
+    <path
+       d="m 140.76834,567.84201 80.03335,-6.11575 c -59.94724,-28.79554 12.10553,-181.59108 20.15829,-203.38662 28.43237,11.50475 12.86474,58.00949 68.29711,76.51424 -22.90096,-40.16192 -15.80193,-83.32385 -65.70289,-84.48577 50.44143,-4.87381 79.88285,-34.74763 90.32428,-49.62144 -91.89191,20.12619 -71.78381,27.25237 -95.67572,41.37856 4.88285,-20.08096 46.76571,-40.16192 32.64856,-85.24288 -15.89191,27.95952 -46.78381,40.91903 -47.67572,83.87855 -28.77929,-52.85357 -57.55858,-27.70715  [...]
+       id="path3708"
+       inkscape:export-filename="/home/clay/solano02.png"
+       inkscape:export-xdpi="90.000000"
+       inkscape:export-ydpi="90.000000"
+       sodipodi:nodetypes="cccccccccccccc"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:317.1362915px;font-family:'Bitstream Charter';writing-mode:lr-tb;text-anchor:start;fill:#67bb27;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.71712637;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="M 297.15179,591.06696 C 177.6722,592.60884 75.53125,587.59375 75.53125,587.59375 l -0.866071,0.96875 c 0,0 201.535251,-114.14593 413.553571,0 l 1.95982,0.45982 c -64.48838,6.38052 -130.44223,1.23699 -193.02678,2.04464 z"
+       id="path6292"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#e6cc00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.88999987;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/place/islet.svg b/images/presets/place/islet.svg
new file mode 100644
index 0000000..8d0c644
--- /dev/null
+++ b/images/presets/place/islet.svg
@@ -0,0 +1,104 @@
+<?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"
+   height="311.5632"
+   id="svg6271"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="islet.svg"
+   sodipodi:version="0.32"
+   width="421.40338"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata7124">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Island, palm, and the sun</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>vacation</rdf:li>
+            <rdf:li>palm</rdf:li>
+            <rdf:li>sun</rdf:li>
+            <rdf:li>plants</rdf:li>
+            <rdf:li>island</rdf:li>
+            <rdf:li>plant</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="153.43525"
+     inkscape:cy="194.35462"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="692"
+     inkscape:window-width="1017"
+     inkscape:window-x="22"
+     inkscape:window-y="29"
+     inkscape:zoom="0.98994949"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-71.720179,-283.64791)">
+    <path
+       d="M 297.15179,591.06696 C 177.6722,592.60884 75.53125,587.59375 75.53125,587.59375 L 74.665179,588.5625 C 74.665179,588.5625 276.20043,474.41657 488.21875,588.5625 L 490.17857,589.02232 C 425.69019,595.40284 359.73634,590.25931 297.15179,591.06696 z "
+       id="path6292"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#e6cc00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.88999987;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/place/locality.svg b/images/presets/place/locality.svg
new file mode 100644
index 0000000..c3d1ad6
--- /dev/null
+++ b/images/presets/place/locality.svg
@@ -0,0 +1,116 @@
+<?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://web.resource.org/cc/"
+   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"
+   height="311.5632"
+   id="svg6271"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\places"
+   sodipodi:docname="locality.svg"
+   sodipodi:version="0.32"
+   width="421.40338"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata7124">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Island, palm, and the sun</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>vacation</rdf:li>
+            <rdf:li>palm</rdf:li>
+            <rdf:li>sun</rdf:li>
+            <rdf:li>plants</rdf:li>
+            <rdf:li>island</rdf:li>
+            <rdf:li>plant</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Claygirl</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="325.66626"
+     inkscape:cy="195.36477"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="692"
+     inkscape:window-width="1017"
+     inkscape:window-x="22"
+     inkscape:window-y="29"
+     inkscape:zoom="0.98994949"
+     pagecolor="#ffffff" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-71.720179,-283.64791)">
+    <rect
+       style="fill:#424242;fill-opacity:1;stroke:none;stroke-width:3.49739575;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7133"
+       width="8.2168903"
+       height="259.40039"
+       x="211.60585"
+       y="284.38644" />
+    <path
+       d="M 297.15179,591.06696 C 177.6722,592.60884 75.53125,587.59375 75.53125,587.59375 L 74.665179,588.5625 C 74.665179,588.5625 276.20043,474.41657 488.21875,588.5625 L 490.17857,589.02232 C 425.69019,595.40284 359.73634,590.25931 297.15179,591.06696 z "
+       id="path6292"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#e6cc00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.88999987;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="fill:#e0e0e0;fill-opacity:1;stroke:#424242;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7131"
+       width="125.46414"
+       height="38.321289"
+       x="221.55365"
+       y="286.77295" />
+  </g>
+</svg>
diff --git a/images/presets/place/settlement/capital.png b/images/presets/place/settlement/capital.png
new file mode 100644
index 0000000..1463338
Binary files /dev/null and b/images/presets/place/settlement/capital.png differ
diff --git a/images/presets/place/settlement/city.png b/images/presets/place/settlement/city.png
new file mode 100644
index 0000000..ef3df7c
Binary files /dev/null and b/images/presets/place/settlement/city.png differ
diff --git a/images/presets/place/settlement/farm.png b/images/presets/place/settlement/farm.png
new file mode 100644
index 0000000..42bc43f
Binary files /dev/null and b/images/presets/place/settlement/farm.png differ
diff --git a/images/presets/place/settlement/hamlet.png b/images/presets/place/settlement/hamlet.png
new file mode 100644
index 0000000..b00bf81
Binary files /dev/null and b/images/presets/place/settlement/hamlet.png differ
diff --git a/images/presets/place/settlement/isolated_dwelling.png b/images/presets/place/settlement/isolated_dwelling.png
new file mode 100644
index 0000000..b82acad
Binary files /dev/null and b/images/presets/place/settlement/isolated_dwelling.png differ
diff --git a/images/presets/place/settlement/neighbourhood.png b/images/presets/place/settlement/neighbourhood.png
new file mode 100644
index 0000000..ec56eb4
Binary files /dev/null and b/images/presets/place/settlement/neighbourhood.png differ
diff --git a/images/presets/place/settlement/suburb.png b/images/presets/place/settlement/suburb.png
new file mode 100644
index 0000000..d00442b
Binary files /dev/null and b/images/presets/place/settlement/suburb.png differ
diff --git a/images/presets/place/settlement/town.png b/images/presets/place/settlement/town.png
new file mode 100644
index 0000000..859eb8c
Binary files /dev/null and b/images/presets/place/settlement/town.png differ
diff --git a/images/presets/place/settlement/village.png b/images/presets/place/settlement/village.png
new file mode 100644
index 0000000..0fef589
Binary files /dev/null and b/images/presets/place/settlement/village.png differ
diff --git a/images/presets/plane.png b/images/presets/plane.png
deleted file mode 100644
index 1d460ca..0000000
Binary files a/images/presets/plane.png and /dev/null differ
diff --git a/images/presets/power/bay.svg b/images/presets/power/bay.svg
new file mode 100644
index 0000000..1131682
--- /dev/null
+++ b/images/presets/power/bay.svg
@@ -0,0 +1,269 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__bay.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-4.1208993"
+     inkscape:cy="7.8651042"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 3.5000004,1042.3621 0,10"
+       id="path4226"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4228"
+       d="m 8.5000011,1042.3621 0,10"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 13.500002,1042.3621 0,10"
+       id="path4230"
+       inkscape:connector-curvature="0" />
+    <circle
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4238"
+       cx="3.5000007"
+       cy="1048.8621"
+       r="1.5" />
+    <circle
+       r="1.5"
+       cy="1048.8621"
+       cx="8.5000029"
+       id="circle4240"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <circle
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="circle4242"
+       cx="13.500004"
+       cy="1048.8621"
+       r="1.5" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4258"
+       d="m 3.4999996,1036.3621 0,6"
+       style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.5000003,1036.3621 0,6"
+       id="path4260"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4262"
+       d="m 13.500002,1036.3621 0,6"
+       style="fill:none;fill-rule:evenodd;stroke:#999999;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/power/busbar.svg b/images/presets/power/busbar.svg
new file mode 100644
index 0000000..3b89355
--- /dev/null
+++ b/images/presets/power/busbar.svg
@@ -0,0 +1,251 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__busbar2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="4.0453444"
+     inkscape:cy="6.8909456"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 0,1049.8621 16,0"
+       id="path4251"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4253"
+       d="m 0,1046.8621 16,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 0,1043.8621 16,0"
+       id="path4255"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.5000002,1036.3621 0,8"
+       id="path4257"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 5.5000003,1036.3621 0,11"
+       id="path4259"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.500001,1036.3621 0,14"
+       id="path4261"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/cable.svg b/images/presets/power/cable.svg
new file mode 100644
index 0000000..377a077
--- /dev/null
+++ b/images/presets/power/cable.svg
@@ -0,0 +1,235 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__cable2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="29.263749"
+     inkscape:cy="-5.274116"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4336"
+       width="16"
+       height="6.9999185"
+       x="0"
+       y="1045.3621" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#00d400;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1.9073489e-6,1044.3621 16.0000000926511,0"
+       id="path4206"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4208"
+       d="m 0,1048.8621 16,0"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/power/cable_distribution_cabinet.svg b/images/presets/power/cable_distribution_cabinet.svg
new file mode 100644
index 0000000..743459e
--- /dev/null
+++ b/images/presets/power/cable_distribution_cabinet.svg
@@ -0,0 +1,235 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__cable_distribution_cabinet7.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="11.163551"
+     inkscape:cy="15.362753"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:#333333;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4208"
+       width="7.0000014"
+       height="10.99992"
+       x="4.5000005"
+       y="1040.8621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4348"
+       d="m 9.0000011,1042.8621 -2.6415095,4.2453 3.2830188,-1.4906 -2.6415095,4.2453"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c87137;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.9073489e-6,1051.8621 16.0000000926511,0"
+       id="path4221"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/compensator.svg b/images/presets/power/compensator.svg
new file mode 100644
index 0000000..7bbf556
--- /dev/null
+++ b/images/presets/power/compensator.svg
@@ -0,0 +1,240 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__compensator2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-1.4356981"
+     inkscape:cy="7.0826301"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4264"
+       width="8.000001"
+       height="12.000042"
+       x="3.9999993"
+       y="1039.3621"
+       ry="2.0000401"
+       rx="2.0000401" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9.5,1040.3621 0,-4"
+       id="path4212"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4216"
+       d="m 6.5,1040.3621 0,-4"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/power/converter.svg b/images/presets/power/converter.svg
new file mode 100644
index 0000000..3ccd906
--- /dev/null
+++ b/images/presets/power/converter.svg
@@ -0,0 +1,266 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__converter2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-5.9676933"
+     inkscape:cy="7.5346371"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 14,1049.8621 -12,0"
+       id="path4295"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4307"
+       d="M 12.000001,1047.8621 3,1047.8621"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 12.000001,1045.8621 3,1045.8621"
+       id="path4309"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4311"
+       d="M 12.000001,1043.8621 3,1043.8621"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 13.5,1036.3621 0,16"
+       id="path4313"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 12.000001,1041.8621 3,1041.8621"
+       id="path4315"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4317"
+       d="m 14,1039.8621 -12,0"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4321"
+       d="m 4.4999999,1040.3621 0,9"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 10.500001,1040.3621 0,9"
+       id="path4323"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/generator.svg b/images/presets/power/generator.svg
new file mode 100644
index 0000000..9ed754c
--- /dev/null
+++ b/images/presets/power/generator.svg
@@ -0,0 +1,245 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__generator2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-3.4347714"
+     inkscape:cy="6.7346687"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4227"
+       cx="8"
+       cy="1044.3621"
+       rx="6.5"
+       ry="6.5000176" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 7.9999992,1039.6016 0,9.5211"
+       id="path4213"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4215"
+       d="m 12.760494,1044.3621 -9.5209888,0"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 11.366177,1040.996 -6.7323553,6.7323"
+       id="path4217"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4219"
+       d="m 4.6338382,1040.9959 6.7323228,6.7325"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/power/insulator.svg b/images/presets/power/insulator.svg
new file mode 100644
index 0000000..d71f353
--- /dev/null
+++ b/images/presets/power/insulator.svg
@@ -0,0 +1,247 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__insulator6.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="1.9345873"
+     inkscape:cy="8.3262637"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 8.5,1036.3621 0,16"
+       id="path4282"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path4248"
+       d="m 6,1042.8621 2.5,-2 2.5,2 z"
+       style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 6,1045.8621 2.5,-2 2.5,2 z"
+       id="path4250"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:nodetypes="ccc"
+       inkscape:connector-curvature="0"
+       id="path4252"
+       d="m 6,1048.8621 2.5,-2 2.5,2 z"
+       style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 8.5000002,1039.3621 0,11"
+       id="path4254"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/line.svg b/images/presets/power/line.svg
new file mode 100644
index 0000000..f5f602c
--- /dev/null
+++ b/images/presets/power/line.svg
@@ -0,0 +1,249 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__line9.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="4.0017303"
+     inkscape:cy="9.3213242"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#00d400;stroke-width:2.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0,1044.3621 16,0"
+       id="path4208"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4336"
+       width="16"
+       height="6.9999185"
+       x="0"
+       y="1045.3621" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.5000004,1045.3621 0,-8"
+       id="path4206"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4210"
+       d="m 13.500002,1045.3621 0,-8"
+       style="fill:none;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 16.000002,1038.8621 c -1,0 -2.5,-1.5 -2.5,-1.5 0,0 -2.55979,2.5008 -5.500002,2.5008 -2.9402124,0 -5.4999997,-2.5008 -5.4999997,-2.5008 0,0 -1.5000002,1.5 -2.5000003,1.5"
+       id="path4216"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cczcc" />
+  </g>
+</svg>
diff --git a/images/presets/power/plant.svg b/images/presets/power/plant.svg
new file mode 100644
index 0000000..4e23755
--- /dev/null
+++ b/images/presets/power/plant.svg
@@ -0,0 +1,232 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__plant5.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.4252009"
+     inkscape:cy="6.6588019"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4231"
+       width="4.8506665"
+       height="4.9962158"
+       x="9.6493359"
+       y="1045.866" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.0000001,1050.8621 c 0,0 3.5000004,-5 2.5000003,-12 l 6.0000007,0 c -0.9999999,7 2.4999999,12 2.4999999,12 z"
+       id="path4229"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/power/pole.svg b/images/presets/power/pole.svg
new file mode 100644
index 0000000..f3331e5
--- /dev/null
+++ b/images/presets/power/pole.svg
@@ -0,0 +1,226 @@
+<?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"
+   width="12"
+   height="16"
+   viewBox="0 0 12 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__pole2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="2.4580159"
+     inkscape:cy="9.6013118"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 4,1036.3621 0,2 -4,0 0,6 3,0 0,-2 1,0 0,10 4,0 0,-10 1,0 0,2 3,0 0,-6 -4,0 0,-2 -4,0 z"
+       id="path4218"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#8b4513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 6.0000008,1037.3621 0,15"
+       id="path4282"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path4216"
+       d="m 1,1039.3621 0,2 0,2 1,0 0,-2 8,0 0,2 1,0 0,-2 0,-2 -10,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/pole_transformer.svg b/images/presets/power/pole_transformer.svg
new file mode 100644
index 0000000..a7f41f7
--- /dev/null
+++ b/images/presets/power/pole_transformer.svg
@@ -0,0 +1,233 @@
+<?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"
+   width="12"
+   height="16"
+   viewBox="0 0 12 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__pole__transformer_distribution2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="3.5064502"
+     inkscape:cy="6.2853706"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="M 4,0 4,2 0,2 0,8 3,8 3,6 4,6 4,16 8,16 8,13 11,13 11,8 12,8 12,2 8,2 8,0 Z"
+       transform="translate(0,1036.3621)"
+       id="path4218"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccccc" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#8b4513;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 6.0000008,1037.3621 0,15"
+       id="path4282"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path4216"
+       d="m 1,1039.3621 0,2 0,2 1,0 0,-2 8,0 0,2 1,0 0,-2 0,-2 -10,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 7,1044.3621 0,1 1,0 0,3 2,0 0,-4 -2,0 -1,0 z"
+       id="rect4290" />
+  </g>
+</svg>
diff --git a/images/presets/power/portal.svg b/images/presets/power/portal.svg
new file mode 100644
index 0000000..9270637
--- /dev/null
+++ b/images/presets/power/portal.svg
@@ -0,0 +1,294 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__portal8.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-1.7241793"
+     inkscape:cy="8.8479371"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <g
+       id="g4212"
+       transform="translate(-4.4804688,0)">
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path4211"
+         transform="translate(0,1036.3621)"
+         d="M 7.5078125,1.9999999 4.4804688,16 5.5,16 8.0019531,4.4640781 10.521484,16 11.539062,16 8.4902344,1.9999999 Z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:non [...]
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 9.1385373,1043.8621 -2.1385365,0"
+         id="path4311"
+         inkscape:connector-curvature="0" />
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 10.031748,1048.8621 -4.0317473,0"
+         id="path4226"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4221"
+         d="m 8.000001,1038.5007 0,-2.1386"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <g
+       transform="translate(4.4609399,0)"
+       id="g4218">
+      <path
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:non [...]
+         d="M 7.5078125,1.9999999 4.4804688,16 5.5,16 8.0019531,4.4640781 10.521484,16 11.539062,16 8.4902344,1.9999999 Z"
+         transform="translate(0,1036.3621)"
+         id="path4220"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccccccc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4222"
+         d="m 9.1385373,1043.8621 -2.1385365,0"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4224"
+         d="m 10.031748,1048.8621 -4.0317473,0"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 8.000001,1038.5007 0,-2.1386"
+         id="path4227"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 4.0000005,1038.8621 7.9999995,0"
+       id="path4229"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6.5000008,1039.3621 0,2"
+       id="path4231"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9.5000011,1039.3621 0,2"
+       id="path4233"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/power.svg b/images/presets/power/power.svg
new file mode 100644
index 0000000..1bb1034
--- /dev/null
+++ b/images/presets/power/power.svg
@@ -0,0 +1,223 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="5.1515274"
+     inkscape:cy="3.9731809"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4348"
+       d="m 9.8629924,1037.9979 -4.9211118,7.7194 6.1162384,-2.7104 -4.9211115,7.7194"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/power_source-biofuel.svg b/images/presets/power/power_source-biofuel.svg
similarity index 100%
rename from images/presets/power_source-biofuel.svg
rename to images/presets/power/power_source-biofuel.svg
diff --git a/images/presets/power_source-coal.svg b/images/presets/power/power_source-coal.svg
similarity index 100%
rename from images/presets/power_source-coal.svg
rename to images/presets/power/power_source-coal.svg
diff --git a/images/presets/power_source-gas.svg b/images/presets/power/power_source-gas.svg
similarity index 100%
rename from images/presets/power_source-gas.svg
rename to images/presets/power/power_source-gas.svg
diff --git a/images/presets/power_source-geothermal.svg b/images/presets/power/power_source-geothermal.svg
similarity index 100%
rename from images/presets/power_source-geothermal.svg
rename to images/presets/power/power_source-geothermal.svg
diff --git a/images/presets/power_source-nuclear.svg b/images/presets/power/power_source-nuclear.svg
similarity index 100%
rename from images/presets/power_source-nuclear.svg
rename to images/presets/power/power_source-nuclear.svg
diff --git a/images/presets/power_source-oil.svg b/images/presets/power/power_source-oil.svg
similarity index 100%
rename from images/presets/power_source-oil.svg
rename to images/presets/power/power_source-oil.svg
diff --git a/images/presets/power_source-sun.svg b/images/presets/power/power_source-sun.svg
similarity index 100%
rename from images/presets/power_source-sun.svg
rename to images/presets/power/power_source-sun.svg
diff --git a/images/presets/power_source-waste.svg b/images/presets/power/power_source-waste.svg
similarity index 100%
rename from images/presets/power_source-waste.svg
rename to images/presets/power/power_source-waste.svg
diff --git a/images/presets/power_source-water.svg b/images/presets/power/power_source-water.svg
similarity index 100%
rename from images/presets/power_source-water.svg
rename to images/presets/power/power_source-water.svg
diff --git a/images/presets/power_source-wind.svg b/images/presets/power/power_source-wind.svg
similarity index 100%
rename from images/presets/power_source-wind.svg
rename to images/presets/power/power_source-wind.svg
diff --git a/images/presets/power/substation.svg b/images/presets/power/substation.svg
new file mode 100644
index 0000000..6586432
--- /dev/null
+++ b/images/presets/power/substation.svg
@@ -0,0 +1,318 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__substation3.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="5.1127825"
+     inkscape:cy="7.901"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.50000006;stroke-opacity:1"
+       id="rect4263"
+       width="12"
+       height="10.000039"
+       x="2.5"
+       y="1039.8621" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 10.5,1046.8621 2,0 0,-10.5"
+       id="path4223"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       y="1045.8621"
+       x="4.5"
+       height="2.0000401"
+       width="2.000001"
+       id="rect4222"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4224"
+       width="2.000001"
+       height="2.0000401"
+       x="8.500001"
+       y="1045.8621" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4232"
+       d="m 8.5000014,1036.3621 0,9"
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 4.5000004,1036.3621 0,9"
+       id="path4234"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 6.5000006,1036.3621 0,9"
+       id="path4236"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 10.5,1036.3621 0,9"
+       id="path4238"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 8.5000014,1043.3621 0,1"
+       id="path4240"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4242"
+       d="m 4.5000004,1043.3621 0,1"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4244"
+       d="m 6.5000006,1043.3621 0,1"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4246"
+       d="m 10.5,1043.3621 0,1"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4250"
+       d="m 8.500002,1041.3621 0,1"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 4.500001,1041.3621 0,1"
+       id="path4252"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 6.5000012,1041.3621 0,1"
+       id="path4254"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 10.5,1041.3621 0,1"
+       id="path4256"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4262"
+       d="m 12.500001,1043.3621 0,1"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 12.500002,1041.3621 0,1"
+       id="path4266"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/switch.svg b/images/presets/power/switch.svg
new file mode 100644
index 0000000..be6cffd
--- /dev/null
+++ b/images/presets/power/switch.svg
@@ -0,0 +1,232 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__switch3.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-5.4276153"
+     inkscape:cy="3.2745605"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4228"
+       d="m 8.5000014,1036.3621 0,5"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.5000011,1052.3621 0,-4 -5.5000011,-7"
+       id="path4246"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+  </g>
+</svg>
diff --git a/images/presets/power/switchgear.svg b/images/presets/power/switchgear.svg
new file mode 100644
index 0000000..7e2c04e
--- /dev/null
+++ b/images/presets/power/switchgear.svg
@@ -0,0 +1,290 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__switch3.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="10.797181"
+     inkscape:cy="11.826427"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 3.5000007,1036.3621 0,10"
+       id="path4226"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4228"
+       d="m 8.5000014,1036.3621 0,10"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 13.500002,1036.3621 0,10"
+       id="path4230"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4232"
+       width="3"
+       height="3"
+       x="1.9999995"
+       y="1041.3621" />
+    <rect
+       y="1041.3621"
+       x="7.000001"
+       height="3"
+       width="3"
+       id="rect4234"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4236"
+       width="3"
+       height="3"
+       x="12.000002"
+       y="1041.3621" />
+    <circle
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4238"
+       cx="3.4999993"
+       cy="1038.8621"
+       r="1.5" />
+    <circle
+       r="1.5"
+       cy="1038.8621"
+       cx="8.500001"
+       id="circle4240"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <circle
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="circle4242"
+       cx="13.500002"
+       cy="1038.8621"
+       r="1.5" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.5000011,1052.3621 0,-3 -2.0000002,-3"
+       id="path4246"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4254"
+       d="m 13.500002,1052.3621 0,-3 -2,-3"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 3.5000005,1052.3621 0,-3 -1.9999998,-3"
+       id="path4256"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/power/tower.svg b/images/presets/power/tower.svg
new file mode 100644
index 0000000..16f4717
--- /dev/null
+++ b/images/presets/power/tower.svg
@@ -0,0 +1,253 @@
+<?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"
+   width="12"
+   height="16"
+   viewBox="0 0 12 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__tower2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="11.92309"
+     inkscape:cy="5.7391443"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 4.4726562,1036.3621 -0.1894531,1 -3.2832031,0 0,4 -1,0 0,4 2.7597656,0 -1.3339844,7 3.0546876,0 0.3808593,-2 2.265625,0 0.3808594,2 3.0527345,0 -1.328125,-7 2.767578,0 0,-4 -1,0 0,-4 -3.2832031,0 -0.1894531,-1 -3.0546876,0 z"
+       id="path4221"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 1,1042.3621 0,2 1,0 0,-1 8,0 0,1 1,0 0,-2 z"
+       id="path4280"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 2.0000005,1038.3621 0,2 1,0 0,-1 6.0000005,0 0,1 1,0 0,-2 z"
+       id="path4296"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4310"
+       d="m 4.0000007,1048.3621 0,1 4.0000003,0 0,-1 -4.0000003,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 4.0000008,1046.3621 0,1 4.0000002,0 0,-1 -4.0000002,0 z"
+       id="path4312"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4314"
+       d="m 5.0000008,1040.3621 0,1 2.0000003,0 0,-1 -2.0000003,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 5.4921875,1036.3621 -3.046875,16 1.0175781,0 2.5351563,-13.3203 2.5273441,13.3203 1.017578,0 -3.0332034,-16 -1.0175781,0 z"
+       id="path4316"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4318"
+       d="m 4.0000009,1044.3621 0,1 4.0000001,0 0,-1 -4.0000001,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+  </g>
+</svg>
diff --git a/images/presets/power/transformer.svg b/images/presets/power/transformer.svg
new file mode 100644
index 0000000..6d0b2f2
--- /dev/null
+++ b/images/presets/power/transformer.svg
@@ -0,0 +1,275 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="power__transformer2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="8.5613292"
+     inkscape:cy="11.94635"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+    <sodipodi:guide
+       position="1.0000001,1.0000001"
+       orientation="0,1"
+       id="guide4231" />
+    <sodipodi:guide
+       position="2.0000002,9.0000006"
+       orientation="1,0"
+       id="guide4233" />
+    <sodipodi:guide
+       position="14.000002,10.000001"
+       orientation="1,0"
+       id="guide4235" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 7.9999999,1050.362 1e-6,-11"
+       id="path4227"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2.5000004,1049.8621 0,-10.0001 10.9999996,0 2e-6,10.0001 z"
+       id="path4225"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4215"
+       d="M 4.0000004,1041.862 12,1041.862"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4217"
+       d="M 4.0000004,1043.862 12,1043.862"
+       style="fill:none;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:#ff6600;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 4.0000004,1045.862 12,1045.862"
+       id="path4221"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4223"
+       d="M 4.0000003,1047.862 12,1047.862"
+       style="fill:#ff6600;fill-rule:evenodd;stroke:#ff6000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9.5,1040.3621 0,-4"
+       id="path4216"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4218"
+       d="m 6.5,1040.3621 0,-4"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/power/transformer_tower.svg b/images/presets/power/transformer_tower.svg
new file mode 100644
index 0000000..c57720c
--- /dev/null
+++ b/images/presets/power/transformer_tower.svg
@@ -0,0 +1,234 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="building__transformer_tower.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="22.701255"
+     inkscape:cy="2.5189815"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="false"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffcc00;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4288"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3621" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 8,1039.3621 0,13"
+       id="path4282"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1e-7,1041.8621 3.9999999,0"
+       id="path4208"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4214"
+       d="m 3,1038.8621 10,0"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/range.png b/images/presets/range.png
deleted file mode 100644
index 90a431d..0000000
Binary files a/images/presets/range.png and /dev/null differ
diff --git a/images/presets/religion/bahai.svg b/images/presets/religion/bahai.svg
new file mode 100644
index 0000000..ba67644
--- /dev/null
+++ b/images/presets/religion/bahai.svg
@@ -0,0 +1,77 @@
+<?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"
+   version="1.0"
+   width="400"
+   height="400"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="bahai.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.9425"
+     inkscape:cx="19.098143"
+     inkscape:cy="198.93899"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs5" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4133"
+     width="400"
+     height="400"
+     x="0"
+     y="-2.4424907e-015" />
+  <path
+     d="M 200.31832,-0.97978029 L 235.85241,95.033089 L 325.46045,44.204254 L 290.96526,140.59525 L 392.28115,159.25704 L 303.89736,210.92375 L 369.51426,290.34411 L 268.59764,273.1111 L 267.81268,376.12836 L 201.58322,298.05914 L 134.76369,376.47038 L 134.21091,274.09442 L 32.622403,291.21015 L 98.004944,212.43029 L 9.1818589,160.24187 L 109.90651,141.92008 L 75.410149,44.847053 L 164.34672,95.556307 L 200.31832,-0.97978029 z "
+     transform="matrix(0.874706,0,0,0.874647,24.41895,35.78914)"
+     style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:20.0073967;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1875" />
+</svg>
diff --git a/images/presets/religion/buddhism.svg b/images/presets/religion/buddhism.svg
new file mode 100644
index 0000000..36131ab
--- /dev/null
+++ b/images/presets/religion/buddhism.svg
@@ -0,0 +1,115 @@
+<?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"
+   version="1.0"
+   width="94"
+   height="94"
+   id="svg5273"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="buddhism.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata15">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="4.0106383"
+     inkscape:cx="4.4880637"
+     inkscape:cy="46.750663"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg5273"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs5275" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4142"
+     width="94"
+     height="94"
+     x="0"
+     y="6.1721461e-015" />
+  <g
+     transform="translate(-164.42857,-802.50507)"
+     id="layer1">
+    <path
+       d="M 211.42857,805.48945 L 205.55357,811.36445 C 199.27471,812.32472 193.48535,814.79046 188.58482,818.3957 L 180.30357,818.3957 L 180.30357,826.73945 C 176.72181,831.62738 174.25999,837.36076 173.30357,843.61445 L 167.42857,849.48945 L 173.30357,855.36445 C 174.25999,861.61814 176.72181,867.38278 180.30357,872.2707 L 180.30357,880.61445 L 188.61607,880.61445 C 193.51172,884.21057 199.28448,886.68692 205.55357,887.6457 L 211.42857,893.5207 L 217.30357,887.6457 C 223.57266,886.6869 [...]
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5307" />
+    <path
+       d="M 211.42857,814.73945 L 207.74107,818.42695 C 201.8906,819.11746 196.52243,821.43233 192.11607,824.8957 L 186.83482,824.8957 L 186.83482,830.1457 C 183.36569,834.54943 181.06248,839.92027 180.36607,845.7707 L 176.64732,849.48945 L 180.36607,853.2082 C 181.058,859.07069 183.35957,864.42171 186.83482,868.8332 L 186.83482,874.0832 L 192.08482,874.0832 C 196.49799,877.56183 201.8749,879.8911 207.74107,880.5832 L 211.42857,884.2707 L 215.11607,880.5832 C 220.98599,879.8925 226.35674 [...]
+       style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path5297" />
+    <path
+       d="M 52.823528 44.588234 A 7.7647057 7.7647057 0 1 1  37.294117,44.588234 A 7.7647057 7.7647057 0 1 1  52.823528 44.588234 z"
+       transform="matrix(3.5606061,0,0,3.5606061,50.995521,690.73749)"
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path5295" />
+    <path
+       d="M 181.96166,849.49865 L 240.90283,849.49865"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path5319" />
+    <path
+       d="M 52.823528 44.588234 A 7.7647057 7.7647057 0 1 1  37.294117,44.588234 A 7.7647057 7.7647057 0 1 1  52.823528 44.588234 z"
+       transform="matrix(1.5454546,0,0,1.5454546,141.79588,780.58955)"
+       style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path5293" />
+    <path
+       d="M 190.59339,828.6598 L 232.27109,870.33749"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path5323" />
+    <path
+       d="M 211.43224,878.96923 L 211.43224,820.02805"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path5317" />
+    <path
+       d="M 190.59339,870.33749 L 232.27109,828.65979"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path5321" />
+    <path
+       d="M 52.823528 44.588234 A 7.7647057 7.7647057 0 1 1  37.294117,44.588234 A 7.7647057 7.7647057 0 1 1  52.823528 44.588234 z"
+       transform="translate(166.37342,804.9104)"
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path5291" />
+  </g>
+</svg>
diff --git a/images/presets/religion/church.svg b/images/presets/religion/church.svg
new file mode 100644
index 0000000..05e5f5a
--- /dev/null
+++ b/images/presets/religion/church.svg
@@ -0,0 +1,129 @@
+<?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"
+   width="9"
+   height="16"
+   id="svg3269"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="church5.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs3271" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="5.5934879"
+     inkscape:cy="8.6935411"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     borderlayer="false"
+     inkscape:showpageshadow="true"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="0"
+       originy="0" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3274">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-16)">
+    <rect
+       style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4142"
+       width="9"
+       height="9"
+       x="0"
+       y="23" />
+    <rect
+       style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4144"
+       width="3"
+       height="8"
+       x="3"
+       y="16" />
+    <rect
+       style="opacity:1;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4146"
+       width="7"
+       height="3"
+       x="1"
+       y="18" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4138"
+       width="1"
+       height="8"
+       x="4"
+       y="17" />
+    <rect
+       style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:1.0789547;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect3277"
+       width="5.9174252"
+       height="5.9186702"
+       x="1.5266832"
+       y="24.542145"
+       transform="matrix(0.99999995,-3.2936766e-4,5.3104535e-4,0.99999986,0,0)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4140"
+       width="5"
+       height="1"
+       x="2"
+       y="19" />
+  </g>
+</svg>
diff --git a/images/presets/religion/hinduism.svg b/images/presets/religion/hinduism.svg
new file mode 100644
index 0000000..32db35e
--- /dev/null
+++ b/images/presets/religion/hinduism.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In  -->
+
+<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"
+   version="1.1"
+   width="242"
+   height="201"
+   viewBox="-0.999 -0.762 242 201"
+   enable-background="new -0.999 -0.762 242 201"
+   xml:space="preserve"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="hinduism.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
+   id="metadata13"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license
+         rdf:resource="http://web.resource.org/cc/PublicDomain" /><dc:title></dc:title></cc:Work><cc:License
+       rdf:about="http://web.resource.org/cc/PublicDomain"><cc:permits
+         rdf:resource="http://web.resource.org/cc/Reproduction" /><cc:permits
+         rdf:resource="http://web.resource.org/cc/Distribution" /><cc:permits
+         rdf:resource="http://web.resource.org/cc/DerivativeWorks" /></cc:License></rdf:RDF></metadata><sodipodi:namedview
+   inkscape:window-height="988"
+   inkscape:window-width="1680"
+   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"
+   inkscape:zoom="1.8756219"
+   inkscape:cx="30.096817"
+   inkscape:cy="99.966844"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:current-layer="svg2"
+   showgrid="false"
+   inkscape:window-maximized="1" />
+<defs
+   id="defs4">
+</defs>
+<rect
+   style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+   id="rect4135"
+   width="242"
+   height="201"
+   x="-0.99900001"
+   y="-0.76200104" /><path
+   fill-rule="evenodd"
+   clip-rule="evenodd"
+   d="M110.986,16.235c0.19-1.135,1.003-0.555,1,0  c5.629,4.227,10.699,6.611,14.999,11.999c3.592,4.501,5.255,11.669,9.998,16.998c10.464,11.755,30.485,16.537,45.995,14.998  c20.54-2.039,36.137-19.938,34.995-44.994c5.067,2.213,8.491,6.415,11.999,9.999c3.928,4.013,9.671,8.587,9.998,15.998  c0.91,20.618-16.083,38.689-33.995,40.995c-23.949,3.083-46.774-11.223-58.993-21.997C130.861,46.016,121.354,30.583,110.986,16.235  z"
+   id="path6" />
+<path
+   fill-rule="evenodd"
+   clip-rule="evenodd"
+   d="M3,150.219c2.805,0.054,4.575,3.17,6.999,4.999  c9.039,6.821,22.579,14.199,36.996,17.998c17.655,4.652,36.553,7.108,47.994-1c10.92-7.739,18.344-36.726,1-44.994  c-14.144-6.742-23.721,8.688-40.995,5.999c-8.365-1.302-13.623-10.226-18.998-15.998c-1.7-1.825-4.782-2.416-4-4.999  c14.481,1.53,25.146-6.185,33.996-11.999c9.448-6.208,19.458-12.739,17.998-29.996c-15.978-6.603-35.603-3.927-52.993,1  c-3.617,1.025-7.16,3.218-8.999,3C12.378,73.088,6.979,58.357,0,53.231c17.235-6.471,33.888-10.165, [...]
+   id="path8" />
+<rect
+   x="161.842"
+   y="4.829"
+   transform="matrix(0.7071 -0.7071 0.7071 0.7071 39.1583 127.513)"
+   fill-rule="evenodd"
+   clip-rule="evenodd"
+   width="23.318"
+   height="23.318"
+   id="rect10" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/religion/jainism.svg b/images/presets/religion/jainism.svg
new file mode 100644
index 0000000..f9269d6
--- /dev/null
+++ b/images/presets/religion/jainism.svg
@@ -0,0 +1,436 @@
+<?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"
+   width="320"
+   height="550"
+   id="svg2167"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="jainism.svg"
+   inkscape:export-filename="F:\Documents\SVG\ahimsa1.png"
+   inkscape:export-xdpi="145.14"
+   inkscape:export-ydpi="145.14">
+  <defs
+     id="defs2169" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="white"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-76.778333"
+     inkscape:cy="320.35866"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     height="550px"
+     width="320px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata2172">
+    <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>Ahimsa</dc:title>
+        <dc:date>23.I.2007</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andriy Makukha</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Public domain</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>ahimsa</rdf:li>
+            <rdf:li>jain</rdf:li>
+            <rdf:li>jainism</rdf:li>
+            <rdf:li>non-violence</rdf:li>
+            <rdf:li>symbol</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Ahimsa - jain non-violence symbol. The wheel inside symbolises Dharmacakra - the Wheel of Life.</dc:description>
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4171"
+       width="320"
+       height="550"
+       x="0"
+       y="-6.2172489e-014" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:10.80662346;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 175.91865,258.66331 L 174.87382,43.34639 C 174.87382,43.34639 150.71419,8.6178836 125.50411,43.34639 L 125.50411,262.1361"
+       id="path2824"
+       sodipodi:nodetypes="cccc"
+       inkscape:export-filename="F:\Documents\SVG\path2005.png"
+       inkscape:export-xdpi="145.14"
+       inkscape:export-ydpi="145.14" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:10.80662346;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 123.9285,78.074929 C 123.9285,78.074929 97.668009,47.976888 77.710019,79.811341 L 77.710019,139.42865"
+       id="path2828"
+       sodipodi:nodetypes="ccc"
+       inkscape:export-filename="F:\Documents\SVG\path2005.png"
+       inkscape:export-xdpi="145.14"
+       inkscape:export-ydpi="145.14" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:black;stroke-width:10.80662346;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+       d="M 77.710019,278.34274 C 77.710019,278.34274 78.123783,132.85874 77.710019,132.48297 C 72.835492,128.05606 44.044006,107.07328 30.441131,140.00746 L 29.915925,388.3164 C 29.329866,421.58748 48.49821,524.47283 162.2688,526.07292 C 282.66245,527.76612 289.68844,399.13745 289.8948,397.57736 C 290.38285,393.8875 278.96468,259.7956 294.09644,195.57311 C 293.83144,194.59562 223.24583,154.27903 226.34977,277.76987 L 226.34439,93.123933 C 226.34439,93.123933 209.53772,54.343766 176.9746 [...]
+       id="path1933"
+       sodipodi:nodetypes="csccsscccc"
+       inkscape:export-filename="F:\Documents\SVG\path2005.png"
+       inkscape:export-xdpi="145.14"
+       inkscape:export-ydpi="145.14" />
+    <g
+       id="g1907"
+       transform="matrix(3.010008,0,0,3.010008,14.2474,37.21492)">
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path6555"
+         d="M 46.446693,87.934017 L 48.490406,119.13714 L 50.570614,87.934017 L 48.490406,88.225976 L 46.446693,87.934017 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         inkscape:transform-center-x="-4.302845"
+         inkscape:transform-center-y="-13.134675"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         d="M 54.592909,88.463561 L 48.491025,119.13242 L 58.576316,89.530916 L 56.491425,89.27453 L 54.592909,88.463561 z "
+         id="path7445" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7449"
+         d="M 62.324497,91.083461 L 48.492846,119.12801 L 65.895927,93.145427 L 63.948432,92.358166 L 62.324497,91.083461 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-12.01487"
+         inkscape:transform-center-x="-7.43746" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7451"
+         d="M 69.114565,95.615167 L 48.495743,119.12423 L 72.030616,98.53123 L 70.353241,97.266744 L 69.114565,95.615167 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-10.076275"
+         inkscape:transform-center-x="-10.06522" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         inkscape:transform-center-x="-12.007055"
+         inkscape:transform-center-y="-7.450995"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         d="M 74.500367,101.74986 L 48.499526,119.12133 L 76.562322,105.32129 L 75.269376,103.66575 L 74.500367,101.74986 z "
+         id="path7487" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7489"
+         d="M 78.114878,109.06947 L 48.503929,119.11951 L 79.182222,113.05287 L 78.361817,111.11911 L 78.114878,109.06947 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-4.31794"
+         inkscape:transform-center-x="-13.13063" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7491"
+         d="M 79.711777,117.07517 L 48.508647,119.11888 L 79.711765,121.1991 L 79.419806,119.11889 L 79.711777,117.07517 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-x="-13.359375" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7493"
+         d="M 79.182233,125.22139 L 48.513377,119.11951 L 78.114878,129.20479 L 78.371253,127.1199 L 79.182233,125.22139 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="4.302845"
+         inkscape:transform-center-x="-13.13468" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7495"
+         d="M 76.562334,132.95299 L 48.517768,119.12132 L 74.500367,136.5244 L 75.287617,134.57691 L 76.562334,132.95299 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="7.437455"
+         inkscape:transform-center-x="-12.01487" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7497"
+         d="M 72.030616,139.74304 L 48.521552,119.12423 L 69.114565,142.65909 L 70.379039,140.98172 L 72.030616,139.74304 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="10.06522"
+         inkscape:transform-center-x="-10.07627" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7499"
+         d="M 65.895927,145.12884 L 48.52446,119.128 L 62.324497,147.19081 L 63.980033,145.89786 L 65.895927,145.12884 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="12.007055"
+         inkscape:transform-center-x="-7.450995" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7501"
+         d="M 58.576316,148.74335 L 48.526282,119.13241 L 54.592909,149.81071 L 56.526671,148.99029 L 58.576316,148.74335 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="13.13063"
+         inkscape:transform-center-x="-4.31794" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7503"
+         d="M 50.570614,150.34025 L 48.526901,119.13714 L 46.446693,150.34025 L 48.526901,150.04829 L 50.570614,150.34025 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="13.359375" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7505"
+         d="M 42.424397,149.81071 L 48.526282,119.14185 L 38.44099,148.74335 L 40.525881,148.99974 L 42.424397,149.81071 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="13.134675"
+         inkscape:transform-center-x="4.302845" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7507"
+         d="M 34.692809,147.19081 L 48.52446,119.14626 L 31.121379,145.12884 L 33.068874,145.91611 L 34.692809,147.19081 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="12.01487"
+         inkscape:transform-center-x="7.43746" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7509"
+         d="M 27.902742,142.6591 L 48.521563,119.15004 L 24.98669,139.74304 L 26.664065,141.00753 L 27.902742,142.6591 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="10.076275"
+         inkscape:transform-center-x="10.06522" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7511"
+         d="M 22.516939,136.52442 L 48.51778,119.15294 L 20.454984,132.95299 L 21.747931,134.60851 L 22.516939,136.52442 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="7.450995"
+         inkscape:transform-center-x="12.007055" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7513"
+         d="M 18.902428,129.2048 L 48.513377,119.15476 L 17.835084,125.2214 L 18.655489,127.15516 L 18.902428,129.2048 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="4.31794"
+         inkscape:transform-center-x="13.13063" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7515"
+         d="M 38.44099,89.530916 L 48.491025,119.14187 L 42.424397,88.463561 L 40.490636,89.283977 L 38.44099,89.530916 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-13.13063"
+         inkscape:transform-center-x="4.31794" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7517"
+         d="M 31.121379,93.145427 L 48.492846,119.14627 L 34.692809,91.083461 L 33.037273,92.376407 L 31.121379,93.145427 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-12.007055"
+         inkscape:transform-center-x="7.450995" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7519"
+         d="M 24.98669,98.53123 L 48.495754,119.15004 L 27.902742,95.615178 L 26.638267,97.292553 L 24.98669,98.53123 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-10.06522"
+         inkscape:transform-center-x="10.07627" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7521"
+         d="M 20.454973,105.32129 L 48.499538,119.15295 L 22.516939,101.74987 L 21.729689,103.69736 L 20.454973,105.32129 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-7.437455"
+         inkscape:transform-center-x="12.01487" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7523"
+         d="M 17.835084,113.05287 L 48.503929,119.15476 L 18.902428,109.06947 L 18.646053,111.15437 L 17.835084,113.05287 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-y="-4.30285"
+         inkscape:transform-center-x="13.134675" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path7525"
+         d="M 17.305529,121.1991 L 48.508659,119.15539 L 17.305541,117.07517 L 17.5975,119.15538 L 17.305529,121.1991 z "
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         inkscape:transform-center-x="13.359375" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         transform="matrix(1.198103,0,0,1.198103,-407.0898,-720.7645)"
+         d="m 406.42857,701.02289 a 26.160715,26.160715 0 0 1 -26.16072,26.16071 26.160715,26.160715 0 0 1 -26.16071,-26.16071 26.160715,26.160715 0 0 1 26.16071,-26.16072 26.160715,26.160715 0 0 1 26.16072,26.16072 z"
+         sodipodi:ry="26.160715"
+         sodipodi:rx="26.160715"
+         sodipodi:cy="701.02289"
+         sodipodi:cx="380.26785"
+         id="path12590"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3.41158199;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+         sodipodi:type="arc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         sodipodi:type="arc"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1989"
+         sodipodi:cx="514.67273"
+         sodipodi:cy="615.47119"
+         sodipodi:rx="56.568542"
+         sodipodi:ry="56.568542"
+         d="m 571.24127,615.47119 a 56.568542,56.568542 0 0 1 -56.56854,56.56854 56.568542,56.568542 0 0 1 -56.56854,-56.56854 56.568542,56.568542 0 0 1 56.56854,-56.56854 56.568542,56.568542 0 0 1 56.56854,56.56854 z"
+         transform="matrix(0.295853,0,0,0.295853,-103.4896,-62.65335)" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.56088352;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 35.412406,114.42451 C 36.059842,113.0585 36.927942,111.49283 38.286731,109.81181 L 38.430444,129.07039 C 37.568149,128.39972 36.274713,126.63885 35.699845,125.02891"
+         id="path1991"
+         sodipodi:nodetypes="cccc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.56088352;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 36.148434,119.89146 L 41.465895,120.03519"
+         id="path1993"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.56088352;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 41.592185,107.10079 L 41.879613,131.76652"
+         id="path1995"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.56088352;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 45.286704,133.38584 C 45.286704,133.38584 44.963331,111.57088 44.999265,105.67855 C 54.664147,106.68455 51.7539,112.41825 51.7539,112.41825 C 51.7539,112.41825 50.208152,112.40692 49.167038,113.85541 C 48.340654,115.00513 48.267466,116.61025 48.879599,117.59204 C 49.433118,118.47985 50.065256,119.28069 51.753912,119.74777 C 52.292856,121.93943 52.562299,125.64009 51.897637,127.65213 C 51.232928,129.66414 48.289725,120.72608 48.304743,122.04721 C 48.322693,123.62807 48.44843 [...]
+         id="path1997"
+         sodipodi:nodetypes="cccsscsscc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.56088352;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 53.319863,105.80734 C 55.649135,107.93167 55.813882,111.23259 54.915664,113.71171 C 54.017435,116.19079 51.717977,115.077 51.753912,116.01114 C 51.789834,116.94531 54.017435,115.79557 54.915664,119.17291 C 55.813882,122.55021 55.203104,132.16685 55.203104,132.16685 C 55.203104,132.16685 56.604308,131.54113 57.646263,130.71478"
+         id="path1999"
+         sodipodi:nodetypes="cssscc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.56088352;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 58.548113,109.25626 C 58.548113,109.25626 59.193658,113.64214 57.316735,116.37044 C 59.268574,119.93112 58.672231,127.7119 58.672231,127.7119"
+         id="path2001"
+         sodipodi:nodetypes="ccc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         inkscape:export-filename="F:\Documents\SVG\path2005.png"
+         id="path2003"
+         d="M 61.87418,113.89955 L 61.872907,125.44069"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.54450512;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:nodetypes="cc" />
+      <path
+         inkscape:export-ydpi="145.14"
+         inkscape:export-xdpi="145.14"
+         sodipodi:type="arc"
+         style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2005"
+         sodipodi:cx="521.74377"
+         sodipodi:cy="600.31891"
+         sodipodi:rx="1.5152287"
+         sodipodi:ry="1.5152287"
+         d="m 523.259,600.31891 a 1.5152287,1.5152287 0 0 1 -1.51523,1.51523 1.5152287,1.5152287 0 0 1 -1.51522,-1.51523 1.5152287,1.5152287 0 0 1 1.51522,-1.51523 1.5152287,1.5152287 0 0 1 1.51523,1.51523 z"
+         transform="matrix(0.260652,0,0,0.260652,-87.49072,-46.35457)" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/religion/jewish.svg b/images/presets/religion/jewish.svg
new file mode 100644
index 0000000..069a443
--- /dev/null
+++ b/images/presets/religion/jewish.svg
@@ -0,0 +1,160 @@
+<?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"
+   height="2600"
+   id="svg2"
+   inkscape:export-filename="F:\Documents and Settings\Brian Hinkle\Desktop\ilflag-official.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="jewish.svg"
+   sodipodi:version="0.32"
+   width="2600"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>The Official Flag of Israel</dc:title>
+        <dc:description>This is an SVG representation of Israel's official flag, based on the exact measurements and color recommendations of the Israeli government.</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>country</rdf:li>
+            <rdf:li>starofdavid</rdf:li>
+            <rdf:li>israel</rdf:li>
+            <rdf:li>place</rdf:li>
+            <rdf:li>flag</rdf:li>
+            <rdf:li>judaism</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Brian G. Hinkle</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Brian G. Hinkle</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>04/12/05</dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>English</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="1069.7643"
+     inkscape:cy="1195.9462"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="1003"
+     inkscape:window-width="1400"
+     inkscape:window-x="0"
+     inkscape:window-y="13"
+     inkscape:zoom="0.16779395"
+     pagecolor="#ffffff"
+     showgrid="true"
+     width="2600px"
+     height="2600px"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0.00000000cm"
+       originy="0.00000000cm"
+       spacingx="0.028200000cm"
+       spacingy="0.028222222cm"
+       color="#3f3fff"
+       empcolor="#3f3fff"
+       opacity="0.15"
+       empopacity="0.38"
+       empspacing="5" />
+  </sodipodi:namedview>
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-2817.4607,-1665.5008)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4136"
+       width="2600"
+       height="2600"
+       x="2817.4607"
+       y="1665.5007" />
+    <g
+       id="g16521"
+       style="fill:none;fill-opacity:1;stroke:#003ad1;stroke-opacity:1"
+       transform="matrix(1.151007,0,0,1.151007,-371.37264,-290.91802)">
+      <path
+         d="m 2631.5115,2810.8694 -1556.0955,0 778.0477,-1347.6182 z"
+         id="path13485"
+         inkscape:flatsided="true"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         sodipodi:cx="1853.4637"
+         sodipodi:cy="2361.6633"
+         sodipodi:r1="898.41217"
+         sodipodi:r2="449.20609"
+         sodipodi:sides="3"
+         sodipodi:type="star"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#003ad1;stroke-width:173.98858643;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.081481,0,0,1.065501,1894.485,353.1243)" />
+      <path
+         d="m 2631.5115,2810.8694 -1556.0955,0 778.0477,-1347.6182 z"
+         id="path15003"
+         inkscape:flatsided="true"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         sodipodi:arg1="0.52359878"
+         sodipodi:arg2="1.5707963"
+         sodipodi:cx="1853.4637"
+         sodipodi:cy="2361.6633"
+         sodipodi:r1="898.41217"
+         sodipodi:r2="449.20609"
+         sodipodi:sides="3"
+         sodipodi:type="star"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#003ad1;stroke-width:173.98858643;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.081481,0,0,-1.066697,1887.269,5317.887)" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/religion/muslim.svg b/images/presets/religion/muslim.svg
new file mode 100644
index 0000000..5ba7108
--- /dev/null
+++ b/images/presets/religion/muslim.svg
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+
+<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"
+   height="514.40881"
+   id="svg378"
+   version="1.0"
+   width="535.08594"
+   x="0"
+   y="0"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="muslim.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.53198919"
+     inkscape:cx="210.99977"
+     inkscape:cy="206.38235"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg378"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Pakistan</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>asia</rdf:li>
+            <rdf:li>united_nations_member</rdf:li>
+            <rdf:li>flag</rdf:li>
+            <rdf:li>sign</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Lauris Kaplinski</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lauris Kaplinski</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Lauris Kaplinski</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs380" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4135"
+     width="535.08594"
+     height="514.40881"
+     x="0"
+     y="3.4765624e-006" />
+  <rect
+     height="708.66101"
+     id="rect403"
+     style="font-size:12px;fill:#ffffff;fill-rule:evenodd;stroke-width:1pt"
+     width="266.46799"
+     x="-390.36511"
+     y="-97.126106" />
+  <path
+     d="m 449.89309,202.64994 -54.86697,-11.5427 -28.85361,48.07439 -5.97811,-55.74828 -54.63828,-12.58691 51.1736,-22.91206 -4.91406,-55.852705 37.60409,41.587755 51.60069,-21.93259 -27.93158,48.61529 36.80423,42.29781 z"
+     id="path273"
+     style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke-width:1pt"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 470.58989,344.69092 c -48.714,107.324 -176.541,154.212 -284.178,104.346 -107.636002,-49.865 -154.523002,-177.693 -104.657002,-285.329 25.434002,-54.9 67.057002,-92.628006 125.812002,-113.219006 -6.758,5.715 -13.445,11.643 -20.773,19.205 -75.899,78.328006 -73.927,203.498006 4.4,279.397006 78.328,75.899 203.498,73.928 279.396,-4.4 z"
+     id="path278"
+     style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke-width:1pt"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/religion/religion.svg b/images/presets/religion/religion.svg
new file mode 100644
index 0000000..2976543
--- /dev/null
+++ b/images/presets/religion/religion.svg
@@ -0,0 +1,192 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="religion.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.919596"
+     inkscape:cx="-13.658852"
+     inkscape:cy="5.9861113"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="1400"
+     inkscape:window-height="960"
+     inkscape:window-x="0"
+     inkscape:window-y="56"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-8.0000007,-7.9999979)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.76310205;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4153"
+       width="15.236898"
+       height="15.236897"
+       x="8.3815517"
+       y="8.3815489" />
+    <g
+       id="g2212"
+       transform="matrix(0.5,0,0,0.5,-3.5025378,2.107142)">
+      <g
+         id="g3385">
+        <rect
+           style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+           id="rect3279"
+           width="2.6737955"
+           height="14.220004"
+           x="30.11763"
+           y="13.291089"
+           transform="matrix(0.999933,-0.01157261,0.01157261,0.999933,0,0)" />
+        <rect
+           style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+           id="rect3281"
+           width="9.8616724"
+           height="2.3008447"
+           x="26.513855"
+           y="16.258488"
+           transform="matrix(0.9999009,-0.01408147,0.00951065,0.9999548,0,0)" />
+      </g>
+    </g>
+    <path
+       d="m 22.641972,11.284533 -0.850121,-0.178845 -0.447063,0.744874 -0.09263,-0.863775 -0.846577,-0.195024 0.792894,-0.355004 -0.07614,-0.8653937 0.582645,0.6443687 0.799512,-0.3398276 -0.432778,0.7532556 0.570253,0.655371 z"
+       id="path273"
+       style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke-width:1pt"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 22.962652,13.485344 c -0.754785,1.662901 -2.735362,2.389393 -4.403112,1.616759 -1.667734,-0.772619 -2.394211,-2.753212 -1.621577,-4.420946 0.394079,-0.8506319 1.038995,-1.4351973 1.949357,-1.7542384 -0.10471,0.088549 -0.20832,0.180399 -0.321861,0.2975662 -1.175995,1.2136302 -1.145441,3.1530402 0.06817,4.3290342 1.21363,1.175995 3.15304,1.145456 4.329019,-0.06818 z"
+       id="path278"
+       style="font-size:12px;fill:#000000;fill-rule:evenodd;stroke-width:1pt"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g3335"
+       transform="matrix(0.03281411,0,0,0.03281411,8.4199517,16.488154)">
+      <path
+         id="path6"
+         d="m 110.986,16.235 c 0.19,-1.135 1.003,-0.555 1,0 5.629,4.227 10.699,6.611 14.999,11.999 3.592,4.501 5.255,11.669 9.998,16.998 10.464,11.755 30.485,16.537 45.995,14.998 20.54,-2.039 36.137,-19.938 34.995,-44.994 5.067,2.213 8.491,6.415 11.999,9.999 3.928,4.013 9.671,8.587 9.998,15.998 0.91,20.618 -16.083,38.689 -33.995,40.995 C 182.026,85.311 159.201,71.005 146.982,60.231 130.861,46.016 121.354,30.583 110.986,16.235 Z"
+         style="clip-rule:evenodd;fill-rule:evenodd"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path8"
+         d="m 3,150.219 c 2.805,0.054 4.575,3.17 6.999,4.999 9.039,6.821 22.579,14.199 36.996,17.998 17.655,4.652 36.553,7.108 47.994,-1 10.92,-7.739 18.344,-36.726 1,-44.994 -14.144,-6.742 -23.721,8.688 -40.995,5.999 -8.365,-1.302 -13.623,-10.226 -18.998,-15.998 -1.7,-1.825 -4.782,-2.416 -4,-4.999 14.481,1.53 25.146,-6.185 33.996,-11.999 9.448,-6.208 19.458,-12.739 17.998,-29.996 -15.978,-6.603 -35.603,-3.927 -52.993,1 -3.617,1.025 -7.16,3.218 -8.999,3 C 12.378,73.088 6.979,58.357 0,53. [...]
+         style="clip-rule:evenodd;fill-rule:evenodd"
+         inkscape:connector-curvature="0" />
+      <rect
+         id="rect10"
+         height="23.318001"
+         width="23.318001"
+         transform="matrix(0.7071,-0.7071,0.7071,0.7071,39.1583,127.513)"
+         y="4.829"
+         x="161.842"
+         style="clip-rule:evenodd;fill-rule:evenodd" />
+    </g>
+    <g
+       id="g2241"
+       transform="matrix(0.08259935,0,0,0.08259935,2.5382167,-50.398616)">
+      <path
+         id="rect5307"
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         d="m 211.42857,805.48945 -5.875,5.875 c -6.27886,0.96027 -12.06822,3.42601 -16.96875,7.03125 l -8.28125,0 0,8.34375 c -3.58176,4.88793 -6.04358,10.62131 -7,16.875 l -5.875,5.875 5.875,5.875 c 0.95642,6.25369 3.41824,12.01833 7,16.90625 l 0,8.34375 8.3125,0 c 4.89565,3.59612 10.66841,6.07247 16.9375,7.03125 l 5.875,5.875 5.875,-5.875 c 6.26909,-0.95878 12.04186,-3.43513 16.9375,-7.03125 l 8.3125,0 0,-8.28125 c 3.60291,-4.89928 6.07136,-10.69239 7.03125,-16.96875 l 0,-0.0312 5.843 [...]
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5297"
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         d="m 211.42857,814.73945 -3.6875,3.6875 c -5.85047,0.69051 -11.21864,3.00538 -15.625,6.46875 l -5.28125,0 0,5.25 c -3.46913,4.40373 -5.77234,9.77457 -6.46875,15.625 l -3.71875,3.71875 3.71875,3.71875 c 0.69193,5.86249 2.9935,11.21351 6.46875,15.625 l 0,5.25 5.25,0 c 4.41317,3.47863 9.79008,5.8079 15.65625,6.5 l 3.6875,3.6875 3.6875,-3.6875 c 5.86992,-0.6907 11.24067,-3.01946 15.65625,-6.5 l 5.25,0 0,-5.25 c 3.47837,-4.41284 5.77645,-9.75935 6.46875,-15.625 l 3.71875,-3.71875 -3. [...]
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5295"
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(3.5606061,0,0,3.5606061,50.995521,690.73749)"
+         d="m 52.823528,44.588234 c 9.73e-4,4.289017 -3.475689,7.766468 -7.764705,7.766468 -4.289017,0 -7.765679,-3.477451 -7.764706,-7.766468 -9.73e-4,-4.289017 3.475689,-7.766468 7.764706,-7.766468 4.289016,0 7.765678,3.477451 7.764705,7.766468 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5319"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 181.96166,849.49865 58.94117,0"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5293"
+         style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="matrix(1.5454546,0,0,1.5454546,141.79588,780.58955)"
+         d="m 52.823528,44.588234 c 9.73e-4,4.289017 -3.475689,7.766468 -7.764705,7.766468 -4.289017,0 -7.765679,-3.477451 -7.764706,-7.766468 -9.73e-4,-4.289017 3.475689,-7.766468 7.764706,-7.766468 4.289016,0 7.765678,3.477451 7.764705,7.766468 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5323"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 190.59339,828.6598 41.6777,41.67769"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5317"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 211.43224,878.96923 0,-58.94118"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5321"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 190.59339,870.33749 41.6777,-41.6777"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path5291"
+         style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(166.37342,804.9104)"
+         d="m 52.823528,44.588234 c 9.73e-4,4.289017 -3.475689,7.766468 -7.764705,7.766468 -4.289017,0 -7.765679,-3.477451 -7.764706,-7.766468 -9.73e-4,-4.289017 3.475689,-7.766468 7.764706,-7.766468 4.289016,0 7.765678,3.477451 7.764705,7.766468 z"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/religion/shinto.svg b/images/presets/religion/shinto.svg
new file mode 100644
index 0000000..c304703
--- /dev/null
+++ b/images/presets/religion/shinto.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   xml:space="default"
+   width="250"
+   height="250"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="shinto.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata19">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title>日本の地図記号 - 神社</dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs17" />
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="1.508"
+     inkscape:cx="11.93634"
+     inkscape:cy="124.33687"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <title
+     id="title4">日本の地図記号 - 神社</title>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4137"
+     width="250"
+     height="250"
+     x="0"
+     y="7.6293945e-006" />
+  <line
+     stroke="black"
+     stroke-width="30px"
+     x1="15"
+     y1="45"
+     x2="235"
+     y2="45"
+     id="line8" />
+  <line
+     stroke="black"
+     stroke-width="30px"
+     x1="50"
+     y1="95"
+     x2="200"
+     y2="95"
+     id="line10" />
+  <line
+     stroke="black"
+     stroke-width="30px"
+     x1="50"
+     y1="45"
+     x2="50"
+     y2="215"
+     id="line12" />
+  <line
+     stroke="black"
+     stroke-width="30px"
+     x1="200"
+     y1="45"
+     x2="200"
+     y2="215"
+     id="line14" />
+</svg>
diff --git a/images/presets/religion/sikhism.svg b/images/presets/religion/sikhism.svg
new file mode 100644
index 0000000..67900c7
--- /dev/null
+++ b/images/presets/religion/sikhism.svg
@@ -0,0 +1,79 @@
+<?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"
+   version="1.0"
+   width="600"
+   height="800"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="sikhism.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.47125"
+     inkscape:cx="-61.803714"
+     inkscape:cy="397.87798"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4134"
+     width="600"
+     height="800"
+     x="0"
+     y="-1.3283818e-013" />
+  <g
+     id="layer1">
+    <path
+       d="M 286.73019,778.52583 C 275.75301,775.43609 265.01323,766.39009 260.00869,756.01866 C 254.68435,744.98419 254.75043,729.68933 260.17088,718.45579 C 262.56819,713.48757 271.0349,704.02913 275.79979,700.99627 L 278.22458,699.45294 L 277.93101,661.76252 L 277.63732,624.0721 L 255.57862,639.19088 L 233.51991,654.30963 L 235.85201,658.70697 C 237.72013,662.2294 238.18665,664.91233 238.19689,672.19146 C 238.20829,680.26546 237.85962,681.9126 235.06995,686.96488 C 231.55962,693.3225 2 [...]
+       style="fill:#000000"
+       id="path1317" />
+  </g>
+</svg>
diff --git a/images/presets/religion/taoism.svg b/images/presets/religion/taoism.svg
new file mode 100644
index 0000000..7307471
--- /dev/null
+++ b/images/presets/religion/taoism.svg
@@ -0,0 +1,90 @@
+<?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"
+   version="1.0"
+   x="0.00000000"
+   y="0.00000000"
+   width="466.00000"
+   height="466.00000"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="taoism.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata9">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.80901288"
+     inkscape:cx="22.249338"
+     inkscape:cy="231.76393"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.56699997;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4136"
+     width="466"
+     height="466"
+     x="0"
+     y="5.9674488e-015" />
+  <g
+     id="layer1">
+    <g
+       transform="translate(-14.31153,-9.654345)"
+       id="g2100">
+      <path
+         d="M 574.28571 350.93362 A 230.00000 230.00000 0 1 1  114.28571,350.93362 A 230.00000 230.00000 0 1 1  574.28571 350.93362 z"
+         transform="translate(-95.71429,-108.5714)"
+         style="opacity:1.0000000;fill:#ffffff;fill-opacity:1.0000000;stroke:none;stroke-width:2.0000000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+         id="path1366" />
+      <path
+         d="M 231.48189,473.26283 C 131.83469,468.06658 42.098062,390.44395 21.653942,292.99899 C 2.8527423,211.64305 32.299602,121.62080 96.083632,67.582430 C 141.33822,28.222080 202.15620,7.4760400 262.06397,11.991470 C 356.93917,15.843450 443.80335,86.158270 469.35800,177.35283 C 479.83354,210.86634 479.80411,246.84493 475.57362,281.36221 C 461.15785,369.25654 392.02150,445.16887 305.33917,466.41185 C 281.37157,472.30240 256.12409,475.36915 231.48189,473.26283 z M 195.98189,459.07832  [...]
+         style="fill:#000000"
+         id="path1351" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/religion/wayside_cross.svg b/images/presets/religion/wayside_cross.svg
new file mode 100644
index 0000000..f0f49a6
--- /dev/null
+++ b/images/presets/religion/wayside_cross.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="100"
+   height="130"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="wayside_cross.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\religion\wayside_cross.png"
+   inkscape:export-xdpi="11.076923"
+   inkscape:export-ydpi="11.076923">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-537.14286"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-325,-438.79074)">
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:12.27957249000000000;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2385"
+       width="80.577568"
+       height="17.720427"
+       x="336.85406"
+       y="476.3591" />
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2387"
+       width="20"
+       height="111.42857"
+       x="367.14288"
+       y="452.36218" />
+    <rect
+       style="fill:#666666;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3151"
+       width="45.714287"
+       height="28.571428"
+       x="28.571428"
+       y="112.85714"
+       transform="translate(325,438.79074)" />
+  </g>
+</svg>
diff --git a/images/presets/religion/wayside_shrine.svg b/images/presets/religion/wayside_shrine.svg
new file mode 100644
index 0000000..89cfeda
--- /dev/null
+++ b/images/presets/religion/wayside_shrine.svg
@@ -0,0 +1,162 @@
+<?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"
+   width="8"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="wayside_shrine2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\sightseeing\wayside_shrine.png"
+   inkscape:export-xdpi="3.9375002"
+   inkscape:export-ydpi="3.9375002">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 182.85713 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="171.42857 : 182.85713 : 1"
+       inkscape:persp3d-origin="85.714287 : 121.90475 : 1"
+       id="perspective20" />
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 0,0 Z"
+         id="path1512"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 10,0 Z"
+         id="path1515"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <inkscape:perspective
+       id="perspective10"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="-5.1327357"
+     inkscape:cy="12.86553"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4168"
+       originx="0"
+       originy="0" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-282.85715,-570.64787)">
+    <path
+       style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 282.85715,573.65464 4.00001,-3.00677 3.99999,3.00677 0,12.99323 -8,0 0,-12.99323 z"
+       id="rect2160"
+       sodipodi:nodetypes="cccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffd42a;fill-rule:evenodd;stroke:#ffd42a;stroke-width:0.71139544;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.84558193, 0.71139547;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 284.1772,582.20976 5.61884,0.0136"
+       id="path3139"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffd42a;fill-rule:evenodd;stroke:#ffd42a;stroke-width:0.68493891;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.73975548, 0.68493887;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 289.88608,584.13337 -5.70964,0.0124"
+       id="path3299"
+       sodipodi:nodetypes="cc"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.80830628;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2385"
+       width="5.1916938"
+       height="1.1916938"
+       x="284.26132"
+       y="575.05194" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.66335207;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2387"
+       width="1.336648"
+       height="7.336648"
+       x="286.18881"
+       y="572.97949" />
+  </g>
+</svg>
diff --git a/images/presets/reservoir_covered.png b/images/presets/reservoir_covered.png
deleted file mode 100644
index c0a4cd0..0000000
Binary files a/images/presets/reservoir_covered.png and /dev/null differ
diff --git a/images/presets/restaurant.png b/images/presets/restaurant.png
deleted file mode 100644
index 42258ab..0000000
Binary files a/images/presets/restaurant.png and /dev/null differ
diff --git a/images/presets/retaining_wall.png b/images/presets/retaining_wall.png
deleted file mode 100644
index 0925672..0000000
Binary files a/images/presets/retaining_wall.png and /dev/null differ
diff --git a/images/presets/rowing.png b/images/presets/rowing.png
deleted file mode 100644
index 1a7f3ad..0000000
Binary files a/images/presets/rowing.png and /dev/null differ
diff --git a/images/presets/ruins.png b/images/presets/ruins.png
deleted file mode 100644
index 4855273..0000000
Binary files a/images/presets/ruins.png and /dev/null differ
diff --git a/images/presets/sauna.png b/images/presets/sauna.png
deleted file mode 100644
index 0ebe1e7..0000000
Binary files a/images/presets/sauna.png and /dev/null differ
diff --git a/images/presets/service/arts_centre.png b/images/presets/service/arts_centre.png
new file mode 100644
index 0000000..b9d767d
Binary files /dev/null and b/images/presets/service/arts_centre.png differ
diff --git a/images/presets/service/clock.svg b/images/presets/service/clock.svg
new file mode 100644
index 0000000..64e0806
--- /dev/null
+++ b/images/presets/service/clock.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 7,0 C 3.1458514,0 0,3.1458514 0,7 c 0,3.854149 3.1458514,7 7,7 3.854149,0 7,-3.145851 7,-7 C 14,3.1458514 10.854149,0 7,0 z m 0,2 c 2.7732686,0 5,2.2267316 5,5 0,2.7732686 -2.2267314,5 -5,5 C 4.2267316,12 2,9.7732686 2,7 2,4.2267316 4.2267316,2 7,2 z M 6.75,3.21875 A 0.750075,0.750075 0 0 0 6.59375,3.25 0.750075,0.750075 0 0 0 6,4 l 0,3 0,0.375 0.3125,0.21875 2,1.5 a 0.750075,0.750075 0 1 0 0.875,-1.1875 L 7.5,6.625 7.5,4 A 0.750075,0.750075 0 0 0 6.75,3.21875 z" id="clock"  [...]
+</svg>
diff --git a/images/presets/community_centre.png b/images/presets/service/community_centre.png
similarity index 100%
rename from images/presets/community_centre.png
rename to images/presets/service/community_centre.png
diff --git a/images/presets/service/courthouse.svg b/images/presets/service/courthouse.svg
new file mode 100644
index 0000000..139bec6
--- /dev/null
+++ b/images/presets/service/courthouse.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 7,0 C 6,0 6,1 6,1 L 2.25,2 2.25,3 0,8 C 0,9 0.792008,10 2.5,10 4.207992,10 5,9 5,8 L 2.75,3 6,3 6,13 2,13 1,14 13,14 12,13 8,13 8,3 11.25,3 9,8 c 0,1 0.77294,2 2.5,2 C 13.22706,10 14,9 14,8 L 11.75,3 11.75,2 8,1 C 8,1 8,0 7,0 z M 2.5,4 4.25,8 0.75,8 z m 9,0 1.75,4 -3.5,0 z" id="courthouse" style="fill:#734a08;fill-opacity:1" transform="translate(1,1)"/>
+</svg>
diff --git a/images/presets/service/elevator.svg b/images/presets/service/elevator.svg
new file mode 100644
index 0000000..e252b3c
--- /dev/null
+++ b/images/presets/service/elevator.svg
@@ -0,0 +1,243 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__elevator.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.7228925"
+     inkscape:cy="10.87432"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#005cff;fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4284"
+       width="16.000004"
+       height="16.000042"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       ry="2.0000393"
+       rx="2.0000393" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:45;marker:none;"
+       d="m 2.3751718,1041.0393 0,4.1972 c -0.00799,0.6574 0.8424554,0.6574 0.8344694,0 l 0,-3.4636 0.4300275,0 0,8.9553 c -0.010264,0.8453 1.0831517,0.8453 1.0728906,0 l 0,-5.4934 0.5311078,0 0,5.4934 c -0.010167,0.8452 1.0830581,0.8452 1.0728915,0 l 0,-8.9553 0.4737998,0 0,3.4636 c -0.00805,0.6574 0.8424938,0.6574 0.8344701,0 l 0,-4.1974 c 0,-0.5826 -0.4029823,-1.0521 -0.9030169,-1.0521 l -3.4016003,10e-5 c -0.5980515,10e-5 -0.9450395,0.4694 -0.9450395,1.0522 z"
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccccccscc" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="4.9998994"
+       cy="1038.4159"
+       rx="1.0538474"
+       ry="1.0538332" />
+    <path
+       style="color:#000000;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 12.494142,1045.3739 c -0.276115,0 -0.497334,0.2297 -0.49414,0.5058 l 0,2.4824 -1.503907,0 c -0.447994,2e-4 -0.6697598,0.5441 -0.349609,0.8575 l 2,2 c 0.195265,0.1952 0.511766,0.1952 0.707031,0 l 2,-2 c 0.374791,-0.3616 0.03953,-0.8621 -0.351562,-0.8594 l -1.501953,0 0,-2.4805 c 0.0032,-0.2807 -0.225157,-0.5091 -0.50586,-0.5058 z"
+       id="path4296-9"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4225"
+       d="m 12.494142,1043.3503 c -0.276115,0 -0.497334,-0.2297 -0.49414,-0.5058 l 0,-2.4824 -1.503907,0 c -0.447994,-2e-4 -0.6697605,-0.5441 -0.349609,-0.8575 l 2,-2 c 0.195265,-0.1952 0.511766,-0.1952 0.707031,0 l 2,2 c 0.37479,0.3616 0.03953,0.8621 -0.351562,0.8594 l -1.501953,0 0,2.4805 c 0.0032,0.2807 -0.225157,0.5091 -0.50586,0.5058 z"
+       style="color:#000000;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/embassy.png b/images/presets/service/embassy.png
similarity index 100%
rename from images/presets/embassy.png
rename to images/presets/service/embassy.png
diff --git a/images/presets/service/emergency_access_point.svg b/images/presets/service/emergency_access_point.svg
new file mode 100644
index 0000000..f377014
--- /dev/null
+++ b/images/presets/service/emergency_access_point.svg
@@ -0,0 +1,226 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__emergency_access_point.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="-2.011933"
+     inkscape:cy="14.758289"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#007704;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254-5"
+       width="16.000008"
+       height="16.000046"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2.0000021" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 10.000003,1046.362 5.000001,0 0,-4 -5.000001,0 0,-5 -4.0000014,0 0,5 -5.000001,0 0,4 5.000001,0 0,5 4.0000014,0 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path1883-9"
+       sodipodi:nodetypes="ccccccccccccc" />
+    <ellipse
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.81099999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4204"
+       cx="8.000001"
+       cy="1044.3621"
+       rx="2.0000002"
+       ry="1.99998" />
+  </g>
+</svg>
diff --git a/images/presets/service/excrement_bags.png b/images/presets/service/excrement_bags.png
new file mode 100644
index 0000000..3116c7f
Binary files /dev/null and b/images/presets/service/excrement_bags.png differ
diff --git a/images/presets/service/fire_hydrant.svg b/images/presets/service/fire_hydrant.svg
new file mode 100644
index 0000000..0334e16
--- /dev/null
+++ b/images/presets/service/fire_hydrant.svg
@@ -0,0 +1,164 @@
+<?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"
+   width="227.25311"
+   height="337.69653"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="fire_hydrant.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="511.13615"
+     inkscape:cy="83.519111"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="996"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>malenki</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-148.27343,-206.07371)">
+    <g
+       id="g3265">
+      <rect
+         y="207.42047"
+         x="245.19363"
+         height="16.479065"
+         width="33.412712"
+         id="rect3179"
+         style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.69352913;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         transform="matrix(1.083936,0,0,1.0771579,-26.069401,-47.297547)"
+         d="M 317.18789,298.78839 A 51.51778,49.497475 0 1 1 214.15232,298.78839 A 51.51778,49.497475 0 1 1 317.18789,298.78839 z"
+         sodipodi:ry="49.497475"
+         sodipodi:rx="51.51778"
+         sodipodi:cy="298.78839"
+         sodipodi:cx="265.6701"
+         id="path3171"
+         style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.77638531;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <g
+         transform="translate(1.2662501,0)"
+         id="g3257">
+        <g
+           id="g3233"
+           transform="translate(0,-2.2397341)">
+          <rect
+             y="343.65182"
+             x="149.201"
+             height="39.002003"
+             width="24.71629"
+             id="rect3272"
+             style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <rect
+             inkscape:transform-center-y="-48.818727"
+             inkscape:transform-center-x="-96.907101"
+             y="317.9295"
+             x="170.71945"
+             height="90.446655"
+             width="37.999222"
+             id="rect3199"
+             style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.42258501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <g
+           id="g3237"
+           transform="matrix(-1,0,0,-1,521.26748,724.06593)">
+          <rect
+             y="343.65182"
+             x="149.201"
+             height="39.002003"
+             width="24.71629"
+             id="rect3239"
+             style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <rect
+             inkscape:transform-center-y="-48.818727"
+             inkscape:transform-center-x="-96.907101"
+             y="317.9295"
+             x="170.71945"
+             height="90.446655"
+             width="37.999222"
+             id="rect3241"
+             style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.42258501;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+      </g>
+      <rect
+         y="278.63803"
+         x="206.89935"
+         height="249.40231"
+         width="110.00126"
+         id="rect3159"
+         style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         y="523.51727"
+         x="182.06792"
+         height="19.252966"
+         width="159.66415"
+         id="rect3233"
+         style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         y="268.91104"
+         x="189.87724"
+         height="19.348593"
+         width="144.0455"
+         id="rect3215"
+         style="fill:#ff0404;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.90437293;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/service/firebrigade.svg b/images/presets/service/firebrigade.svg
new file mode 100644
index 0000000..658bc2c
--- /dev/null
+++ b/images/presets/service/firebrigade.svg
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   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"
+   version="1.1"
+   width="1000"
+   height="500"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="firebrigade.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\public">
+  <path
+     sodipodi:type="arc"
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3172"
+     sodipodi:cx="577.94946"
+     sodipodi:cy="25.983147"
+     sodipodi:rx="14.747191"
+     sodipodi:ry="25.983147"
+     d="M 563.20227,25.983145 A 14.747191,25.983147 0 0 1 592.69665,25.983146"
+     sodipodi:start="3.1415927"
+     sodipodi:end="6.2831853"
+     sodipodi:open="true"
+     transform="matrix(2.1904762,0,0,1.7567568,-413.45641,54.77528)" />
+  <circle
+     r="77"
+     cx="748"
+     cy="412"
+     style="fill:#000000;stroke:none"
+     id="circle10"
+     sodipodi:cx="748"
+     sodipodi:cy="412"
+     sodipodi:rx="77"
+     sodipodi:ry="77"
+     transform="matrix(-1,0,0,1,1000.5636,0)" />
+  <metadata
+     id="metadata15">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs13" />
+  <sodipodi:namedview
+     inkscape:window-height="852"
+     inkscape:window-width="1178"
+     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"
+     inkscape:zoom="0.712"
+     inkscape:cx="500.63904"
+     inkscape:cy="138.73616"
+     inkscape:window-x="44"
+     inkscape:window-y="58"
+     inkscape:current-layer="svg2" />
+<!-- Created by MarianSigler, mariansigler at gmail.com -->  <path
+     style="fill:#d40000;fill-rule:evenodd;stroke:none"
+     d="M 704.78238,86.8125 L 884.50113,99.21875 C 914.98082,101.52687 905.67809,93.253968 939.37613,182.6875 C 972.12634,266.58484 966.60398,237.38284 966.25113,281.625 L 966.25113,380.625 C 965.98019,406.5123 962.10399,412.88408 934.00113,413.09375 C 929.93537,282.42164 742.82184,281.9606 739.09488,413.84375 L 350.03238,414.09375 C 350.22007,380.0998 335.84464,354.1971 312.84488,335.40625 L 704.78238,335.09375 L 704.78238,233.15625 L 746.34488,233.15625 L 746.34488,127.8125 L 704.78238 [...]
+     id="path4" />
+  <path
+     style="fill:#d40000;stroke:none"
+     d="M 705.46988,86.59375 L 705.46988,127.8125 L 590.43863,127.8125 L 590.43863,233.15625 L 705.46988,233.15625 L 705.46988,337.75 L 34.813632,337.75 L 34.813632,86.59375 L 546.90738,86.59375 L 546.90738,314.59375 L 565.15738,314.59375 L 565.15738,86.59375 L 705.46988,86.59375 z "
+     id="rect6" />
+  <circle
+     r="77"
+     cx="164"
+     cy="412"
+     style="fill:#000000;stroke:none"
+     id="circle8"
+     sodipodi:cx="164"
+     sodipodi:cy="412"
+     sodipodi:rx="77"
+     sodipodi:ry="77"
+     transform="matrix(-1,0,0,1,1000.5636,0)" />
+  <rect
+     style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect3160"
+     width="223.31461"
+     height="203.65169"
+     x="58.988766"
+     y="112.35955" />
+  <rect
+     y="112.35955"
+     x="58.988766"
+     height="203.65169"
+     width="223.31461"
+     id="rect3162"
+     style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  <rect
+     style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="rect3166"
+     width="223.31461"
+     height="203.65169"
+     x="296.34833"
+     y="110.95506" />
+  <path
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:10.76448822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 853.93264,48.318081 L 853.93264,7.7252111"
+     id="path3174" />
+  <path
+     id="path5118"
+     d="M 871.91661,52.531564 L 894.93735,19.097648"
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:10.76448822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  <path
+     style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:10.76448822;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 835.94859,51.12707 L 812.92785,17.693154"
+     id="path5120" />
+</svg>
diff --git a/images/presets/network-wireless.svg b/images/presets/service/network-wireless.svg
similarity index 100%
rename from images/presets/network-wireless.svg
rename to images/presets/service/network-wireless.svg
diff --git a/images/presets/service/police.svg b/images/presets/service/police.svg
new file mode 100644
index 0000000..4827ee3
--- /dev/null
+++ b/images/presets/service/police.svg
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   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"
+   width="14.536685"
+   height="15.999996"
+   id="svg2226"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="police3.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs2228">
+    <radialGradient
+       cx="-41.2598"
+       cy="-47.871601"
+       fx="-41.2598"
+       fy="-47.871601"
+       gradientUnits="userSpaceOnUse"
+       id="XMLID_15_"
+       r="599.07233">
+      <stop
+         offset="0"
+         style="stop-color:#E8D776"
+         id="stop2960" />
+      <stop
+         offset="0.4141"
+         style="stop-color:#B39949"
+         id="stop2962" />
+      <stop
+         offset="0.8085"
+         style="stop-color:#856422"
+         id="stop2964" />
+      <stop
+         offset="1"
+         style="stop-color:#734F13"
+         id="stop2966" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E8D776" />
+      <a:midPointStop
+         offset="0.4551"
+         style="stop-color:#E8D776" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#734F13" />
+    </radialGradient>
+    <radialGradient
+       cx="-41.2598"
+       cy="-47.871601"
+       fx="-41.2598"
+       fy="-47.871601"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2241"
+       r="599.07233">
+      <stop
+         offset="0"
+         style="stop-color:#E8D776"
+         id="stop2243" />
+      <stop
+         offset="0.4141"
+         style="stop-color:#B39949"
+         id="stop2245" />
+      <stop
+         offset="0.8085"
+         style="stop-color:#856422"
+         id="stop2247" />
+      <stop
+         offset="1"
+         style="stop-color:#734F13"
+         id="stop2249" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E8D776" />
+      <a:midPointStop
+         offset="0.4551"
+         style="stop-color:#E8D776" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#734F13" />
+    </radialGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="6.5611541"
+     inkscape:cy="4.1970596"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:window-width="906"
+     inkscape:window-height="820"
+     inkscape:window-x="486"
+     inkscape:window-y="151"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata2231">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-255.89842,-523.38464)">
+    <path
+       style="fill:#917400;fill-opacity:1;stroke:#000000;stroke-width:0.28710759"
+       d="m 263.17214,539.35075 c 0.38597,-1.58882 8.03198,-0.52961 6.85035,-3.17764 -3.61641,-8.10434 0,-9.53291 0,-9.53291 -1.14352,-0.39721 -1.36704,-1.58883 -1.37222,-1.58883 -3.42453,1.58883 -5.47813,-1.58881 -5.47813,-1.58881 l 0,0 c 0,0 -2.02498,3.17764 -5.48889,1.58881 -0.003,0 -0.2287,1.19162 -1.37222,1.58883 0,0 3.61641,1.42857 0,9.53291 -1.18163,2.64803 6.47517,1.58882 6.86111,3.17764 z"
+       id="path2968"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3435"
+       d="m 263.55699,527.55291 2.45042,7.38057 -6.41529,-4.56144 7.92974,0 -6.4153,4.56144 2.45043,-7.38057 z"
+       style="fill:#0000ff;stroke:#000000;stroke-width:0.01031038"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/service/post_box.png b/images/presets/service/post_box.png
new file mode 100644
index 0000000..47e52df
Binary files /dev/null and b/images/presets/service/post_box.png differ
diff --git a/images/presets/service/post_office.png b/images/presets/service/post_office.png
new file mode 100644
index 0000000..83478b3
Binary files /dev/null and b/images/presets/service/post_office.png differ
diff --git a/images/presets/service/prison.svg b/images/presets/service/prison.svg
new file mode 100644
index 0000000..be4594c
--- /dev/null
+++ b/images/presets/service/prison.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 0,0 0,14 14,14 14,0 0,0 z m 1,1 3,0 0,12 -0.5,0 0,-4.21875 C 3.200928,9.13501 3,9.5625 3,10 L 3,13 1,13 1,1 z m 4,0 4,0 0,12 -0.5,0 0,-5 -3,0 0,5 L 5,13 5,1 z m 5,0 3,0 0,12 -2,0 0,-3 C 11,9.5625 10.799072,9.13501 10.5,8.78125 L 10.5,13 10,13 10,1 z M 7,3 C 6.399152,3 5.866615,3.2680514 5.5,3.6875 l 0,2.625 C 5.866615,6.7319486 6.399152,7 7,7 7.600847,7 8.133385,6.7319486 8.5,6.3125 l 0,-2.625 C 8.133385,3.2680514 7.600847,3 7,3 z" id="prison" style="fill:#734a08;fill-opacit [...]
+</svg>
diff --git a/images/presets/service/ranger_station.svg b/images/presets/service/ranger_station.svg
new file mode 100644
index 0000000..e30afa1
--- /dev/null
+++ b/images/presets/service/ranger_station.svg
@@ -0,0 +1,75 @@
+<?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"
+   width="50"
+   height="50"
+   id="svg3812"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="ranger_station.svg">
+  <defs
+     id="defs3814" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.959798"
+     inkscape:cx="74.900738"
+     inkscape:cy="15.36495"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3817">
+    <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>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-152.19785,-290.16487)">
+    <path
+       id="path361"
+       d="m 158.17358,291.17084 c -2.74014,0 -4.95955,2.22424 -4.95955,4.95905 v 38.03963 c 0,2.73481 2.22447,4.96411 4.95955,4.96411 h 38.04854 c 2.74014,0 4.95955,-2.2293 4.95955,-4.96411 v -38.03963 c 0,-2.73481 -2.22447,-4.95905 -4.95955,-4.95905 h -38.04854 z"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff" />
+    <path
+       id="path363"
+       d="m 158.17358,340.16487 c -3.29626,0 -5.97573,-2.66909 -5.97573,-5.98524 V 296.14 c 0,-3.30098 2.67442,-5.97513 5.97573,-5.97513 h 38.04854 c 3.29626,0 5.97573,2.66404 5.97573,5.97513 v 38.03963 c 0,3.30604 -2.67442,5.98524 -5.97573,5.98524 h -38.04854 z"
+       inkscape:connector-curvature="0"
+       style="fill:#550000" />
+    <path
+       id="path365"
+       d="m 180.848,311.10815 v -8.57345 h 2.96765 c 1.23356,0 1.4459,0.80376 1.59757,0.96047 0.46006,0.44485 0.76845,0.71783 1.42063,0.71783 h 3.28614 v -7.2844 h -3.28614 c -0.65218,0 -0.96057,-0.26792 -1.42063,-0.72288 -0.15167,-0.13649 -0.36401,-0.95542 -1.59757,-0.95542 h -4.52983 v 14.85694 l -2.0728,-1.35982 -18.26087,11.7885 h 4.2821 v 14.24527 h 10.36906 v -11.31331 h 7.20425 v 11.06056 h 10.37411 v -13.99758 h 4.26694 L 180.848,311.10815 z"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff" />
+  </g>
+</svg>
diff --git a/images/presets/service/recycling/recycling.svg b/images/presets/service/recycling/recycling.svg
new file mode 100644
index 0000000..47dbafe
--- /dev/null
+++ b/images/presets/service/recycling/recycling.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 5.8039383,9.6927765 -1.8884929,-3.3652691 -3.79805848,0 L 1.6612772,7.2415626 0.70680532,8.9238794 C 0.62540244,9.0764392 0.5847036,9.2357531 0.58470703,9.4018258 c -3.43e-6,0.1660797 0.040695,0.3253953 0.12209829,0.4779444 L 2.2091701,12.559182 C 2.2769334,12.365215 2.3446928,12.198926 2.4124615,12.06032 L 4.2811194,8.7787216 5.8039383,9.6927765 z M 2.9814254,12.393105 c -0.1086743,0.180023 -0.163009,0.373778 -0.1630043,0.581266 -4.7e-6,0.31863 0.1117699,0.588665 0.3353051,0.8 [...]
+     id="path4"
+     style="fill:#ffffff;stroke:#000000;stroke-width:0.3" />
+</svg>
diff --git a/images/presets/service/recycling/recycling_centre.svg b/images/presets/service/recycling/recycling_centre.svg
new file mode 100644
index 0000000..65f6a93
--- /dev/null
+++ b/images/presets/service/recycling/recycling_centre.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 5.8039383,9.6927765 -1.8884929,-3.3652691 -3.79805848,0 L 1.6612772,7.2415626 0.70680532,8.9238794 C 0.62540244,9.0764392 0.5847036,9.2357531 0.58470703,9.4018258 c -3.43e-6,0.1660797 0.040695,0.3253953 0.12209829,0.4779444 L 2.2091701,12.559182 C 2.2769334,12.365215 2.3446928,12.198926 2.4124615,12.06032 L 4.2811194,8.7787216 5.8039383,9.6927765 z M 2.9814254,12.393105 c -0.1086743,0.180023 -0.163009,0.373778 -0.1630043,0.581266 -4.7e-6,0.31863 0.1117699,0.588665 0.3353051,0.8 [...]
+     id="path4"
+     style="fill:#0088ff;stroke:#000000;stroke-width:0.3" />
+</svg>
diff --git a/images/presets/service/recycling/recycling_container.svg b/images/presets/service/recycling/recycling_container.svg
new file mode 100644
index 0000000..9c0908f
--- /dev/null
+++ b/images/presets/service/recycling/recycling_container.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 5.8039383,9.6927765 -1.8884929,-3.3652691 -3.79805848,0 L 1.6612772,7.2415626 0.70680532,8.9238794 C 0.62540244,9.0764392 0.5847036,9.2357531 0.58470703,9.4018258 c -3.43e-6,0.1660797 0.040695,0.3253953 0.12209829,0.4779444 L 2.2091701,12.559182 C 2.2769334,12.365215 2.3446928,12.198926 2.4124615,12.06032 L 4.2811194,8.7787216 5.8039383,9.6927765 z M 2.9814254,12.393105 c -0.1086743,0.180023 -0.163009,0.373778 -0.1630043,0.581266 -4.7e-6,0.31863 0.1117699,0.588665 0.3353051,0.8 [...]
+     id="path4"
+     style="fill:#00AA00;stroke:#000000;stroke-width:0.3" />
+</svg>
diff --git a/images/presets/service/recycling/sanitary_dump_station.svg b/images/presets/service/recycling/sanitary_dump_station.svg
new file mode 100644
index 0000000..e507135
--- /dev/null
+++ b/images/presets/service/recycling/sanitary_dump_station.svg
@@ -0,0 +1,87 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="7.9572548"
+     inkscape:cy="8.0221397"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2996"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-695px"
+       originy="-330px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-695,-706.36218)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3770"
+       width="16"
+       height="16"
+       x="695"
+       y="706.36218" />
+    <path
+       style="fill:#362d8e;fill-opacity:1;stroke:none"
+       d="m 696,712.36218 0,9 14,0 0,-9 -3,0 0,2 1,0 0,5 -10,0 0,-5 1,0 0,-2 z"
+       id="path2998"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#362d8e;fill-opacity:1;stroke:none"
+       d="m 700,711.36218 3,4 3,-4 -2,0 0,-4 -2,0 0,4 z"
+       id="path3768"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/service/recycling/trash-bin.svg b/images/presets/service/recycling/trash-bin.svg
new file mode 100644
index 0000000..9e3e231
--- /dev/null
+++ b/images/presets/service/recycling/trash-bin.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+
+<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="svg831"
+   sodipodi:version="0.32"
+   width="112.85"
+   height="123.6125"
+   sodipodi:docname="trash-bin2.svg"
+   inkscape:version="0.91 r13725"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata2212">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs833" />
+  <sodipodi:namedview
+     id="base"
+     inkscape:zoom="3.0498533"
+     inkscape:cx="0.52067075"
+     inkscape:cy="61.478367"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg831"
+     showgrid="false"
+     units="px"
+     inkscape:window-maximized="1" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4136"
+     width="112.85"
+     height="123.6125"
+     x="0"
+     y="-8.3923342e-006" />
+  <g
+     id="g663"
+     transform="matrix(0.453438,-0.0060926,0.00628608,0.467838,-68.49557,-243.2297)">
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
+       d="m 234.631,654.56 c 8.279,-4.073 11.199,-8.145 14.119,-15.079 -7.396,-4.554 -13.898,-8.156 -17.721,-18.434 -3.207,-2.543 -18.027,0.637 -19.448,8.586 5.896,10.217 10.901,17.572 23.05,24.927 z"
+       id="path660"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 187.354,655.797 80.406,-10e-4 -10.149,110.072 -58.548,-0.782 -11.709,-109.289 z"
+       id="path661"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 289.719,610.341 c 0.846,7.972 4.226,26.31 4.226,34.282 0,12.757 -5.917,46.243 -6.763,57.405 -0.844,11.162 1.692,47.837 -0.844,51.824 -2.536,3.986 -19.44,6.378 -19.44,6.378 l -1.69,5.58 34.653,0 3.381,-58.202 c 1.69,-4.783 6.761,-8.77 10.141,0 0.846,6.379 0,22.324 2.536,28.703 2.536,6.378 5.072,23.918 5.072,23.918 0,0 -13.523,1.595 -13.523,5.581 0,3.987 28.736,2.392 28.736,2.392 -5.071,-10.364 -5.072,-50.228 -8.452,-55.81 1.69,-5.58 0,-90.093 0,-90.093 0,0 6.761,2.392 9.297,5. [...]
+       id="path662"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/service/recycling/waste_disposal.png b/images/presets/service/recycling/waste_disposal.png
new file mode 100644
index 0000000..0021cfd
Binary files /dev/null and b/images/presets/service/recycling/waste_disposal.png differ
diff --git a/images/presets/service/shower.svg b/images/presets/service/shower.svg
new file mode 100644
index 0000000..b8188ea
--- /dev/null
+++ b/images/presets/service/shower.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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="Layer_1"
+   xml:space="preserve"
+   enable-background="new 0 0 100 100"
+   viewBox="0 0 100 100"
+   height="100px"
+   width="100px"
+   y="0px"
+   x="0px"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="shower12.svg"><metadata
+     id="metadata49"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs47" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview45"
+     showgrid="true"
+     inkscape:zoom="4.72"
+     inkscape:cx="21.580445"
+     inkscape:cy="47.596424"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="Layer_1"><inkscape:grid
+       type="xygrid"
+       id="grid3026" /></sodipodi:namedview><rect
+     style="fill:#ffffff;fill-opacity:1;stroke:none"
+     id="rect3028"
+     width="100"
+     height="100"
+     x="0"
+     y="0" /><path
+     d="M83.397,45.72H16.614c0-11.309,9.167-20.469,20.469-20.469h5.729V-0.211H57.2v25.462h5.729  C74.231,25.251,83.397,34.412,83.397,45.72z"
+     id="path3" /><path
+     d="m 85.357,94.836 c 1.751,-0.696 2.598,-2.683 1.901,-4.427 l -0.026,-0.072 c -0.703,-1.751 -2.683,-2.591 -4.421,-1.861 -1.751,0.696 -2.584,2.715 -1.881,4.459 0.527,1.335 1.81,2.148 3.164,2.148 0.417,0 0.853,-0.078 1.263,-0.247 z"
+     id="path15"
+     inkscape:connector-curvature="0" /><path
+     d="m 80.364,76.062 c 1.803,-0.54 2.825,-2.441 2.285,-4.245 l -0.02,-0.064 C 82.088,69.949 80.207,68.96 78.391,69.5 c -1.797,0.54 -2.819,2.468 -2.272,4.277 0.437,1.478 1.797,2.429 3.262,2.429 0.325,0 0.651,-0.046 0.983,-0.144 z"
+     id="path17"
+     inkscape:connector-curvature="0" /><path
+     d="M75.943,57.081c1.751-0.697,2.598-2.683,1.901-4.428l-0.026-0.064c-0.696-1.745-2.676-2.585-4.421-1.869  c-1.751,0.703-2.584,2.721-1.881,4.466c0.533,1.328,1.81,2.142,3.164,2.142C75.097,57.328,75.533,57.25,75.943,57.081z"
+     id="path19" /><path
+     d="m 61.532,95.139816 c 1.875,-0.188 3.242,-1.861 3.053,-3.736 l -0.006,-0.065 c -0.183,-1.868 -1.85,-3.235 -3.725,-3.015 -1.881,0.183 -3.248,1.889 -3.053,3.764 0.176,1.758 1.66,3.072 3.385,3.072 0.112,0 0.235,-0.006 0.346,-0.02 z"
+     id="path23"
+     inkscape:connector-curvature="0" /><path
+     d="m 59.755,76.812 c 1.849,-0.365 3.047,-2.162 2.676,-4.011 l -0.014,-0.065 c -0.364,-1.849 -2.168,-3.014 -4.004,-2.643 -1.849,0.364 -3.04,2.193 -2.669,4.043 0.325,1.627 1.745,2.74 3.333,2.74 0.229,0 0.456,-0.02 0.678,-0.064 z"
+     id="path25"
+     inkscape:connector-curvature="0" /><path
+     d="m 57.646,57.263 c 1.855,-0.364 3.053,-2.161 2.682,-4.01 l -0.013,-0.065 c -0.371,-1.849 -2.2,-3.027 -4.004,-2.643 -1.855,0.364 -3.047,2.194 -2.669,4.042 0.325,1.621 1.744,2.741 3.333,2.741 0.227,0 0.456,-0.019 0.671,-0.065 z"
+     id="path27"
+     inkscape:connector-curvature="0" /><path
+     d="m 19.082,92.935 0.026,-0.064 c 0.703,-1.745 -0.156,-3.698 -1.908,-4.395 -1.731,-0.703 -3.743,0.176 -4.446,1.934 -0.697,1.744 0.149,3.73 1.901,4.427 0.41,0.169 0.846,0.247 1.263,0.247 1.353,-0.001 2.636,-0.814 3.164,-2.149 z"
+     id="path31"
+     inkscape:connector-curvature="0" /><path
+     d="m 23.893,73.777 0.02,-0.071 C 24.46,71.902 23.418,70.04 21.621,69.5 c -1.836,-0.573 -3.724,0.508 -4.258,2.317 -0.541,1.804 0.481,3.705 2.285,4.245 0.332,0.098 0.657,0.144 0.983,0.144 1.465,0 2.826,-0.951 3.262,-2.429 z"
+     id="path33"
+     inkscape:connector-curvature="0" /><path
+     d="M28.496,55.187l0.026-0.065c0.703-1.751-0.156-3.698-1.908-4.401c-1.719-0.703-3.743,0.182-4.446,1.933  c-0.697,1.745,0.149,3.73,1.901,4.428c0.41,0.169,0.846,0.247,1.263,0.247C26.686,57.328,27.961,56.515,28.496,55.187z"
+     id="path35" /><path
+     d="m 42.21,92.086816 0.006,-0.065 c 0.195,-1.875 -1.178,-3.516 -3.06,-3.698 -1.868,-0.221 -3.542,1.211 -3.73,3.08 -0.188,1.875 1.179,3.548 3.054,3.736 0.11,0.014 0.234,0.02 0.345,0.02 1.725,0 3.21,-1.315 3.385,-3.073 z"
+     id="path39"
+     inkscape:connector-curvature="0" /><path
+     d="m 44.268,74.136 0.013,-0.065 c 0.371,-1.849 -0.833,-3.613 -2.683,-3.978 -1.81,-0.404 -3.646,0.859 -4.017,2.708 -0.371,1.849 0.827,3.646 2.676,4.011 0.221,0.045 0.449,0.064 0.677,0.064 1.589,0 3.008,-1.113 3.334,-2.74 z"
+     id="path41"
+     inkscape:connector-curvature="0" /><path
+     d="m 46.371,54.587 0.02,-0.071 c 0.371,-1.843 -0.833,-3.607 -2.689,-3.971 -1.816,-0.384 -3.646,0.866 -4.017,2.708 -0.371,1.849 0.827,3.646 2.683,4.01 0.215,0.046 0.442,0.065 0.67,0.065 1.587,0 3.007,-1.12 3.333,-2.741 z"
+     id="path43"
+     inkscape:connector-curvature="0" /></svg>
\ No newline at end of file
diff --git a/images/presets/service/studio.png b/images/presets/service/studio.png
new file mode 100644
index 0000000..8ee50b3
Binary files /dev/null and b/images/presets/service/studio.png differ
diff --git a/images/presets/surveillance.png b/images/presets/service/surveillance.png
similarity index 100%
rename from images/presets/surveillance.png
rename to images/presets/service/surveillance.png
diff --git a/images/presets/service/telephone.svg b/images/presets/service/telephone.svg
new file mode 100644
index 0000000..41fbd59
--- /dev/null
+++ b/images/presets/service/telephone.svg
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="16"
+   id="svg1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="telephone3.svg"
+   sodipodi:version="0.32"
+   width="12.08762"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata2213">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>lutte incendie</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>office</rdf:li>
+            <rdf:li />
+            <rdf:li>telephone</rdf:li>
+            <rdf:li>symbol</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg1"
+     inkscape:cx="-3.9822662"
+     inkscape:cy="9.6184726"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="20.418464"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs2">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 0,0 Z"
+         id="path4"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 10,0 Z"
+         id="path6"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000000;stroke:#ffffff;stroke-width:0.80419183;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path11"
+     d="m 3.6815815,0.41654839 c 0,0 -3.32396579,0.0435383 -3.28081049,3.04769391 0.0431811,3.0041556 0.64753619,5.6600048 1.64041819,7.1403067 0.992869,1.480381 3.5397939,5.355302 6.4321551,4.963444 0,0 1.4245124,-0.304807 2.5036537,-1.001472 L 7.4803977,11.823648 c 0,0 -1.0360373,0.653009 -1.6835605,-0.217757 C 5.1493139,10.735125 3.1203946,6.6860894 3.1203946,6.6860894 c 0,0 -0.5611868,-1.306162 0.6906916,-1.8721468 L 3.6815815,0.41654839 Z" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000000;stroke:#ffffff;stroke-width:0.304;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path12"
+     d="m 4.0700955,0.41654839 c 0,0 0.2590222,-0.0870896 0.7338726,0.17415319 0.4748504,0.26122979 0.4748504,0.47892132 0.4748504,0.47892132 l 0.043168,3.0041686 c 0,0 -0.1295046,0.1741532 -0.3021775,0.3482934 C 4.8471363,4.5962511 4.2859366,4.8574678 4.1996001,4.6833277 4.1132766,4.5091615 4.0700955,0.41654839 4.0700955,0.41654839 Z" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000000;stroke:#ffffff;stroke-width:0.304;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     sodipodi:nodetypes="ccccccc"
+     id="path13"
+     d="M 7.7712436,11.502692 8.732276,10.996407 c 0,0 0.2159057,-0.04352 0.5611481,0.174101 0.3453716,0.217757 2.1584109,1.654481 2.1584109,1.654481 0,0 0.302216,0.261282 0.215906,0.56609 -0.08631,0.304676 -0.302217,0.957816 -0.302217,0.957816 L 7.7712436,11.502692 Z" />
+</svg>
diff --git a/images/presets/service/toilets.svg b/images/presets/service/toilets.svg
new file mode 100644
index 0000000..820a729
--- /dev/null
+++ b/images/presets/service/toilets.svg
@@ -0,0 +1,108 @@
+<?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"
+   version="1.0"
+   width="16"
+   height="15.386"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="toilets.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Bone Killian <vitki at bonius.com></dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="21.382909"
+     inkscape:cx="3.5833009"
+     inkscape:cy="2.9006583"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.77915251;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4137"
+     width="16"
+     height="15.386"
+     x="0"
+     y="0" />
+  <rect
+     id="divider"
+     style="fill:#000000;stroke:#000000;stroke-width:0.45820048px;stroke-linejoin:round;stroke-opacity:1"
+     y="1.2291002"
+     x="7.9441748"
+     height="12.927799"
+     width="1.0473155" />
+  <path
+     id="manhead"
+     style="fill:#000000;stroke:#000000;stroke-width:0.0916401;stroke-opacity:1"
+     d="m 13.691318,2.2600554 c 0,0.607337 -0.49235,1.099681 -1.09968,1.099681 -0.60734,0 -1.09968,-0.492344 -1.09968,-1.099681 0,-0.607337 0.49234,-1.099681 1.09968,-1.099681 0.60733,0 1.09968,0.492344 1.09968,1.099681 l 0,0 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="womanhead"
+     style="fill:#000000;stroke:#000000;stroke-width:0.0916401;stroke-linejoin:round;stroke-opacity:1"
+     d="m 5.1491509,2.3746054 c 0,0.607337 -0.492344,1.099681 -1.099681,1.099681 -0.607337,0 -1.099681,-0.492344 -1.099681,-1.099681 0,-0.607337 0.492344,-1.099681 1.099681,-1.099681 0.607337,0 1.099681,0.492344 1.099681,1.099681 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="womanbody"
+     style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.0916401px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+     d="m 3.7997869,10.205975 0.416567,0 0.06943,3.679679 0.671136,0 0.06943,-3.702819 1.110845,-0.0231 -1.203416,-4.4202426 0.323997,-0.185141 0.97199,3.193683 0.717421,-0.39343 -1.457985,-4.258238 -2.939113,-0.09257 -1.50427,4.443378 0.647993,0.25457 1.064561,-3.147392 0.300854,0.04628 -1.203416,4.5128126 1.018275,0.0232 0.138856,3.772239 0.671136,0 0.115713,-3.702819 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="manbody"
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.0916401px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+     d="m 11.043428,3.9806134 2.8234,-0.02314 0.9257,0.717421 0.162,4.14253 -0.80999,-0.0232 -0.0926,-3.286245 -0.41657,-0.04629 0.0116,8.4586246 -0.77527,0.0232 -0.162,-5.0335196 -0.39343,-0.0232 -0.0926,5.0913796 -0.71742,-0.0463 -0.0463,-8.4007766 -0.43971,0 0.0463,3.216827 -0.78685,0.0231 -0.0694,-4.049959 0.83314,-0.740563 z"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/townhall.png b/images/presets/service/townhall.png
similarity index 100%
rename from images/presets/townhall.png
rename to images/presets/service/townhall.png
diff --git a/images/presets/shop/alcohol.svg b/images/presets/shop/alcohol.svg
new file mode 100644
index 0000000..164c885
--- /dev/null
+++ b/images/presets/shop/alcohol.svg
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+
+<svg
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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"
+   height="391.01157"
+   id="Layer_1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="alcohol.svg"
+   sodipodi:version="0.32"
+   space="preserve"
+   style="overflow:visible"
+   version="1.1"
+   viewBox="0 0 254.44663 391.01157"
+   width="254.44664"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\classic.small\shopping\beverages.png"
+   inkscape:export-xdpi="3.681999"
+   inkscape:export-ydpi="3.681999">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>beverage</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Architetto Francesco Rollandin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Architetto Francesco Rollandin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs148">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 203.987 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="398.156 : 203.987 : 1"
+       inkscape:persp3d-origin="199.078 : 135.99133 : 1"
+       id="perspective79" />
+    <inkscape:perspective
+       id="perspective2558"
+       inkscape:persp3d-origin="50.507998 : 105.20366 : 1"
+       inkscape:vp_z="101.016 : 157.8055 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 157.8055 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="Layer_1"
+     inkscape:cx="-63.341385"
+     inkscape:cy="136.41039"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="960"
+     inkscape:window-width="1400"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:zoom="0.88240918"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="g2561"
+     i:rgbTrio="#4F008000FFFF"
+     i:layer="yes"
+     i:dimmedPercent="50"
+     transform="matrix(1.2387445,0,0,1.2387445,0.07082793,0.04769126)">
+    <g
+       id="g2531">
+      <path
+         id="path2533"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 46.854,0.018 c -1.476,-0.144 -4.104,0.108 -7.74,0.9 -3.78,0.72 -8.424,1.908 -14.328,3.564 -1.224,1.332 -1.764,3.672 -1.476,7.164 0.252,3.42 1.188,7.848 2.952,13.428 0.936,10.368 1.188,19.332 0.612,27.432 -0.612,8.028 -1.728,14.796 -4.176,20.592 -2.628,5.688 -7.704,9.432 -11.052,13.716 -3.384,4.14 -7.2,7.416 -8.928,11.34 -1.764,3.924 -2.268,7.776 -1.512,11.952 l 2.7,4.464 0,8.64 -2.7,2.088 c -1.008,2.448 -1.404,15.048 -1.188,38.231 0.18,23.293 0.972,56.197 2.376,100.225 l 1. [...]
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2535"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="M 48.114,8.01 C 46.242,7.938 43.398,8.334 39.438,9.342 35.406,10.314 30.618,11.754 24.534,13.806 24.246,12.654 24.102,11.43 24.246,10.134 24.318,8.802 24.534,7.398 25.038,5.922 32.13,4.194 37.278,2.97 41.022,2.25 c 3.528,-0.756 3.6,-0.684 5.76,-0.756 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.072 2.16,0 5.76,0.756 3.564,0.72 8.929,1.944 15.948,3.672 0.468,1.476 0.685,2.88 0.792,4.212 0.072,1.296 0.036,2.52 -0.252,3.672 C 69.822,11.754 65.07,10.314 61.183,9.342 57.294,8.334 54.8 [...]
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2537"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 48.114,19.566 c -2.376,0.18 -5.22,0.612 -8.676,1.296 -3.492,0.576 -7.452,1.584 -12.024,2.628 -0.18,-0.792 -0.396,-1.62 -0.792,-2.628 -0.396,-1.044 -0.972,-2.124 -1.584,-3.384 7.092,-1.728 12.24,-2.952 15.984,-3.672 3.528,-0.72 3.6,-0.756 5.76,-0.792 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.036 2.16,0.072 5.76,0.792 3.564,0.72 8.929,1.944 15.948,3.672 -0.468,1.44 -1.116,2.736 -1.548,3.888 -0.612,1.116 -1.008,2.088 -1.584,2.916 -4.356,-1.476 -8.064,-2.664 -11.268,-3.42 -3.168 [...]
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2539"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 48.87,33.174 c -4.356,0.072 -8.064,-0.108 -11.52,-0.54 -3.456,-0.504 -6.372,-1.152 -8.892,-2.088 -0.72,-1.512 -1.08,-2.592 -0.792,-3.384 0.144,-0.828 0.936,-1.224 2.088,-1.332 1.944,0.936 4.572,1.584 7.884,2.088 3.24,0.432 7.164,0.612 11.772,0.54 l 2.088,0 c 4.536,0.072 8.46,-0.108 11.772,-0.54 3.239,-0.504 5.868,-1.152 7.884,-2.088 1.116,0.108 1.908,0.504 2.088,1.332 0.252,0.792 -0.108,1.872 -0.792,3.384 -2.556,0.936 -5.472,1.584 -8.892,2.088 -3.492,0.432 -7.2,0.612 -11.52 [...]
+         style="clip-rule:evenodd;fill:#cbc6d0;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2541"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 46.278,308.861 c -9,-0.863 -15.948,-1.512 -21.24,-2.34 -5.364,-0.863 -7.236,-1.188 -10.188,-2.375 -3.06,-1.369 -5.508,-3.348 -7.344,-4.969 -1.872,-1.619 -2.88,-3.061 -3.42,-4.463 l 0.54,-18.072 2.088,-1.045 0,-7.596 -2.088,-4.428 C 3.942,241.936 3.546,220.264 3.294,197.585 2.97,174.833 2.934,152.153 3.042,128.429 l 3.132,-2.628 0.54,-10.729 -3.132,-5.508 c -0.468,-2.16 -0.252,-4.644 0.792,-7.596 1.008,-2.916 1.908,-5.724 5.22,-9.936 3.24,-4.428 11.016,-10.908 14.148,-15.984 [...]
+         style="clip-rule:evenodd;fill:#f1c810;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2543"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 44.694,129.258 c -6.156,-0.036 -12.132,-0.432 -18.072,-1.044 -5.976,-0.648 -11.772,-1.656 -17.532,-2.88 l 0,-10.224 c 6.588,0.972 12.996,1.8 19.368,2.34 6.372,0.504 12.42,0.72 18.576,0.792 l 7.344,0 c 6.084,-0.072 12.24,-0.288 18.612,-0.792 6.336,-0.54 12.744,-1.368 19.368,-2.34 l 0,10.224 c -5.796,1.224 -11.592,2.232 -17.532,2.88 -5.976,0.612 -11.952,1.008 -18.072,1.044 l -12.06,0 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2545"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="M 44.694,281.07 C 38.538,281.033 32.562,280.638 26.622,280.025 20.646,279.379 14.85,278.369 9.09,277.146 l 0,-10.189 c 6.588,0.973 12.996,1.801 19.368,2.342 6.372,0.504 12.42,0.719 18.576,0.791 l 7.344,0 c 6.084,-0.072 12.24,-0.287 18.612,-0.791 6.336,-0.541 12.744,-1.369 19.368,-2.342 l 0,10.189 c -5.796,1.223 -11.592,2.232 -17.532,2.879 -5.976,0.613 -11.952,1.008 -18.072,1.045 l -12.06,0 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2547"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 34.758,161.621 c -7.524,3.781 -12.456,8.748 -15.336,15.336 -2.808,6.518 -3.096,16.67 -1.548,23.652 1.584,6.949 5.904,13.572 10.44,17.785 4.392,4.104 9.468,6.299 15.624,6.732 -7.668,-10.801 -10.224,-17.713 -7.668,-21.17 2.52,-3.527 21.708,4.178 22.716,0.613 0.72,-3.6 -18.216,-17.064 -17.496,-21.781 0.864,-4.752 18.324,-3.383 22.104,-6.443 3.601,-3.168 3.349,-7.199 -0.611,-12.24 -2.521,-2.268 -6.012,-3.6 -10.765,-3.996 -4.752,-0.431 -10.476,0.073 -17.46,1.512 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2549"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 69.103,165.006 c 2.664,1.512 4.968,3.924 7.056,7.381 2.052,3.383 4.392,7.307 5.22,13.176 0.685,5.795 1.404,15.227 -0.611,21.492 -2.089,6.227 -6.12,12.455 -11.664,15.623 -5.725,3.023 -12.96,3.996 -22.104,2.771 -5.724,-8.063 -6.768,-13.176 -2.736,-15.336 3.96,-2.23 25.02,5.832 26.388,2.125 1.08,-3.996 -18.504,-20.701 -19.044,-24.84 -0.468,-4.068 13.248,4.283 16.271,0.611 2.915,-3.743 3.275,-11.411 1.224,-23.003 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2551"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 36.594,164.105 c -7.524,3.385 -12.492,8.244 -15.048,14.725 -2.592,6.443 -1.764,17.424 -0.288,23.904 1.368,6.299 5.904,10.908 8.892,14.111 2.88,3.096 5.976,4.68 8.892,4.607 -7.884,-9.539 -10.548,-15.982 -7.992,-19.332 2.556,-3.383 21.888,2.521 23.004,-0.898 0.827,-3.602 -17.856,-15.625 -17.172,-19.945 0.648,-4.248 16.452,-3.779 21.167,-5.543 4.572,-1.908 6.769,-3.852 6.444,-5.832 -1.296,-4.248 -4.212,-6.66 -8.892,-7.668 -4.751,-0.972 -10.907,-0.396 -19.007,1.871 z"
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2553"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 71.874,171.773 c 3.24,3.205 5.725,6.732 7.057,11.016 1.296,4.213 1.655,9.109 1.224,14.113 -0.504,4.896 -1.368,10.836 -3.708,15.047 -2.412,4.178 -5.832,7.777 -10.404,9.828 -4.607,1.945 -10.332,2.557 -17.172,1.836 -5.76,-5.902 -6.588,-9.646 -2.484,-11.375 4.176,-1.836 24.84,4.68 27,1.225 1.872,-3.492 -14.903,-17.93 -15.336,-21.781 -0.396,-3.924 10.152,1.729 12.601,-1.512 2.338,-3.455 2.699,-9.359 1.222,-18.397 z"
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+  <g
+     transform="matrix(1.2387445,0,0,1.2387445,129.26261,0.04769126)"
+     i:dimmedPercent="50"
+     i:layer="yes"
+     i:rgbTrio="#4F008000FFFF"
+     id="g2575">
+    <g
+       id="g2577">
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 46.854,0.018 c -1.476,-0.144 -4.104,0.108 -7.74,0.9 -3.78,0.72 -8.424,1.908 -14.328,3.564 -1.224,1.332 -1.764,3.672 -1.476,7.164 0.252,3.42 1.188,7.848 2.952,13.428 0.936,10.368 1.188,19.332 0.612,27.432 -0.612,8.028 -1.728,14.796 -4.176,20.592 -2.628,5.688 -7.704,9.432 -11.052,13.716 -3.384,4.14 -7.2,7.416 -8.928,11.34 -1.764,3.924 -2.268,7.776 -1.512,11.952 l 2.7,4.464 0,8.64 -2.7,2.088 c -1.008,2.448 -1.404,15.048 -1.188,38.231 0.18,23.293 0.972,56.197 2.376,100.225 l 1. [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2579"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="M 48.114,8.01 C 46.242,7.938 43.398,8.334 39.438,9.342 35.406,10.314 30.618,11.754 24.534,13.806 24.246,12.654 24.102,11.43 24.246,10.134 24.318,8.802 24.534,7.398 25.038,5.922 32.13,4.194 37.278,2.97 41.022,2.25 c 3.528,-0.756 3.6,-0.684 5.76,-0.756 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.072 2.16,0 5.76,0.756 3.564,0.72 8.929,1.944 15.948,3.672 0.468,1.476 0.685,2.88 0.792,4.212 0.072,1.296 0.036,2.52 -0.252,3.672 C 69.822,11.754 65.07,10.314 61.183,9.342 57.294,8.334 54.8 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2581"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 48.114,19.566 c -2.376,0.18 -5.22,0.612 -8.676,1.296 -3.492,0.576 -7.452,1.584 -12.024,2.628 -0.18,-0.792 -0.396,-1.62 -0.792,-2.628 -0.396,-1.044 -0.972,-2.124 -1.584,-3.384 7.092,-1.728 12.24,-2.952 15.984,-3.672 3.528,-0.72 3.6,-0.756 5.76,-0.792 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.036 2.16,0.072 5.76,0.792 3.564,0.72 8.929,1.944 15.948,3.672 -0.468,1.44 -1.116,2.736 -1.548,3.888 -0.612,1.116 -1.008,2.088 -1.584,2.916 -4.356,-1.476 -8.064,-2.664 -11.268,-3.42 -3.168 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2583"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#cbc6d0;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 48.87,33.174 c -4.356,0.072 -8.064,-0.108 -11.52,-0.54 -3.456,-0.504 -6.372,-1.152 -8.892,-2.088 -0.72,-1.512 -1.08,-2.592 -0.792,-3.384 0.144,-0.828 0.936,-1.224 2.088,-1.332 1.944,0.936 4.572,1.584 7.884,2.088 3.24,0.432 7.164,0.612 11.772,0.54 l 2.088,0 c 4.536,0.072 8.46,-0.108 11.772,-0.54 3.239,-0.504 5.868,-1.152 7.884,-2.088 1.116,0.108 1.908,0.504 2.088,1.332 0.252,0.792 -0.108,1.872 -0.792,3.384 -2.556,0.936 -5.472,1.584 -8.892,2.088 -3.492,0.432 -7.2,0.612 -11.52 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2585"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#f1c810;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 46.278,308.861 c -9,-0.863 -15.948,-1.512 -21.24,-2.34 -5.364,-0.863 -7.236,-1.188 -10.188,-2.375 -3.06,-1.369 -5.508,-3.348 -7.344,-4.969 -1.872,-1.619 -2.88,-3.061 -3.42,-4.463 l 0.54,-18.072 2.088,-1.045 0,-7.596 -2.088,-4.428 C 3.942,241.936 3.546,220.264 3.294,197.585 2.97,174.833 2.934,152.153 3.042,128.429 l 3.132,-2.628 0.54,-10.729 -3.132,-5.508 c -0.468,-2.16 -0.252,-4.644 0.792,-7.596 1.008,-2.916 1.908,-5.724 5.22,-9.936 3.24,-4.428 11.016,-10.908 14.148,-15.984 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2587"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 44.694,129.258 c -6.156,-0.036 -12.132,-0.432 -18.072,-1.044 -5.976,-0.648 -11.772,-1.656 -17.532,-2.88 l 0,-10.224 c 6.588,0.972 12.996,1.8 19.368,2.34 6.372,0.504 12.42,0.72 18.576,0.792 l 7.344,0 c 6.084,-0.072 12.24,-0.288 18.612,-0.792 6.336,-0.54 12.744,-1.368 19.368,-2.34 l 0,10.224 c -5.796,1.224 -11.592,2.232 -17.532,2.88 -5.976,0.612 -11.952,1.008 -18.072,1.044 l -12.06,0 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2589"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="M 44.694,281.07 C 38.538,281.033 32.562,280.638 26.622,280.025 20.646,279.379 14.85,278.369 9.09,277.146 l 0,-10.189 c 6.588,0.973 12.996,1.801 19.368,2.342 6.372,0.504 12.42,0.719 18.576,0.791 l 7.344,0 c 6.084,-0.072 12.24,-0.287 18.612,-0.791 6.336,-0.541 12.744,-1.369 19.368,-2.342 l 0,10.189 c -5.796,1.223 -11.592,2.232 -17.532,2.879 -5.976,0.613 -11.952,1.008 -18.072,1.045 l -12.06,0 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2591"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 34.758,161.621 c -7.524,3.781 -12.456,8.748 -15.336,15.336 -2.808,6.518 -3.096,16.67 -1.548,23.652 1.584,6.949 5.904,13.572 10.44,17.785 4.392,4.104 9.468,6.299 15.624,6.732 -7.668,-10.801 -10.224,-17.713 -7.668,-21.17 2.52,-3.527 21.708,4.178 22.716,0.613 0.72,-3.6 -18.216,-17.064 -17.496,-21.781 0.864,-4.752 18.324,-3.383 22.104,-6.443 3.601,-3.168 3.349,-7.199 -0.611,-12.24 -2.521,-2.268 -6.012,-3.6 -10.765,-3.996 -4.752,-0.431 -10.476,0.073 -17.46,1.512 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2593"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 69.103,165.006 c 2.664,1.512 4.968,3.924 7.056,7.381 2.052,3.383 4.392,7.307 5.22,13.176 0.685,5.795 1.404,15.227 -0.611,21.492 -2.089,6.227 -6.12,12.455 -11.664,15.623 -5.725,3.023 -12.96,3.996 -22.104,2.771 -5.724,-8.063 -6.768,-13.176 -2.736,-15.336 3.96,-2.23 25.02,5.832 26.388,2.125 1.08,-3.996 -18.504,-20.701 -19.044,-24.84 -0.468,-4.068 13.248,4.283 16.271,0.611 2.915,-3.743 3.275,-11.411 1.224,-23.003 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2595"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 36.594,164.105 c -7.524,3.385 -12.492,8.244 -15.048,14.725 -2.592,6.443 -1.764,17.424 -0.288,23.904 1.368,6.299 5.904,10.908 8.892,14.111 2.88,3.096 5.976,4.68 8.892,4.607 -7.884,-9.539 -10.548,-15.982 -7.992,-19.332 2.556,-3.383 21.888,2.521 23.004,-0.898 0.827,-3.602 -17.856,-15.625 -17.172,-19.945 0.648,-4.248 16.452,-3.779 21.167,-5.543 4.572,-1.908 6.769,-3.852 6.444,-5.832 -1.296,-4.248 -4.212,-6.66 -8.892,-7.668 -4.751,-0.972 -10.907,-0.396 -19.007,1.871 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2597"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 71.874,171.773 c 3.24,3.205 5.725,6.732 7.057,11.016 1.296,4.213 1.655,9.109 1.224,14.113 -0.504,4.896 -1.368,10.836 -3.708,15.047 -2.412,4.178 -5.832,7.777 -10.404,9.828 -4.607,1.945 -10.332,2.557 -17.172,1.836 -5.76,-5.902 -6.588,-9.646 -2.484,-11.375 4.176,-1.836 24.84,4.68 27,1.225 1.872,-3.492 -14.903,-17.93 -15.336,-21.781 -0.396,-3.924 10.152,1.729 12.601,-1.512 2.338,-3.455 2.699,-9.359 1.222,-18.397 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2599"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/shop/antique.svg b/images/presets/shop/antique.svg
new file mode 100644
index 0000000..676196b
--- /dev/null
+++ b/images/presets/shop/antique.svg
@@ -0,0 +1,391 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2276"
+   sodipodi:docname="Gramophone.svg"
+   height="148.65891"
+   sodipodi:version="0.32"
+   width="126.87975"
+   inkscape:version="0.48.5 r10040"
+   version="1.1">
+  <defs
+     id="defs2278">
+    <linearGradient
+       id="linearGradient2310">
+      <stop
+         id="stop2311"
+         style="stop-color:#6f6234"
+         offset="0" />
+      <stop
+         id="stop2312"
+         style="stop-color:#7f7655"
+         offset=".5" />
+      <stop
+         id="stop2313"
+         style="stop-color:#2d2711"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2300">
+      <stop
+         id="stop2301"
+         style="stop-color:#ffffff;stop-opacity:0"
+         offset="0" />
+      <stop
+         id="stop2302"
+         style="stop-color:#ffffff;stop-opacity:.020833"
+         offset=".49620" />
+      <stop
+         id="stop2303"
+         style="stop-color:#ffffff;stop-opacity:.53125"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2288">
+      <stop
+         id="stop2289"
+         style="stop-color:#ede1b9"
+         offset="0" />
+      <stop
+         id="stop2291"
+         style="stop-color:#7a7152"
+         offset=".5" />
+      <stop
+         id="stop2290"
+         style="stop-color:#927f39"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2283">
+      <stop
+         id="stop2284"
+         style="stop-color:#1d1100;stop-opacity:.66667"
+         offset="0" />
+      <stop
+         id="stop2292"
+         style="stop-color:#4f340c;stop-opacity:.30196"
+         offset=".52659" />
+      <stop
+         id="stop2285"
+         style="stop-color:#3d3001;stop-opacity:0"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       id="radialGradient2286"
+       fx="86.442383"
+       fy="60.641514"
+       xlink:href="#linearGradient2283"
+       cy="56.434727"
+       cx="104.16177"
+       r="20.573427"
+       gradientTransform="matrix(0.92416218,0,0,1.0820612,-21.02338,-2.7357642)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2287"
+       y2="-13.319842"
+       xlink:href="#linearGradient2288"
+       y1="137.88396"
+       x2="291.10336"
+       x1="106.91916"
+       gradientTransform="matrix(0.48867066,0,0,0.63997744,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2293"
+       y2="288.53662"
+       xlink:href="#linearGradient2288"
+       y1="44.530285"
+       x2="423.51227"
+       x1="167.38974"
+       gradientTransform="matrix(0.4891886,0,0,0.63929982,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2296"
+       y2="139.84502"
+       xlink:href="#linearGradient2288"
+       y1="222.94662"
+       x2="80.841118"
+       x1="52.200809"
+       gradientTransform="matrix(0.65517346,0,0,0.4773365,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2297"
+       y2="233.77164"
+       xlink:href="#linearGradient2300"
+       y1="210.41183"
+       x2="45.221279"
+       x1="66.328804"
+       gradientTransform="matrix(0.501949,0,0,0.62304776,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2305"
+       y2="192.06702"
+       xlink:href="#linearGradient2300"
+       y1="74.241417"
+       x2="226.5798"
+       x1="182.66423"
+       gradientTransform="matrix(0.52411373,0,0,0.59669908,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2306"
+       y2="167.97333"
+       xlink:href="#linearGradient2288"
+       y1="52.916672"
+       x2="138.99986"
+       x1="281.13297"
+       gradientTransform="matrix(0.4891886,0,0,0.63929982,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2309"
+       y2="257.42313"
+       xlink:href="#linearGradient2310"
+       y1="378.07291"
+       x2="66.36496"
+       x1="90.823395"
+       gradientTransform="matrix(0.68264915,0,0,0.45812433,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2316"
+       y2="894.27612"
+       xlink:href="#linearGradient2310"
+       y1="838.66858"
+       x2="24.911583"
+       x1="23.705992"
+       gradientTransform="matrix(2.4069002,0,0,0.12993401,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2318"
+       xlink:href="#linearGradient2310"
+       gradientTransform="matrix(0.25436896,0,0,1.2294668,-16.21178,-12.168664)"
+       x1="187.5188"
+       y1="82.68367"
+       x2="197.01346"
+       y2="82.68367"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2341"
+       y2="253.13097"
+       xlink:href="#linearGradient2283"
+       y1="273.28244"
+       x2="82.798813"
+       x1="39.017715"
+       gradientTransform="matrix(0.58793891,0,0,0.53192292,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2460"
+       y2="104.70568"
+       xlink:href="#linearGradient2310"
+       y1="116.10118"
+       x2="23.555061"
+       x1="24.21303"
+       gradientTransform="matrix(1.3401544,0,0,0.74618265,-21.02338,-2.7357642)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient2598"
+       y2="233.9549"
+       xlink:href="#linearGradient2300"
+       y1="233.65829"
+       x2="65.41333"
+       x1="37.520344"
+       gradientTransform="matrix(1.6424044,0,0,0.60886345,-21.02338,-2.7357642)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2283"
+       id="radialGradient3034"
+       cx="198.30634"
+       cy="109.06019"
+       fx="143.6067"
+       fy="122.0465"
+       r="63.510036"
+       gradientTransform="matrix(0.51683436,0,0,0.6051033,-16.21178,-12.168664)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     pagecolor="#ffffff"
+     inkscape:zoom="2.8284271"
+     inkscape:window-x="-8"
+     borderopacity="1.0"
+     inkscape:cx="49.283795"
+     inkscape:cy="71.445898"
+     inkscape:window-y="-8"
+     inkscape:window-height="971"
+     showborder="true"
+     inkscape:pageopacity="0.0"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2276" />
+  <g
+     id="g2385"
+     transform="matrix(0.55923,0,0,0.55923,-200.65337,-198.88577)">
+    <path
+       id="path2367"
+       style="fill:#000000;fill-opacity:0.08264501;fill-rule:evenodd"
+       d="m 492.32,361.86 c -31.52,0.35 -52.24,31.14 -53.67,60.24 -6.77,15.8 11.32,38.09 -4.25,48.44 -9.51,8.32 -22.81,17.12 -19.88,31.63 2.61,9.41 -2.11,16.63 -12.28,14.03 -8.56,-0.64 -17.89,2 -25.88,-1.14 5.58,-10.43 -7.18,-8.34 -4.64,1.28 4.9,8.34 16.43,4.02 24.57,5.8 5.81,0.59 23.91,-0.98 14.96,6.16 -7.21,1.23 -17.27,-2.66 -22.46,2.34 5.27,4.98 15.38,1.13 22.66,2.35 6.13,4.84 -11.75,2.35 -16.9,3.03 -5.76,0.44 -17.85,-0.6 -19.82,0.72 -3.57,-1.7 5.17,6.68 5.68,12.66 -0.44,10.6 -0.89,21 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2371"
+       style="fill:#000000;fill-opacity:0.08264501;fill-rule:evenodd"
+       d="m 486.44,360.66 c -24.63,3.39 -42.75,25.74 -47.51,49.16 -1.23,9.89 -5.17,19.84 -2.32,29.83 1.03,9.36 5.99,20.93 -1.92,28.57 -8.74,7.81 -20.33,15.15 -21.89,27.81 -1.47,5.91 3.82,13.45 -2.41,17.71 -4.49,2.97 -10.11,-0.15 -15.14,0.88 -5.57,0.33 -11.21,0.63 -16.66,-0.78 2.64,-3.57 -1.77,-9.87 -5.65,-6.23 -6.52,4.29 -1.82,15.21 5.56,14.93 10.63,2 21.84,0.02 32.34,2.47 0.35,2.89 -6.73,1.71 -9.31,1.49 -5.5,-0.35 -11.46,0.01 -15.59,4.16 1.39,2.61 11.39,4.4 4.33,3.79 -6.18,0.07 -12.37,0 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2375"
+       style="fill:#000000;fill-opacity:0.08264501;fill-rule:evenodd"
+       d="m 486.47,358.16 c -23.66,3.74 -42.22,23.57 -48.41,46.12 -4.01,14.58 -6.26,30.14 -2.19,44.97 1.56,7.05 0.79,15.58 -5.98,19.63 -9.2,8.35 -20.99,18.05 -19.4,31.94 1.04,4.23 1.4,11.82 -4.99,11.2 -7.38,0.32 -14.93,0.14 -22.23,0.06 -2.52,-1.67 -1.78,-7.01 -6.03,-7.29 -7.54,-2.41 -12.23,8.69 -8.03,14.26 3.51,7.44 13.24,6 19.35,6.83 -5.08,0.57 -2.71,7.07 -6.09,6.18 -4.22,0.94 -11.34,-2.38 -13.03,3.25 3.55,7.71 8.74,15.69 6.59,24.54 -0.26,6.27 -0.52,12.54 -0.78,18.81 -7.15,3.45 -16.69,1 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2384"
+       style="fill:#000000;fill-opacity:0.08264501;fill-rule:evenodd"
+       d="m 486.25,355.75 c -25.79,4.56 -46.2,26.8 -51.36,52.07 -4.1,15.19 -4.18,31.3 -0.87,46.64 0.57,11.21 -11.54,16.03 -17.14,24.03 -6.94,7.23 -10.51,17.45 -8.22,27.35 -1.19,6.26 -8.63,2.93 -12.99,3.77 -4.17,-1 -11.13,2.56 -12.55,-2.92 -3.15,-5.76 -11.48,-6.01 -15.17,-0.7 -6.11,7.47 -0.87,20.22 8.86,21.04 5.19,-0.04 7.97,2.75 1.07,2.75 -4.76,-1.55 -12.67,1.96 -10.06,7.79 5.13,8.56 6.98,18.66 5.52,28.55 -0.49,5.14 1.11,11.93 -5.15,14.03 -6.62,3.63 -11.31,11.4 -8.61,18.99 3.86,8 6.29,19 [...]
+       inkscape:connector-curvature="0" />
+  </g>
+  <rect
+     id="rect2317"
+     style="fill:url(#linearGradient2318);fill-rule:evenodd;stroke-width:1pt"
+     rx="0.075110182"
+     ry="5.8366838"
+     width="2.4151466"
+     y="89.488159"
+     x="31.487185"
+     height="11.673368" />
+  <path
+     id="path2295"
+     sodipodi:nodetypes="czzzzzzcczzzzzzcc"
+     style="fill:url(#linearGradient2296);fill-rule:evenodd;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round"
+     d="m 8.835573,82.514567 -0.8539442,3.416896 c -0.4099156,1.638543 1.4439319,3.897833 3.1311282,3.981717 l 21.916224,1.140829 c 2.078099,0.106254 4.611411,-2.192181 4.55381,-4.272517 L 37.298143,76.536399 c -0.03188,-1.157607 0.836049,-2.902404 1.992536,-2.846481 l 17.080003,0.855622 -6.548583,-18.784536 -13.3779,11.665538 c -2.430414,2.125074 -4.654472,5.318277 -4.55381,8.539442 l 0.284648,9.109857 c 0.0274,0.872398 -0.833253,1.979674 -1.707889,1.990858 l -17.647062,0.285208 c -0.89 [...]
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2280"
+     sodipodi:nodetypes="czzzz"
+     style="fill:url(#linearGradient2293);fill-rule:evenodd;stroke:url(#linearGradient2306);stroke-width:0.55922999pt"
+     d="M 66.900983,2.5340517 C 90.237651,-5.8146929 110.73344,17.903929 119.27288,38.397472 127.81232,59.457514 126.67149,90.95894 105.61089,101.58487 83.409452,112.21024 58.931955,91.339776 49.822099,66.862279 40.712242,42.951841 44.129137,10.312941 66.900983,2.5340517 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2281"
+     sodipodi:nodetypes="czzzz"
+     style="fill:url(#linearGradient2287);fill-rule:evenodd;stroke-width:0.90177002pt"
+     d="M 68.511565,8.8019016 C 89.560982,1.2729881 108.03795,22.661858 115.73854,41.142173 c 7.7006,18.99201 6.67721,47.395301 -12.31983,56.979944 C 83.398268,107.70172 61.32546,88.883638 53.115963,66.81083 44.900875,45.246921 47.982232,15.816883 68.511565,8.8019016 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2282"
+     sodipodi:nodetypes="czzzz"
+     style="fill:url(#radialGradient3034);fill-rule:evenodd;stroke-width:1pt"
+     d="M 61.565929,20.85219 C 52.243565,27.738548 49.195761,48.832144 57.600988,71.654321 65.967069,94.152144 97.31191,94.38702 105.7451,87.279207 114.21744,80.501339 126.87841,62.868817 108.93831,34.908995 91.076496,7.6057086 71.167908,13.930041 61.565929,20.85219 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2304"
+     sodipodi:nodetypes="czzzz"
+     style="fill:url(#linearGradient2305);fill-rule:evenodd;stroke-width:1pt"
+     d="m 102.41769,80.663516 c 13.30967,-17.330538 -4.826165,-55.706578 6.57654,-38.934711 10.603,16.772426 8.89735,43.906266 -2.37114,52.898684 C 92.933139,106.83548 72.946259,88.050944 63.953841,78.527257 54.961422,68.997978 89.108006,97.429231 102.41769,80.663516 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2315"
+     sodipodi:nodetypes="ccccc"
+     style="fill:url(#linearGradient2316);fill-rule:evenodd;stroke-width:1pt"
+     d="m 9.1470642,98.346369 5.6353608,2.818511 57.762866,0.20133 -15.697586,-3.422487 -47.6989632,0.402646 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2307"
+     sodipodi:nodetypes="cccccccccccccccc"
+     style="fill:url(#linearGradient2309);fill-rule:evenodd;stroke-width:1pt"
+     d="m 14.380338,100.56092 21.937475,0.40264 1.811346,-9.864812 2.415314,9.663492 32.401786,0.60397 -2.818519,6.63806 0.402646,23.54917 9.663494,6.64366 0.603968,3.82513 -71.8498697,0.40264 -4.6309837,-10.87143 0.6039684,-3.82513 7.245384,-4.22219 0.804732,-19.12007 -4.2261012,-6.039681 5.6353602,2.214551 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2308"
+     style="fill:url(#linearGradient2297);fill-rule:evenodd;stroke-width:1pt"
+     d="m 17.399062,130.14418 -6.842739,8.25424 -4.830628,-9.86482 6.843297,-4.62483 4.83007,6.23541 z"
+     inkscape:connector-curvature="0" />
+  <rect
+     id="rect2314"
+     style="fill-rule:evenodd;stroke-width:1pt"
+     rx="1.3082067"
+     ry="1.3082067"
+     width="42.063606"
+     y="93.917259"
+     x="17.600388"
+     height="2.6164134" />
+  <path
+     id="path2340"
+     style="fill:url(#linearGradient2341);fill-rule:evenodd;stroke-width:1pt"
+     d="m 41.853071,107.84768 -21.632694,0.57042 v 21.63101 l -6.261698,10.2451 35.86342,-0.57042 -7.969028,-31.87611 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2459"
+     sodipodi:nodetypes="ccccc"
+     style="fill:url(#linearGradient2460);fill-rule:evenodd;stroke-width:1pt"
+     d="m 16.38562,78.255236 c 0,1.519 -2.846,4.955 -5.726,4.955 -2.8799994,0 -4.7079994,-3.436 -4.7079994,-4.955 0,-1.519 1.828,-0.55 4.7079994,-0.55 2.88,0 5.726,-0.969 5.726,0.55 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2534"
+     sodipodi:nodetypes="czzzz"
+     style="fill:url(#radialGradient2286);fill-rule:evenodd;stroke-width:1pt"
+     d="m 60.92362,39.230236 c -5.4,3.989 -7.165,16.207 -2.297,29.428 4.845,13.031 23,13.17 27.89,9.052 4.9,-3.928 12.24,-14.142 1.85,-30.338 -10.348,-15.815 -21.881,-12.152 -27.443,-8.142 z"
+     inkscape:connector-curvature="0" />
+  <path
+     id="path2597"
+     sodipodi:nodetypes="ccccc"
+     style="fill:url(#linearGradient2598);fill-rule:evenodd;stroke-width:1pt"
+     d="m 78.50462,140.79423 -24.52,-0.59 -1.295,-8.98 13.914,0.67 11.901,8.9 z"
+     inkscape:connector-curvature="0" />
+  <metadata
+     id="metadata57">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2009-05-01T00:45:54</dc:date>
+        <dc:description>A Gramophone icon by Andrew Fitzsimon. Etiquette Icon set. From 0.18 OCAL database.</dc:description>
+        <dc:source>https://openclipart.org/detail/25563/gramophone-by-anonymous-25563</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Anonymous</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>etiquette</rdf:li>
+            <rdf:li>gramophone</rdf:li>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>music</rdf:li>
+            <rdf:li>sound</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/images/presets/shop/art.svg b/images/presets/shop/art.svg
new file mode 100644
index 0000000..6573b27
--- /dev/null
+++ b/images/presets/shop/art.svg
@@ -0,0 +1,168 @@
+<?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"
+   width="695.06635"
+   height="695.06635"
+   id="svg3034"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs3036">
+    <filter
+       id="filter4280"
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always">
+      <feGaussianBlur
+         id="feGaussianBlur4282"
+         stdDeviation="2.9027502"
+         inkscape:collect="always" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="913.96173"
+     inkscape:cy="7.5331587"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3039">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(538.96173,155.17098)">
+    <g
+       id="g37657"
+       transform="matrix(2.2848,0,0,2.2848,-991.38274,-142.16064)">
+      <rect
+         id="rect3481"
+         style="fill:#000000;fill-opacity:0.99607999;filter:url(#filter4280)"
+         height="290.28"
+         width="290.28"
+         y="1.2723"
+         x="204.98" />
+      <rect
+         id="rect3502"
+         style="fill:#a05a2c;fill-opacity:0.99607999"
+         height="290.28"
+         width="290.28"
+         y="-2.7277"
+         x="200.98" />
+      <rect
+         id="rect3484"
+         style="fill:#784421;fill-opacity:0.99607999"
+         height="280.04999"
+         width="280.04999"
+         y="2.3828001"
+         x="206.09" />
+      <rect
+         id="rect3486"
+         style="fill:#c87137;fill-opacity:0.99607999"
+         height="255.52"
+         width="255.52"
+         y="14.648"
+         x="218.36" />
+      <rect
+         id="rect3488"
+         style="fill:#784421;fill-opacity:0.99607999"
+         height="235.08"
+         width="235.08"
+         y="24.868999"
+         x="228.58" />
+      <rect
+         id="rect3490"
+         style="fill:#ffffff;fill-opacity:0.99607999"
+         height="204.42"
+         width="204.42"
+         y="40.200001"
+         x="243.91" />
+      <path
+         inkscape:connector-curvature="0"
+         id="rect3492"
+         style="fill:#2b1100;fill-opacity:0.99607999"
+         d="M 486.64,282.98 V 1.71 H 205.37 l 4.9462,4.9461 h 271.38 v 271.38 l 4.9461,4.9461 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3500"
+         style="fill:#d38d5f;fill-opacity:0.99607999"
+         d="m 205.37,1.7121 v 281.27 h 281.27 l -4.9462,-4.9461 h -271.38 V 6.656 l -4.9461,-4.9461 z" />
+      <g
+         id="g4291"
+         transform="matrix(0.90578,0,0,0.90578,-1237.3,-654.51)">
+        <path
+           inkscape:connector-curvature="0"
+           id="path4287"
+           style="fill:#2b1100;fill-opacity:0.99607999"
+           d="M 1888.9,1020.4 V 739.13 h -281.27 l 4.9462,4.9461 h 271.38 v 271.38 l 4.9461,4.9461 z" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path4289"
+           style="fill:#d38d5f;fill-opacity:0.99607999"
+           d="m 1607.7,739.11 v 281.27 h 281.27 l -4.9462,-4.9461 h -271.38 v -271.38 l -4.9461,-4.9461 z" />
+      </g>
+      <g
+         id="g4295"
+         transform="matrix(0.83468,0,0,0.83468,-1113,-591.95)">
+        <path
+           inkscape:connector-curvature="0"
+           id="path4297"
+           style="fill:#2b1100;fill-opacity:0.99607999"
+           d="M 1888.9,1020.4 V 739.13 h -281.27 l 4.9462,4.9461 h 271.38 v 271.38 l 4.9461,4.9461 z" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path4299"
+           style="fill:#d38d5f;fill-opacity:0.99607999"
+           d="m 1607.7,739.11 v 281.27 h 281.27 l -4.9462,-4.9461 h -271.38 v -271.38 l -4.9461,-4.9461 z" />
+      </g>
+      <g
+         id="g4301"
+         transform="matrix(0.72802,0,0,0.72802,-926.53,-498.12)">
+        <path
+           inkscape:connector-curvature="0"
+           id="path4303"
+           style="fill:#2b1100;fill-opacity:0.99607999"
+           d="M 1888.9,1020.4 V 739.13 h -281.27 l 4.9462,4.9461 h 271.38 v 271.38 l 4.9461,4.9461 z" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path4305"
+           style="fill:#d38d5f;fill-opacity:0.99607999"
+           d="m 1607.7,739.11 v 281.27 h 281.27 l -4.9462,-4.9461 h -271.38 v -271.38 l -4.9461,-4.9461 z" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/shop/bag.svg b/images/presets/shop/bag.svg
new file mode 100644
index 0000000..dcb9536
--- /dev/null
+++ b/images/presets/shop/bag.svg
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   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"
+   width="410.14688"
+   height="357.28976"
+   id="svg3038"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="TheresaKnott_handbag5höher.svg">
+  <defs
+     id="defs3040">
+    <radialGradient
+       id="path7801_1_"
+       gradientUnits="userSpaceOnUse"
+       cy="230.88"
+       cx="271.73001"
+       gradientTransform="matrix(0.87531853,-0.19539677,-0.97380937,-1.5228783,418.86746,833.05644)"
+       r="37.351002">
+      <stop
+         style="stop-color:#FFFFFF"
+         offset="0"
+         id="stop24" />
+      <stop
+         style="stop-color:#FFFFFF"
+         offset="1"
+         id="stop26" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       id="path6918_1_"
+       y2="103.45"
+       gradientUnits="userSpaceOnUse"
+       x2="309.17999"
+       gradientTransform="matrix(1.0157055,0,0,-0.87390907,-2.5183149,521.09501)"
+       y1="112.37"
+       x1="287">
+      <stop
+         style="stop-color:#FFFFFE"
+         offset="0"
+         id="stop18" />
+      <stop
+         style="stop-color:#FFFFFE"
+         offset="1"
+         id="stop20" />
+      <a:midPointStop
+         style="stop-color:#FFFFFE"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFE"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFFFE"
+         offset="1" />
+    </linearGradient>
+    <radialGradient
+       id="path5115_1_"
+       gradientUnits="userSpaceOnUse"
+       cy="-73.265999"
+       cx="-613.88"
+       gradientTransform="matrix(0.2223793,0.05343814,0.34616778,-1.5802266,359.91295,542.83956)"
+       r="67.028">
+      <stop
+         style="stop-color:#FFFFFF"
+         offset="0"
+         id="stop12" />
+      <stop
+         style="stop-color:#FFFFFF"
+         offset="1"
+         id="stop14" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </radialGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="250.2755"
+     inkscape:cy="72.991791"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3043">
+    <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>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-166.35513,-355.03125)">
+    <path
+       style="fill:#ff1e17"
+       inkscape:connector-curvature="0"
+       id="path2393"
+       d="m 240.28409,710.10528 c -0.35797,-0.3139 -13.21577,-0.87109 -28.57335,-1.23929 -25.50262,-0.60933 -28.42935,-0.88629 -33.76285,-3.19326 -7.39432,-3.19543 -10.681,-8.5034 -11.49993,-18.56758 -0.65594,-8.05482 2.24279,-27.71941 6.21842,-42.17594 3.32769,-12.10396 9.22014,-38.72202 14.86861,-67.17674 2.56777,-12.93051 5.50649,-26.7875 6.53039,-30.78884 1.02392,-4.00352 3.91564,-17.22619 6.42441,-29.38554 2.50976,-12.15827 5.20652,-23.14132 5.99345,-24.4056 0.78592,-1.26317 3.00371 [...]
+       sodipodi:nodetypes="cssssssssssssssssssssssssssssccsssssssssssc" />
+    <path
+       style="opacity:0.17300002;stroke:#000000;stroke-width:0.9421919"
+       inkscape:connector-curvature="0"
+       id="path8684"
+       enable-background="new    "
+       d="m 277.35064,497.78642 7.66529,1.05573 c 0,0 6.13142,-49.8593 17.78234,-78.35204 7.14533,-17.47601 14.10269,-31.92059 26.05957,-39.57137 11.95689,-7.64969 22.68689,-11.07972 25.14067,-11.60759 2.45277,-0.52786 -5.82546,-5.54041 -11.65092,-3.95681 -5.82446,1.58251 -26.97949,13.71795 -29.12529,18.20263 -2.1468,4.48468 -20.54109,65.95266 -22.68789,72.81164 -2.13981,6.86441 -13.17877,41.94676 -13.17877,41.41456 z"
+       sodipodi:nodetypes="ccssssssc" />
+    <path
+       style="opacity:0.5405;fill:#b90000"
+       inkscape:connector-curvature="0"
+       id="path2391"
+       d="m 221.51583,712.321 c -15.46256,-4.92782 -36.60159,4.66715 -48.13752,-8.44801 -7.97125,-14.98331 21.79498,-23.73109 16.93343,-40.14268 -0.92992,-26.95693 4.59057,-53.92147 9.54111,-80.51889 5.65847,-27.22738 12.57783,-54.37657 13.89171,-82.10684 23.07385,-2.29284 37.5955,18.55021 50.32232,31.60454 9.15014,18.61319 -10.02708,35.95018 -4.39159,54.7339 2.22779,17.71388 -15.51257,40.72377 7.24932,52.86357 13.37775,8.56097 30.76314,12.95114 46.84764,7.68445 15.61254,-4.27723 31.3810 [...]
+       enable-background="new    " />
+    <path
+       style="opacity:0.23239997;fill:#ffffff"
+       inkscape:connector-curvature="0"
+       id="path3329"
+       d="m 284.39998,505.96507 c 7.98625,2.56546 16.84843,2.54808 25.22665,3.67441 22.82788,-0.77442 45.69475,-0.46704 68.54262,-0.6039 10.59602,0.0435 58.59755,1.61184 72.67124,1.34791 7.99526,-1.28925 21.75397,-4.97453 21.59199,6.11932 0.092,6.87418 -6.09443,12.24841 -7.80228,18.82825 -4.10961,6.7721 -9.6021,14.05684 -18.41328,16.62773 -4.94654,5.20045 -5.15352,12.80127 -11.54192,17.2425 -6.5794,4.97235 -8.04725,12.51016 -9.07916,19.58312 -3.13971,10.93852 -16.48547,15.9087 -23.85878, [...]
+       sodipodi:nodetypes="ccccccccccccccccc"
+       enable-background="new    " />
+    <path
+       style="opacity:0.8595;fill-opacity:0.40859997"
+       inkscape:connector-curvature="0"
+       id="path5111"
+       d="m 524.8476,491.96471 c -18.06532,1.80734 -35.75167,9.83935 -54.08097,6.01831 -16.48546,0.38123 -31.0881,9.04537 -47.81554,7.96467 -39.7843,1.57924 -79.64159,-0.79506 -119.3989,-0.98405 -24.78569,-3.08246 -49.67637,-4.33696 -74.0461,-9.66883 -6.70738,-0.93516 -18.63026,-4.27721 -21.45,3.52671 -5.60249,30.06004 -13.09379,59.89198 -19.01424,89.93139 -5.93244,29.80153 -14.19068,59.32937 -18.59826,89.3112 -1.39588,9.08449 -0.32597,22.07039 12.19886,24.63151 13.02679,3.16502 26.90349 [...]
+       enable-background="new    " />
+    <path
+       style="opacity:0.8595;fill:#ffffff"
+       inkscape:connector-curvature="0"
+       id="path4223"
+       d="m 525.21756,494.18044 c -16.0995,1.79322 -31.84703,7.84628 -48.1835,7.13703 -11.58893,-4.61176 -35.85067,7.14572 -44.76784,6.36804 -41.9361,2.76206 -84.08217,-0.65168 -126.08827,-0.17486 -9.09015,-0.97319 -33.08392,-3.98071 -41.31216,-4.26854 -14.27966,-1.38157 -28.35035,-4.7334 -42.49204,-6.78838 -4.70756,-0.55393 -11.98488,-1.40764 -11.91389,4.23378 -3.2127,18.85215 -8.5712,37.72276 -12.11687,56.68027 -7.77928,38.04643 -16.64745,75.96904 -24.60071,113.95792 -0.59894,8.78362 - [...]
+       enable-background="new    " />
+    <path
+       style="opacity:0.83780003;fill:url(#path5115_1_)"
+       inkscape:connector-curvature="0"
+       id="path5115"
+       d="m 206.53723,474.3475 c 0.043,7.70291 2.90373,24.10147 2.92972,37.47404 0.029,14.69875 0.032,27.82367 -2.41677,43.35115 -2.1688,13.75163 -5.86846,18.52957 -7.79828,30.7682 -1.81283,11.49789 -6.48239,22.43207 -8.5032,35.24311 -1.81883,11.53373 -8.22324,25.10289 -11.36294,34.68591 -3.83965,11.72272 -0.64894,24.14925 1.12989,30.20449 5.27051,17.93545 16.37448,-5.93793 23.88978,-20.70945 5.3375,-10.49103 6.3874,-21.47518 6.3694,-31.04734 -0.02,-10.21841 8.84218,-44.92279 8.82118,-55 [...]
+       sodipodi:nodetypes="cssssssssssc"
+       enable-background="new    " />
+    <path
+       style="fill:url(#path6918_1_)"
+       inkscape:connector-curvature="0"
+       id="path6918"
+       d="m 339.9748,360.06374 c 0,0 -23.40181,12.34183 -29.44125,18.83803 -6.03944,6.49621 -18.87325,42.22265 -20.76007,47.41875 -1.88782,5.1961 -8.30523,42.87215 -11.32395,50.34264 -3.01971,7.46938 -6.41739,14.29035 -7.54929,19.48645 -0.62994,2.89131 7.17133,0 7.17133,0 0,0 9.81309,-37.35022 10.94598,-45.14545 1.13189,-7.79523 12.83381,-41.24838 16.23049,-50.99106 3.39768,-9.74378 10.56901,-25.0084 18.49628,-28.25705 7.90926,-3.2367 16.58845,-11.36103 16.21849,-11.68687 z"
+       sodipodi:nodetypes="csssscsssc" />
+    <path
+       style="fill:url(#path7801_1_)"
+       inkscape:connector-curvature="0"
+       id="path7801"
+       d="m 380.29106,367.61242 c 0,0 16.90942,8.20797 22.97986,12.31142 6.07044,4.10343 19.74716,25.11809 24.7147,34.32313 5.63747,10.44651 20.3781,50.36654 20.81006,63.79667 0.43496,13.43122 4.44559,19.86661 5.63747,17.16212 1.19289,-2.70449 -0.86691,-20.51939 -3.03471,-27.60754 -2.1678,-7.08924 -21.43701,-59.08825 -29.48326,-70.51227 -17.34839,-24.62282 -42.05609,-30.5966 -41.62612,-29.47787 z"
+       sodipodi:nodetypes="cssssssc" />
+    <path
+       style="opacity:0.24320003;stroke:#000000;stroke-width:0.9421919"
+       inkscape:connector-curvature="0"
+       id="path9559"
+       enable-background="new    "
+       d="m 358.18311,355.67573 c 0,0 25.58062,2.98472 28.61634,4.10344 3.03472,1.11982 37.72049,27.23499 40.75721,30.96589 3.03371,3.73089 35.98665,75.36298 40.7572,89.16675 4.76856,13.80376 -3.03471,17.90829 -3.03471,17.90829 l -8.6722,-0.37255 c 0,0 -5.63648,-38.05513 -7.80627,-44.3971 -2.1668,-6.34198 -22.97886,-60.06685 -30.78313,-66.78138 -7.80628,-6.71561 -36.85458,-23.87772 -45.09281,-24.99645 -8.23923,-1.12958 -13.87871,-5.2352 -14.73863,-5.60449 z"
+       sodipodi:nodetypes="csssccsssc" />
+  </g>
+</svg>
diff --git a/images/presets/shop/beauty.svg b/images/presets/shop/beauty.svg
new file mode 100644
index 0000000..607fb5c
--- /dev/null
+++ b/images/presets/shop/beauty.svg
@@ -0,0 +1,103 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4149"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="shop__beauty10.svg">
+  <defs
+     id="defs4151" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="8.9789706"
+     inkscape:cy="9.4003253"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="false"
+     inkscape:snap-page="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4697" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4154">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <path
+       style="fill:#cccccc;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.295261,1046.0461 c 0.4758102,-2.617 3.9820475,-3.2654 6.704739,-3.2918 2.722692,-0.026 4,0 7.490264,3.2389 l -6.8728131,2.4055 z"
+       id="path4180"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:#7f2aff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 8.2421875,2.7324219 7.65625,5.4082031 6.4726562,5.4785151 5.0429688,3.1328125 5.4082031,5.7949219 4.3671875,6.3222656 2.7773438,3.90625 3.40625,6.921875 2.6425781,7.4609375 0.84302229,5.1284462 1.5429688,8.3222656 c 0,0 -1.04882818,0.6350453 -1.04882818,1.4941406 0,0.8590958 0.85156248,1.2246098 0.85156248,1.2246098 L 0.53320312,14.134766 2.375,11.615234 3.3066406,12.103519 2.5996094,15.091797 4.28125,12.541016 5.4082031,12.9375 l -0.3652343,2.662109 1.46875,-2.410156 1.12304 [...]
+       transform="translate(0,1036.3622)"
+       id="path4151"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccczcccccccccccccccccccccsccccccccccczcacz" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#784421;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1.0137856,1040.3622 c 2.1448529,0 4.3896429,-3 6.5344961,-3 3.7258593,0 5.3068623,1 7.4517183,1"
+       id="path4150"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1"
+       id="path4146"
+       cx="7.5187278"
+       cy="1045.6886"
+       r="1.9343969" />
+    <circle
+       r="0.96719843"
+       cy="1045.6886"
+       cx="7.5187278"
+       id="circle4148"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/shop/bed.svg b/images/presets/shop/bed.svg
new file mode 100644
index 0000000..8668f70
--- /dev/null
+++ b/images/presets/shop/bed.svg
@@ -0,0 +1,75 @@
+<?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"
+   width="418.47101"
+   height="243.89426"
+   id="svg2997"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Neues Dokument 2">
+  <defs
+     id="defs2999" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="199.27301"
+     inkscape:cy="133.22119"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3002">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(512.09264,469.58494)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path1894"
+       d="m -469.39064,-446.50069 c 0,-30.779 -42.702,-30.779 -42.702,0 v 220.81 h 43.651 v -63.74 h 332.12 v 63.261 h 42.699997 v -190.63 c 0,-32.482 -43.173997,-32.482 -43.173997,0 v 76.088 h -332.59 z"
+       style="fill:#ac39ac;fill-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3033"
+       d="m -447.41564,-418.07569 51.253,54.701"
+       style="fill:none;stroke:#ac39ac;stroke-width:40;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path3815"
+       d="m -352.61264,-364.79469 h 193.48"
+       style="fill:none;stroke:#ac39ac;stroke-width:40;stroke-linecap:round;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/shop/beverages.svg b/images/presets/shop/beverages.svg
new file mode 100644
index 0000000..b727411
--- /dev/null
+++ b/images/presets/shop/beverages.svg
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+
+<svg
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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"
+   height="391.01157"
+   id="Layer_1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="beverages2.svg"
+   sodipodi:version="0.32"
+   space="preserve"
+   style="overflow:visible"
+   version="1.1"
+   viewBox="0 0 383.63842 391.01157"
+   width="383.63843"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\classic.small\shopping\beverages.png"
+   inkscape:export-xdpi="3.681999"
+   inkscape:export-ydpi="3.681999">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>beverage</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Architetto Francesco Rollandin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Architetto Francesco Rollandin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs148">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 203.987 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="398.15601 : 203.987 : 1"
+       inkscape:persp3d-origin="199.078 : 135.99133 : 1"
+       id="perspective79" />
+    <inkscape:perspective
+       id="perspective2558"
+       inkscape:persp3d-origin="50.507999 : 105.20366 : 1"
+       inkscape:vp_z="101.016 : 157.8055 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 157.8055 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="Layer_1"
+     inkscape:cx="-63.341385"
+     inkscape:cy="136.4104"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="960"
+     inkscape:window-width="1400"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:zoom="0.88240918"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="g2561"
+     i:rgbTrio="#4F008000FFFF"
+     i:layer="yes"
+     i:dimmedPercent="50"
+     transform="matrix(1.2387445,0,0,1.2387445,0.07082793,0.04769126)">
+    <g
+       id="g2531">
+      <path
+         id="path2533"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 46.854,0.018 c -1.476,-0.144 -4.104,0.108 -7.74,0.9 -3.78,0.72 -8.424,1.908 -14.328,3.564 -1.224,1.332 -1.764,3.672 -1.476,7.164 0.252,3.42 1.188,7.848 2.952,13.428 0.936,10.368 1.188,19.332 0.612,27.432 -0.612,8.028 -1.728,14.796 -4.176,20.592 -2.628,5.688 -7.704,9.432 -11.052,13.716 -3.384,4.14 -7.2,7.416 -8.928,11.34 -1.764,3.924 -2.268,7.776 -1.512,11.952 l 2.7,4.464 0,8.64 -2.7,2.088 c -1.008,2.448 -1.404,15.048 -1.188,38.231 0.18,23.293 0.972,56.197 2.376,100.225 l 1. [...]
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2535"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="M 48.114,8.01 C 46.242,7.938 43.398,8.334 39.438,9.342 35.406,10.314 30.618,11.754 24.534,13.806 24.246,12.654 24.102,11.43 24.246,10.134 24.318,8.802 24.534,7.398 25.038,5.922 32.13,4.194 37.278,2.97 41.022,2.25 c 3.528,-0.756 3.6,-0.684 5.76,-0.756 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.072 2.16,0 5.76,0.756 3.564,0.72 8.929,1.944 15.948,3.672 0.468,1.476 0.685,2.88 0.792,4.212 0.072,1.296 0.036,2.52 -0.252,3.672 C 69.822,11.754 65.07,10.314 61.183,9.342 57.294,8.334 54.8 [...]
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2537"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 48.114,19.566 c -2.376,0.18 -5.22,0.612 -8.676,1.296 -3.492,0.576 -7.452,1.584 -12.024,2.628 -0.18,-0.792 -0.396,-1.62 -0.792,-2.628 -0.396,-1.044 -0.972,-2.124 -1.584,-3.384 7.092,-1.728 12.24,-2.952 15.984,-3.672 3.528,-0.72 3.6,-0.756 5.76,-0.792 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.036 2.16,0.072 5.76,0.792 3.564,0.72 8.929,1.944 15.948,3.672 -0.468,1.44 -1.116,2.736 -1.548,3.888 -0.612,1.116 -1.008,2.088 -1.584,2.916 -4.356,-1.476 -8.064,-2.664 -11.268,-3.42 -3.168 [...]
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2539"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 48.87,33.174 c -4.356,0.072 -8.064,-0.108 -11.52,-0.54 -3.456,-0.504 -6.372,-1.152 -8.892,-2.088 -0.72,-1.512 -1.08,-2.592 -0.792,-3.384 0.144,-0.828 0.936,-1.224 2.088,-1.332 1.944,0.936 4.572,1.584 7.884,2.088 3.24,0.432 7.164,0.612 11.772,0.54 l 2.088,0 c 4.536,0.072 8.46,-0.108 11.772,-0.54 3.239,-0.504 5.868,-1.152 7.884,-2.088 1.116,0.108 1.908,0.504 2.088,1.332 0.252,0.792 -0.108,1.872 -0.792,3.384 -2.556,0.936 -5.472,1.584 -8.892,2.088 -3.492,0.432 -7.2,0.612 -11.52 [...]
+         style="clip-rule:evenodd;fill:#cbc6d0;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2541"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 46.278,308.861 c -9,-0.863 -15.948,-1.512 -21.24,-2.34 -5.364,-0.863 -7.236,-1.188 -10.188,-2.375 -3.06,-1.369 -5.508,-3.348 -7.344,-4.969 -1.872,-1.619 -2.88,-3.061 -3.42,-4.463 l 0.54,-18.072 2.088,-1.045 0,-7.596 -2.088,-4.428 C 3.942,241.936 3.546,220.264 3.294,197.585 2.97,174.833 2.934,152.153 3.042,128.429 l 3.132,-2.628 0.54,-10.729 -3.132,-5.508 c -0.468,-2.16 -0.252,-4.644 0.792,-7.596 1.008,-2.916 1.908,-5.724 5.22,-9.936 3.24,-4.428 11.016,-10.908 14.148,-15.984 [...]
+         style="clip-rule:evenodd;fill:#f1c810;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2543"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 44.694,129.258 c -6.156,-0.036 -12.132,-0.432 -18.072,-1.044 -5.976,-0.648 -11.772,-1.656 -17.532,-2.88 l 0,-10.224 c 6.588,0.972 12.996,1.8 19.368,2.34 6.372,0.504 12.42,0.72 18.576,0.792 l 7.344,0 c 6.084,-0.072 12.24,-0.288 18.612,-0.792 6.336,-0.54 12.744,-1.368 19.368,-2.34 l 0,10.224 c -5.796,1.224 -11.592,2.232 -17.532,2.88 -5.976,0.612 -11.952,1.008 -18.072,1.044 l -12.06,0 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2545"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="M 44.694,281.07 C 38.538,281.033 32.562,280.638 26.622,280.025 20.646,279.379 14.85,278.369 9.09,277.146 l 0,-10.189 c 6.588,0.973 12.996,1.801 19.368,2.342 6.372,0.504 12.42,0.719 18.576,0.791 l 7.344,0 c 6.084,-0.072 12.24,-0.287 18.612,-0.791 6.336,-0.541 12.744,-1.369 19.368,-2.342 l 0,10.189 c -5.796,1.223 -11.592,2.232 -17.532,2.879 -5.976,0.613 -11.952,1.008 -18.072,1.045 l -12.06,0 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2547"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 34.758,161.621 c -7.524,3.781 -12.456,8.748 -15.336,15.336 -2.808,6.518 -3.096,16.67 -1.548,23.652 1.584,6.949 5.904,13.572 10.44,17.785 4.392,4.104 9.468,6.299 15.624,6.732 -7.668,-10.801 -10.224,-17.713 -7.668,-21.17 2.52,-3.527 21.708,4.178 22.716,0.613 0.72,-3.6 -18.216,-17.064 -17.496,-21.781 0.864,-4.752 18.324,-3.383 22.104,-6.443 3.601,-3.168 3.349,-7.199 -0.611,-12.24 -2.521,-2.268 -6.012,-3.6 -10.765,-3.996 -4.752,-0.431 -10.476,0.073 -17.46,1.512 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2549"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 69.103,165.006 c 2.664,1.512 4.968,3.924 7.056,7.381 2.052,3.383 4.392,7.307 5.22,13.176 0.685,5.795 1.404,15.227 -0.611,21.492 -2.089,6.227 -6.12,12.455 -11.664,15.623 -5.725,3.023 -12.96,3.996 -22.104,2.771 -5.724,-8.063 -6.768,-13.176 -2.736,-15.336 3.96,-2.23 25.02,5.832 26.388,2.125 1.08,-3.996 -18.504,-20.701 -19.044,-24.84 -0.468,-4.068 13.248,4.283 16.271,0.611 2.915,-3.743 3.275,-11.411 1.224,-23.003 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2551"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 36.594,164.105 c -7.524,3.385 -12.492,8.244 -15.048,14.725 -2.592,6.443 -1.764,17.424 -0.288,23.904 1.368,6.299 5.904,10.908 8.892,14.111 2.88,3.096 5.976,4.68 8.892,4.607 -7.884,-9.539 -10.548,-15.982 -7.992,-19.332 2.556,-3.383 21.888,2.521 23.004,-0.898 0.827,-3.602 -17.856,-15.625 -17.172,-19.945 0.648,-4.248 16.452,-3.779 21.167,-5.543 4.572,-1.908 6.769,-3.852 6.444,-5.832 -1.296,-4.248 -4.212,-6.66 -8.892,-7.668 -4.751,-0.972 -10.907,-0.396 -19.007,1.871 z"
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2553"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 71.874,171.773 c 3.24,3.205 5.725,6.732 7.057,11.016 1.296,4.213 1.655,9.109 1.224,14.113 -0.504,4.896 -1.368,10.836 -3.708,15.047 -2.412,4.178 -5.832,7.777 -10.404,9.828 -4.607,1.945 -10.332,2.557 -17.172,1.836 -5.76,-5.902 -6.588,-9.646 -2.484,-11.375 4.176,-1.836 24.84,4.68 27,1.225 1.872,-3.492 -14.903,-17.93 -15.336,-21.781 -0.396,-3.924 10.152,1.729 12.601,-1.512 2.338,-3.455 2.699,-9.359 1.222,-18.397 z"
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+  <g
+     transform="matrix(1.2387445,0,0,1.2387445,129.26261,0.04769126)"
+     i:dimmedPercent="50"
+     i:layer="yes"
+     i:rgbTrio="#4F008000FFFF"
+     id="g2575">
+    <g
+       id="g2577">
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 46.854,0.018 c -1.476,-0.144 -4.104,0.108 -7.74,0.9 -3.78,0.72 -8.424,1.908 -14.328,3.564 -1.224,1.332 -1.764,3.672 -1.476,7.164 0.252,3.42 1.188,7.848 2.952,13.428 0.936,10.368 1.188,19.332 0.612,27.432 -0.612,8.028 -1.728,14.796 -4.176,20.592 -2.628,5.688 -7.704,9.432 -11.052,13.716 -3.384,4.14 -7.2,7.416 -8.928,11.34 -1.764,3.924 -2.268,7.776 -1.512,11.952 l 2.7,4.464 0,8.64 -2.7,2.088 c -1.008,2.448 -1.404,15.048 -1.188,38.231 0.18,23.293 0.972,56.197 2.376,100.225 l 1. [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2579"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="M 48.114,8.01 C 46.242,7.938 43.398,8.334 39.438,9.342 35.406,10.314 30.618,11.754 24.534,13.806 24.246,12.654 24.102,11.43 24.246,10.134 24.318,8.802 24.534,7.398 25.038,5.922 32.13,4.194 37.278,2.97 41.022,2.25 c 3.528,-0.756 3.6,-0.684 5.76,-0.756 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.072 2.16,0 5.76,0.756 3.564,0.72 8.929,1.944 15.948,3.672 0.468,1.476 0.685,2.88 0.792,4.212 0.072,1.296 0.036,2.52 -0.252,3.672 C 69.822,11.754 65.07,10.314 61.183,9.342 57.294,8.334 54.8 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2581"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 48.114,19.566 c -2.376,0.18 -5.22,0.612 -8.676,1.296 -3.492,0.576 -7.452,1.584 -12.024,2.628 -0.18,-0.792 -0.396,-1.62 -0.792,-2.628 -0.396,-1.044 -0.972,-2.124 -1.584,-3.384 7.092,-1.728 12.24,-2.952 15.984,-3.672 3.528,-0.72 3.6,-0.756 5.76,-0.792 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.036 2.16,0.072 5.76,0.792 3.564,0.72 8.929,1.944 15.948,3.672 -0.468,1.44 -1.116,2.736 -1.548,3.888 -0.612,1.116 -1.008,2.088 -1.584,2.916 -4.356,-1.476 -8.064,-2.664 -11.268,-3.42 -3.168 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2583"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#cbc6d0;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 48.87,33.174 c -4.356,0.072 -8.064,-0.108 -11.52,-0.54 -3.456,-0.504 -6.372,-1.152 -8.892,-2.088 -0.72,-1.512 -1.08,-2.592 -0.792,-3.384 0.144,-0.828 0.936,-1.224 2.088,-1.332 1.944,0.936 4.572,1.584 7.884,2.088 3.24,0.432 7.164,0.612 11.772,0.54 l 2.088,0 c 4.536,0.072 8.46,-0.108 11.772,-0.54 3.239,-0.504 5.868,-1.152 7.884,-2.088 1.116,0.108 1.908,0.504 2.088,1.332 0.252,0.792 -0.108,1.872 -0.792,3.384 -2.556,0.936 -5.472,1.584 -8.892,2.088 -3.492,0.432 -7.2,0.612 -11.52 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2585"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#f1c810;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 46.278,308.861 c -9,-0.863 -15.948,-1.512 -21.24,-2.34 -5.364,-0.863 -7.236,-1.188 -10.188,-2.375 -3.06,-1.369 -5.508,-3.348 -7.344,-4.969 -1.872,-1.619 -2.88,-3.061 -3.42,-4.463 l 0.54,-18.072 2.088,-1.045 0,-7.596 -2.088,-4.428 C 3.942,241.936 3.546,220.264 3.294,197.585 2.97,174.833 2.934,152.153 3.042,128.429 l 3.132,-2.628 0.54,-10.729 -3.132,-5.508 c -0.468,-2.16 -0.252,-4.644 0.792,-7.596 1.008,-2.916 1.908,-5.724 5.22,-9.936 3.24,-4.428 11.016,-10.908 14.148,-15.984 [...]
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2587"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 44.694,129.258 c -6.156,-0.036 -12.132,-0.432 -18.072,-1.044 -5.976,-0.648 -11.772,-1.656 -17.532,-2.88 l 0,-10.224 c 6.588,0.972 12.996,1.8 19.368,2.34 6.372,0.504 12.42,0.72 18.576,0.792 l 7.344,0 c 6.084,-0.072 12.24,-0.288 18.612,-0.792 6.336,-0.54 12.744,-1.368 19.368,-2.34 l 0,10.224 c -5.796,1.224 -11.592,2.232 -17.532,2.88 -5.976,0.612 -11.952,1.008 -18.072,1.044 l -12.06,0 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2589"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="M 44.694,281.07 C 38.538,281.033 32.562,280.638 26.622,280.025 20.646,279.379 14.85,278.369 9.09,277.146 l 0,-10.189 c 6.588,0.973 12.996,1.801 19.368,2.342 6.372,0.504 12.42,0.719 18.576,0.791 l 7.344,0 c 6.084,-0.072 12.24,-0.287 18.612,-0.791 6.336,-0.541 12.744,-1.369 19.368,-2.342 l 0,10.189 c -5.796,1.223 -11.592,2.232 -17.532,2.879 -5.976,0.613 -11.952,1.008 -18.072,1.045 l -12.06,0 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2591"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 34.758,161.621 c -7.524,3.781 -12.456,8.748 -15.336,15.336 -2.808,6.518 -3.096,16.67 -1.548,23.652 1.584,6.949 5.904,13.572 10.44,17.785 4.392,4.104 9.468,6.299 15.624,6.732 -7.668,-10.801 -10.224,-17.713 -7.668,-21.17 2.52,-3.527 21.708,4.178 22.716,0.613 0.72,-3.6 -18.216,-17.064 -17.496,-21.781 0.864,-4.752 18.324,-3.383 22.104,-6.443 3.601,-3.168 3.349,-7.199 -0.611,-12.24 -2.521,-2.268 -6.012,-3.6 -10.765,-3.996 -4.752,-0.431 -10.476,0.073 -17.46,1.512 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2593"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 69.103,165.006 c 2.664,1.512 4.968,3.924 7.056,7.381 2.052,3.383 4.392,7.307 5.22,13.176 0.685,5.795 1.404,15.227 -0.611,21.492 -2.089,6.227 -6.12,12.455 -11.664,15.623 -5.725,3.023 -12.96,3.996 -22.104,2.771 -5.724,-8.063 -6.768,-13.176 -2.736,-15.336 3.96,-2.23 25.02,5.832 26.388,2.125 1.08,-3.996 -18.504,-20.701 -19.044,-24.84 -0.468,-4.068 13.248,4.283 16.271,0.611 2.915,-3.743 3.275,-11.411 1.224,-23.003 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2595"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 36.594,164.105 c -7.524,3.385 -12.492,8.244 -15.048,14.725 -2.592,6.443 -1.764,17.424 -0.288,23.904 1.368,6.299 5.904,10.908 8.892,14.111 2.88,3.096 5.976,4.68 8.892,4.607 -7.884,-9.539 -10.548,-15.982 -7.992,-19.332 2.556,-3.383 21.888,2.521 23.004,-0.898 0.827,-3.602 -17.856,-15.625 -17.172,-19.945 0.648,-4.248 16.452,-3.779 21.167,-5.543 4.572,-1.908 6.769,-3.852 6.444,-5.832 -1.296,-4.248 -4.212,-6.66 -8.892,-7.668 -4.751,-0.972 -10.907,-0.396 -19.007,1.871 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2597"
+         inkscape:connector-curvature="0" />
+      <path
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         d="m 71.874,171.773 c 3.24,3.205 5.725,6.732 7.057,11.016 1.296,4.213 1.655,9.109 1.224,14.113 -0.504,4.896 -1.368,10.836 -3.708,15.047 -2.412,4.178 -5.832,7.777 -10.404,9.828 -4.607,1.945 -10.332,2.557 -17.172,1.836 -5.76,-5.902 -6.588,-9.646 -2.484,-11.375 4.176,-1.836 24.84,4.68 27,1.225 1.872,-3.492 -14.903,-17.93 -15.336,-21.781 -0.396,-3.924 10.152,1.729 12.601,-1.512 2.338,-3.455 2.699,-9.359 1.222,-18.397 z"
+         i:knockout="Off"
+         stroke-miterlimit="10"
+         id="path2599"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+  <g
+     id="g2601"
+     i:rgbTrio="#4F008000FFFF"
+     i:layer="yes"
+     i:dimmedPercent="50"
+     transform="matrix(1.2387445,0,0,1.2387445,258.45438,0.04769126)">
+    <g
+       id="g2603">
+      <path
+         id="path2605"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 46.854,0.018 c -1.476,-0.144 -4.104,0.108 -7.74,0.9 -3.78,0.72 -8.424,1.908 -14.328,3.564 -1.224,1.332 -1.764,3.672 -1.476,7.164 0.252,3.42 1.188,7.848 2.952,13.428 0.936,10.368 1.188,19.332 0.612,27.432 -0.612,8.028 -1.728,14.796 -4.176,20.592 -2.628,5.688 -7.704,9.432 -11.052,13.716 -3.384,4.14 -7.2,7.416 -8.928,11.34 -1.764,3.924 -2.268,7.776 -1.512,11.952 l 2.7,4.464 0,8.64 -2.7,2.088 c -1.008,2.448 -1.404,15.048 -1.188,38.231 0.18,23.293 0.972,56.197 2.376,100.225 l 1. [...]
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2607"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="M 48.114,8.01 C 46.242,7.938 43.398,8.334 39.438,9.342 35.406,10.314 30.618,11.754 24.534,13.806 24.246,12.654 24.102,11.43 24.246,10.134 24.318,8.802 24.534,7.398 25.038,5.922 32.13,4.194 37.278,2.97 41.022,2.25 c 3.528,-0.756 3.6,-0.684 5.76,-0.756 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.072 2.16,0 5.76,0.756 3.564,0.72 8.929,1.944 15.948,3.672 0.468,1.476 0.685,2.88 0.792,4.212 0.072,1.296 0.036,2.52 -0.252,3.672 C 69.822,11.754 65.07,10.314 61.183,9.342 57.294,8.334 54.8 [...]
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2609"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 48.114,19.566 c -2.376,0.18 -5.22,0.612 -8.676,1.296 -3.492,0.576 -7.452,1.584 -12.024,2.628 -0.18,-0.792 -0.396,-1.62 -0.792,-2.628 -0.396,-1.044 -0.972,-2.124 -1.584,-3.384 7.092,-1.728 12.24,-2.952 15.984,-3.672 3.528,-0.72 3.6,-0.756 5.76,-0.792 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.036 2.16,0.072 5.76,0.792 3.564,0.72 8.929,1.944 15.948,3.672 -0.468,1.44 -1.116,2.736 -1.548,3.888 -0.612,1.116 -1.008,2.088 -1.584,2.916 -4.356,-1.476 -8.064,-2.664 -11.268,-3.42 -3.168 [...]
+         style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2611"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 48.87,33.174 c -4.356,0.072 -8.064,-0.108 -11.52,-0.54 -3.456,-0.504 -6.372,-1.152 -8.892,-2.088 -0.72,-1.512 -1.08,-2.592 -0.792,-3.384 0.144,-0.828 0.936,-1.224 2.088,-1.332 1.944,0.936 4.572,1.584 7.884,2.088 3.24,0.432 7.164,0.612 11.772,0.54 l 2.088,0 c 4.536,0.072 8.46,-0.108 11.772,-0.54 3.239,-0.504 5.868,-1.152 7.884,-2.088 1.116,0.108 1.908,0.504 2.088,1.332 0.252,0.792 -0.108,1.872 -0.792,3.384 -2.556,0.936 -5.472,1.584 -8.892,2.088 -3.492,0.432 -7.2,0.612 -11.52 [...]
+         style="clip-rule:evenodd;fill:#cbc6d0;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2613"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 46.278,308.861 c -9,-0.863 -15.948,-1.512 -21.24,-2.34 -5.364,-0.863 -7.236,-1.188 -10.188,-2.375 -3.06,-1.369 -5.508,-3.348 -7.344,-4.969 -1.872,-1.619 -2.88,-3.061 -3.42,-4.463 l 0.54,-18.072 2.088,-1.045 0,-7.596 -2.088,-4.428 C 3.942,241.936 3.546,220.264 3.294,197.585 2.97,174.833 2.934,152.153 3.042,128.429 l 3.132,-2.628 0.54,-10.729 -3.132,-5.508 c -0.468,-2.16 -0.252,-4.644 0.792,-7.596 1.008,-2.916 1.908,-5.724 5.22,-9.936 3.24,-4.428 11.016,-10.908 14.148,-15.984 [...]
+         style="clip-rule:evenodd;fill:#f1c810;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2615"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 44.694,129.258 c -6.156,-0.036 -12.132,-0.432 -18.072,-1.044 -5.976,-0.648 -11.772,-1.656 -17.532,-2.88 l 0,-10.224 c 6.588,0.972 12.996,1.8 19.368,2.34 6.372,0.504 12.42,0.72 18.576,0.792 l 7.344,0 c 6.084,-0.072 12.24,-0.288 18.612,-0.792 6.336,-0.54 12.744,-1.368 19.368,-2.34 l 0,10.224 c -5.796,1.224 -11.592,2.232 -17.532,2.88 -5.976,0.612 -11.952,1.008 -18.072,1.044 l -12.06,0 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2617"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="M 44.694,281.07 C 38.538,281.033 32.562,280.638 26.622,280.025 20.646,279.379 14.85,278.369 9.09,277.146 l 0,-10.189 c 6.588,0.973 12.996,1.801 19.368,2.342 6.372,0.504 12.42,0.719 18.576,0.791 l 7.344,0 c 6.084,-0.072 12.24,-0.287 18.612,-0.791 6.336,-0.541 12.744,-1.369 19.368,-2.342 l 0,10.189 c -5.796,1.223 -11.592,2.232 -17.532,2.879 -5.976,0.613 -11.952,1.008 -18.072,1.045 l -12.06,0 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2619"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 34.758,161.621 c -7.524,3.781 -12.456,8.748 -15.336,15.336 -2.808,6.518 -3.096,16.67 -1.548,23.652 1.584,6.949 5.904,13.572 10.44,17.785 4.392,4.104 9.468,6.299 15.624,6.732 -7.668,-10.801 -10.224,-17.713 -7.668,-21.17 2.52,-3.527 21.708,4.178 22.716,0.613 0.72,-3.6 -18.216,-17.064 -17.496,-21.781 0.864,-4.752 18.324,-3.383 22.104,-6.443 3.601,-3.168 3.349,-7.199 -0.611,-12.24 -2.521,-2.268 -6.012,-3.6 -10.765,-3.996 -4.752,-0.431 -10.476,0.073 -17.46,1.512 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2621"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 69.103,165.006 c 2.664,1.512 4.968,3.924 7.056,7.381 2.052,3.383 4.392,7.307 5.22,13.176 0.685,5.795 1.404,15.227 -0.611,21.492 -2.089,6.227 -6.12,12.455 -11.664,15.623 -5.725,3.023 -12.96,3.996 -22.104,2.771 -5.724,-8.063 -6.768,-13.176 -2.736,-15.336 3.96,-2.23 25.02,5.832 26.388,2.125 1.08,-3.996 -18.504,-20.701 -19.044,-24.84 -0.468,-4.068 13.248,4.283 16.271,0.611 2.915,-3.743 3.275,-11.411 1.224,-23.003 z"
+         style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2623"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 36.594,164.105 c -7.524,3.385 -12.492,8.244 -15.048,14.725 -2.592,6.443 -1.764,17.424 -0.288,23.904 1.368,6.299 5.904,10.908 8.892,14.111 2.88,3.096 5.976,4.68 8.892,4.607 -7.884,-9.539 -10.548,-15.982 -7.992,-19.332 2.556,-3.383 21.888,2.521 23.004,-0.898 0.827,-3.602 -17.856,-15.625 -17.172,-19.945 0.648,-4.248 16.452,-3.779 21.167,-5.543 4.572,-1.908 6.769,-3.852 6.444,-5.832 -1.296,-4.248 -4.212,-6.66 -8.892,-7.668 -4.751,-0.972 -10.907,-0.396 -19.007,1.871 z"
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path2625"
+         stroke-miterlimit="10"
+         i:knockout="Off"
+         d="m 71.874,171.773 c 3.24,3.205 5.725,6.732 7.057,11.016 1.296,4.213 1.655,9.109 1.224,14.113 -0.504,4.896 -1.368,10.836 -3.708,15.047 -2.412,4.178 -5.832,7.777 -10.404,9.828 -4.607,1.945 -10.332,2.557 -17.172,1.836 -5.76,-5.902 -6.588,-9.646 -2.484,-11.375 4.176,-1.836 24.84,4.68 27,1.225 1.872,-3.492 -14.903,-17.93 -15.336,-21.781 -0.396,-3.924 10.152,1.729 12.601,-1.512 2.338,-3.455 2.699,-9.359 1.222,-18.397 z"
+         style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/shop/bicycle.svg b/images/presets/shop/bicycle.svg
new file mode 100644
index 0000000..808b895
--- /dev/null
+++ b/images/presets/shop/bicycle.svg
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.1"
+   height="10.584001"
+   width="16"
+   id="svg2249"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="bicycle.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata2260">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs2258" />
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="20.106667"
+     inkscape:cx="16.016676"
+     inkscape:cy="10.325286"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2249"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.16783786;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4135"
+     width="14.832162"
+     height="9.4161625"
+     x="0.58391893"
+     y="0.58391893" />
+  <circle
+     cx="-12.295294"
+     cy="6.8796954"
+     r="2.4054742"
+     style="fill:none;stroke:#000000;stroke-width:0.5976333px"
+     id="circle2251"
+     transform="scale(-1,1)" />
+  <circle
+     cx="-3.7042909"
+     cy="6.8348956"
+     r="2.4054742"
+     style="fill:none;stroke:#000000;stroke-width:0.5976333px"
+     id="circle2253"
+     transform="scale(-1,1)" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     d="M 9.0907025,0.99998996 C 11.071363,1.01929 10.735463,0.79535996 11.801073,4.22 c 0.8681,2.73628 0.77355,2.43788 0.77809,2.62982 0.003,0.14911 -0.11719,0.26733 -0.26845,0.27745 -0.31455,-0.0318 -0.18224,0.034 -1.27281,-3.35256 -3.9849105,4.20368 -2.4898705,3.52202 -4.6344005,3.60739 -2.81847,-0.027 -3.04755,0.14671 -3.08101,-0.26641 0.004,-0.14028 0.0695,-0.22393 2.00381,-4.52886 l -0.18532,-0.50964 -0.63705,-0.0116 0.0232,-0.5328 2.37447,0 c 0.20978,0.28699 -0.0849,0.2857 -1.1466 [...]
+     id="path2255"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/shop/body.svg b/images/presets/shop/body.svg
new file mode 100644
index 0000000..209606c
--- /dev/null
+++ b/images/presets/shop/body.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns1="http://sozi.baierouge.fr" id="svg3570" sodipodi:docname="buddy.svg" viewBox="0 0 485.2 4 [...]
+  <sodipodi:namedview id="base" bordercolor="#666666" inkscape:pageshadow="2" guidetolerance="10.0" pagecolor="#ffffff" gridtolerance="10.0" inkscape:zoom="0.93701046" objecttolerance="10.0" borderopacity="1.0" inkscape:current-layer="svg3570" inkscape:cx="93.724066" inkscape:cy="246.52873" inkscape:window-y="66" inkscape:window-x="88" inkscape:window-height="675" showgrid="false" inkscape:pageopacity="0.0" inkscape:window-width="640"/>
+  <g id="layer1" transform="translate(-77.174 10.598)">
+    <g id="g2577" transform="matrix(2.332 0 0 2.332 997.06 -122.71)">
+      <g id="g2579" transform="translate(1.4286 -131.43)">
+        <rect id="rect2581" style="fill:#000000" rx="12" ry="12" height="138.57" width="84.286" y="252.36" x="-334.29"/>
+        <path id="path2583" style="fill:#000000" d="m-291.43 172.36a48.571 48.571 0 1 1 -97.14 0 48.571 48.571 0 1 1 97.14 0z" transform="matrix(.72059 0 0 .72059 -47.143 90.303)"/>
+      </g>
+      <rect id="rect2585" style="fill:#000000" transform="rotate(40)" rx="8" ry="8" height="114.29" width="25.714" y="298.63" x="-172.71"/>
+      <rect id="rect2587" style="fill:#000000" transform="matrix(-.76604 .64279 .64279 .76604 0 0)" rx="8" ry="8" height="114.29" width="25.714" y="-74.733" x="272.25"/>
+    </g>
+  </g>
+  <metadata>
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title>Buddy</dc:title>
+        <dc:date>2008-11-03T14:42:04</dc:date>
+        <dc:description/>
+        <dc:source>https://openclipart.org/detail/19935/buddy-by-sheikh_tuhin-19935</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>sheikh_tuhin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>gents</rdf:li>
+            <rdf:li>how i did it</rdf:li>
+            <rdf:li>male symbol</rdf:li>
+            <rdf:li>man</rdf:li>
+            <rdf:li>person</rdf:li>
+            <rdf:li>silhouette</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+        <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+        <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
\ No newline at end of file
diff --git a/images/presets/shop/book.svg b/images/presets/shop/book.svg
new file mode 100644
index 0000000..745914d
--- /dev/null
+++ b/images/presets/shop/book.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:cc="http://web.resource.org/cc/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns1="http://sozi.baierouge.fr" id="svg2" sodipodi:docname="book.svg" viewBox="0 0 110 115" sodip [...]
+  <sodipodi:namedview id="base" gridspacingy="10px" gridspacingx="10px" inkscape:zoom="2.2594447" height="115px" borderopacity="1.0" inkscape:current-layer="layer1" inkscape:cx="135.47134" inkscape:cy="89.800824" inkscape:object-paths="false" inkscape:grid-bbox="false" showgrid="true" width="110px" inkscape:document-units="px" bordercolor="#666666" inkscape:window-x="0" guidetolerance="10" objecttolerance="10" inkscape:object-nodes="false" inkscape:window-y="20" inkscape:window-width="10 [...]
+  <defs id="defs4">
+    <linearGradient id="linearGradient8148">
+      <stop id="stop8150" style="stop-color:#bfbfbf" offset="0"/>
+      <stop id="stop8152" style="stop-color:#f0f0f0" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient7144">
+      <stop id="stop7146" style="stop-color:#5e411f" offset="0"/>
+      <stop id="stop7148" style="stop-color:#be843f" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient9162" y2="57.382" gradientUnits="userSpaceOnUse" x2="110.66" gradientTransform="translate(-23.251 -22.479)" y1="84.858" x1="105.88" inkscape:collect="always">
+      <stop id="stop8142" style="stop-color:#fffe7f" offset="0"/>
+      <stop id="stop8144" style="stop-color:#ffffbf" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient9165" y2="139.47" xlink:href="#linearGradient7144" gradientUnits="userSpaceOnUse" x2="129.18" gradientTransform="translate(-22.118 -21.799)" y1="86.894" x1="48.713" inkscape:collect="always"/>
+    <linearGradient id="linearGradient9168" y2="107.82" xlink:href="#linearGradient8148" gradientUnits="userSpaceOnUse" x2="139.63" gradientTransform="translate(-22.118 -21.799)" y1="105.83" x1="133.04" inkscape:collect="always"/>
+    <linearGradient id="linearGradient9171" y2="147.33" xlink:href="#linearGradient8148" gradientUnits="userSpaceOnUse" x2="106.26" gradientTransform="translate(-22.118 -21.799)" y1="136.25" x1="107.39" inkscape:collect="always"/>
+    <linearGradient id="linearGradient9174" y2="154.3" xlink:href="#linearGradient7144" gradientUnits="userSpaceOnUse" x2="134.56" gradientTransform="translate(-22.118 -21.799)" y1="82.104" x1="81.779" inkscape:collect="always"/>
+    <linearGradient id="linearGradient9177" y2="98.218" xlink:href="#linearGradient7144" gradientUnits="userSpaceOnUse" x2="62.828" gradientTransform="translate(-22.118 -21.799)" y1="97.321" x1="59.666" inkscape:collect="always"/>
+  </defs>
+  <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" transform="translate(-22.269 -20.463)">
+    <path id="path4189" sodipodi:nodetypes="ccccc" style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#linearGradient9177)" d="m55.76 23.935c-2.053-0.205-2.916 3.207-4.162 6.355l-25.938 83.93 5.341 3.14 24.759-93.425z"/>
+    <path id="path3206" sodipodi:nodetypes="ccccccc" style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#linearGradient9174)" d="m29.901 109.39c-4.816-0.41-6.508 12.96-2.998 13.72l85.247 8.89 17.35-88.172-14.43-1.967-13.25 68.909-71.919-1.38z"/>
+    <path id="path5162" sodipodi:nodetypes="cccc" style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#linearGradient9171)" d="m104.31 114.26l-72.679-6.17c-3.682 0.01-6.16 12.41-3.277 12.99l81.346 7.73"/>
+    <path id="path6139" sodipodi:nodetypes="ccccc" style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#linearGradient9168)" d="m126.03 45.556l-16.88 83.004c-4.03-1.55-6.76-10.51-4.2-14.17l16.6-83.31c-1.24 3.888 1.31 13.362 4.48 14.476z"/>
+    <path id="path4187" style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#linearGradient9165)" d="m107.32 117.17l-77.623-7.78 26.009-85.404 69.014 4.916-17.4 88.268z"/>
+    <path id="path3214" sodipodi:nodetypes="ccccc" style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#linearGradient9162)" d="m64.316 33.137l43.664 3.255-5.69 28.898-44.558-4.117 6.584-28.036z"/>
+  </g>
+  <metadata>
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title>Book</dc:title>
+        <dc:date>2007-12-03T18:49:27</dc:date>
+        <dc:description>A simple SVG book based on a drawing made on Gimp by Sam Switzer.</dc:description>
+        <dc:source>https://openclipart.org/detail/9358/book-by-crazyterabyte</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>CrazyTerabyte</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>book</rdf:li>
+            <rdf:li>how i did it</rdf:li>
+            <rdf:li>remix</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+        <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+        <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
\ No newline at end of file
diff --git a/images/presets/boutique.png b/images/presets/shop/boutique.png
similarity index 100%
rename from images/presets/boutique.png
rename to images/presets/shop/boutique.png
diff --git a/images/presets/shop/chemist.svg b/images/presets/shop/chemist.svg
new file mode 100644
index 0000000..3198ef9
--- /dev/null
+++ b/images/presets/shop/chemist.svg
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->
+<svg enable-background="new 0 0 467.496 225.063" height="225.063" i:pageBounds="0 792 612 0" i:rulerOrigin="0 0" i:viewOrigin="72 508" overflow="visible" space="preserve" viewBox="0 0 467.496 225.063" width="467.496" xmlns="http://www.w3.org/2000/svg" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" xmlns:graph="http://ns.adobe.com/Graphs/1.0/" xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/" xmlns:x="http://ns.adobe.com/Extensibility/1.0/" xmlns:xlink="http://www.w3.org/1 [...]
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>Toothbrush with Toothpaste</dc:title>
+        <dc:description>Red Toothbrush with Toothpaste</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>tool</rdf:li>
+            <rdf:li>dental</rdf:li>
+            <rdf:li>toothbrush</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Project</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent rdf:about="http://web.resource.org/cc/PublicDomain">
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent rdf:about="http://web.resource.org/cc/PublicDomain">
+            <dc:title>Public Domain</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>2005/05/11</dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g i:dimmedPercent="50" i:layer="yes" i:rgbTrio="#4F008000FFFF" id="Layer_1">
+    <g>
+      <path clip-rule="evenodd" d="     M348.426,49.113c15.516-4.14,30.348-8.028,45.469-11.664c15.084-3.852,34.055-8.46,44.135-10.332     c9.938-1.872,10.621-1.116,15.084-0.36c4.32,0.648,8.244,3.492,10.801,4.932c2.34,1.296,3.527,0.648,3.564,3.744     c-0.18,3.096-1.477,11.34-3.889,15.156c-2.447,3.708-6.553,5.364-10.367,7.488c-3.889,2.088-7.668,3.132-12.602,5.076     c-5.039,1.872-4.248,0.72-17.207,5.976c-13.213,5.148-44.461,18.072-60.264,24.876c-15.732,6.66-22.932,9.36-33.553,15.192      [...]
+      <path clip-rule="evenodd" d="     M259.326,74.709c13.104-2.7,26.855-5.94,42.084-10.008c15.191-4.212,31.68-9.684,48.348-14.184     c16.633-4.536,34.92-8.712,50.4-12.384c15.264-3.816,31.463-8.496,40.824-9.72c9.18-1.26,10.764,0.936,14.471,2.412     c3.637,1.368,9.721,3.996,7.416,6.084c-2.447,1.944-9.684,3.096-21.852,6.372c-12.348,3.24-34.523,8.856-51.119,13.536     c-16.705,4.68-31.393,9.108-47.953,14.4c-16.631,5.22-38.195,11.988-50.939,16.812c-12.744,4.752-12.707,6.084-25.164,11.772  [...]
+      <path clip-rule="evenodd" d="M170.154,126.621     c15.156-6.553,27.72-12.133,38.376-17.028c10.548-4.824,18.432-8.46,24.768-12.024c6.155-3.816,8.243-9.036,12.384-9.972     c4.141-0.9,9.9,2.916,12.023,4.644c1.98,1.62,2.305,3.708,0,5.292c-2.52,1.332-7.848,1.584-14.328,3.528     c-6.551,2.052-16.307,5.616-24.263,8.604c-7.992,2.772-15.336,5.292-23.292,8.677c-8.1,3.42-16.092,7.199-24.516,11.627     C170.946,128.854,170.55,127.736,170.154,126.621z" fill="#ED0000" fill-rule="evenodd" i:kno [...]
+      <path clip-rule="evenodd" d="     M463.158,40.797c0.828,3.924-0.396,7.236-4.068,10.224c-3.744,2.844-10.332,4.356-17.676,7.308     c-7.488,2.916-16.057,6.048-26.244,10.08c-10.332,3.888-24.191,9.072-34.633,13.464c-10.439,4.32-17.711,7.524-27.646,12.384     c-10.152,4.716-24.084,10.836-32.365,15.876c-8.279,4.896-11.736,10.908-17.172,13.465c-5.652,2.412-9.287,0.863-15.768,1.584     c-6.553,0.684-12.527,0.252-22.787,2.592c-10.514,2.268-28.945,7.523-38.917,10.908c-9.972,3.311-13.824,6.11 [...]
+      <path clip-rule="evenodd" d="M52.758,212.877     c-4.104-0.973-20.844-10.656-27.432-15.049c-6.624-4.391-9-6.912-11.7-11.303c-2.844-4.609-6.228-13.861-4.464-15.408     c1.908-1.404,11.52,2.592,15.516,6.732c3.888,4.066,3.348,12.887,7.56,17.279c4.068,4.176,13.284,5.111,16.812,8.1     C52.434,206.252,56.682,213.633,52.758,212.877z" fill="#ED0000" fill-rule="evenodd" i:knockout="Off"/>
+      <path clip-rule="evenodd" d="M263.395,124.82     c-8.137,1.477-17.354,4.105-28.08,7.885c-10.765,3.816-27.792,11.195-35.964,14.795c-8.28,3.422-12.456,5.365-13.068,5.832     c1.08,2.484,0.684,4.752-1.188,7.236c-1.944,2.34-3.708,3.961-10.152,7.092c-6.696,3.168-27.36,12.709-28.8,11.701     c-1.296-1.332,16.992-14.076,20.844-18.648c3.636-4.535-0.756-6.48,1.26-8.207c1.872-1.729,8.712-0.9,10.368-2.232     c1.62-1.477,1.44-3.385-0.54-6.121c1.08-0.143,2.16-0.072,3.672,0.072c1.404,0.145,2.95 [...]
+      <path clip-rule="evenodd" d="M461.43,42.777     c2.447-0.288-0.576,3.636-2.268,5.508c-1.801,1.692-1.656,2.52-7.74,4.86c-6.229,2.268-20.557,5.76-28.549,8.676     c-7.955,2.772-8.891,4.032-18.756,8.244c-10.043,4.176-34.02,15.156-40.391,16.848c-6.264,1.476-3.564-3.744,2.807-7.308     c6.373-3.672,25.453-10.224,34.885-13.824c9.145-3.6,13.535-5.148,20.557-7.704c7.02-2.736,15.156-5.4,21.779-7.992     C450.377,47.457,458.766,43.029,461.43,42.777z" fill="#ED0000" fill-rule="evenodd" i:knoc [...]
+      <path clip-rule="evenodd" d="M442.781,39.465     c6.625-1.368,7.525-0.756,9.109-1.908c1.512-1.296,2.916-4.536,0.035-5.292c-3.096-0.792-6.912-1.368-17.965,0.756     c-11.268,2.088-44.314,9.684-48.311,11.556c-3.744,1.62,20.447-1.332,25.092-1.224c4.428,0.072-3.961,2.52,1.477,1.944     C417.689,44.505,435.979,40.797,442.781,39.465z" fill="#ED0000" fill-rule="evenodd" i:knockout="Off"/>
+      <path clip-rule="evenodd" d="     M77.454,83.061c0.36,1.512-7.776,3.168-10.656,3.312c-2.988,0.144-6.228-0.756-6.66-2.304c-0.432-1.656,0.936-7.38,3.96-7.452     C67.014,76.437,76.878,81.369,77.454,83.061z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M38.43,67.185c-0.108,2.016-6.588,9.072-10.152,9.648c-3.564,0.432-10.476-4.788-10.584-6.768     c-0.144-2.16,6.48-4.572,10.008-5.148C31.158,64.413,38.25,65.169,38.43,67.185z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M57.33,75.429c0.432,2.304-3.132,9.036-6.372,9.108c-3.42,0-12.708-6.696-13.284-8.964c-0.504-2.448,6.588-5.184,10.008-5.148     C51.03,70.389,56.646,72.981,57.33,75.429z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M58.122,61.281c0.972,1.944-0.756,7.2-3.384,7.992c-2.736,0.612-11.772-2.088-12.672-3.924c-1.044-1.944,4.104-6.768,6.84-7.38     C51.57,57.321,57.042,59.301,58.122,61.281z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M93.654,79.605c0.828,1.476-2.664,3.24-4.932,3.348c-2.448-0.036-7.992-1.692-8.856-3.168c-0.864-1.512,1.224-5.796,3.636-5.76     C85.842,74.097,92.61,77.949,93.654,79.605z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M110.43,75.681c0.072,1.548-5.4,4.752-7.812,4.752c-2.7-0.288-6.804-4.176-7.02-5.688c-0.144-1.548,3.888-3.528,6.408-3.312     C104.418,71.577,110.286,74.097,110.43,75.681z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M125.91,73.809c0,1.116-4.716,3.852-6.948,3.888c-2.376-0.108-6.66-2.628-6.732-3.816c-0.108-1.26,4.104-3.276,6.408-3.276     C120.942,70.677,125.73,72.441,125.91,73.809z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M142.434,70.317c-0.036,1.26-4.14,4.824-6.48,5.004c-2.448,0.036-7.092-3.096-7.272-4.392c-0.18-1.404,4.104-3.204,6.444-3.312     C137.43,67.509,142.182,68.913,142.434,70.317z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M162.918,67.689c0.18,1.476-4.716,3.6-7.452,3.888c-2.844,0.108-8.424-1.26-8.82-2.736c-0.36-1.584,4.032-6.084,6.804-6.264     C156.258,62.433,162.378,66.033,162.918,67.689z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M164.538,70.389c-3.744,2.304-6.948,3.492-10.008,3.708c-3.024,0.144-5.796-0.684-8.172-2.628     c0.18,9.504,0.468,19.44,0.72,30.636c0.252,11.088,0.54,22.825,0.864,35.639c3.816,1.908,6.912,2.377,9.684,1.549     c2.7-0.863,4.788-3.168,6.408-6.768c-0.828-11.736-1.188-22.428-1.08-32.904C162.99,89.109,163.566,79.641,164.538,70.389z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M144.09,72.801c-1.98,2.376-4.248,3.816-6.66,4.32c-2.448,0.468-5.184,0-8.064-1.404c-1.044,9.36-1.62,19.368-1.728,30.456     c-0.18,11.052,0.108,22.788,0.864,35.604c3.816,1.871,6.912,2.447,9.684,1.584c2.7-0.936,4.788-3.061,6.408-6.768     c0.432-9.721,0.612-19.656,0.54-30.349C144.99,95.445,144.738,84.573,144.09,72.801z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M126.306,77.013c-1.44,1.512-3.132,2.448-5.076,2.664c-2.016,0.216-4.176-0.252-6.624-1.404     c-1.584,11.664-2.772,23.076-3.42,35.064c-0.72,11.952-0.972,23.651-0.756,35.929c3.744,1.979,6.984,2.375,9.72,1.584     c2.7-0.9,4.788-3.168,6.408-6.805c-0.648-10.871-1.152-21.6-1.116-32.868C125.37,99.873,125.658,88.713,126.306,77.013z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M111.834,79.461c-2.268,1.692-4.536,2.556-6.948,2.988c-2.448,0.36-4.968,0.036-7.56-0.828c-1.8,14.076-2.772,27.288-3.06,40.176     c-0.36,12.889,0.108,24.805,1.26,36.432c2.592,1.08,4.86,1.008,7.236-0.072c2.268-1.15,4.356-3.455,6.408-6.768     c-1.188-10.008-1.548-20.879-1.08-32.904C108.558,106.389,109.71,93.573,111.834,79.461z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M95.13,81.441c-0.648,2.34-2.124,3.528-4.428,3.96c-2.376,0.36-5.508-0.288-9.54-1.8c-0.684,11.016-1.188,22.896-1.512,36.215     c-0.36,13.357-0.54,27.469-0.54,43.164c2.988,1.908,5.76,2.449,8.172,1.764c2.376-0.756,4.536-2.879,6.336-6.227     c-0.828-10.117-1.044-21.42-0.792-34.309C93.078,111.177,93.798,97.245,95.13,81.441z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M78.714,86.193c-3.96,1.908-7.488,2.7-11.016,2.52c-3.528-0.216-6.768-1.44-9.864-3.672c0.468,18.792,0.792,34.848,1.116,48.996     c0.324,14.111,0.504,25.488,0.684,34.955c4.32,2.773,7.848,3.744,10.728,3.205c2.88-0.648,4.968-2.809,6.408-6.768     c-1.08-8.893-1.44-19.584-1.08-32.904C75.978,119.205,76.986,103.941,78.714,86.193z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M53.082,87.633c-3.852,0.468-7.092,0.252-9.864-0.792c-2.808-1.152-5.004-2.844-6.732-5.508     c1.404,17.64,2.484,32.761,3.096,46.188c0.612,13.355,0.9,24.336,0.72,33.516c2.412,4.031,4.86,6.408,7.488,7.127     c2.628,0.648,5.184-0.215,8.064-2.879c-0.396-12.385-0.828-24.695-1.296-37.764C54.09,114.488,53.55,101.385,53.082,87.633z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M32.202,79.857c-2.844,1.8-5.472,2.304-8.172,1.116c-2.736-1.188-5.256-3.78-7.848-7.92c2.808,18.576,4.536,34.272,5.724,48.061     c1.08,13.68,1.26,24.66,0.684,33.516c2.412,3.961,4.86,6.191,7.488,7.129c2.556,0.826,5.148,0.07,7.92-2.125     c-0.396-11.412-1.188-23.58-2.088-36.936C34.974,109.269,33.642,95.265,32.202,79.857z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M80.01,59.841c0.72,1.332-2.124,3.78-4.788,4.572c-2.844,0.72-10.44,0.684-11.268-0.504c-0.648-1.404,3.996-6.732,6.84-7.38     C73.53,55.845,79.146,58.437,80.01,59.841z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M98.082,56.097c0.612,1.584-2.232,5.472-4.932,6.228c-2.808,0.612-10.404-0.612-11.124-2.16c-0.648-1.656,3.996-6.696,6.84-7.344     C91.602,52.101,97.218,54.441,98.082,56.097z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M116.298,55.053c0.396,1.656-4.104,5.472-6.696,6.3c-2.808,0.648-8.892-0.648-9.36-2.232c-0.396-1.728,3.96-6.732,6.804-7.38     C109.746,51.057,115.794,53.325,116.298,55.053z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M135.126,54.369c0.54,1.224-2.628,4.104-5.472,4.752c-2.844,0.36-10.8-0.54-11.376-1.728c-0.54-1.332,4.644-4.896,7.632-5.436     C128.682,51.381,134.478,53.109,135.126,54.369z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M77.742,70.353c1.008,1.728-3.564,5.76-5.94,6.264c-2.484,0.288-7.884-2.232-8.856-3.96c-1.044-1.836,0-6.156,2.556-6.552     C67.95,65.781,76.662,68.445,77.742,70.353z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M95.85,67.401c1.008,1.548-2.052,5.256-4.32,5.724c-2.304,0.252-7.848-2.232-9-3.708c-1.116-1.512-0.288-5.04,2.088-5.328     C86.814,63.729,94.626,65.853,95.85,67.401z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M113.13,66.933c0.972,1.404-3.096,3.492-5.4,3.636c-2.448,0.036-7.344-1.692-8.46-3.096c-1.116-1.476-0.288-5.256,2.088-5.364     C103.59,61.929,112.05,65.529,113.13,66.933z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M128.286,63.729c0.792,1.476-2.808,4.716-4.824,5.148c-2.16,0.252-6.336-1.8-7.272-3.24c-0.936-1.548,0.036-5.004,2.088-5.364     C120.258,59.949,127.35,62.217,128.286,63.729z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M148.338,60.057c0.864,1.476-2.916,4.716-4.824,5.148c-2.16,0.252-6.372-1.8-7.236-3.24c-0.828-1.548-0.036-5.004,2.088-5.364     C140.382,56.277,147.366,58.545,148.338,60.057z" fill="#EDECF1" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="M168.282,133.102     c-1.116,3.455-3.312,5.76-6.876,7.055c-3.564,1.225-8.352,1.441-14.364,0.504c-2.664,2.197-5.4,3.744-8.208,4.5     c-2.844,0.756-5.76,0.865-8.748,0.182c-0.396,3.059-2.124,5.184-5.184,6.658c-3.168,1.441-7.416,1.945-13.176,1.801     c-1.296,2.916-3.024,5.111-5.724,6.588c-2.628,1.369-6.048,2.016-10.116,1.943c-1.728,3.602-3.924,5.725-6.588,6.66     c-2.7,0.9-5.868,0.324-9.504-1.439c-4.392,5.148-8.532,7.848-12.276,8.389c-3.888,0.432-7.236-1 [...]
+      <path clip-rule="evenodd" d="M103.014,77.913c-26.712,3.42-47.484,4.5-63.576,3.24     C23.382,79.821,12.33,78.957,7.65,70.101c-4.572-9-1.656-30.924,4.032-42.156C17.298,16.533,30.69,7.065,40.878,2.889     c10.152-4.068,20.196-3.852,30.96,0.648c-8.928,3.384-14.724,6.84-17.784,10.512c-3.204,3.672-9.504,10.116-0.432,11.412     c9.144,1.08,36-4.104,54.756-4.428c18.612-0.432,44.496-3.132,56.268,2.304c11.592,5.544,22.932,21.204,12.78,30.456     C166.914,62.901,142.578,70.893,103.014,77.913 [...]
+      <path clip-rule="evenodd" d="M108.774,75.177     c-24.264,3.564-44.136,5.04-60.588,4.284c-16.416-0.828-31.644-0.468-37.368-8.784c-5.832-8.46-2.376-29.808,3.024-40.86     c5.472-11.052,20.232-20.736,29.16-25.02c8.784-4.356,16.416-4.5,23.292-0.72c-8.532,3.456-13.716,6.912-15.948,10.908     c-2.196,3.852-7.2,10.872,2.916,12.312c10.08,1.224,39.06-3.852,57.24-4.392c18.18-0.648,39.492-3.528,50.76,1.224     c10.98,4.824,23.724,18.648,15.048,27.288C167.382,59.949,145.242,67.725,108.774,75. [...]
+      <path clip-rule="evenodd" d="M27.918,77.625     c-4.788-4.68-6.588-9.252-5.544-14.112c1.08-4.896,9.792-9.18,11.7-14.652c1.764-5.58-3.708-11.376-1.008-17.784     c2.7-6.444,12.312-15.552,17.028-20.124c4.608-4.608,12.708-7.596,10.692-7.164c-2.304,0.432-16.812,4.968-23.652,9.576     c-6.912,4.5-14.292,11.88-17.136,17.28c-2.736,5.256,2.124,9.144,0.396,14.724c-1.98,5.544-5.652,11.52-11.592,18.36     c0.468,3.276,1.512,5.832,3.42,7.956c1.836,2.016,4.896,3.456,7.632,4.464C22.41,77.121,25. [...]
+      <path clip-rule="evenodd" d="M46.242,21.285     c1.512-1.584-0.828,1.8-0.216,3.06c0.468,1.188,0.648,3.528,3.852,4.248c3.204,0.468,11.808,0,15.696-0.288     c3.852-0.36,9.756-2.124,7.452-0.972c-2.664,1.224-17.1,5.04-22.068,8.1c-4.896,2.808-4.572,7.992-6.804,9.288     c-2.34,1.224-5.256,0.18-6.66-1.62c-1.512-1.98-2.952-5.76-1.548-9.396C37.458,29.925,44.406,22.869,46.242,21.285z" fill="#1AA6B6" fill-rule="evenodd" i:knockout="Off"/>
+      <path clip-rule="evenodd" d="M48.042,9.945     c-0.864,0.252-10.224,5.04-14.076,9.072c-4.032,3.96-7.596,9.54-9.324,14.4c-1.692,4.716,1.332,8.892-0.792,14.04     c-2.376,5.004-11.34,13.14-12.744,16.092c-1.44,2.844,3.06-0.216,4.212,0.828c1.008,0.972,0.972,3.024,2.232,4.752     c1.116,1.584,4.788,5.436,5.04,4.608c0.144-1.008-4.608-5.688-3.564-10.296c1.044-4.716,8.46-12.024,10.044-17.208     c1.404-5.148-2.7-8.892-1.044-13.608c1.656-4.86,7.596-11.448,11.016-15.192C42.354,13.581,48.87,9 [...]
+      <path clip-rule="evenodd" d="M55.35,39.573     c4.752,0.9,17.496,3.024,31.14,2.628c13.572-0.576,41.364-6.264,49.212-5.544c7.488,0.72,5.184,4.212-3.708,9.648     c-9.108,5.364-47.664,19.224-49.572,22.284c-1.728,2.844,28.188-1.548,38.808-4.716c10.44-3.384,14.76-10.728,23.94-14.256     c9.216-3.528,28.548-2.52,30.636-6.264c1.692-3.78-9.792-13.608-19.296-16.164c-9.612-2.628-24.408-0.9-37.044,0.612     c-12.744,1.44-27.828,6.552-38.052,8.1c-10.26,1.404-18.072,0.072-22.464,0.72C54.486,37 [...]
+      <path clip-rule="evenodd" d="M95.418,63.657     c1.368-1.332,8.46-2.736,15.876-5.868c7.344-3.276,22.572-9.468,27.756-13.176c4.968-3.708,4.464-7.488,2.376-9     c-2.232-1.62-7.884-1.08-15.588-0.468c-7.884,0.612-20.916,2.88-30.924,3.888c-10.188,0.828-25.308,1.476-28.836,1.26     c-3.42-0.396,3.6-1.944,8.28-2.7c4.5-0.72,9.9-0.468,19.116-1.62c9.288-1.296,26.28-4.572,35.82-5.796     c9.36-1.368,12.996-3.672,20.34-1.764c7.272,1.908,22.824,11.088,23.328,13.356c0.288,2.16-14.04-1.8-20.772- [...]
+    </g>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/shop/clothes.svg b/images/presets/shop/clothes.svg
new file mode 100644
index 0000000..92ffe4f
--- /dev/null
+++ b/images/presets/shop/clothes.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="160.00000pt" id="svg1" inkscape:version="0.39" sodipodi:docbase="/home/nicu/Desktop/camel" sodipodi:docname="ocal_t-shirt_02.svg" sodipodi:version="0.32" width="160.00000pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipod [...]
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>t-shirt</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li></rdf:li>
+            <rdf:li>people</rdf:li>
+            <rdf:li>clothing</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3">
+    <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="namedview4258" inkscape:cx="475.26707" inkscape:cy="250.37448" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="739" inkscape:window-width="1012" inkscape:window-x="0" inkscape:window-y="26" inkscape:zoom="0.61399264" pagecolor="#ffffff"/>
+    <defs id="defs48974"/>
+  </defs>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:cx="80.000000" inkscape:cy="80.000000" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="725" inkscape:window-width="903" inkscape:window-x="47" inkscape:window-y="63" inkscape:zoom="3.5000000" pagecolor="#ffffff"/>
+  <g id="g2776">
+    <path d="M 7.7954843,97.974423 C 10.290914,101.81355 36.652504,113.09481 44.368044,110.75406 C 47.284684,107.83740 47.015394,94.483303 48.743004,91.066763 C 52.966024,104.35035 43.905434,176.72080 43.638884,188.04489 C 54.889704,195.91369 138.80798,195.06855 158.53939,190.38567 C 161.57065,186.08665 151.24785,122.39154 152.28354,93.254223 C 154.27906,96.173613 155.41755,103.83339 155.92932,107.10824 C 164.06882,109.44904 193.65360,102.73332 195.84116,99.087513 C 195.91708,91.794533 1 [...]
+    <path d="M 83.031250,4.5937500 C 77.453404,12.463182 62.437934,15.158085 53.167383,21.490685 C 44.010674,27.093993 32.007139,30.442347 27.666035,41.250980 C 18.785770,59.284699 10.555505,76.491767 5.7812500,96.062500 C 8.8870275,105.39955 22.528072,106.92179 30.846025,110.68957 C 33.644061,111.42432 39.435242,113.05978 43.115415,112.20193 C 46.081301,109.55837 46.936179,104.42150 48.433036,95.540179 C 52.511675,112.83820 43.036832,161.40210 41.815119,188.58266 C 49.433004,194.91429 6 [...]
+  </g>
+  <g id="g3615" transform="matrix(0.445330,0.000000,0.000000,0.445330,77.48423,30.03762)">
+    <g id="g1108" transform="matrix(0.192029,0.000000,0.000000,0.192029,10.17587,51.14223)">
+      <path d="M 281.59307,73.122280 C 289.29251,73.122280 294.53956,67.133790 294.53956,52.590450 C 294.53956,45.290240 292.48635,33.769600 282.04933,33.769600 C 272.75298,33.769600 268.76066,43.807390 268.76066,53.331870 C 268.76066,62.856340 271.84044,73.122280 281.53605,73.122280 L 281.59307,73.122280 M 281.76417,65.479910 C 279.19769,65.479910 277.82889,60.917210 277.94297,53.217810 C 277.88593,46.430910 279.19769,41.411990 281.76417,41.411990 C 284.44471,41.411990 285.35725,46.4309 [...]
+      <path d="M 278.23347,69.704248 C 285.93291,69.704248 291.17996,63.715755 291.17996,49.172417 C 291.17996,41.872203 289.12675,30.351569 278.68973,30.351569 C 269.39338,30.351569 265.40106,40.389360 265.40106,49.913838 C 265.40106,59.438309 268.48084,69.704248 278.17645,69.704248 L 278.23347,69.704248 M 278.40457,62.061874 C 275.83809,62.061874 274.46929,57.499178 274.58337,49.799772 C 274.52633,43.012880 275.83809,37.993957 278.40457,37.993957 C 281.08511,37.993957 281.99765,43.0128 [...]
+    </g>
+    <g id="g1092" transform="matrix(5.915837e-2,0.000000,0.000000,5.915837e-2,85.92543,66.21956)">
+      <path d="M 296.77515,91.480067 C 292.39395,91.203657 288.27505,93.294297 285.80645,96.823867 L 176.33769,96.823867 C 169.39928,96.823867 163.80645,102.38537 163.80645,109.32387 L 163.80645,132.57387 L 48.712696,173.57387 C 42.176676,175.90237 38.790386,183.03777 41.118946,189.57387 L 116.77520,401.94887 C 119.10376,408.48477 126.23919,411.87117 132.77520,409.54257 L 297.46265,350.88627 L 451.58765,392.51127 C 458.28595,394.32087 465.12185,390.39707 466.93145,383.69887 L 525.74395,1 [...]
+      <path d="M 289.13776,11.141406 C 282.19933,11.141406 276.61353,16.727213 276.61353,23.665638 L 276.61353,249.10181 C 276.61353,256.04023 282.19933,261.62604 289.13776,261.62604 L 514.57393,261.62604 C 521.51235,261.62604 527.09816,256.04023 527.09816,249.10181 L 527.09816,23.665638 C 527.09816,16.727213 521.51235,11.141406 514.57393,11.141406 L 289.13776,11.141406 z " id="rect911" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;" transform="matrix(0.96 [...]
+      <path d="M 310.90331,38.364491 C 305.39329,38.364491 300.95743,42.800352 300.95743,48.310369 L 300.95743,227.33617 C 300.95743,232.84619 305.39329,237.28205 310.90331,237.28205 L 489.92911,237.28205 C 495.43912,237.28205 499.87498,232.84619 499.87498,227.33617 L 499.87498,48.310369 C 499.87498,42.800352 495.43912,38.364491 489.92911,38.364491 L 310.90331,38.364491 z " id="rect912" style="fill:#f3e533;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:0.79413080pt;" transform="ma [...]
+      <path d="M 153.28592,91.074089 C 146.34750,91.074089 140.76169,96.659896 140.76169,103.59832 L 140.76169,329.03449 C 140.76169,335.97292 146.34750,341.55872 153.28592,341.55872 L 378.72209,341.55872 C 385.66052,341.55872 391.24632,335.97292 391.24632,329.03449 L 391.24632,103.59832 C 391.24632,96.659896 385.66052,91.074089 378.72209,91.074089 L 153.28592,91.074089 z " id="rect913" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;"/>
+      <path d="M 175.05156,118.29723 C 169.54154,118.29723 165.10568,122.73310 165.10568,128.24311 L 165.10568,307.26891 C 165.10568,312.77893 169.54154,317.21479 175.05156,317.21479 L 354.07736,317.21479 C 359.58738,317.21479 364.02324,312.77893 364.02324,307.26891 L 364.02324,128.24311 C 364.02324,122.73310 359.58738,118.29723 354.07736,118.29723 L 175.05156,118.29723 z " id="rect914" style="fill:#ff7f00;fill-rule:evenodd;stroke-width:0.79413080pt;"/>
+      <path d="M -32.155801,166.71382 C -39.094218,166.71382 -44.680019,172.29962 -44.680019,179.23804 L -44.680019,404.67401 C -44.680019,411.61243 -39.094218,417.19823 -32.155801,417.19823 L 193.28017,417.19823 C 200.21858,417.19823 205.80439,411.61243 205.80439,404.67401 L 205.80439,179.23804 C 205.80439,172.29962 200.21858,166.71382 193.28017,166.71382 L -32.155801,166.71382 z " id="rect915" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999866pt;" transform="m [...]
+      <path d="M -10.390225,193.93687 C -15.900234,193.93687 -20.336090,198.37273 -20.336090,203.88274 L -20.336090,382.90835 C -20.336090,388.41836 -15.900234,392.85422 -10.390225,392.85422 L 168.63539,392.85422 C 174.14540,392.85422 178.58125,388.41836 178.58125,382.90835 L 178.58125,203.88274 C 178.58125,198.37273 174.14540,193.93687 168.63539,193.93687 L -10.390225,193.93687 z " id="rect916" style="fill:#bf0000;fill-rule:evenodd;stroke-width:0.79413080pt;" transform="matrix(0.942003, [...]
+    </g>
+    <g id="g3612">
+      <path d="M 137.86172,98.940798 C 137.86172,98.597796 137.81755,98.323413 137.72923,98.117602 C 137.64090,97.909520 137.52469,97.805486 137.38057,97.805486 C 137.23801,97.805486 137.12255,97.908384 137.03423,98.114179 C 136.94745,98.319974 136.90406,98.595508 136.90406,98.940798 C 136.90406,99.288375 136.94745,99.565045 137.03423,99.770840 C 137.12255,99.976651 137.23801,100.07955 137.38057,100.07955 C 137.52469,100.07955 137.64090,99.976651 137.72923,99.770840 C 137.81755,99.562758 [...]
+      <path d="M 137.28099,98.258217 C 137.28099,97.915215 137.23682,97.640832 137.14850,97.435021 C 137.06017,97.226939 136.94396,97.122905 136.79984,97.122905 C 136.65728,97.122905 136.54182,97.225803 136.45350,97.431598 C 136.36672,97.637393 136.32333,97.912927 136.32333,98.258217 C 136.32333,98.605794 136.36672,98.882464 136.45350,99.088259 C 136.54182,99.294070 136.65728,99.396967 136.79984,99.396967 C 136.94396,99.396967 137.06017,99.294070 137.14850,99.088259 C 137.23682,98.880177 [...]
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/shop/computer.svg b/images/presets/shop/computer.svg
new file mode 100644
index 0000000..d5b67ea
--- /dev/null
+++ b/images/presets/shop/computer.svg
@@ -0,0 +1,2118 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="495.0741"
+   id="svg1"
+   inkscape:version="0.46"
+   sodipodi:docbase="/selso/KyDaKorg/Projects/Free_Software_CDs/Computer_Internet_Security"
+   sodipodi:docname="computer.svg"
+   sodipodi:version="0.32"
+   width="632.17804"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>workstation</dc:title>
+        <dc:description>Workstation based on "Andy Fitzsimon's Computer".</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>hash</rdf:li>
+            <rdf:li />
+            <rdf:li>hardware</rdf:li>
+            <rdf:li>workstation</rdf:li>
+            <rdf:li>desktop</rdf:li>
+            <rdf:li>computer</rdf:li>
+            <rdf:li>pc</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>HASH(0x89c79d4)</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>HASH(0x89c79d4)</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>HASH(0x89c79d4)</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 371.875 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1052.5 : 371.875 : 1"
+       inkscape:persp3d-origin="526.25 : 247.91667 : 1"
+       id="perspective277" />
+    <radialGradient
+       cx="219.30873"
+       cy="77.963234"
+       fx="219.30873"
+       fy="77.963234"
+       gradientTransform="matrix(2.665527,0,0,1.3098,-747.6215,-178.8622)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1956"
+       inkscape:collect="always"
+       r="164.14062"
+       xlink:href="#linearGradient2353" />
+    <linearGradient
+       gradientTransform="translate(-420.7168,-172.9349)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1954"
+       inkscape:collect="always"
+       x1="399.5"
+       x2="399.5"
+       xlink:href="#linearGradient2353"
+       y1="347"
+       y2="352.55652" />
+    <linearGradient
+       gradientTransform="translate(-383.6754,-157.7091)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1952"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-196.0238,461.5213)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1950"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-383.6754,-157.7091)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1946"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-196.0238,461.5213)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1944"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-420.7168,-172.9349)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1942"
+       inkscape:collect="always"
+       x1="399.5"
+       x2="399.5"
+       xlink:href="#linearGradient2353"
+       y1="347"
+       y2="352.55652" />
+    <linearGradient
+       gradientTransform="translate(-383.6754,-157.7091)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1940"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-196.0238,461.5213)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1938"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-251.2903,-103.2925)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1936"
+       inkscape:collect="always"
+       x1="399.5"
+       x2="399.5"
+       xlink:href="#linearGradient2353"
+       y1="347"
+       y2="352.55652" />
+    <linearGradient
+       gradientTransform="translate(-229.1658,-94.19825)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1934"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <linearGradient
+       id="linearGradient2645">
+      <stop
+         id="stop2647"
+         offset="0.0000000"
+         style="stop-color:#848484;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2649"
+         offset="1.0000000"
+         style="stop-color:#fcfcfc;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-41.51423,525.0321)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1932"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <radialGradient
+       cx="264.7041"
+       cy="213.93657"
+       fx="264.7041"
+       fy="213.93657"
+       gradientTransform="matrix(0.494334,0,0,0.375649,-172.8996,7.481892)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1930"
+       inkscape:collect="always"
+       r="166.14122"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <linearGradient
+       id="linearGradient2758">
+      <stop
+         id="stop2760"
+         offset="0.0000000"
+         style="stop-color:#0053c9;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2762"
+         offset="1.0000000"
+         style="stop-color:#00005c;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="372.46002"
+       cy="414.29233"
+       fx="372.46002"
+       fy="414.29233"
+       gradientTransform="matrix(2.778622,-0.379794,0.100223,0.733263,-1012.223,72.24809)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1928"
+       inkscape:collect="always"
+       r="166.14122"
+       xlink:href="#linearGradient2758" />
+    <linearGradient
+       gradientTransform="matrix(0.919394,0,0,0.971931,-294.7019,-81.2203)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1926"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="76.308434"
+       x2="274.80588"
+       xlink:href="#linearGradient2345"
+       y1="182.07208"
+       y2="182.07208" />
+    <linearGradient
+       gradientTransform="translate(-1163.397,-380.32)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2167"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="294.35269"
+       x2="350.59085"
+       xlink:href="#linearGradient2353"
+       y1="499.08817"
+       y2="457.44446" />
+    <radialGradient
+       cx="264.20367"
+       cy="410.05835"
+       fx="264.20367"
+       fy="391.52805"
+       gradientTransform="matrix(1.496663,-4.585751e-7,0,1.740426,-419.6866,-434.5289)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2165"
+       inkscape:collect="always"
+       r="37.271915"
+       xlink:href="#linearGradient2517" />
+    <radialGradient
+       cx="265.16888"
+       cy="405.72955"
+       fx="265.16885"
+       fy="399.27518"
+       gradientTransform="matrix(0.819405,0,0,3.674938,-241.5434,-1224.692)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2163"
+       inkscape:collect="always"
+       r="37.271915"
+       xlink:href="#linearGradient2517" />
+    <linearGradient
+       id="linearGradient2431">
+      <stop
+         id="stop2433"
+         offset="0.0000000"
+         style="stop-color:#c6c6c6;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2439"
+         offset="0.13500696"
+         style="stop-color:#696969;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2441"
+         offset="0.64723927"
+         style="stop-color:#f9f9f9;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2435"
+         offset="1.0000000"
+         style="stop-color:#bcbcbc;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.240904,0,0,0.314882,-116.8408,92.08636)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2161"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="261.875"
+       x2="350.15021"
+       xlink:href="#linearGradient2431"
+       y1="412.14062"
+       y2="412.14062" />
+    <linearGradient
+       gradientTransform="matrix(0.240904,0,0,0.314882,-116.8408,92.08636)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2159"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="281.875"
+       x2="398.8616"
+       xlink:href="#linearGradient2345"
+       y1="412.14062"
+       y2="412.14062" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-1059.579,-241.5343)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2157"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <linearGradient
+       id="linearGradient2445"
+       inkscape:collect="always">
+      <stop
+         id="stop2447"
+         offset="0"
+         style="stop-color:#6c6c6c;stop-opacity:1;" />
+      <stop
+         id="stop2449"
+         offset="1"
+         style="stop-color:#6c6c6c;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="384.29688"
+       cy="557.6026"
+       fx="384.29688"
+       fy="506.29785"
+       gradientTransform="matrix(0.25576,0,0,0.409576,-122.5502,39.28446)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2155"
+       inkscape:collect="always"
+       r="102.42188"
+       xlink:href="#linearGradient2445" />
+    <linearGradient
+       id="linearGradient2353"
+       inkscape:collect="always">
+      <stop
+         id="stop2355"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop2357"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(-910.0464,-593.6827)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2153"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="388.32187"
+       x2="388.32187"
+       xlink:href="#linearGradient2353"
+       y1="472.7373"
+       y2="619.78046" />
+    <radialGradient
+       cx="389.17291"
+       cy="543.08972"
+       fx="389.17291"
+       fy="403.90533"
+       gradientTransform="matrix(0.742761,-1.234706e-6,6.103005e-7,0.367138,-808.7614,-156.2273)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2151"
+       inkscape:collect="always"
+       r="315.71429"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <linearGradient
+       id="linearGradient2517">
+      <stop
+         id="stop2519"
+         offset="0.0000000"
+         style="stop-color:#000000;stop-opacity:0.0000000;" />
+      <stop
+         id="stop2525"
+         offset="0.50000000"
+         style="stop-color:#000000;stop-opacity:0.0000000;" />
+      <stop
+         id="stop2521"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="391.96954"
+       cy="884.11536"
+       fx="391.96954"
+       fy="884.11536"
+       gradientTransform="matrix(-1.498936e-3,0.938851,-0.914363,4.426339e-2,323.3221,-220.0171)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2149"
+       inkscape:collect="always"
+       r="315.71429"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2517" />
+    <linearGradient
+       id="linearGradient2345">
+      <stop
+         id="stop2347"
+         offset="0"
+         style="stop-color:#b8b8b8;stop-opacity:1;" />
+      <stop
+         id="stop2349"
+         offset="1.0000000"
+         style="stop-color:#f1f1f1;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="291.23904"
+       cy="771.20361"
+       fx="291.23898"
+       fy="771.20557"
+       gradientTransform="matrix(0.39013,1.218688e-2,-9.692184e-3,0.726456,-604.7529,-353.2071)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2147"
+       inkscape:collect="always"
+       r="315.71429"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-381.4644,154.7841)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1812"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-618.0684,165.6341)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1810"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <linearGradient
+       id="linearGradient2778"
+       inkscape:collect="always">
+      <stop
+         id="stop2780"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2782"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-483.4399,181.9836)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient1808"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <linearGradient
+       id="linearGradient2978"
+       inkscape:collect="always">
+      <stop
+         id="stop2980"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop2982"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2006">
+      <stop
+         id="stop2007"
+         offset="0.0000000"
+         style="stop-color:#dddddd;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2008"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2002">
+      <stop
+         id="stop2003"
+         offset="0.0000000"
+         style="stop-color:#000000;stop-opacity:0.34901962;" />
+      <stop
+         id="stop2004"
+         offset="0.64999998"
+         style="stop-color:#000000;stop-opacity:0.13402061;" />
+      <stop
+         id="stop2005"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:0.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1806">
+      <stop
+         id="stop1807"
+         offset="0.0000000"
+         style="stop-color:#000000;stop-opacity:0.35051546;" />
+      <stop
+         id="stop3276"
+         offset="0.64999998"
+         style="stop-color:#000000;stop-opacity:0.13402061;" />
+      <stop
+         id="stop1808"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:0.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1133">
+      <stop
+         id="stop1134"
+         offset="0.00000000"
+         style="stop-color:#8bb7df;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1136"
+         offset="0.62500000"
+         style="stop-color:#195d9c;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1135"
+         offset="1.0000000"
+         style="stop-color:#375e82;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1098">
+      <stop
+         id="stop1099"
+         offset="0.00000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1101"
+         offset="0.50000000"
+         style="stop-color:#ffffff;stop-opacity:0.22314049;" />
+      <stop
+         id="stop1102"
+         offset="0.59930235"
+         style="stop-color:#ffffff;stop-opacity:0.00000000;" />
+      <stop
+         id="stop1100"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:0.60330576;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient892">
+      <stop
+         id="stop893"
+         offset="0.00000000"
+         style="stop-color:#ffffff;stop-opacity:0.00000000;" />
+      <stop
+         id="stop894"
+         offset="1"
+         style="stop-color:#fff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient888">
+      <stop
+         id="stop889"
+         offset="0.0000000"
+         style="stop-color:#626262;stop-opacity:1.0000000;" />
+      <stop
+         id="stop890"
+         offset="1"
+         style="stop-color:#fff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1955">
+      <stop
+         id="stop1956"
+         offset="0.0000000"
+         style="stop-color:#30b74b;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1957"
+         offset="1.0000000"
+         style="stop-color:#f2f2f2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1951">
+      <stop
+         id="stop1952"
+         offset="0.0000000"
+         style="stop-color:#305cb7;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1953"
+         offset="1.0000000"
+         style="stop-color:#f2f2f2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1948">
+      <stop
+         id="stop1949"
+         offset="0.0000000"
+         style="stop-color:#30b74b;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1950"
+         offset="1.0000000"
+         style="stop-color:#f2f2f2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1945">
+      <stop
+         id="stop1946"
+         offset="0.0000000"
+         style="stop-color:#9fa4af;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1947"
+         offset="1.0000000"
+         style="stop-color:#f2f2f2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1906">
+      <stop
+         id="stop1907"
+         offset="0.0000000"
+         style="stop-color:#305cb7;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1908"
+         offset="1.0000000"
+         style="stop-color:#f2f2f2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient893">
+      <stop
+         id="stop895"
+         offset="0.0000000"
+         style="stop-color:#c3c3c3;stop-opacity:1.0000000;" />
+      <stop
+         id="stop896"
+         offset="1.0000000"
+         style="stop-color:#f2f2f2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2164">
+      <stop
+         id="stop2165"
+         offset="0.0000000"
+         style="stop-color:#ff8a00;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2166"
+         offset="1.0000000"
+         style="stop-color:#0014ff;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2158">
+      <stop
+         id="stop2159"
+         offset="0.0000000"
+         style="stop-color:#000000;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2160"
+         offset="1"
+         style="stop-color:#fff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.338562,0,0,0.618711,307.6967,127.3268)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4284"
+       x1="499.56372"
+       x2="607.30701"
+       xlink:href="#linearGradient893"
+       y1="113.22289"
+       y2="226.30154" />
+    <linearGradient
+       gradientTransform="matrix(0.50658,0,0,0.564163,320.8861,129.3425)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4283"
+       x1="549.95361"
+       x2="527.01196"
+       xlink:href="#linearGradient1906"
+       y1="400.7225"
+       y2="377.80753" />
+    <linearGradient
+       gradientTransform="matrix(0.50658,0,0,0.564163,336.5016,101.8363)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2740"
+       x1="549.95361"
+       x2="527.01196"
+       xlink:href="#linearGradient1945"
+       y1="400.7225"
+       y2="377.80753" />
+    <linearGradient
+       gradientTransform="matrix(0.50658,0,0,0.564163,387.4581,77.02887)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1506"
+       x1="549.95361"
+       x2="527.01196"
+       xlink:href="#linearGradient1948"
+       y1="400.7225"
+       y2="377.80753" />
+    <linearGradient
+       id="linearGradient1404"
+       x1="0.53169012"
+       x2="0.54577464"
+       xlink:href="#linearGradient892"
+       y1="0.2888889"
+       y2="1.1" />
+    <radialGradient
+       cx="0.47887325"
+       cy="0.53333336"
+       fx="0.47535211"
+       fy="0.26666668"
+       id="radialGradient1315"
+       r="0.41197181"
+       xlink:href="#linearGradient1317" />
+    <linearGradient
+       id="linearGradient1171"
+       x1="0.83050847"
+       x2="0.56355929"
+       xlink:href="#linearGradient902"
+       y1="0.578125"
+       y2="0.3671875" />
+    <linearGradient
+       id="linearGradient1169"
+       x1="1.478022"
+       x2="-0.13028169"
+       xlink:href="#linearGradient893"
+       y1="2.921875"
+       y2="-0.26732674" />
+    <linearGradient
+       id="linearGradient1167"
+       x1="1.6111112"
+       x2="-0.083333336"
+       xlink:href="#linearGradient888"
+       y1="3.0703125"
+       y2="0.046875" />
+    <linearGradient
+       id="linearGradient1166"
+       x1="0.85858583"
+       x2="0.50480771"
+       xlink:href="#linearGradient1317"
+       y1="-0.52941179"
+       y2="0.86503065" />
+    <linearGradient
+       id="linearGradient1157"
+       x1="1.5528169"
+       x2="-1.2077465"
+       xlink:href="#linearGradient888"
+       y1="3.3265307"
+       y2="-0.48979592" />
+    <linearGradient
+       id="linearGradient1156"
+       x1="0.48260871"
+       x2="0.48260871"
+       xlink:href="#linearGradient888"
+       y1="-0.40000001"
+       y2="1.875" />
+    <linearGradient
+       id="linearGradient1150"
+       x1="0.25221238"
+       x2="-0.57522124"
+       xlink:href="#linearGradient892"
+       y1="0.578125"
+       y2="1.4765625" />
+    <linearGradient
+       id="linearGradient1148"
+       x1="0.23245615"
+       x2="1.0789474"
+       xlink:href="#linearGradient892"
+       y1="0.15625"
+       y2="-0.6484375" />
+    <linearGradient
+       id="linearGradient1146"
+       x1="0.51351351"
+       x2="-0.076576576"
+       xlink:href="#linearGradient892"
+       y1="0.5546875"
+       y2="1.1875" />
+    <linearGradient
+       id="linearGradient1144"
+       x1="0.52941179"
+       x2="0.53333336"
+       xlink:href="#linearGradient892"
+       y1="0.26634732"
+       y2="1.3833333" />
+    <linearGradient
+       id="linearGradient1140"
+       x1="0.73913044"
+       x2="0.66666669"
+       xlink:href="#linearGradient888"
+       y1="-1.0735294"
+       y2="1.3" />
+    <radialGradient
+       cx="0.68556702"
+       cy="0.3828125"
+       fx="0.93298972"
+       fy="0.03125"
+       id="radialGradient1132"
+       r="1.402149"
+       xlink:href="#linearGradient1133" />
+    <linearGradient
+       id="linearGradient905"
+       x1="-1.5389611"
+       x2="1.0909091"
+       xlink:href="#linearGradient888"
+       y1="2.7890625"
+       y2="-0.1953125" />
+    <linearGradient
+       id="linearGradient891"
+       x1="1.3485916"
+       x2="0.024647888"
+       xlink:href="#linearGradient888"
+       y1="-0.85185188"
+       y2="1.0899471" />
+    <linearGradient
+       id="linearGradient902">
+      <stop
+         id="stop903"
+         offset="0.0000000"
+         style="stop-color:#d22235;stop-opacity:1.0000000;" />
+      <stop
+         id="stop904"
+         offset="1.0000000"
+         style="stop-color:#f1f1f1;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1317">
+      <stop
+         id="stop1318"
+         offset="0.00000000"
+         style="stop-color:#000000;stop-opacity:0.52892560;" />
+      <stop
+         id="stop1320"
+         offset="0.50000000"
+         style="stop-color:#000000;stop-opacity:0.17355372;" />
+      <stop
+         id="stop1319"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:0.00000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="0.50522649"
+       cy="0.54545456"
+       fx="0.51611376"
+       fy="0.56148684"
+       id="radialGradient1977"
+       r="0.46065515"
+       xlink:href="#linearGradient1806" />
+    <linearGradient
+       gradientTransform="matrix(0.903456,0,0,0.231856,323.9662,148.2107)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1505"
+       x1="247.08249"
+       x2="251.60844"
+       xlink:href="#linearGradient2006"
+       y1="515.35455"
+       y2="536" />
+    <linearGradient
+       gradientTransform="matrix(0.50658,0,0,0.564163,345.7606,77.02887)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1170"
+       x1="549.95361"
+       x2="527.01196"
+       xlink:href="#linearGradient902"
+       y1="400.7225"
+       y2="377.80753" />
+    <radialGradient
+       id="radialGradient1316"
+       xlink:href="#linearGradient1955" />
+    <linearGradient
+       gradientTransform="matrix(0.808421,0,0,0.259113,249.3345,139.5331)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1141"
+       x1="218.48817"
+       x2="263.56339"
+       xlink:href="#linearGradient893"
+       y1="531.83948"
+       y2="576.43158" />
+    <linearGradient
+       gradientTransform="matrix(0.509618,0,0,0.411036,249.3345,139.5331)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1138"
+       x1="357.26105"
+       x2="407.04617"
+       xlink:href="#linearGradient1133"
+       y1="272.20053"
+       y2="321.45209" />
+    <linearGradient
+       gradientTransform="matrix(0.809332,0,0,0.258821,249.3345,139.5331)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient901"
+       x1="238.53204"
+       x2="242.98486"
+       xlink:href="#linearGradient893"
+       y1="518.94507"
+       y2="532.19342" />
+    <linearGradient
+       gradientTransform="matrix(0.903456,0,0,0.231856,307.6967,127.3268)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2210"
+       inkscape:collect="always"
+       x1="204.41452"
+       x2="211.79778"
+       xlink:href="#linearGradient2006"
+       y1="309.29977"
+       y2="342.979" />
+    <linearGradient
+       gradientTransform="matrix(0.903456,0,0,0.231856,323.9662,148.2107)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2212"
+       inkscape:collect="always"
+       x1="247.08249"
+       x2="251.60844"
+       xlink:href="#linearGradient2006"
+       y1="485.13104"
+       y2="505.77646" />
+    <linearGradient
+       gradientTransform="matrix(0.509618,0,0,0.411036,249.3345,139.5331)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2214"
+       inkscape:collect="always"
+       x1="352.29379"
+       x2="412.01343"
+       xlink:href="#linearGradient893"
+       y1="267.32782"
+       y2="326.40744" />
+    <radialGradient
+       cx="212.32999"
+       cy="392.48157"
+       fx="212.32999"
+       fy="392.48157"
+       gradientTransform="matrix(1.151244,0,0,1.185109,-309.5196,-146.9647)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2986"
+       inkscape:collect="always"
+       r="12.38848"
+       xlink:href="#linearGradient2978" />
+    <radialGradient
+       cx="212.32999"
+       cy="392.48157"
+       fx="212.32999"
+       fy="392.48157"
+       gradientTransform="matrix(1.151244,0,0,1.185109,-426.4725,-147.8079)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3022"
+       inkscape:collect="always"
+       r="12.38848"
+       xlink:href="#linearGradient2978" />
+    <linearGradient
+       gradientTransform="matrix(4.535071,0,0,1.093269,-678.7315,-248.9155)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3039"
+       inkscape:collect="always"
+       x1="247.08249"
+       x2="251.60844"
+       xlink:href="#linearGradient2006"
+       y1="515.35455"
+       y2="536" />
+    <linearGradient
+       gradientTransform="matrix(2.036709,0,0,0.490989,-86.22715,70.67803)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3042"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(2.036709,0,0,0.490989,-86.22715,70.67804)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3055"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(1.041781,0,0,1.788372,-212.6957,111.8135)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3058"
+       inkscape:collect="always"
+       x1="499.56372"
+       x2="607.30701"
+       xlink:href="#linearGradient893"
+       y1="113.22289"
+       y2="226.30154" />
+    <linearGradient
+       gradientTransform="matrix(0.809332,0,0,0.258821,231.4484,142.1903)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3060"
+       inkscape:collect="always"
+       x1="238.53204"
+       x2="242.98486"
+       xlink:href="#linearGradient893"
+       y1="518.94507"
+       y2="532.19342" />
+    <linearGradient
+       gradientTransform="matrix(0.509618,0,0,0.411036,231.4484,142.1903)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3062"
+       inkscape:collect="always"
+       x1="352.29379"
+       x2="412.01343"
+       xlink:href="#linearGradient893"
+       y1="267.32782"
+       y2="326.40744" />
+    <linearGradient
+       gradientTransform="matrix(0.509618,0,0,0.411036,231.4484,142.1903)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3064"
+       inkscape:collect="always"
+       x1="357.26105"
+       x2="407.04617"
+       xlink:href="#linearGradient1133"
+       y1="272.20053"
+       y2="321.45209" />
+    <linearGradient
+       gradientTransform="matrix(0.808421,0,0,0.259113,231.4484,142.1903)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3066"
+       inkscape:collect="always"
+       x1="218.48817"
+       x2="263.56339"
+       xlink:href="#linearGradient893"
+       y1="531.83948"
+       y2="576.43158" />
+    <linearGradient
+       gradientTransform="translate(-420.7168,-172.9349)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4067"
+       inkscape:collect="always"
+       x1="395"
+       x2="404"
+       xlink:href="#linearGradient1948"
+       y1="351.5"
+       y2="351.5" />
+    <linearGradient
+       gradientTransform="matrix(4.058024,0,0,1.221794,-374.2083,-213.0407)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4070"
+       inkscape:collect="always"
+       x1="218.48817"
+       x2="263.56339"
+       xlink:href="#linearGradient893"
+       y1="531.83948"
+       y2="576.43158" />
+    <linearGradient
+       gradientTransform="matrix(2.558125,0,0,1.938156,-374.2083,-213.0407)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4073"
+       inkscape:collect="always"
+       x1="357.26105"
+       x2="407.04617"
+       xlink:href="#linearGradient1133"
+       y1="272.20053"
+       y2="321.45209" />
+    <linearGradient
+       gradientTransform="matrix(2.558125,0,0,1.938156,-374.2083,-213.0407)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4076"
+       inkscape:collect="always"
+       x1="352.29379"
+       x2="412.01343"
+       xlink:href="#linearGradient893"
+       y1="267.32782"
+       y2="326.40744" />
+    <linearGradient
+       gradientTransform="matrix(4.062597,0,0,1.220417,-374.2083,-213.0407)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4079"
+       inkscape:collect="always"
+       x1="238.53204"
+       x2="242.98486"
+       xlink:href="#linearGradient893"
+       y1="518.94507"
+       y2="532.19342" />
+    <linearGradient
+       gradientTransform="matrix(4.058024,0,0,1.221794,-425.4907,-181.4881)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4093"
+       inkscape:collect="always"
+       x1="218.48817"
+       x2="263.56339"
+       xlink:href="#linearGradient893"
+       y1="531.83948"
+       y2="576.43158" />
+    <radialGradient
+       cx="138.17368"
+       cy="775.61066"
+       fx="138.17368"
+       fy="775.61066"
+       gradientTransform="matrix(1.928704,-0.263623,6.956707e-2,0.508974,0,0)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4250"
+       inkscape:collect="always"
+       r="237.48875"
+       xlink:href="#linearGradient1133" />
+    <radialGradient
+       cx="264.7041"
+       cy="213.93657"
+       fx="264.7041"
+       fy="213.93657"
+       gradientTransform="matrix(0.469503,0,0,0.356779,131.7207,121.0368)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4252"
+       inkscape:collect="always"
+       r="166.14122"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <linearGradient
+       gradientTransform="matrix(0.873211,0,0,0.923109,16.03677,36.79026)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4255"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="76.308434"
+       x2="274.80588"
+       xlink:href="#linearGradient2345"
+       y1="182.07208"
+       y2="182.07208" />
+    <linearGradient
+       gradientTransform="matrix(2.036713,0,0,0.49099,-86.22709,70.67699)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4315"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(2.036713,0,0,0.49099,-86.22708,70.67699)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4319"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-585.6819,262.4441)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4339"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-748.7828,255.8277)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4341"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-462.1398,251.437)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4343"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <radialGradient
+       cx="291.23904"
+       cy="771.20361"
+       fx="291.23898"
+       fy="771.20557"
+       gradientTransform="matrix(0.39013,1.218688e-2,-9.692184e-3,0.726456,-796.5437,-43.69586)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4345"
+       inkscape:collect="always"
+       r="315.71429"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <radialGradient
+       cx="391.96954"
+       cy="884.11536"
+       fx="391.96954"
+       fy="884.11536"
+       gradientTransform="matrix(-1.498936e-3,0.938851,-0.914363,4.426339e-2,131.5313,89.49414)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4347"
+       inkscape:collect="always"
+       r="315.71429"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2517" />
+    <radialGradient
+       cx="389.17291"
+       cy="543.08972"
+       fx="389.17291"
+       fy="403.90533"
+       gradientTransform="matrix(0.742761,-1.234706e-6,6.103005e-7,0.367138,-1001.226,197.2049)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4349"
+       inkscape:collect="always"
+       r="315.71429"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <linearGradient
+       gradientTransform="translate(-1102.511,-240.2505)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4351"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="388.32187"
+       x2="388.32187"
+       xlink:href="#linearGradient2353"
+       y1="472.7373"
+       y2="619.78046" />
+    <radialGradient
+       cx="384.29688"
+       cy="557.6026"
+       fx="384.29688"
+       fy="506.29785"
+       gradientTransform="matrix(0.25576,0,0,0.409576,-181.8235,110.5778)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4353"
+       inkscape:collect="always"
+       r="102.42188"
+       xlink:href="#linearGradient2445" />
+    <radialGradient
+       cx="262"
+       cy="424"
+       fx="262"
+       fy="424"
+       gradientTransform="matrix(1,0,0,0.252033,-1283.668,91.05558)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4355"
+       inkscape:collect="always"
+       r="246"
+       xlink:href="#linearGradient2778" />
+    <linearGradient
+       gradientTransform="matrix(0.240904,0,0,0.314882,-176.1141,163.3797)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4357"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="281.875"
+       x2="398.8616"
+       xlink:href="#linearGradient2345"
+       y1="412.14062"
+       y2="412.14062" />
+    <linearGradient
+       gradientTransform="matrix(0.240904,0,0,0.314882,-176.1141,163.3797)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4359"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="261.875"
+       x2="350.15021"
+       xlink:href="#linearGradient2431"
+       y1="412.14062"
+       y2="412.14062" />
+    <radialGradient
+       cx="265.16888"
+       cy="405.72955"
+       fx="265.16885"
+       fy="399.27518"
+       gradientTransform="matrix(0.819405,0,0,3.674938,-300.8167,-1153.399)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4361"
+       inkscape:collect="always"
+       r="37.271915"
+       xlink:href="#linearGradient2517" />
+    <radialGradient
+       cx="264.20367"
+       cy="410.05835"
+       fx="264.20367"
+       fy="391.52805"
+       gradientTransform="matrix(1.496663,-4.585751e-7,0,1.740426,-478.9599,-363.2356)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4363"
+       inkscape:collect="always"
+       r="37.271915"
+       xlink:href="#linearGradient2517" />
+    <linearGradient
+       gradientTransform="translate(-1409.443,-153.9073)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4365"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="294.35269"
+       x2="350.59085"
+       xlink:href="#linearGradient2353"
+       y1="499.08817"
+       y2="457.44446" />
+    <linearGradient
+       gradientTransform="matrix(0.873211,0,0,0.923109,-45.57889,108.0836)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4367"
+       inkscape:collect="always"
+       spreadMethod="reflect"
+       x1="76.308434"
+       x2="274.80588"
+       xlink:href="#linearGradient2345"
+       y1="182.07208"
+       y2="182.07208" />
+    <radialGradient
+       cx="138.17368"
+       cy="775.61066"
+       fx="138.17368"
+       fy="775.61066"
+       gradientTransform="matrix(1.928704,-0.263623,6.956707e-2,0.508974,-61.61566,71.2933)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4369"
+       inkscape:collect="always"
+       r="237.48875"
+       xlink:href="#linearGradient1133" />
+    <radialGradient
+       cx="264.7041"
+       cy="213.93657"
+       fx="264.7041"
+       fy="213.93657"
+       gradientTransform="matrix(0.469503,0,0,0.356779,70.10503,192.3301)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4371"
+       inkscape:collect="always"
+       r="166.14122"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2345" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-89.98021,581.1104)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4373"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-277.6317,-38.11998)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4375"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <linearGradient
+       gradientTransform="translate(-304.4354,-41.80024)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4377"
+       inkscape:collect="always"
+       x1="399.5"
+       x2="399.5"
+       xlink:href="#linearGradient2353"
+       y1="347"
+       y2="352.55652" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-277.1668,555.409)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4379"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-464.8184,-63.82142)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4381"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <linearGradient
+       gradientTransform="translate(-509.6936,-69.98301)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4383"
+       inkscape:collect="always"
+       x1="399.5"
+       x2="399.5"
+       xlink:href="#linearGradient2353"
+       y1="347"
+       y2="352.55652" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-277.1668,555.409)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4385"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-464.8184,-63.82142)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4387"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <linearGradient
+       gradientTransform="translate(-509.6936,-69.98301)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4389"
+       inkscape:collect="always"
+       x1="395"
+       x2="404"
+       xlink:href="#linearGradient1948"
+       y1="351.5"
+       y2="351.5" />
+    <radialGradient
+       cx="415.09686"
+       cy="333.86954"
+       fx="415.09689"
+       fy="333.86954"
+       gradientTransform="matrix(0,-0.660027,0.618809,0,-277.1668,555.409)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4391"
+       inkscape:collect="always"
+       r="5.9499998"
+       spreadMethod="reflect"
+       xlink:href="#linearGradient2645" />
+    <linearGradient
+       gradientTransform="translate(-464.8184,-63.82142)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4393"
+       inkscape:collect="always"
+       spreadMethod="pad"
+       x1="396.03845"
+       x2="400.10574"
+       xlink:href="#linearGradient2645"
+       y1="347.95197"
+       y2="354.875" />
+    <linearGradient
+       gradientTransform="translate(-509.6936,-69.98301)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4395"
+       inkscape:collect="always"
+       x1="399.5"
+       x2="399.5"
+       xlink:href="#linearGradient2353"
+       y1="347"
+       y2="352.55652" />
+    <radialGradient
+       cx="219.30873"
+       cy="77.963234"
+       fx="219.30873"
+       fy="77.963234"
+       gradientTransform="matrix(2.665527,0,0,1.3098,-812.4959,-103.7983)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4397"
+       inkscape:collect="always"
+       r="164.14062"
+       xlink:href="#linearGradient2353" />
+    <linearGradient
+       gradientTransform="matrix(2.036713,0,0,0.49099,9e-5,-1.02e-3)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2007"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(2.036713,0,0,0.49099,8e-5,-1.02e-3)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2010"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(2.036709,0,0,0.490989,2e-5,2e-5)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2016"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(2.036709,0,0,0.490989,2e-5,3e-5)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2025"
+       inkscape:collect="always"
+       x1="153.74297"
+       x2="154.7247"
+       xlink:href="#linearGradient2006"
+       y1="600.22687"
+       y2="680.078" />
+    <linearGradient
+       gradientTransform="matrix(1.041781,0,0,1.788372,-126.4685,41.13549)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2028"
+       inkscape:collect="always"
+       x1="499.56372"
+       x2="607.30701"
+       xlink:href="#linearGradient893"
+       y1="113.22289"
+       y2="226.30154" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     guidetolerance="5.0000000mm"
+     id="base"
+     inkscape:current-layer="svg1"
+     inkscape:cx="489.50556"
+     inkscape:cy="352.31313"
+     inkscape:grid-bbox="false"
+     inkscape:grid-points="false"
+     inkscape:guide-bbox="true"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="1048"
+     inkscape:window-width="1400"
+     inkscape:window-x="90"
+     inkscape:window-y="27"
+     inkscape:zoom="0.70743363"
+     pagecolor="#ffffff"
+     showborder="true"
+     showgrid="false"
+     showguides="true" />
+  <g
+     id="g2449"
+     transform="translate(-194.34501,-114.6196)">
+    <g
+       id="g2438">
+      <rect
+         height="228.46658"
+         id="rect1203"
+         rx="4.251966"
+         ry="4.2519712"
+         style="fill:url(#linearGradient2028);fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:5.82243204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="226.40434"
+         x="197.25623"
+         y="269.69244" />
+      <rect
+         height="40.430416"
+         id="rect1826"
+         rx="4.251966"
+         ry="4.2519712"
+         style="fill:url(#linearGradient2025);fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:7.80964851;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="212.26678"
+         x="206.11215"
+         y="289.9342" />
+      <rect
+         height="5.4409008"
+         id="rect1958"
+         rx="0.70866096"
+         ry="0.70866197"
+         style="fill:#ababab;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         width="183.46681"
+         x="218.5329"
+         y="478.04794" />
+      <rect
+         height="5.4409008"
+         id="rect1959"
+         rx="0.70866096"
+         ry="0.70866197"
+         style="fill:#ababab;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         width="183.46681"
+         x="218.5329"
+         y="487.80948" />
+      <rect
+         height="40.430408"
+         id="rect2009"
+         rx="4.251966"
+         ry="4.2519717"
+         style="fill:url(#linearGradient2016);fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:7.80964851;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="212.2668"
+         x="204.77103"
+         y="344.73972" />
+      <rect
+         height="7.8504786"
+         id="rect4313"
+         rx="4.251966"
+         ry="4.2519717"
+         style="fill:url(#linearGradient2010);fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:1.08576119;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="21.130013"
+         x="198.8456"
+         y="460.59012" />
+      <rect
+         height="7.8504786"
+         id="rect4317"
+         rx="4.251966"
+         ry="4.2519717"
+         style="fill:url(#linearGradient2007);fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:1.08576119;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="21.130013"
+         x="199.51608"
+         y="473.65097" />
+      <path
+         d="M 549.06935,389.3613 A 10.491771,10.491771 0 1 1 528.0858,389.3613 A 10.491771,10.491771 0 1 1 549.06935,389.3613 z"
+         id="path4321"
+         sodipodi:cx="538.57758"
+         sodipodi:cy="389.3613"
+         sodipodi:rx="10.491771"
+         sodipodi:ry="10.491771"
+         sodipodi:type="arc"
+         style="fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#9c9c9c;stroke-width:3.66449261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.306764,0,0,0.26995,76.37752,379.8462)" />
+      <path
+         d="M 549.06935,389.3613 A 10.491771,10.491771 0 1 1 528.0858,389.3613 A 10.491771,10.491771 0 1 1 549.06935,389.3613 z"
+         id="path4325"
+         sodipodi:cx="538.57758"
+         sodipodi:cy="389.3613"
+         sodipodi:rx="10.491771"
+         sodipodi:ry="10.491771"
+         sodipodi:type="arc"
+         style="fill:#ffe100;fill-opacity:1;fill-rule:evenodd;stroke:#9c9c9c;stroke-width:3.66449261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.306764,0,0,0.26995,88.43595,380.0984)" />
+    </g>
+    <g
+       id="g2380">
+      <path
+         d="M 549.06935,389.3613 A 10.491771,10.491771 0 1 1 528.0858,389.3613 A 10.491771,10.491771 0 1 1 549.06935,389.3613 z"
+         id="path1831"
+         sodipodi:cx="538.57758"
+         sodipodi:cy="389.3613"
+         sodipodi:rx="10.491771"
+         sodipodi:ry="10.491771"
+         sodipodi:type="arc"
+         style="fill:url(#linearGradient4283);fill-opacity:1;fill-rule:evenodd;stroke:#9c9c9c;stroke-width:3.66449261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(1.446315,0,0,1.271037,-407.6848,-71.55259)" />
+      <path
+         d="M 549.06935,389.3613 A 10.491771,10.491771 0 1 1 528.0858,389.3613 A 10.491771,10.491771 0 1 1 549.06935,389.3613 z"
+         id="path1940"
+         sodipodi:cx="538.57758"
+         sodipodi:cy="389.3613"
+         sodipodi:rx="10.491771"
+         sodipodi:ry="10.491771"
+         sodipodi:type="arc"
+         style="fill:url(#linearGradient2740);fill-opacity:1;fill-rule:evenodd;stroke:#9c9c9c;stroke-width:3.66449261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(1.126517,0,0,0.991321,-235.3613,74.02029)" />
+      <path
+         d="M 549.06935,389.3613 A 10.491771,10.491771 0 1 1 528.0858,389.3613 A 10.491771,10.491771 0 1 1 549.06935,389.3613 z"
+         id="path1942"
+         sodipodi:cx="538.57758"
+         sodipodi:cy="389.3613"
+         sodipodi:rx="10.491771"
+         sodipodi:ry="10.491771"
+         sodipodi:type="arc"
+         style="fill:url(#linearGradient1506);fill-opacity:1;fill-rule:evenodd;stroke:#9c9c9c;stroke-width:3.66449261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.788639,0,0,0.692658,-86.38143,183.2308)" />
+      <path
+         d="M 549.06935,389.3613 A 10.491771,10.491771 0 1 1 528.0858,389.3613 A 10.491771,10.491771 0 1 1 549.06935,389.3613 z"
+         id="path1954"
+         sodipodi:cx="538.57758"
+         sodipodi:cy="389.3613"
+         sodipodi:rx="10.491771"
+         sodipodi:ry="10.491771"
+         sodipodi:type="arc"
+         style="fill:url(#linearGradient1170);fill-opacity:1;fill-rule:evenodd;stroke:#9c9c9c;stroke-width:3.66449261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.788639,0,0,0.692658,-19.73543,183.2308)" />
+      <path
+         d="M 228.48746,385.16458 A 12.123824,11.657523 0 1 1 204.23981,385.16458 A 12.123824,11.657523 0 1 1 228.48746,385.16458 z"
+         id="path2216"
+         sodipodi:cx="216.36363"
+         sodipodi:cy="385.16458"
+         sodipodi:rx="12.123824"
+         sodipodi:ry="11.657523"
+         sodipodi:type="arc"
+         style="opacity:0.80097088;fill:#d67ac9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
+         transform="matrix(1.09075,0,0,1.020442,135.1562,31.14919)" />
+      <path
+         d="M 228.48746,385.16458 A 12.123824,11.657523 0 1 1 204.23981,385.16458 A 12.123824,11.657523 0 1 1 228.48746,385.16458 z"
+         id="path2218"
+         sodipodi:cx="216.36363"
+         sodipodi:cy="385.16458"
+         sodipodi:rx="12.123824"
+         sodipodi:ry="11.657523"
+         sodipodi:type="arc"
+         style="opacity:0.91262135;fill:#17f076;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient2986);stroke-opacity:1"
+         transform="matrix(0.571649,0,0,0.534802,214.7457,246.6228)" />
+      <path
+         d="M 228.48746,385.16458 A 12.123824,11.657523 0 1 1 204.23981,385.16458 A 12.123824,11.657523 0 1 1 228.48746,385.16458 z"
+         id="path3020"
+         sodipodi:cx="216.36363"
+         sodipodi:cy="385.16458"
+         sodipodi:rx="12.123824"
+         sodipodi:ry="11.657523"
+         sodipodi:type="arc"
+         style="opacity:0.91262135;fill:#17e8f0;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient3022);stroke-opacity:1"
+         transform="matrix(0.571649,0,0,0.534802,281.6016,247.0738)" />
+      <rect
+         height="7.8504786"
+         id="rect4327"
+         rx="4.251966"
+         ry="4.2519717"
+         style="fill:#53507d;fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:1.08576119;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="21.130013"
+         x="383.68591"
+         y="316.18457" />
+      <rect
+         height="7.8504786"
+         id="rect4337"
+         rx="4.251966"
+         ry="4.2519717"
+         style="fill:#53507d;fill-opacity:1;fill-rule:evenodd;stroke:#c1c1c1;stroke-width:1.08576119;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         width="21.130013"
+         x="384.9165"
+         y="372.79108" />
+      <g
+         id="g4276"
+         transform="translate(61.61566,-71.2933)">
+        <path
+           d="M 508,424 A 246,62 0 1 1 16,424 A 246,62 0 1 1 508,424 z"
+           id="path2868"
+           sodipodi:cx="262"
+           sodipodi:cy="424"
+           sodipodi:rx="246"
+           sodipodi:ry="62"
+           sodipodi:type="arc"
+           style="opacity:0.3;fill:url(#radialGradient4339);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+           transform="matrix(0.602645,0,0,0.886066,389.4498,131.8566)" />
+        <path
+           d="M 508,424 A 246,62 0 1 1 16,424 A 246,62 0 1 1 508,424 z"
+           id="path2776"
+           sodipodi:cx="262"
+           sodipodi:cy="424"
+           sodipodi:rx="246"
+           sodipodi:ry="62"
+           sodipodi:type="arc"
+           style="opacity:0.4;fill:url(#radialGradient4341);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+           transform="matrix(0.471376,0,0,0.790447,423.8423,185.4413)" />
+        <path
+           d="M 508,424 A 246,62 0 1 1 16,424 A 246,62 0 1 1 508,424 z"
+           id="path2872"
+           sodipodi:cx="262"
+           sodipodi:cy="424"
+           sodipodi:rx="246"
+           sodipodi:ry="62"
+           sodipodi:type="arc"
+           style="opacity:0.3;fill:url(#radialGradient4343);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+           transform="matrix(0.763748,0,0,0.737622,347.2408,198.354)" />
+        <g
+           id="g2169"
+           transform="translate(291.3426,119.7559)">
+          <g
+             id="g1625"
+             transform="matrix(0.984342,0,0,1.071356,4.008532,-36.34558)">
+            <path
+               d="M 700,543.79077 A 315.71429,151.42857 0 1 1 68.571411,543.79077 A 315.71429,151.42857 0 1 1 700,543.79077 z"
+               id="path2453"
+               sodipodi:cx="384.28571"
+               sodipodi:cy="543.79077"
+               sodipodi:rx="315.71429"
+               sodipodi:ry="151.42857"
+               sodipodi:type="arc"
+               style="fill:url(#radialGradient4345);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.5162499;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(0.333557,0,4.450198e-3,0.215,125.3993,284.844)" />
+            <path
+               d="M 700,543.79077 A 315.71429,151.42857 0 1 1 68.571411,543.79077 A 315.71429,151.42857 0 1 1 700,543.79077 z"
+               id="path2543"
+               sodipodi:cx="384.28571"
+               sodipodi:cy="543.79077"
+               sodipodi:rx="315.71429"
+               sodipodi:ry="151.42857"
+               sodipodi:type="arc"
+               style="opacity:0.4954545;fill:url(#radialGradient4347);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.5162499;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(0.333557,0,4.450198e-3,0.215,125.3993,284.844)" />
+            <path
+               d="M 700,543.79077 A 315.71429,151.42857 0 1 1 68.571411,543.79077 A 315.71429,151.42857 0 1 1 700,543.79077 z"
+               id="path1288"
+               sodipodi:cx="384.28571"
+               sodipodi:cy="543.79077"
+               sodipodi:rx="315.71429"
+               sodipodi:ry="151.42857"
+               sodipodi:type="arc"
+               style="fill:url(#radialGradient4349);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.5162499;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(0.325233,0,0,0.188282,131.0183,296.1396)" />
+            <path
+               d="M 147.375,456.5 C 140.35627,460.52461 133.67255,464.6686 127.65625,469 C 96.108566,491.71257 79.53125,517.42035 79.53125,543.78125 C 79.53125,579.39405 110.6255,614.49733 165.8125,640.96875 C 220.9995,667.44017 298.56631,684.24999 384.28125,684.25 C 469.99619,684.25 547.563,667.44017 602.75,640.96875 C 657.937,614.49733 689.03125,579.39405 689.03125,543.78125 C 689.03125,517.43064 672.46281,491.73699 640.9375,469.03125 C 634.905,464.68642 628.19728,460.53625 621.15625,4 [...]
+               id="path2343"
+               inkscape:original="M 257.18750 405.25000 C 146.20069 428.73051 68.562500 481.89392 68.562500 543.78125 C 68.562500 627.36982 210.00696 695.21873 384.28125 695.21875 C 558.55554 695.21875 700.00000 627.36982 700.00000 543.78125 C 700.00000 481.91769 622.41850 428.77560 511.50000 405.28125 C 580.06546 424.87108 625.87500 459.70370 625.87500 499.50000 C 625.87500 560.76298 517.64517 610.50000 384.28125 610.50000 C 250.91733 610.49999 142.68750 560.76298 142.68750 499.50000 C  [...]
+               inkscape:radius="-10.959099"
+               sodipodi:type="inkscape:offset"
+               style="fill:url(#linearGradient4351);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.5162499;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(0.325233,0,0,0.188282,131.0183,296.1396)" />
+          </g>
+          <g
+             id="g2457"
+             transform="matrix(1.039518,0,0,1,-10.11656,4.000039)">
+            <path
+               d="M 241.28295,426.93409 L 231.64682,367.45091 C 231.45732,366.60462 231.33063,365.74551 231.33063,364.86296 C 231.33063,355.5046 242.38068,347.90855 256.00061,347.90855 C 269.62055,347.90855 280.67812,355.5046 280.67812,364.86296 C 280.67812,365.48214 280.62186,366.09117 280.52755,366.69322 L 270.89142,426.93409 L 241.28295,426.93409 z"
+               id="path2443"
+               sodipodi:nodetypes="cccccccc"
+               style="opacity:0.83181817;fill:url(#radialGradient4353);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.29639006;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+            <path
+               d="M 508,424 A 246,62 0 1 1 16,424 A 246,62 0 1 1 508,424 z"
+               id="path1658"
+               sodipodi:cx="262"
+               sodipodi:cy="424"
+               sodipodi:rx="246"
+               sodipodi:ry="62"
+               sodipodi:type="arc"
+               style="opacity:0.2;fill:url(#radialGradient4355);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(0.264508,0,0,0.214358,186.7029,279.178)" />
+            <path
+               d="M 241.28295,302.10518 L 231.64682,361.58837 C 231.45732,362.43466 231.33063,363.29375 231.33063,364.1763 C 231.33063,373.53467 242.38068,381.13075 256.00061,381.13073 C 269.62055,381.13073 280.67812,373.53467 280.67812,364.1763 C 280.67812,363.55714 280.62186,362.94809 280.52755,362.34605 L 270.89142,302.10518 L 241.28295,302.10518 z"
+               id="path2051"
+               sodipodi:nodetypes="cccccccc"
+               style="fill:url(#linearGradient4357);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.29639006;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+            <path
+               d="M 241.28295,302.10518 L 231.64682,361.58837 C 231.45732,362.43466 231.33063,363.29375 231.33063,364.1763 C 231.33063,373.53467 242.38068,381.13075 256.00061,381.13073 C 269.62055,381.13073 280.67812,373.53467 280.67812,364.1763 C 280.67812,363.55714 280.62186,362.94809 280.52755,362.34605 L 270.89142,302.10518 L 241.28295,302.10518 z"
+               id="path2429"
+               sodipodi:nodetypes="cccccccc"
+               style="opacity:0.32727272;fill:url(#linearGradient4359);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.29639006;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+            <path
+               d="M 241.28295,302.10518 L 231.64682,361.58837 C 231.45732,362.43466 231.33063,363.29375 231.33063,364.1763 C 231.33063,373.53467 242.38068,381.13075 256.00061,381.13073 C 269.62055,381.13073 280.67812,373.53467 280.67812,364.1763 C 280.67812,363.55714 280.62186,362.94809 280.52755,362.34605 L 270.89142,302.10518 L 241.28295,302.10518 z"
+               id="path2515"
+               sodipodi:nodetypes="cccccccc"
+               style="opacity:0.5;fill:url(#radialGradient4361);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.29639006;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+            <path
+               d="M 241.28295,302.10518 L 231.64682,361.58837 C 231.45732,362.43466 231.33063,363.29375 231.33063,364.1763 C 231.33063,373.53467 242.38068,381.13075 256.00061,381.13073 C 269.62055,381.13073 280.67812,373.53467 280.67812,364.1763 C 280.67812,363.55714 280.62186,362.94809 280.52755,362.34605 L 270.89142,302.10518 L 241.28295,302.10518 z"
+               id="path2551"
+               sodipodi:nodetypes="cccccccc"
+               style="opacity:0.3;fill:url(#radialGradient4363);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.29639006;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+            <path
+               d="M 299.4375,434.46875 L 290.40625,477.09375 C 290.36084,477.27273 290.30872,477.44994 290.25,477.625 C 289.59242,479.87179 289.25,481.90099 289.25,483.78125 C 289.25,494.84741 298.14485,506.28529 315.3125,515.3125 C 332.48015,524.33971 357.06163,530.25 384.28125,530.25 C 386.9075,530.25 389.45847,530.10689 392.03125,530 C 347.60181,514.24984 312.90184,478.79671 299.4375,434.46875 z"
+               id="path2425"
+               inkscape:original="M 300.75000 392.56250 L 283.18750 475.56250 C 282.40090 478.25014 281.87500 480.97848 281.87500 483.78125 C 281.87500 513.50150 327.74423 537.62501 384.28125 537.62500 C 401.92594 537.62500 418.53052 535.26112 433.03125 531.12500 C 359.10618 525.88358 300.71875 466.29058 300.71875 393.43750 C 300.71875 393.14234 300.74809 392.85723 300.75000 392.56250 z "
+               inkscape:radius="-7.3747182"
+               sodipodi:type="inkscape:offset"
+               style="fill:url(#linearGradient4365);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:7.29639006;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(0.240904,0,0,0.314882,163.4262,211.8423)" />
+          </g>
+        </g>
+        <g
+           id="g4257">
+          <rect
+             height="277.41132"
+             id="rect2459"
+             rx="5.6446648"
+             ry="5.9672194"
+             style="fill:url(#linearGradient4367);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000095pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="346.66031"
+             x="374.01266"
+             y="185.9129" />
+          <rect
+             height="236.02142"
+             id="rect2457"
+             rx="5.0769072"
+             ry="5.0769072"
+             style="fill:url(#radialGradient4369);fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient4371);stroke-width:3.79907203;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+             width="311.79214"
+             x="391.44662"
+             y="199.11009" />
+          <path
+             d="M 379.66319,187.80484 C 377.61318,187.80484 375.92347,189.5275 375.92347,191.87104 L 375.92347,194.15642 C 378.13942,192.00805 381.11835,190.65415 384.44171,190.65415 L 710.24181,190.65415 C 713.56515,190.65415 716.54409,192.00805 718.76004,194.15642 L 718.76004,191.87104 C 718.76004,189.5275 717.07034,187.80484 715.02033,187.80484 L 379.66319,187.80484 z"
+             id="path2588"
+             style="opacity:0.77727272;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000095pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+          <path
+             d="M 375.92347,455.07549 L 375.92347,457.36087 C 375.92347,459.70441 377.61318,461.42707 379.66319,461.42707 L 715.02033,461.42707 C 717.07033,461.42707 718.76004,459.7044 718.76004,457.36087 L 718.76004,455.07549 C 716.54326,457.21707 713.56239,458.57776 710.24181,458.57776 L 384.44171,458.57776 C 381.12113,458.57776 378.14025,457.21707 375.92347,455.07549 z"
+             id="path2591"
+             style="opacity:0.24999994;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000095pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+          <g
+             id="g2665"
+             transform="matrix(0.949768,0,0,0.949768,295.9352,113.5025)">
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2613"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="fill:url(#radialGradient4373);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4375);stroke-width:1.49414742;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.338556,0,0,1.338556,-119.7533,-118.5025)" />
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2651"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="opacity:0.82727272;fill:url(#linearGradient4377);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.49414742;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.220705,0,0,1.220705,-72.67177,-77.07783)" />
+          </g>
+          <g
+             id="g2677"
+             transform="matrix(0.567288,0,0,0.567288,439.8558,250.9142)">
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2679"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="fill:url(#radialGradient4379);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4381);stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.338556,0,0,1.338556,-119.7533,-118.5025)" />
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2681"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="opacity:0.82727272;fill:url(#linearGradient4383);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.49414742;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.220705,0,0,1.220705,-72.67177,-77.07783)" />
+          </g>
+          <g
+             id="g2713"
+             transform="matrix(0.567288,0,0,0.567288,427.826,250.9142)">
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2715"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="fill:url(#radialGradient4385);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4387);stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.338556,0,0,1.338556,-119.7533,-118.5025)" />
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2717"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="opacity:0.82727272;fill:url(#linearGradient4389);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.49414742;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.220705,0,0,1.220705,-72.67177,-77.07783)" />
+          </g>
+          <g
+             id="g2725"
+             transform="matrix(0.567288,0,0,0.567288,415.7962,250.9142)">
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2727"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="fill:url(#radialGradient4391);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4393);stroke-width:1.25077009;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.338556,0,0,1.338556,-119.7533,-118.5025)" />
+            <path
+               d="M 404,351.5 A 4.5,4.5 0 1 1 395,351.5 A 4.5,4.5 0 1 1 404,351.5 z"
+               id="path2729"
+               sodipodi:cx="399.5"
+               sodipodi:cy="351.5"
+               sodipodi:rx="4.5"
+               sodipodi:ry="4.5"
+               sodipodi:type="arc"
+               style="opacity:0.82727272;fill:url(#linearGradient4395);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.49414742;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+               transform="matrix(1.220705,0,0,1.220705,-72.67177,-77.07783)" />
+          </g>
+          <path
+             d="M 108.5625,97.6875 L 108.5625,233.9375 C 135.70596,239.68973 165.11169,243 196,243 C 299.03819,243 386.57971,206.90029 420.84375,159.875 L 420.84375,97.6875 L 108.5625,97.6875 z"
+             id="path2768"
+             inkscape:original="M 105.90625 89.687500 C 102.94489 89.687500 100.56250 92.069886 100.56250 95.031250 L 100.56250 240.50000 C 129.97557 247.23781 162.18295 251.00000 196.00000 251.00000 C 302.24428 251.00000 392.97239 214.26101 428.84375 162.59375 L 428.84375 95.031250 C 428.84375 92.069888 426.46136 89.687500 423.50000 89.687500 L 105.90625 89.687500 z "
+             inkscape:radius="-8"
+             sodipodi:type="inkscape:offset"
+             style="opacity:0.82727272;fill:url(#radialGradient4397);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+             transform="matrix(0.949768,0,0,0.949768,295.9352,113.9307)" />
+        </g>
+      </g>
+      <g
+         id="g4081"
+         transform="translate(51.28231,-31.55267)">
+        <path
+           d="M 399.74632,518.72322 C 392.90624,518.98426 387.34412,524.89375 384.30861,529.81081 L 346.27792,620.64633 C 340.31357,634.00782 349.32512,637.61304 368.53006,638.13516 L 742.72842,637.28165 C 758.48277,637.28165 778.83667,635.05975 769.97787,620.64633 L 733.31098,532.537 C 729.14232,527.6951 720.91108,518.72322 709.08675,518.72322 L 399.74632,518.72322 z"
+           id="rect1986"
+           sodipodi:nodetypes="ccccccccc"
+           style="fill:url(#linearGradient4093);fill-opacity:1;fill-rule:evenodd;stroke:#c4c4c4;stroke-width:6.22240305;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+        <g
+           id="g2113"
+           transform="matrix(4.598811,0,0,4.715294,-2065.15,-950.333)">
+          <rect
+             height="1.3934551"
+             id="rect2100"
+             rx="0.15409666"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="71.082634"
+             x="534.05829"
+             y="316.83197" />
+          <rect
+             height="1.3934551"
+             id="rect2101"
+             rx="0.15409666"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="73.073692"
+             x="533.06281"
+             y="319.33197" />
+          <rect
+             height="1.3934551"
+             id="rect2102"
+             rx="0.15409666"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="74.702751"
+             x="532.24823"
+             y="321.83197" />
+          <rect
+             height="1.3934551"
+             id="rect2103"
+             rx="0.15409666"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="76.693817"
+             x="531.25269"
+             y="324.33197" />
+          <rect
+             height="1.3934551"
+             id="rect2104"
+             rx="0.15409666"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="78.503876"
+             x="530.34766"
+             y="326.83197" />
+          <rect
+             height="1.3934551"
+             id="rect2105"
+             rx="0.15409663"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="80.404442"
+             x="529.53314"
+             y="329.33197" />
+          <rect
+             height="1.3934551"
+             id="rect2110"
+             rx="0.15409666"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="69.272575"
+             x="534.96332"
+             y="314.33197" />
+          <rect
+             height="1.3934551"
+             id="rect2111"
+             rx="0.15409663"
+             ry="0.15029009"
+             style="fill:#bdbdbd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.70496936pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             width="82.033493"
+             x="528.71863"
+             y="331.83197" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/convenience.png b/images/presets/shop/convenience.png
similarity index 100%
rename from images/presets/convenience.png
rename to images/presets/shop/convenience.png
diff --git a/images/presets/copyshop.png b/images/presets/shop/copyshop.png
similarity index 100%
rename from images/presets/copyshop.png
rename to images/presets/shop/copyshop.png
diff --git a/images/presets/shop/cosmetics.svg b/images/presets/shop/cosmetics.svg
new file mode 100644
index 0000000..d622984
--- /dev/null
+++ b/images/presets/shop/cosmetics.svg
@@ -0,0 +1,133 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4149"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="shop__cosmetics13.svg">
+  <defs
+     id="defs4151" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="37.830213"
+     inkscape:cx="1.0303849"
+     inkscape:cy="5.3991722"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="false"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4697" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4154">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <rect
+       rx="0"
+       ry="0"
+       y="1045.8622"
+       x="8"
+       height="3"
+       width="6"
+       id="rect4168"
+       style="opacity:1;fill:#9955ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1" />
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 3.9999999,1036.6354 c 0,-1 -2.99999995,1.0175 -2.99999995,1.6882 l 0,5.3118 2.99999995,0 z"
+       id="path4138"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1"
+       id="rect4136"
+       width="5"
+       height="9"
+       x="0"
+       y="1043.3622"
+       ry="1.0000174"
+       rx="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#cccccc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.5,1052.3622 0,-8"
+       id="path4147"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff8080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1.9999999,1043.3622 0,-5"
+       id="path4151"
+       inkscape:connector-curvature="0" />
+    <rect
+       rx="0"
+       ry="1.0000174"
+       y="1047.3622"
+       x="6"
+       height="4.9999828"
+       width="10"
+       id="rect4164"
+       style="opacity:1;fill:#6600ff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#ac9393;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1"
+       id="rect4166"
+       width="8"
+       height="2.999974"
+       x="7"
+       y="1043.3622"
+       ry="1.0000174"
+       rx="1.0000174" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4170"
+       d="m 7.5,1052.3622 0,-5"
+       style="fill:none;fill-rule:evenodd;stroke:#b380ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c8b7b7;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.5,1046.3621 0,-2.9999"
+       id="path4172"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/curtain.png b/images/presets/shop/curtain.png
similarity index 100%
rename from images/presets/curtain.png
rename to images/presets/shop/curtain.png
diff --git a/images/presets/shop/diy_store.svg b/images/presets/shop/diy_store.svg
new file mode 100644
index 0000000..432ad92
--- /dev/null
+++ b/images/presets/shop/diy_store.svg
@@ -0,0 +1,388 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="92"
+   id="svg1"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\shopping"
+   sodipodi:docname="diy_store.svg"
+   sodipodi:version="0.32"
+   width="92"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata2213">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>telephone lutte incendie</dc:title>
+        <dc:description>lutte incendie</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>office</rdf:li>
+            <rdf:li />
+            <rdf:li>telephone</rdf:li>
+            <rdf:li>symbol</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>yves GUILLOU</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg1"
+     inkscape:cx="84.119808"
+     inkscape:cy="179.00797"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="960"
+     inkscape:window-width="1400"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:zoom="0.90237718"
+     pagecolor="#ffffff"
+     width="92px"
+     height="92px" />
+  <defs
+     id="defs2">
+    <linearGradient
+       id="linearGradient11250"
+       inkscape:collect="always">
+      <stop
+         id="stop11252"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop11254"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.866025,0,0,1.154701,-16.31031,-3.262063)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient17406"
+       inkscape:collect="always"
+       x1="364.79874"
+       x2="533.11829"
+       xlink:href="#linearGradient11250"
+       y1="430.8544"
+       y2="485.01993" />
+    <linearGradient
+       id="linearGradient8962">
+      <stop
+         id="stop8964"
+         offset="0.00000000"
+         style="stop-color:#fffdff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop8970"
+         offset="0.50000000"
+         style="stop-color:#000000;stop-opacity:0.49803922;" />
+      <stop
+         id="stop8972"
+         offset="0.50000000"
+         style="stop-color:#000000;stop-opacity:0.24705882;" />
+      <stop
+         id="stop8966"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.063821,4.046455e-2,-3.647746e-2,0.97038,21.43936,-34.26626)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient17404"
+       inkscape:collect="always"
+       x1="347.20044"
+       x2="514.80957"
+       xlink:href="#linearGradient8962"
+       y1="574.46063"
+       y2="622.51636" />
+    <linearGradient
+       id="linearGradient8194"
+       inkscape:collect="always">
+      <stop
+         id="stop8196"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop8198"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.148733,0,0,0.905362,0,-20.98799)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient17402"
+       inkscape:collect="always"
+       x1="532.68054"
+       x2="284.75259"
+       xlink:href="#linearGradient8194"
+       y1="625.84399"
+       y2="616.76953" />
+    <linearGradient
+       id="linearGradient13552"
+       inkscape:collect="always">
+      <stop
+         id="stop13554"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop13556"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="scale(1.901203,0.525983)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient17400"
+       inkscape:collect="always"
+       x1="102.90475"
+       x2="188.49617"
+       xlink:href="#linearGradient13552"
+       y1="1453.4987"
+       y2="1439.7363" />
+    <linearGradient
+       id="linearGradient4388"
+       inkscape:collect="always">
+      <stop
+         id="stop4390"
+         offset="0"
+         style="stop-color:#ffce63;stop-opacity:1;" />
+      <stop
+         id="stop4392"
+         offset="1"
+         style="stop-color:#ffce63;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="scale(1.572461,0.635946)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient17398"
+       inkscape:collect="always"
+       x1="302.90421"
+       x2="270.20834"
+       xlink:href="#linearGradient4388"
+       y1="999.95508"
+       y2="1138.5482" />
+    <linearGradient
+       id="linearGradient14318">
+      <stop
+         id="stop14320"
+         offset="0.00000000"
+         style="stop-color:#00398f;stop-opacity:1.0000000;" />
+      <stop
+         id="stop14322"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="scale(0.790682,1.264731)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient17396"
+       inkscape:collect="always"
+       x1="738.6416"
+       x2="891.12726"
+       xlink:href="#linearGradient14318"
+       y1="326.92914"
+       y2="121.82977" />
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 L 10,5 L 0,10 L 0,0 z "
+         id="path4" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 L 0,5 L 10,10 L 10,0 z "
+         id="path6" />
+    </marker>
+  </defs>
+  <g
+     id="g17376"
+     transform="matrix(0.1339201,0,0,0.1339201,-5.7738977,-15.031715)">
+    <path
+       d="M 414.63983,465.72362 C 431.90111,449.47771 432.48468,434.41332 465.28008,429.90741 C 500.34111,421.42336 525.21044,393.54557 528.28185,309.0819 C 531.35326,224.61824 585.10286,132.47605 585.10286,132.47605 C 585.10286,132.47605 629.63825,83.333556 641.92388,140.15457 C 654.2095,196.97558 603.5313,338.26026 578.96005,381.25995 C 563.368,406.30123 583.52921,437.16679 600.92963,443.72874 C 613.76089,447.75227 616.88289,469.36595 609.17908,479.54494 C 598.42915,482.61635 414.63983 [...]
+       id="path1334"
+       sodipodi:nodetypes="ccccccccc"
+       style="fill:url(#linearGradient17396);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 577.11876,639.30213 L 570.05231,690.06929 C 570.05231,690.06929 542.44873,693.47401 533.43902,710.47671 C 524.42931,727.47939 487.14891,692.60552 478.00949,698.85907 C 468.87007,705.11262 442.70942,700.82086 435.08706,705.52029 C 427.46469,710.21971 393.64462,707.5562 393.64462,707.5562 L 390.20283,676.88144 C 390.20283,676.88144 371.86838,684.78175 344.33893,694.32885 C 316.80946,703.87595 337.75184,657.54878 337.75184,657.54878 L 352.60743,615.90252 L 577.11876,639.30213 z "
+       id="path2096"
+       style="fill:url(#linearGradient17398);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 345.53319,660.75789 C 307.14061,660.75789 278.25577,777.97449 118.54265,771.83168 C 74.00726,790.26012 90.60648,794.36406 90.60648,794.36406 C 90.60648,794.36406 470.48669,814.3282 500.87422,800.50687 C 520.55311,789.05189 578.96006,694.54337 568.21014,669.97212 L 526.74615,693.00765 L 492.96068,679.18634 L 396.21139,693.00767 C 390.06858,674.57923 393.13998,688.40055 390.06858,663.8293 C 356.28311,662.2936 322.49764,697.61477 345.53319,660.75789 z "
+       id="path2098"
+       sodipodi:nodetypes="cccccccccc"
+       style="fill:#df0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 90.60648,788.22126 L 113.64203,774.39993 C 113.64203,774.39993 399.28279,800.50688 456.10381,775.93563 C 512.92482,751.36438 535.96037,719.11462 535.96037,719.11462 L 546.71029,703.75759 C 546.71029,703.75759 562.06732,688.40056 557.46021,702.22189 C 552.8531,716.04321 511.38912,775.93563 511.38912,775.93563 C 511.38912,775.93563 491.42498,795.89977 454.5681,797.43548 C 417.71123,798.97118 132.07046,786.68555 132.07046,786.68555 L 90.60648,788.22126 z "
+       id="path11258"
+       style="opacity:0.50996016;fill:#fff9ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 127.46335,771.32852 L 104.42781,783.61415 L 148.9632,788.22126 L 161.24882,772.86423 L 127.46335,771.32852 z "
+       id="path12018"
+       style="opacity:0.23505973;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 320.66562,678.20565 C 267.14188,712.24981 273.27884,772.18827 114.58546,773.04243 C 165.88214,778.91793 276.42655,789.75696 413.10412,782.07845 C 529.81756,749.82869 489.88927,709.9004 489.88927,709.9004 C 489.88927,709.9004 312.9871,731.95526 320.66562,678.20565 z "
+       id="path12778"
+       sodipodi:nodetypes="ccccc"
+       style="fill:url(#linearGradient17400);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 533.57662,298.45041 C 533.57662,298.45041 550.33021,171.52923 597.0372,129.3914 C 643.7442,87.253572 625.20992,295.66951 535.80437,395.72886 C 527.17373,413.49782 533.06893,337.03445 533.57662,298.45041 z "
+       id="path15094"
+       sodipodi:nodetypes="cccc"
+       style="opacity:0.25498005;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 635.72733,158.03391 C 635.72733,158.03391 614.17725,312.47614 556.71037,377.12638 C 499.24349,441.77662 571.07709,443.57246 576.46461,439.98078 C 581.85213,436.3891 540.54781,418.4307 576.46461,364.5555 C 612.38141,310.6803 635.72733,220.88831 635.72733,158.03391 z "
+       id="path15854"
+       style="opacity:0.27091633;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 365.8948,607.0905 L 364.80745,642.42952 L 382.20512,609.26521 L 378.39938,649.49733 L 399.60279,609.26521 L 392.53499,652.21571 L 417.00047,610.89624 L 407.75795,655.47778 L 432.22343,611.43992 L 422.43724,656.02145 L 449.07742,613.07095 L 441.46594,652.75939 L 463.21303,615.24566 L 458.86362,653.84674 L 477.89232,619.59508 L 475.71761,653.84674 L 496.37735,620.13875 L 490.3969,653.30307 L 512.68767,621.76978 L 506.16354,653.84674 L 524.64857,622.31346 L 519.75547,653.84674 L [...]
+       id="path16614"
+       style="opacity:0.27490043;fill:#994a2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 379.6049,611.36053 L 378.56403,638.88118 L 395.21786,613.05411 L 391.57484,644.38532 L 411.87169,613.05411 L 405.10608,646.50228 L 428.52553,614.32429 L 419.67817,649.04266 L 443.09762,614.74769 L 433.72985,649.46605 L 459.23101,616.01787 L 451.94497,646.92568 L 472.76225,617.71145 L 468.5988,647.77247 L 486.81392,621.09861 L 484.73219,647.77247 L 504.50862,621.522 L 498.78386,647.34908 L 520.12159,622.79218 L 513.8764,647.77247 L 531.57109,623.21558 L 526.8872,647.77247 L 54 [...]
+       id="path17374"
+       style="opacity:0.27490043;fill:#994a2c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 347.05411,619.15925 C 347.05411,619.15925 403.91959,455.12508 429.28092,453.48038 C 454.64226,451.83568 612.77762,469.9274 612.77762,469.9274 C 612.77762,469.9274 611.95556,485.30073 608.30209,507.75554 C 600.84288,527.49195 582.39708,640.40537 576.42971,640.40537 C 570.46234,640.40537 347.05411,619.15925 347.05411,619.15925 z "
+       id="path2094"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#959595;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.01999462px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 600.94819,468.51747 L 612.75069,472.07341 L 578.32811,639.41123 L 561.47496,638.64027 L 600.94819,468.51747 z "
+       id="path5154"
+       sodipodi:nodetypes="ccccc"
+       style="opacity:0.34661357;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0169487px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 589.30287,468.04967 L 608.35591,470.44192 L 567.29803,637.93165 L 535.42581,636.55162 L 589.30287,468.04967 z "
+       id="path5914"
+       style="opacity:0.10756968;fill:#fffdff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 590.22773,472.34079 L 543.16454,635.38229 L 554.03937,632.75252 L 590.22773,472.34079 z "
+       id="path6674"
+       style="opacity:0.5458167;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 443.81819,453.79101 L 572.81724,464.97115 L 582.03146,471.35979 L 535.96037,637.46467 L 370.10444,619.89588 L 443.81819,453.79101 z "
+       id="path7434"
+       sodipodi:nodetypes="cccccc"
+       style="opacity:0.14741037;fill:url(#linearGradient17402);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 464.15317,453.25481 L 578.95046,465.56496 L 521.74846,638.1487 L 379.38789,623.20139 L 464.15317,453.25481 z "
+       id="path8202"
+       sodipodi:nodetypes="ccccc"
+       style="opacity:0.3824701;fill:url(#linearGradient17404);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 390.651,448.64022 L 450.54342,451.71163 L 376.82967,620.63897 L 321.54436,614.49616 L 390.651,448.64022 z "
+       id="path9732"
+       sodipodi:nodetypes="ccccc"
+       style="opacity:0.23505973;fill:url(#linearGradient17406);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 589.92962,441.10981 C 589.92962,441.10981 582.82203,450.75582 588.40657,453.80192 C 593.9911,456.84803 594.49878,454.30961 596.52952,460.90951 C 598.56026,467.50941 608.71395,466.49404 608.71395,466.49404 L 607.69858,453.29424 L 589.92962,441.10981 z "
+       id="path14334"
+       style="opacity:0.3824701;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+  <g
+     id="g1342"
+     transform="matrix(0.1802953,0,0,0.1802953,-23.364604,-0.4155166)">
+    <g
+       id="g5124"
+       style="opacity:0.18041238;fill:#000000;fill-opacity:1"
+       transform="matrix(0.541706,-0.840568,0.840568,0.541706,-46.93613,306.9812)">
+      <path
+         d="M 210.20159,128.19131 L 272.84445,128.19131 L 272.84445,608.59866 L 210.20159,608.59866 L 210.20159,128.19131 z "
+         id="path5126"
+         style="fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 216.7392,153.14858 L 250.99415,153.14858 L 250.99415,600.34615 L 216.7392,600.34615 L 216.7392,153.14858 z "
+         id="path5128"
+         style="fill-rule:nonzero;stroke:none;stroke-width:2.06155944;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 134.28572,132.36218 L 328.17461,132.8262 C 328.76932,174.43343 364.62964,185.41527 382.85715,185.26059 L 382.85715,212.36218 L 134.28572,212.36218 L 134.28572,132.36218 z "
+         id="path5130"
+         sodipodi:nodetypes="cccccc"
+         style="fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 140.08561,166.42895 L 329.05641,166.66715 C 329.57708,188.02596 362.16321,193.66342 378.12096,193.58401 L 378.12096,207.49644 L 140.08561,207.49644 L 140.08561,166.42895 z "
+         id="path5132"
+         sodipodi:nodetypes="cccccc"
+         style="fill-rule:nonzero;stroke:none;stroke-width:1.34077632;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g5092"
+       transform="matrix(0.541706,-0.840568,0.840568,0.541706,-51.91204,285.7536)">
+      <path
+         d="M 210.20159,128.19131 L 272.84445,128.19131 L 272.84445,608.59866 L 210.20159,608.59866 L 210.20159,128.19131 z "
+         id="rect1294"
+         style="fill:#893333;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 216.7392,153.14858 L 250.99415,153.14858 L 250.99415,600.34615 L 216.7392,600.34615 L 216.7392,153.14858 z "
+         id="path3574"
+         style="fill:#ae6767;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.06155944;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 134.28572,132.36218 L 328.17461,132.8262 C 328.76932,174.43343 364.62964,185.41527 382.85715,185.26059 L 382.85715,212.36218 L 134.28572,212.36218 L 134.28572,132.36218 z "
+         id="rect1291"
+         sodipodi:nodetypes="cccccc"
+         style="fill:#aaaaaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         d="M 140.08561,166.42895 L 329.05641,166.66715 C 329.57708,188.02596 362.16321,193.66342 378.12096,193.58401 L 378.12096,207.49644 L 140.08561,207.49644 L 140.08561,166.42895 z "
+         id="path2814"
+         sodipodi:nodetypes="cccccc"
+         style="fill:#eeeeee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.34077632;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/shop/electronics.svg b/images/presets/shop/electronics.svg
new file mode 100644
index 0000000..31b715f
--- /dev/null
+++ b/images/presets/shop/electronics.svg
@@ -0,0 +1,512 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="12.722"
+   id="svg1291"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="electronics2.svg"
+   sodipodi:version="0.32"
+   width="16"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>Television</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>television</rdf:li>
+            <rdf:li>screen</rdf:li>
+            <rdf:li>tv</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Alexander D. Thorp.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Alexander D. Thorp.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective61" />
+    <linearGradient
+       id="linearGradient3651"
+       inkscape:collect="always">
+      <stop
+         id="stop3653"
+         offset="0"
+         style="stop-color:#2c2c2c;stop-opacity:1;" />
+      <stop
+         id="stop3655"
+         offset="1"
+         style="stop-color:#2c2c2c;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5111"
+       inkscape:collect="always">
+      <stop
+         id="stop5113"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop5115"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.52064708,0,0,0.33294531,16.126655,17.963167)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient5117"
+       inkscape:collect="always"
+       x1="29.420887"
+       x2="-5.8534131"
+       xlink:href="#linearGradient5111"
+       y1="28.105722"
+       y2="-16.60376" />
+    <linearGradient
+       gradientTransform="matrix(0.74391497,0,0,0.23301944,14.695087,18.901693)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3657"
+       inkscape:collect="always"
+       x1="12.828831"
+       x2="9.3710175"
+       xlink:href="#linearGradient3651"
+       y1="53.589424"
+       y2="42.531727" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-9.7598835"
+     inkscape:cy="14.981469"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="7.5625"
+     pagecolor="#ffffff"
+     showgrid="false"
+     showguides="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-15.857145,-19.515667)">
+    <g
+       id="g11220"
+       style="fill:#3f3f3f;fill-opacity:1"
+       transform="matrix(0.41634927,0,0,0.41634927,14.695088,18.901693)">
+      <path
+         d="m 34.098289,31.623542 1.043826,-0.677668 -1.438159,-1.154825 0.394333,1.832493 z"
+         id="path11214"
+         sodipodi:nodetypes="cccc"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 6.1108233,25.087627 32.2291427,1.800818 -0.963515,1.944926 -1.001209,-0.05472 -0.963515,1.944926 -26.4725797,-1.446801 -1.155772,-2.060751 -0.946067,-0.05171 -0.726485,-2.076693 z"
+         id="path11212"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 35.753478,29.913804 1.329599,-0.856044 -1.657446,-1.092821 0.327847,1.948865 z"
+         id="path11218"
+         sodipodi:nodetypes="cccc"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+    <rect
+       height="9.6005554"
+       id="rect7393"
+       rx="0.68589193"
+       ry="9.4643831"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.20818877;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.99810154,0.06158985,-0.07799026,0.99695412,0,0)"
+       width="15.130332"
+       x="18.315828"
+       y="18.506195" />
+    <rect
+       height="9.6005573"
+       id="rect1305"
+       rx="0.68589133"
+       ry="9.464385"
+       style="fill:#000000;fill-opacity:0.58638748;stroke:#000000;stroke-width:0.20818871;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.99810154,0.06158991,-0.07799024,0.99695412,0,0)"
+       width="15.130319"
+       x="18.407393"
+       y="18.50025" />
+    <rect
+       height="9.6005573"
+       id="rect1307"
+       rx="0.68589133"
+       ry="9.464385"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.20818871;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.99810154,0.06158991,-0.07799024,0.99695412,0,0)"
+       width="15.130319"
+       x="17.979231"
+       y="18.944323" />
+    <rect
+       height="9.6005621"
+       id="rect1301"
+       rx="0.68589115"
+       ry="9.4643898"
+       style="fill:#000000;fill-opacity:0.45026173;stroke:#000000;stroke-width:0.20818877;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.99810154,0.06158993,-0.07799026,0.99695412,0,0)"
+       width="15.130316"
+       x="17.944263"
+       y="18.951958" />
+    <rect
+       height="7.9058833"
+       id="rect3593"
+       rx="0.68589228"
+       ry="9.4643717"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.17143984;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.99810155,0.06158981,-0.07799022,0.99695412,0,0)"
+       width="12.459575"
+       x="18.993519"
+       y="19.924763" />
+    <rect
+       height="7.9058847"
+       id="rect1303"
+       rx="0.68589169"
+       ry="9.4643745"
+       style="fill:url(#linearGradient5117);fill-opacity:1;stroke:#000000;stroke-width:0.1714398;stroke-miterlimit:4;stroke-opacity:1"
+       transform="matrix(0.99810154,0.06158987,-0.0779902,0.99695413,0,0)"
+       width="12.459564"
+       x="18.972294"
+       y="19.919594" />
+    <path
+       d="m 30.926395,20.920029 c 0.496486,-0.352939 0.496486,-0.352939 0.496486,-0.352939 l 0,0 -0.496486,0.352939 z"
+       id="path2067"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.41634926px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 17.007205,20.088436 0.552947,-0.470421 -0.552947,0.470421 z"
+       id="path2833"
+       sodipodi:nodetypes="ccc"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.20817463;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 16.577343,29.774258 13.41858,0.74977 -0.401158,0.809768 -0.416853,-0.02278 -0.401159,0.809768 -11.021839,-0.602374 -0.481205,-0.857992 -0.393894,-0.02153 -0.302472,-0.86463 z"
+       id="path8153"
+       style="fill:#969696;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.20817463;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g11244"
+       transform="matrix(0.24034469,-0.02145945,0,0.24034469,23.435354,22.139064)">
+      <path
+         d="m 13.732812,37.130722 c 2.617383,0.0019 5.234993,-0.0039 7.852235,0.0029 0.446745,0.09769 0.625056,0.594662 0.749513,0.983995 0.243373,0.926721 0.234365,1.944273 -0.117445,2.842323 -0.130824,0.332526 -0.406477,0.71401 -0.81034,0.655302 -2.574532,-0.0019 -5.14929,0.0039 -7.72368,-0.0029 -0.446744,-0.09769 -0.625055,-0.594663 -0.749512,-0.983997 -0.243374,-0.926721 -0.234365,-1.944272 0.117445,-2.842323 0.128087,-0.283852 0.329415,-0.641629 0.681784,-0.655301 z"
+         id="rect11225"
+         style="fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <rect
+         height="0.055857744"
+         id="rect11227"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="37.425003" />
+      <rect
+         height="0.055857744"
+         id="rect11229"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="41.255825" />
+      <rect
+         height="0.055857744"
+         id="rect11231"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="40.161304" />
+      <rect
+         height="0.055857744"
+         id="rect11233"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="39.066784" />
+      <rect
+         height="0.055857744"
+         id="rect11235"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="38.519524" />
+      <rect
+         height="0.055857744"
+         id="rect11237"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="40.708565" />
+      <rect
+         height="0.055857744"
+         id="rect11239"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="37.972263" />
+      <rect
+         height="0.055857744"
+         id="rect11241"
+         rx="6.5906324"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="39.614044" />
+    </g>
+    <g
+       id="g11255"
+       transform="matrix(-0.24034469,-0.0475754,0,0.24034469,22.985888,22.135154)">
+      <path
+         d="m 13.732812,37.130722 c 2.617383,0.0019 5.234993,-0.0039 7.852235,0.0029 0.446745,0.09769 0.625056,0.594662 0.749513,0.983995 0.243373,0.926721 0.234365,1.944273 -0.117445,2.842323 -0.130824,0.332526 -0.406477,0.71401 -0.81034,0.655302 -2.574532,-0.0019 -5.14929,0.0039 -7.72368,-0.0029 -0.446744,-0.09769 -0.625055,-0.594663 -0.749512,-0.983997 -0.243374,-0.926721 -0.234365,-1.944272 0.117445,-2.842323 0.128087,-0.283852 0.329415,-0.641629 0.681784,-0.655301 z"
+         id="path11257"
+         style="fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <rect
+         height="0.055857744"
+         id="rect11259"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="37.425003" />
+      <rect
+         height="0.055857744"
+         id="rect11261"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="41.255825" />
+      <rect
+         height="0.055857744"
+         id="rect11263"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="40.161304" />
+      <rect
+         height="0.055857744"
+         id="rect11265"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="39.066784" />
+      <rect
+         height="0.055857744"
+         id="rect11267"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="38.519524" />
+      <rect
+         height="0.055857744"
+         id="rect11269"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="40.708565" />
+      <rect
+         height="0.055857744"
+         id="rect11271"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="37.972263" />
+      <rect
+         height="0.055857744"
+         id="rect11273"
+         rx="6.5673604"
+         ry="0.49656475"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.03595135;stroke-miterlimit:4;stroke-opacity:1"
+         width="8.3639708"
+         x="13.386724"
+         y="39.614044" />
+    </g>
+    <path
+       d="m 20.999421,30.012301 c 1.350887,0.0655 2.701775,0.131002 4.052663,0.196502 0.202629,0.04061 0.238986,0.198421 0.280733,0.307428 0.05297,0.225332 0.05221,0.468259 -0.119053,0.664174 -0.131485,0.116016 -0.09408,0.04285 -0.421853,0.138299 -1.309467,0.171064 -2.483024,0.01364 -3.79249,-0.267656 -0.20263,-0.04061 -0.238987,-0.198421 -0.280733,-0.307427 -0.05297,-0.225332 -0.05221,-0.46826 0.119052,-0.664175 0.0357,-0.03384 0.08785,-0.07002 0.161681,-0.06715 z"
+       id="rect11295"
+       sodipodi:nodetypes="ccccccccc"
+       style="fill:url(#linearGradient3657);fill-opacity:1;stroke:#000000;stroke-width:0.05204366;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g2858"
+       transform="matrix(0.41634927,0,0,0.41634927,14.695088,18.901693)">
+      <rect
+         height="0.85823053"
+         id="rect2086"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="19.964918"
+         y="26.697214" />
+      <rect
+         height="0.85823053"
+         id="rect2846"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="21.377409"
+         y="26.946699" />
+      <rect
+         height="0.85823053"
+         id="rect2848"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="22.789902"
+         y="27.266041" />
+      <rect
+         height="0.85823053"
+         id="rect2850"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="24.202396"
+         y="27.485588" />
+      <rect
+         height="0.85823053"
+         id="rect2852"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="25.614889"
+         y="27.425713" />
+      <rect
+         height="0.85823053"
+         id="rect2854"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="27.027384"
+         y="27.146288" />
+      <rect
+         height="0.85823053"
+         id="rect2856"
+         rx="0.23633243"
+         ry="0.23314829"
+         style="fill:#181818;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.998712,0.05074527,-0.169934,0.985455,0,0)"
+         width="0.86119688"
+         x="28.439877"
+         y="27.006577" />
+    </g>
+    <g
+       id="g3633"
+       transform="matrix(0.15210113,0,-0.04066217,0.15210113,23.36472,25.634936)">
+      <circle
+         id="path2867"
+         style="fill:none;fill-opacity:1;stroke:#ea9d1b;stroke-width:0.30000001;stroke-miterlimit:4;stroke-opacity:1"
+         cx="18.241751"
+         cy="33.910843"
+         r="0.59322768" />
+      <rect
+         height="0.9039368"
+         id="rect3631"
+         ry="0"
+         style="fill:#ea9d1b;fill-opacity:1;stroke:#181818;stroke-width:0.02;stroke-miterlimit:4;stroke-opacity:1"
+         width="0.20683299"
+         x="18.132359"
+         y="32.870544" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/erotic.png b/images/presets/shop/erotic.png
similarity index 100%
rename from images/presets/erotic.png
rename to images/presets/shop/erotic.png
diff --git a/images/presets/fabric.png b/images/presets/shop/fabric.png
similarity index 100%
rename from images/presets/fabric.png
rename to images/presets/shop/fabric.png
diff --git a/images/presets/shop/florist.svg b/images/presets/shop/florist.svg
new file mode 100644
index 0000000..f10a82c
--- /dev/null
+++ b/images/presets/shop/florist.svg
@@ -0,0 +1,129 @@
+<?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"
+   height="841.88976pt"
+   id="svg2"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/peterm/afbeeldingen/svg"
+   sodipodi:docname="florist.svg"
+   sodipodi:version="0.32"
+   width="595.27559pt"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\shopping\florist32.png"
+   inkscape:export-xdpi="3.0419531"
+   inkscape:export-ydpi="3.0419531">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>flower</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>flower</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>peterm</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>peterm</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs5">
+    <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="perspective11" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2"
+     inkscape:cx="372.04724"
+     inkscape:cy="473.86360"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="721"
+     inkscape:window-width="1270"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:zoom="0.37724655"
+     pagecolor="#ffffff"
+     showgrid="false" />
+  <g
+     id="g5840"
+     transform="matrix(1.340218,0.000000,0.000000,1.340218,-653.5452,7.795854)">
+    <path
+       d="M 796.81250,295.50000 C 795.93675,295.58953 795.02004,295.90048 794.06250,296.43750 C 787.79894,299.95034 792.94621,401.31416 766.96875,492.87500 C 757.99251,468.07073 723.97814,435.17912 677.18750,408.96875 C 613.94367,373.54191 551.37941,363.73074 537.53125,387.06250 C 523.68311,410.39425 563.75619,458.07317 627.00000,493.50000 C 680.29990,523.35661 733.01238,534.94166 756.59375,523.90625 C 749.80980,541.56721 741.74050,558.44776 731.68750,573.43750 C 665.85161,671.60343 558. [...]
+       id="path2195"
+       style="fill:#35e23e;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#12892d;stroke-width:17.004999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" />
+    <path
+       d="M 521.87211,275.23304 C 478.85605,245.64532 524.04766,247.12359 474.76752,264.36545 C 448.25334,273.64209 478.36895,314.58051 486.35702,287.65007 C 501.20392,237.59626 513.76299,281.03285 482.13659,239.49268 C 465.12065,217.14283 435.49213,258.43515 463.57296,257.71029 C 515.76490,256.36306 478.33522,281.73008 508.06918,238.81498 C 524.06693,215.72537 475.63989,200.30700 485.00672,226.78946 C 502.41621,276.01063 466.72433,248.25173 516.72732,263.26890 C 543.63042,271.34859 543. [...]
+       id="path1549"
+       inkscape:flatsided="false"
+       inkscape:randomized="0.0000000"
+       inkscape:rounded="1.0800000"
+       sodipodi:arg1="0.60613533"
+       sodipodi:arg2="2.8013060"
+       sodipodi:cx="495.56927"
+       sodipodi:cy="257.00040"
+       sodipodi:r1="32.004192"
+       sodipodi:r2="22.067102"
+       sodipodi:sides="5"
+       sodipodi:type="star"
+       style="fill:#fa9806;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#f58006;stroke-width:4.0247698;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+       transform="matrix(4.224992,0.000000,0.000000,4.224992,-1287.368,-859.2380)" />
+    <path
+       d="M 539.80589 261.93216 A 8.8174267 8.8174267 0 1 1  522.17104,261.93216 A 8.8174267 8.8174267 0 1 1  539.80589 261.93216 z"
+       id="path1551"
+       sodipodi:cx="530.98846"
+       sodipodi:cy="261.93216"
+       sodipodi:rx="8.8174267"
+       sodipodi:ry="8.8174267"
+       sodipodi:type="arc"
+       style="fill:#fadc06;fill-opacity:1.0000000;fill-rule:nonzero;stroke:#f58006;stroke-width:4.0247698;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+       transform="matrix(4.224992,0.000000,0.000000,4.224992,-1440.171,-885.7572)" />
+  </g>
+</svg>
diff --git a/images/presets/frame.png b/images/presets/shop/frame.png
similarity index 100%
rename from images/presets/frame.png
rename to images/presets/shop/frame.png
diff --git a/images/presets/shop/funeral_directors.svg b/images/presets/shop/funeral_directors.svg
new file mode 100644
index 0000000..c6cece3
--- /dev/null
+++ b/images/presets/shop/funeral_directors.svg
@@ -0,0 +1,90 @@
+<?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"
+   width="256.07199"
+   height="469.72971"
+   id="svg3804"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 3">
+  <defs
+     id="defs3806" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="71.607432"
+     inkscape:cy="137.722"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3809">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-303.39257,-200.35447)">
+    <polygon
+       points="418.036,148.533 354.019,551.617 225.982,551.617 161.964,148.533 225.982,37.65 354.019,37.65 "
+       id="polygon24"
+       style="fill:#8c5a26;fill-opacity:1"
+       transform="matrix(0.99999999,0,0,0.9139297,141.42857,165.94502)" />
+    <g
+       style="fill:#8c5a26;fill-opacity:1"
+       id="g3779"
+       transform="matrix(0.99999999,0,0,1.1933524,141.42857,123.35707)">
+      <g
+         id="g3783"
+         transform="matrix(1.356333,0,0,1.239353,-103.33701,-48.708368)">
+        <line
+           stroke-miterlimit="10"
+           x1="290"
+           y1="130.5"
+           x2="290"
+           y2="276.5"
+           id="line26"
+           style="fill:#8c5a26;fill-opacity:1;stroke:#000000;stroke-width:20;stroke-linecap:round;stroke-miterlimit:10" />
+        <line
+           stroke-miterlimit="10"
+           x1="244"
+           y1="178.5"
+           x2="336"
+           y2="178.5"
+           id="line28"
+           style="fill:#8c5a26;fill-opacity:1;stroke:#000000;stroke-width:20;stroke-linecap:round;stroke-miterlimit:10" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/shop/furniture.svg b/images/presets/shop/furniture.svg
new file mode 100644
index 0000000..f7e2324
--- /dev/null
+++ b/images/presets/shop/furniture.svg
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+	<!ENTITY ns_svg "http://www.w3.org/2000/svg">
+	<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="416.263" height="469.455" viewBox="0 0 416.263 469.455" overflow="visible" enable-background="new 0 0 416.263 469.455" xml:space="preserve">
+<g>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M157.76,1.26c-0.296,1.804-6.83,1.475-6.342,0.396   C152.841,0.833,155.705,1.451,157.76,1.26z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M162.913,4.431c-1.925-0.288-3.677,1.088-4.756,0.396   C158.815,3.675,163.305,0.693,162.913,4.431z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M148.643,4.828c1.334-0.659,5.405-0.659,6.738,0   C153.726,6.952,150.655,5.461,148.643,4.828z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M145.472,7.206c0.748,1.557-2.819,1.606-5.153,2.378   c-33.01,10.925-66.249,24.924-94.735,39.242c3.491-4.924,9.828-6.112,15.062-8.72c10.38-5.172,20.96-10.345,32.503-15.062   c15.87-6.486,33.378-13.071,51.926-17.837C145.208,7.206,145.34,7.206,145.472,7.206z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M179.561,10.773c-4.043,2.72-8.926,3.699-13.477,5.55   c-7.519,3.058-15.237,6.069-23.783,8.72c2.998-3.476,9.895-3.054,13.08-6.342C164.428,17.045,170.321,12.235,179.561,10.773z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M180.354,14.737c0.824,0.222,0.84,0.619,0.396,1.189   c-10.382,3.76-21.738,8.646-32.107,11.099C158.41,22.126,170.262,19.312,180.354,14.737z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M183.128,19.097c-1.436,2.284-4.068,1.928-6.342,2.775   c-7.884,2.937-16.425,7.108-24.972,9.909C161.057,26.358,172.159,22.794,183.128,19.097z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M185.11,23.458c-9.352,4.257-20.745,8.587-30.125,11.495   C164.105,30.2,174.249,26.469,185.11,23.458z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M185.506,27.421c0.265,0,0.529,0,0.793,0c-0.439,1.706-2.685,1.832-3.964,2.378   c-8.941,3.821-19.496,8.596-28.936,12.685C162.599,35.959,174.785,32.422,185.506,27.421z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M187.885,32.574c-7.835,3.006-15.919,7.854-23.783,9.513   C171.541,38.673,179.47,33.697,187.885,32.574z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M106.626,36.935c-12.182,6.184-25.784,10.947-36.07,19.026   c3.77-6.591,13.248-8.967,21.404-13.08c4.777-2.409,9.119-4.773,13.477-6.342C106.078,36.426,106.12,36.913,106.626,36.935z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M189.867,37.331c-9.514,3.699-18.206,8.219-28.143,11.495   C170.479,44.368,179.063,39.739,189.867,37.331z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M191.849,42.484c-10.275,2.678-20.18,7.825-28.936,10.702   c7.344-5.34,18.142-7.227,26.558-11.495C190.288,41.931,192.224,41.051,191.849,42.484z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M109.005,44.862c-2.713,2.19-6.081,3.115-9.117,4.757   c-8.353,4.516-17.728,9.101-26.954,13.477c4.459-4.671,11.332-6.14,17.044-9.117c6.048-3.152,11.93-6.833,17.837-9.513   C108.135,44.675,108.459,44.879,109.005,44.862z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M193.434,46.051c-9.978,4.028-19.326,8.685-29.729,12.288   c3.999-3.422,9.43-4.64,14.27-6.738C182.804,49.506,187.676,46.657,193.434,46.051z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M41.62,47.24c-1.612,2.669-6.675,2.194-10.702,1.585   C33.004,46.816,37.543,47.26,41.62,47.24z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M43.999,49.222c2.7,4.749,3.297,10.333,4.756,15.459   c10.159,35.685,21.958,72.905,31.71,109.798c-1.444,0.537-1.958,2.005-3.567,2.378C64.376,135.207,52.11,93.301,40.431,50.808   C41.677,50.336,42.528,49.47,43.999,49.222z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M107.816,51.997c-3.243-0.072-4.242,2.1-7.135,2.378   C101.744,52.76,106.688,49.703,107.816,51.997z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M193.831,50.808c-8.773,4.043-17.965,7.667-27.747,10.703   c3.395-3.052,8.38-3.701,12.684-5.55C183.619,53.877,188.119,51.935,193.831,50.808z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M29.729,51.204c2.114,0,4.228,0,6.342,0   C48.952,92.7,59.29,135.216,72.538,177.253c1.823,5.783,4.322,11.646,4.36,17.837C61.509,148.513,49.402,98.651,34.089,51.997   C45.741,94.71,58.99,138.342,71.349,182.01c1.671,5.905,5.191,11.872,3.964,18.233C59.815,151.66,46.919,100.472,31.314,51.997   c11.342,43.983,26.454,89.094,38.449,133.977c1.668,6.241,4.786,12.407,3.964,19.026c-2.922-5.837-4.544-12.253-6.342-18.63   C55.905,145.65, [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M36.863,51.204c0.641-0.112,0.683,0.375,1.189,0.396   c6.875,23.272,13.846,46.401,20.215,69.763c6.35,23.289,14.511,46.144,19.819,70.159C63.646,145.452,50.922,97.658,36.863,51.204z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M65.403,55.564c-3.401-0.563-7.384-0.543-10.702-1.189   C56.907,53.06,63.224,53.539,65.403,55.564z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M99.492,53.979c0.824,0.222,0.84,0.618,0.396,1.189   c-8.917,3.635-18.049,9.168-26.161,12.288C80.962,61.61,91.165,58.733,99.492,53.979z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M114.158,54.375c-12.85,5.252-24.784,11.419-37.656,16.648   C87.934,64.354,99.958,58.277,114.158,54.375z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M195.812,55.564c-10.433,3.043-19.139,7.815-30.125,10.306   C175.022,61.988,185.159,56.809,195.812,55.564z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M197.398,59.528c-9.261,4.479-19.89,7.592-29.332,11.891   C176.197,66.07,187.724,62.016,197.398,59.528z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M110.59,60.717C99.536,65.653,87.495,71.706,76.898,75.78   c9.714-6.273,21.663-10.312,32.503-15.459C110.042,60.209,110.083,60.695,110.59,60.717z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M30.125,62.303c0.461-0.064,0.705,0.087,0.793,0.396   c13.562,45.632,25.904,92.81,40.034,138.733c0.865,2.812,2.635,5.802,0.793,8.721c-8.676-26.288-16.282-54.675-24.576-82.448   c-3.194-10.695-5.22-22.95-10.306-31.314C35.17,84.476,32.582,73.455,30.125,62.303z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M67.781,64.681c-2.325-0.053-4.489-0.268-6.342-0.793   C61.959,62.913,67.078,63.293,67.781,64.681z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M116.933,63.492c-12.688,6.097-27.086,11.616-38.053,18.234   c2.708-4.696,8.596-5.643,13.477-7.928C100.301,70.079,107.631,65.409,116.933,63.492z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M199.38,64.681c-10.32,3.954-21.192,9.456-31.314,12.288   C177.724,72.353,188.548,66.803,199.38,64.681z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M68.97,67.852c-2.249,0.879-8.697-0.78-12.684-0.792   C59.931,65.24,65.612,66.895,68.97,67.852z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M112.176,69.042c0.487,0.173,0.814,0.507,0.792,1.189   c-11.899,4.484-22.408,10.36-33.296,15.855C88.614,78.512,101.426,74.807,112.176,69.042z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M199.776,69.042c0.824,0.222,0.84,0.618,0.396,1.189   c-9.935,2.221-17.062,7.25-26.954,9.513C181.232,75.337,190.688,72.373,199.776,69.042z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M70.16,73.401c-5.134-0.68-11.075-0.552-15.855-1.585   c1.142-1.098,3.741-0.579,5.946-0.396C63.707,71.706,68.511,71.659,70.16,73.401z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M118.518,72.212c-11.933,5.508-23.883,10.999-34.881,17.441   C93.273,81.849,105.202,76.336,118.518,72.212z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M201.758,73.401c-4.975,4.539-13.41,5.617-19.423,9.117   C187.189,77.859,195.484,76.64,201.758,73.401z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M61.043,77.365c3.247-0.864,8.209-0.021,11.099,0.793   C70.132,79.223,64.193,77.761,61.043,77.365z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M202.947,77.365c-5.074,3.513-12.625,5.064-18.63,7.531   c-1.435,0.59-2.642,2.364-4.36,1.585C186.208,82.031,194.83,79.95,202.947,77.365z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M117.329,78.158c-11.124,5.392-22.417,10.615-32.503,17.044   c3.255-4.098,9.326-6.937,15.459-10.306c5.396-2.964,11.155-4.526,16.251-7.135C116.997,77.697,117.242,77.849,117.329,78.158z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M74.124,83.708c-4.396,1.156-11.081-2.082-17.441-1.585   C61.721,80.281,69.293,82.705,74.124,83.708z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M204.533,81.726c-7.061,5.491-18.935,6.169-26.558,11.099   C184.089,86.386,196.237,85.982,204.533,81.726z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M363.878,97.977c-1.595-1.734-1.955-6.097-3.171-7.928   c-4.558-6.862-16.279-3.925-26.161-2.378c-38.404,6.012-83.173,14.37-120.104,19.026c-3.674-4.002,3.778-4.8,6.342-5.55   c6.416-1.876,18.124-3.295,25.765-4.36c34.928-4.868,73.444-9.832,105.041-13.477c2.656-0.307,7.125,0.188,9.117,1.585   C363.894,87.133,367.501,94.65,363.878,97.977z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M124.86,86.482c-13.067,6.091-26.725,11.592-38.053,19.423   c3.069-5.15,10.909-7.892,18.63-11.495C112.497,91.115,117.914,87.504,124.86,86.482z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M204.929,86.482c-9.242,4.499-19.179,8.304-30.521,10.703   C184.013,93.048,194.647,89.941,204.929,86.482z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M63.025,87.275c4.13,0.759,9.954-0.177,12.288,2.378   C71.496,88.581,65.817,89.372,63.025,87.275z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M125.653,91.239c-12.417,5.552-24.175,11.763-36.071,17.837   c1.36-3.204,5.262-3.579,7.928-5.153c8.106-4.788,18.011-9.081,26.954-13.081C125.104,90.73,125.146,91.217,125.653,91.239z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M206.912,91.239c-9.758,4.248-20.072,7.939-30.522,11.495   C185.438,98.036,196.923,93.676,206.912,91.239z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M77.691,95.203c-5.432,0.541-11.563-1.648-17.837-1.586   C64.765,92.034,72.757,94.171,77.691,95.203z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M327.807,94.013c0.407,1.332-1.232,0.617-1.981,0.793   C325.418,93.474,327.058,94.189,327.807,94.013z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M337.321,94.806c0,0.264,0,0.528,0,0.793c-0.919,0.126-1.522-0.064-1.982-0.396   C335.467,94.746,337.068,93.838,337.321,94.806z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M323.843,94.806c0.407,1.332-1.232,0.617-1.981,0.793   C321.455,94.267,323.094,94.982,323.843,94.806z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M334.546,95.203c-0.059,0.866-0.999,0.851-1.982,0.792   C332.287,94.623,333.954,94.574,334.546,95.203z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M207.307,95.599c-8.617,4.859-19.057,7.896-28.936,11.495   c3.448-3.191,8.806-4.146,13.477-5.946c4.684-1.804,9.471-3.246,13.477-5.549C205.986,95.599,206.647,95.599,207.307,95.599z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M319.88,95.599c-0.05,1.189-2.25,1.271-2.775,0.792   C317.161,95.258,318.758,95.667,319.88,95.599z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M330.979,95.599c0.11,1.27-1.736,1.441-2.379,0.792   C328.645,95.379,329.927,95.605,330.979,95.599z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M126.446,96.392c-11.636,5.805-23.861,11.021-34.882,17.441   c0.687-3.161,4.6-4.248,7.135-5.549c8.048-4.132,18.283-8.131,26.557-12.288C125.897,95.883,125.939,96.37,126.446,96.392z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M325.033,96.788c-0.038,1.289-2.394,1.454-3.171,0.792   C321.95,96.348,323.834,96.911,325.033,96.788z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M320.276,97.581c-0.124,1.33-1.796,1.111-3.171,1.189   C317.229,97.44,318.901,97.659,320.276,97.581z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M77.294,100.752c-5.437-0.113-9.981-1.117-14.666-1.982   C65.947,97.862,73.621,99.38,77.294,100.752z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M371.013,189.145c-3.846-0.165-2.54-6.984-2.774-10.306   c-1.839-25.993-3.43-51.996-4.757-79.276c1.081,0.289,0.798-0.788,1.586-0.792c0.264,0,0.528,0,0.792,0   c0.965,15.216,1.851,30.848,2.775,46.376C369.516,159.952,371.708,176.118,371.013,189.145z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M37.656,99.167c0.353,0.175,0.709,0.348,0.793,0.792   c9.227,33.606,19.687,67.455,29.332,101.077c1.288,4.489,3.507,9.417,2.378,14.27c-3.337-6.556-4.679-14.17-6.739-21.405   c-4.083-14.342-8.469-29.023-12.684-43.602c-2.081-7.196-3.555-14.662-7.135-21.008C42.042,118.827,39.42,109.426,37.656,99.167z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M208.1,99.959c-0.707,1.683-3.006,2.465-4.756,3.171   c-6.514,2.627-15.983,5.153-21.405,7.927C188.589,105.288,199.917,104.195,208.1,99.959z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M127.239,103.526c-12.72,3.928-23.111,10.186-34.089,15.855   c3.298-4.835,9.747-6.048,15.062-8.721c5.617-2.824,11.589-5.926,17.044-8.324C126.392,102.259,127.42,102.288,127.239,103.526z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M209.29,105.508c0.265,0,0.528,0,0.793,0   c-10.419,3.983-20.774,8.03-32.107,11.099C187.514,112.272,199.39,108.162,209.29,105.508z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M71.745,106.698c-1.274,0.73-4.379-0.101-5.946-0.396   C66.794,104.649,71.014,105.56,71.745,106.698z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M126.446,109.076c-11.399,4.324-21.418,10.028-30.918,16.252   c-0.528-2.729,4.592-4.407,7.531-5.946c6.907-3.615,14.64-8.624,22.594-11.099C126.327,108.137,126.401,108.592,126.446,109.076z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M359.518,108.679c1.36,1.283,0.85,4.436,1.189,6.739   C359.351,114.131,359.66,111.18,359.518,108.679z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M72.142,109.076c2.955,1.273,8.82-0.364,9.909,2.775   C79.403,110.271,73.73,111.715,72.142,109.076z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M212.064,109.472c-8.314,3.577-17.038,6.745-25.765,9.91   c3.51-2.362,7.645-4.302,11.892-5.946C202.42,111.799,207.213,110.485,212.064,109.472z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M131.995,111.454c0.396,0,0.792,0,1.189,0   c-12.388,5.978-24.302,12.429-36.467,18.63C106.962,122.359,119.472,116.9,131.995,111.454z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M212.46,113.833c-7.406,3.825-17.087,5.374-24.179,9.513   c0.474-3.463,6.699-4.147,10.702-5.549c4.21-1.475,8.76-3.003,12.288-4.36C211.912,113.324,211.954,113.811,212.46,113.833z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M357.14,114.229c1.228,0.409,1.34,3.424,0.792,4.36   C356.753,118.05,357.236,115.85,357.14,114.229z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M65.799,114.625c0.264,0,0.528,0,0.793,0c3.741,0.059,8.101,1.114,11.891,1.585   c1.615,0.201,4.444-1.039,5.153,1.189C78.325,116.735,70.465,117.041,65.799,114.625z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M360.311,117.4c1.095,0.031,1.408,4.391,0,4.36   C360.614,120.032,359.821,118.088,360.311,117.4z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M211.667,118.192c0.488,0.173,0.814,0.507,0.793,1.189   c-10.668,2.94-19.159,8.06-30.521,10.306C191.419,125.426,202.144,122.41,211.667,118.192z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M130.41,118.589c-11.271,5.773-22.366,11.723-33.692,17.441   C106.722,128.99,118.007,123.231,130.41,118.589z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M67.781,120.967c3.712-1.364,8.562,1.092,12.684,1.189   c2.107,0.05,4.803-1.272,5.549,1.189C79.647,122.843,73.356,122.263,67.781,120.967z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M213.253,123.346c-9.135,3.153-17.624,6.952-26.558,10.306   C193.889,128.806,204.015,124.83,213.253,123.346z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M131.599,124.535c-11.782,5.658-23.563,11.318-34.089,18.233   c2.655-3.122,6.933-6.15,11.495-8.72c6.333-3.567,14.045-6.265,21.405-9.513C130.806,124.535,131.202,124.535,131.599,124.535z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M357.932,124.535c1.152,0.007,0.938,2.24,0.396,2.775   C357.618,126.454,357.632,125.489,357.932,124.535z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M87.997,130.48c-5.457-0.225-9.381-1.981-15.459-1.585   c0.825-1.269,2.909-1.059,5.946-0.793C81.725,128.386,86.509,129.017,87.997,130.48z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M211.271,127.706c-8.692,4.128-18.667,9.073-27.746,11.495   C192.529,135.125,201.058,130.573,211.271,127.706z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M137.148,128.895c-1.279,1.861-4.895,1.94-7.135,2.774   c-10.631,3.96-20.84,10.789-30.521,15.855c1.84-2.666,5.161-4.23,7.928-5.946C115.649,136.478,125.978,131.439,137.148,128.895z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M355.158,130.877c2.03-0.166,1.202,4.144,0.793,5.153   C355.312,134.686,355.138,132.878,355.158,130.877z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M358.329,130.877c0.898,0.667,1.897,5.372,0,5.153   C358.329,134.312,358.329,132.594,358.329,130.877z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M89.582,136.823c-4.728-0.557-8.561-2.01-14.27-1.586   C79.202,133.498,86.897,134.724,89.582,136.823z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M45.188,135.237c0.431,0.098,0.269,0.788,0.793,0.793   c5.298,21.75,12.124,42.603,18.233,63.817c1.948,6.766,5.108,14.059,3.964,21.405c-6.442-16.68-9.451-36.793-16.648-52.719   C50.065,157.044,46.523,145.535,45.188,135.237z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M135.166,135.633c-11.797,5.116-23.531,12.407-34.485,17.044   C111.2,146.282,122.997,139.059,135.166,135.633z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M140.319,139.201c-9.812,5.499-21.25,9.935-30.917,15.459   c-2.813,1.607-5.009,4.521-8.324,4.757c1.648-2.184,4.908-2.756,6.342-5.153C119.173,150.029,127.698,142.567,140.319,139.201z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M355.951,139.994c1.433-0.375,0.553,1.561,0.793,2.378   C355.311,142.748,356.191,140.811,355.951,139.994z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M352.78,140.787c1.368,0.855,0.838,5.354,0.793,6.342   C352.421,146.056,352.269,142.24,352.78,140.787z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M81.655,141.976c3.211,1.148,8.821-0.102,10.306,2.774   C88.964,143.386,83.526,144.464,81.655,141.976z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M143.887,141.976c-13.945,6.667-27.743,13.481-40.035,21.801   c2.808-3.88,7.601-5.716,11.495-8.324c8.413-5.634,17.821-9.313,27.747-13.477C143.358,141.976,143.622,141.976,143.887,141.976z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M82.051,145.543c-2.221-0.818-4.859-1.218-7.531-1.585   C76.123,142.456,81.656,143.259,82.051,145.543z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M356.347,143.165c1.232,0.088,0.67,1.973,0.793,3.171   C355.933,146.214,355.769,143.859,356.347,143.165z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M189.47,144.354c-0.14,5.279-3.571,10.696-4.756,16.251   c-1.287-0.23-1.844,0.27-2.775,0.396C183.193,155.765,184.171,146.862,189.47,144.354z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M145.869,145.146c0.487,0.173,0.814,0.507,0.792,1.189   c-14.935,6.073-27.499,14.518-41.224,21.801C117.298,158.856,131.709,152.127,145.869,145.146z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M182.732,148.318c0.884,0.406,0.313,2.653-0.793,2.378   C181.713,149.413,182.06,148.702,182.732,148.318z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M353.176,148.318c1.202-0.013,0.987,1.391,1.188,2.378   C352.946,150.926,353.16,149.523,353.176,148.318z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M180.354,149.507c2.029,1.457,1.554,4.764,0.396,6.738   c-1.02-1.358-0.743-4.014-1.982-5.153C178.895,150.162,179.995,150.205,180.354,149.507z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M82.051,150.696c3.594-0.683,9.114,0.132,12.288,1.189   C91.771,153.083,85.495,151.251,82.051,150.696z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M178.372,151.489c0.543,3.583,2.758,5.881,1.189,9.513   C178.156,159.295,174.531,152.206,178.372,151.489z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M177.975,161.398c-0.66,0-1.321,0-1.981,0   c-0.741-2.826-1.579-5.556-2.378-8.324C177.191,152.416,176.368,158.845,177.975,161.398z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M268.747,166.948c-1.69,0.423-1.99,2.237-3.964,2.378   c1.053-16.904-14.208-13.353-28.539-10.702c-28.847,5.335-61.679,10.375-91.564,15.459c-12.975,2.207-25.871,5.25-37.656,6.342   c-9.808,0.909-17.909-4.167-27.747-2.378c-0.499-1.415,1.719-2.487,2.378-2.775c3.296-1.439,10.851-1.712,15.855-2.378   c21.572-2.87,43.96-5.465,66.989-8.324c31.113-3.862,60.971-9.072,88.393-11.495C262.57,152.219,269.288,156.85,268.747,166.948z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M172.426,153.867c1.643,1.925,1.821,5.314,2.775,7.928   c-0.793,0-1.585,0-2.378,0c-0.235-2.803-1.354-4.724-1.982-7.135C171.579,154.605,172.165,154.399,172.426,153.867z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M350.401,154.263c1.419,0.167,1.116,2.056,1.189,3.567   C349.999,157.837,350.489,155.762,350.401,154.263z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M172.03,162.191c-0.661,0-1.321,0-1.982,0   c-0.326-2.184-1.315-3.706-1.585-5.946C171.337,154.045,171.224,159.882,172.03,162.191z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M169.255,162.587c-0.792,0-1.585,0-2.378,0   c-0.682-1.168-0.481-3.218-1.585-3.964C167.732,154.826,168.614,160.093,169.255,162.587z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M163.309,159.812c0.366,1.819-0.992,1.915-0.792,3.568   c-2.626,0.148-4.587,0.962-7.531,0.792C157.625,162.584,160.181,160.913,163.309,159.812z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M164.895,160.209c0.673,0.565,1.371,2.15,0.793,2.775   c-0.528,0-1.057,0-1.585,0C164.389,162.082,164.456,160.959,164.895,160.209z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M350.797,160.209c1.931,0.698,1.317,5.417,1.189,5.946   C350.358,165.406,351.587,161.797,350.797,160.209z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M234.261,162.191c-0.415,1.562-1.702,1.115-2.774,0.793   C231.87,162.177,233.009,162.127,234.261,162.191z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M230.297,162.984c0.027,1.265-2.491,1.028-2.774,0.792   C227.579,162.643,229.176,163.052,230.297,162.984z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M226.73,163.776c-0.382,0.807-1.521,0.856-2.774,0.793   C224.004,163.38,226.205,163.298,226.73,163.776z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M84.429,163.776c4.844,0.441,9.937,0.634,12.685,3.171   C93.226,165.55,87.703,165.788,84.429,163.776z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M220.388,164.173c1.024,1.309-3.132,1.621-5.153,1.982   c-35.942,6.413-74.838,12.081-109.797,19.423c-8.012-1.616-15.139-4.46-24.576-3.567c7.511-3.851,16.129,2.593,24.576,1.981   c8.753-0.633,18.519-3.12,28.54-4.756C161.722,174.705,194.158,168.651,220.388,164.173z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M231.09,164.569c-0.056,1.134-1.653,0.725-2.774,0.792   C228.372,164.228,229.969,164.637,231.09,164.569z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M227.126,165.362c-0.044,1.013-1.327,0.787-2.378,0.793   C224.737,164.983,226.583,164.813,227.126,165.362z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M240.604,164.966c0.212,1.038-2.905,1.964-2.775,0.396   C238.759,165.236,239.317,164.736,240.604,164.966z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M223.163,165.362c2.062,0.624-1.304,2.13-1.981,1.189   C220.99,165.303,222.999,166.254,223.163,165.362z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M237.037,165.758c-0.382,0.946-2.309,1.54-3.172,0.793   C233.954,165.318,235.838,165.881,237.037,165.758z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M246.153,165.758c0.379,1.12-2.578,1.958-2.378,0.396   C244.708,166.164,244.942,165.472,246.153,165.758z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M220.388,166.551c-0.056,1.134-1.653,0.725-2.774,0.792   C217.663,166.155,219.863,166.073,220.388,166.551z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M229.901,166.551c0.793,0,1.586,0,2.379,0c0.375,1.432-1.562,0.553-2.379,0.792   C229.901,167.08,229.901,166.815,229.901,166.551z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M242.982,166.551c-0.049,1.189-2.249,1.271-2.774,0.792   C240.262,166.21,241.861,166.619,242.982,166.551z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M215.235,166.948c1.114,1.633-2.91,1.657-4.756,1.981   c-23.979,4.223-50.973,8.953-75.313,13.477c-9.26,1.722-18.859,3.95-27.747,4.757c-9.149,0.831-17.439-4.428-26.161-2.775   c3.774-2.519,8.363-0.831,12.288,0c3.725,0.789,7.651,2.109,11.495,1.982c8.452-0.279,18.001-3.174,27.351-4.756   c26.385-4.465,57.241-9.888,82.447-14.666C214.971,166.948,215.103,166.948,215.235,166.948z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M229.109,167.344c-0.045,1.013-1.327,0.787-2.379,0.793   C226.718,166.965,228.566,166.794,229.109,167.344z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M239.415,167.344c-0.056,1.134-1.653,0.725-2.774,0.793   C236.689,166.947,238.889,166.865,239.415,167.344z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M225.145,167.74c0.029,1.352-1.469,1.174-2.775,1.189   C222.439,167.677,223.938,167.855,225.145,167.74z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M235.054,168.929c-1.494-0.305-1.895,0.484-3.171,0.396   C231.737,167.875,235.333,166.989,235.054,168.929z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M87.204,168.137c1.951,0.824,5.878-0.33,6.342,1.982   C91.529,169.361,87.978,170.138,87.204,168.137z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M220.388,168.533c-1.471,2.246-4.536,1.594-6.738,1.982   c-24.729,4.355-52.196,9.454-77.691,13.873c-9.436,1.636-18.915,4.209-28.143,5.153c-8.555,0.875-16.628-3.975-24.972-3.171   c8.841-2.24,14.619,2.808,24.972,1.982c8.941-0.713,18.214-3.256,27.747-4.756c26.537-4.178,59.594-10.454,84.033-15.062   C219.86,168.533,220.124,168.533,220.388,168.533z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M268.747,168.533c0.265,0,0.528,0,0.793,0   c4.977,73.878,10.089,150.575,15.459,225.541c1.322,18.469,2.515,37.269,3.964,55.891c0.435,5.589,1.892,12.572-3.567,15.854   c-6.849-95.252-14.023-199.265-20.216-294.907C266.576,170.326,267.581,169.349,268.747,168.533z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M230.297,168.929c-0.124,1.33-1.796,1.111-3.171,1.189   C227.25,168.79,228.922,169.008,230.297,168.929z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M224.749,169.722c0.895,1.675-1.694,1.113-1.982,1.189   c-7.657,2.013-17.399,3.244-25.765,4.756c-19.017,3.438-38.525,7.025-58.664,10.702c-9.879,1.804-20.161,4.319-29.729,5.153   c-9.139,0.797-16.938-2.999-25.368-3.171c8.207-1.812,15.868,3.07,24.179,2.378c9.319-0.776,19.12-3.259,28.936-5.153   C164.738,180.1,196.826,175.161,224.749,169.722z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M349.212,173.686c1.437,0.28,0.546,2.889,0.793,4.36   C348.939,177.475,348.69,174.596,349.212,173.686z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M53.512,176.064c3.552,11.942,8.068,25.704,11.495,38.449   c0.979,3.641,3.777,8.933,0.396,11.892C61.355,209.21,54.989,194.916,53.512,176.064z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M166.084,208.171c2.471-8.76,5.767-16.695,7.928-25.765   c1.028,0.072,2.655-1.267,3.171-0.396c-2.942,7.194-3.697,17.218-7.531,23.386C168.884,206.631,167.769,208.054,166.084,208.171z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M168.462,183.199c0.528,0,1.057,0,1.585,0   c0.605,1.619,1.345,4.16,0,5.549C169.212,187.36,168.282,184.323,168.462,183.199z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M167.273,183.596c0.995,3.732,3.132,7.144,1.189,10.702   c-1.942-2.682-1.982-7.267-3.568-10.306C166.107,184.279,166.061,183.308,167.273,183.596z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M163.706,183.992c1.351,4.469,5.309,10.841,2.775,15.459   c-1.574-4.9-3.175-9.773-4.36-15.062C162.748,184.355,163.632,184.579,163.706,183.992z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M159.345,184.785c0.396,0,0.793,0,1.189,0   c1.976,5.498,6.057,12.868,4.36,19.423C162.875,197.903,160.812,191.642,159.345,184.785z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M157.363,185.181c0.641-0.112,0.683,0.375,1.189,0.396   c0.879,8.182,6.9,16.406,4.756,23.783C161.097,201.956,156.531,193.026,157.363,185.181z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M82.051,185.974c0.238,0.907-2.743,1.44-2.378,0   C80.599,185.852,81.31,185.198,82.051,185.974z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M262.008,189.145c1.069-0.049,1.416,4.082,0,3.964   C262.008,191.788,262.008,190.466,262.008,189.145z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M155.778,189.542c1.954,2.963,2.381,7.765,3.567,11.891   c1.083,3.769,4.407,8.252,1.586,10.703c-2.891-5.169-2.837-13.283-6.342-17.837C155.405,193.133,155.281,191.026,155.778,189.542z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M83.24,191.523c0.3,3.964-1.91,7.824-3.171,11.495   c-9.49,27.628-19.231,56.795-28.539,84.826c-1.924,0.718-2.699,2.586-4.757,3.171c11.669-30.641,20.206-64.522,32.503-95.924   C79.965,193.332,80.333,190.436,83.24,191.523z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M259.63,192.316c1.25-0.51,1.25,3.285,0,2.775   C259.63,194.166,259.63,193.241,259.63,192.316z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M54.701,193.505c1.799,3.607,3.537,11.245,5.549,18.234   c2.318,8.05,7.063,15.301,3.171,21.008c-2.877-10.731-5.595-21.623-9.513-31.314c0.999,7.347,4.715,16.776,7.135,24.972   c1.499,5.079,3.544,9.057,0.396,12.685c-3.165-10.445-5.282-21.936-9.513-31.314c1.238,7.18,4.513,16.148,6.739,24.575   c1.211,4.588,3.872,8.817,0.792,12.288c-2.659-10.289-5.472-20.424-8.72-30.125c0.927,8.418,4.693,18.086,7.135,26.954   c0.702,2.548,2.473, [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M262.405,193.505c0.907,0.331,1.085,2.436,0.396,3.171   C261.594,196.645,261.872,194.084,262.405,193.505z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M154.192,195.091c0.461-0.064,0.705,0.087,0.793,0.396   c0.413,2.965,1.804,6.299,2.774,9.513c0.917,3.038,2.871,6.896,0.396,8.721c-1.731-4.215-2.378-9.513-4.36-13.477   c-1.048,4.556,5.006,11.097,1.982,15.062c-2.189-2.303-1.933-7.052-3.567-9.91c-1.554,3.38,4.419,9.406,0.396,11.495   c-0.317-1.929-0.694-3.798-1.585-5.153c-1.626,1.931,2.7,5.748-0.396,6.738c-1.536,0.215-0.343-2.3-1.585-2.378   c-1.113,0.759,0.544,2.067,0.396,3.1 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M260.026,196.676c1.433-0.375,0.554,1.561,0.793,2.378   C259.345,198.962,259.708,197.649,260.026,196.676z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M224.352,199.847c-0.031,1.207-2.592,0.929-3.171,0.396   C221.901,199.725,223.573,199.115,224.352,199.847z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M262.801,199.451c0.866,0.059,0.851,0.999,0.792,1.982   C262.221,201.71,262.172,200.043,262.801,199.451z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M405.499,199.847c1.825,0.157,1.522,2.442,1.585,4.36   C405.946,203.363,405.659,201.668,405.499,199.847z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M257.251,201.433c1.489,0.625,1.05,3.179,1.189,5.153   C256.678,206.235,257.427,203.371,257.251,201.433z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M260.026,201.433c1.271-0.111,1.441,1.736,0.793,2.378   C259.806,203.767,260.033,202.484,260.026,201.433z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M215.631,201.829c7.803,0.522,17.696-1.048,24.18,0.793   c-13.197-0.629-31.501,0.82-46.773,0c-6.049-0.325,2.546-0.788,3.568-0.793C203.303,201.793,209.574,201.856,215.631,201.829z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M244.963,201.829c0.407,1.332-1.232,0.617-1.981,0.793   C242.575,201.29,244.214,202.005,244.963,201.829z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M262.801,202.622c0.461-0.065,0.705,0.087,0.792,0.396   c5.027,77.348,11.592,158.016,16.252,235.848c-1.853-9.326-1.879-19.215-2.378-28.937c-1.426-27.799-4.302-57.768-6.343-87.204   c-2.738-39.502-5.752-79.352-8.323-118.914C262.801,203.415,262.801,203.018,262.801,202.622z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M202.551,204.208c-0.678,1.189-1.442,0.44-2.774,0.396   C199.987,203.249,201.686,203.997,202.551,204.208z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M408.669,203.811c1.798,0.977,1.725,3.825,1.981,6.342   C409.233,208.797,409.203,206.052,408.669,203.811z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M260.422,204.208c1.167,0.936,1.219,4.693,0.793,5.946   C259.63,209.492,260.765,206.111,260.422,204.208z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M225.937,206.189c-0.157,1.692-3.321,0.378-4.756,0.792   C221.338,205.29,224.502,206.604,225.937,206.189z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M401.931,206.982c1.251-0.51,1.251,3.285,0,2.775   C401.931,208.832,401.931,207.907,401.931,206.982z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M258.044,207.378c1.47,2.098,0.567,6.567,1.189,9.513   C257.197,215.57,258.075,209.404,258.044,207.378z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M396.778,208.171c1.632,2.729,0.911,7.809,1.982,11.099   C396.228,217.667,396.92,210.856,396.778,208.171z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M325.429,210.946c-16.834,0.21-34.542-0.454-50.736,0.396   c3.246-2.149,8.154-1.189,12.684-1.189C300.062,210.153,316.832,209.399,325.429,210.946z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M329.79,210.946c-0.925,0-1.85,0-2.774,0   C327.097,209.795,330.133,209.13,329.79,210.946z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M352.78,211.739c-19.002,2.092-44.25-0.236-62.629,1.189   c2.396-2.157,7.566-1.189,11.892-1.189C319.42,211.739,342.478,211.574,352.78,211.739z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M286.98,212.135c-0.103,0.722-3.283,1.585-3.171,0   C284.386,211.552,286.404,211.552,286.98,212.135z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M402.328,212.531c1.781,1.521,0.919,5.687,1.585,8.324   C402.381,219.083,402.694,215.468,402.328,212.531z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M304.025,213.721c-0.059,0.867-0.999,0.851-1.982,0.792   C301.765,213.141,303.432,213.092,304.025,213.721z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M368.635,213.324c-19.688,1.786-45.357,0.232-61.836,1.189   c-0.243-0.353-0.479-0.709,0-0.792C322.58,212.878,348.438,213.531,368.635,213.324z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M254.874,214.117c1.837-0.251,1.004,2.167,1.188,3.568   C254.727,217.435,255.03,215.546,254.874,214.117z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M261.215,214.117c0.337-0.073,0.374,0.155,0.396,0.396   c5.252,75.029,10.594,144.96,15.062,219.199C270.665,364.256,265.758,287.602,261.215,214.117z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M324.24,216.099c-1.188,0-2.378,0-3.567,0   C321.103,215.225,324.482,214.122,324.24,216.099z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M390.833,214.91c2.336,2.843,1.889,10.496,1.981,14.27   C391.237,225.339,391.629,219.53,390.833,214.91z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M340.492,217.288c1.057,0,2.114,0,3.171,0c0.242,1.563-2.176,0.466-3.171,0.792   C340.492,217.816,340.492,217.552,340.492,217.288z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M407.876,217.288c1.543,1.503-0.223,3.748,0.793,5.946   C406.736,223.065,407.402,218.589,407.876,217.288z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M258.441,217.685c0.461-0.065,0.705,0.087,0.793,0.396   c5.005,61.739,8.497,123.714,13.08,184.714c-2.308-2.978-1.359-7.211-1.585-10.702c-3.624-55.953-8.429-117.265-12.288-173.219   C258.441,218.477,258.441,218.081,258.441,217.685z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M255.667,219.667c1.013,0.044,0.786,1.327,0.792,2.378   C255.027,222.42,255.906,220.483,255.667,219.667z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M385.679,220.855c2.09,7.644,1.992,16.55,3.567,25.369   C386.147,239.934,386.058,228.548,385.679,220.855z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M403.913,223.234c1.859,1.536,0.086,5.651,0.793,7.531   C402.487,230.388,403.603,224.848,403.913,223.234z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M399.156,224.026c0.396,0,0.793,0,1.189,0c0.262,3.306-0.524,7.66,0.396,10.306   C398.575,234.117,399.413,227.474,399.156,224.026z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M256.062,224.819c0.891,0.325,1.85,2.618,0,2.378   C256.063,226.405,256.062,225.612,256.062,224.819z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M379.337,227.198c2.196,2.068,2.061,8.46,1.981,11.495   C379.891,235.628,380.264,230.762,379.337,227.198z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M253.288,228.783c1.908,0.724,0.772,2.309,1.189,4.756   C252.945,233.089,253.406,230.647,253.288,228.783z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M393.607,230.765c1.448,2.119,1.639,5.496,1.586,9.116   C394.067,237.649,393.216,233.212,393.607,230.765z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M256.458,231.558c0.461-0.064,0.706,0.087,0.793,0.396   c3.823,56.247,8.201,117.722,11.892,175.201c-5.809-56.197-8.388-117.786-12.685-174.408   C256.458,232.35,256.458,231.954,256.458,231.558z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M160.931,233.54c-0.661,0-1.321,0-1.982,0   C158.951,232.333,161.274,231.9,160.931,233.54z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M401.931,233.936c0.063-0.465,0.723-0.334,1.188-0.396   c0.205,1.009,0.676,1.537-0.792,1.586C402.361,234.563,402.393,234.002,401.931,233.936z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M374.184,233.936c2.184,6.141,3.102,13.547,3.567,21.404   C375.952,249.07,374.876,239.999,374.184,233.936z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M135.562,235.522c-1.189,0-2.378,0-3.567,0   C132.355,234.342,135.709,233.891,135.562,235.522z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M183.128,235.522c-13.506,0.015-30.368-0.012-45.188,0   C150.938,234.215,169.718,234.207,183.128,235.522z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M188.678,234.729c-0.044,1.013-1.328,0.786-2.378,0.793   C185.924,234.089,187.86,234.968,188.678,234.729z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M254.081,235.125c0.973,0.266,1.214,2.307,0.793,2.774   C253.74,237.844,254.149,236.247,254.081,235.125z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M149.436,237.9c-0.9-0.289-3.093,0.714-2.775-0.793   C147.582,236.819,149.623,236.104,149.436,237.9z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M210.083,237.107c-18.669,1.872-39.755,0.122-56.683,0.793   c-0.674,0.146-0.748-0.31-0.793-0.793C173.3,236.412,191.226,236.581,210.083,237.107z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M215.631,237.107c0.51,1.251-3.284,1.251-2.774,0   C213.565,237.109,215.163,236.04,215.631,237.107z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M168.858,239.089c0.176,1.001-3.438,1.43-3.171,0   C166.594,238.836,168.079,238.303,168.858,239.089z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M235.847,239.089c-19.086,1.834-41.616,0.275-62.232,0.792   C190.18,237.959,216.083,239.637,235.847,239.089z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M241,239.881c-0.66,0-1.32,0-1.981,0C239.02,238.674,241.343,238.242,241,239.881   z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M254.477,239.089c1.069-0.049,1.416,4.082,0,3.964   C254.899,241.303,253.693,239.99,254.477,239.089z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M367.842,239.089c2.606,2.252,1.146,7.613,2.378,11.891   C367.638,248.806,368.503,243.184,367.842,239.089z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M190.66,241.071c0.792,0,1.585,0,2.378,0c0.375,1.433-1.561,0.553-2.378,0.793   C190.66,241.599,190.66,241.335,190.66,241.071z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M225.937,243.449c-1.473,1.422-4.429,0.7-6.342,0.396   C220.27,242.418,224.643,242.981,225.937,243.449z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M313.934,245.828c-0.66,0-1.321,0-1.981,0   C311.955,244.621,314.278,244.188,313.934,245.828z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M243.775,245.035c0.793,0,1.585,0,2.378,0c0.376,1.433-1.562,0.553-2.378,0.793   C243.775,245.563,243.775,245.299,243.775,245.035z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M276.674,245.035c11.23,0,22.462,0,33.692,0   c-6.83,1.424-17.802,0.793-26.558,0.793C281.123,245.828,277.958,246.716,276.674,245.035z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M363.085,245.431c0.641-0.111,0.683,0.375,1.189,0.396   c0.63,8.354,2.983,14.985,3.171,23.782C365.11,262.433,364.566,253.464,363.085,245.431z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M381.715,245.431c2.041,2.584,1.492,7.757,1.586,12.288   C381.842,254.784,381.788,248.445,381.715,245.431z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M332.96,246.621c0.321,0.075,0.396,0.397,0.793,0.396c0,0.265,0,0.529,0,0.793   c-0.919,0.127-1.521-0.063-1.982-0.396C331.861,246.842,332.955,247.275,332.96,246.621z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M251.703,247.809c1.04,0.597,1.467,3.299,0.792,4.36   C251.316,251.63,251.798,249.431,251.703,247.809z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M255.27,248.206c3.954,45.576,6.437,94.813,9.909,139.923   c-2.035-4.182-1.479-10.211-1.981-16.252c-3.201-38.433-5.517-82.515-8.324-122.481   C254.839,248.833,254.808,248.272,255.27,248.206z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M286.98,248.999c-0.289,1.354-2.869-0.112-4.756,0.396   C282.51,248.044,286.097,248.503,286.98,248.999z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M298.079,250.584c0.925,0,1.851,0,2.775,0c0.317,1.507-1.875,0.504-2.775,0.792   C298.079,251.113,298.079,250.848,298.079,250.584z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M358.725,250.584c1.639,0.272,1.433,2.189,1.586,3.171   c1.103,7.053,2.14,15.248,2.378,22.197C360.581,268.284,359.599,259.488,358.725,250.584z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M323.448,252.169c0.375,1.433-1.562,0.553-2.379,0.793   C321.114,251.95,322.396,252.175,323.448,252.169z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M252.099,254.547c1.105-0.275,1.677,1.973,0.792,2.379   C251.459,257.301,252.338,255.365,252.099,254.547z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M371.013,254.944c1.997,4.03,1.23,8.396,1.981,13.478   C370.931,265.568,371.017,258.546,371.013,254.944z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M353.968,258.116c2.041,5.755,2.542,13.05,3.964,19.422   C355.292,272.383,354.542,265.338,353.968,258.116z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M252.495,259.701c0.461-0.064,0.706,0.088,0.793,0.396   c2.619,37.782,4.771,74.381,7.531,111.383c-2.386-8.646-2.073-18.11-2.774-27.35c-2.101-27.684-3.922-56.484-5.55-83.24   C252.495,260.494,252.495,260.097,252.495,259.701z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M38.449,304.888c-1.102-7.487-3.298-17.313-7.135-23.387   c2.131-6.589,3.64-13.801,5.549-20.611c3.398,8.493,4.973,18.81,8.324,27.351c-0.992,0.989-0.215,3.749-1.982,3.963   c-2.299-7.874-4.067-16.279-7.135-23.386c1.075,8.307,4.752,17.444,7.135,25.765c-2.302,5.361-3.857,11.47-5.946,17.044   c-2.563-6.949-3.765-15.261-6.738-21.801c0.957,7.5,4.082,16.266,6.342,23.783c-1.968,3.449-2.027,8.808-4.756,11.495   c-0.886-5.192-2.155-10 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M349.609,260.89c1.624,3.793,0.971,9.863,1.981,14.27   C349.093,272.478,349.798,264.567,349.609,260.89z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M250.117,263.665c3.236,32.164,4.557,61.207,6.738,92.357   c-1.979-3.1-1.282-7.24-1.585-10.703c-2.272-25.932-3.429-54.022-5.55-80.465C249.686,264.292,249.655,263.731,250.117,263.665z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M345.645,267.628c0.64-0.111,0.683,0.375,1.188,0.396   c1.09,8.027,3.064,15.169,5.153,22.197C347.472,285.091,347.258,275.66,345.645,267.628z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M95.528,268.025c1.727,5.145,1.899,11.842,3.171,17.44   C95.973,281.569,95.511,273.349,95.528,268.025z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M99.888,269.214c1.896,3.389,1.809,8.761,2.774,13.08   C100.58,279.221,99.938,273.05,99.888,269.214z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M119.708,269.61c1.605,4.077,1.612,9.751,2.378,14.667   C120.202,280.719,119.335,274.111,119.708,269.61z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M340.492,269.61c0.641-0.111,0.683,0.375,1.189,0.396   c1.526,9.976,4.203,20.893,5.549,29.729c-3.48-0.04-2.735-4.136-3.171-6.342c-1.339-6.789-3.428-14.172-3.964-22.594   C339.984,270.16,340.47,270.117,340.492,269.61z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M105.438,270.006c1.627,2.602,1.284,7.173,1.982,10.703   C106.005,278.052,105.117,273.117,105.438,270.006z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M131.599,270.006c1.706,1.994,1.498,5.902,1.982,9.117   C131.952,277.265,131.58,272.209,131.599,270.006z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M175.201,270.403c1.838,2.224,0.793,6.383,1.982,9.91   C175.364,278.385,175.054,272.99,175.201,270.403z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M188.678,270.799c1.18,1.493,0.704,5.872,1.585,8.721   C188.372,278.182,188.269,273.138,188.678,270.799z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M212.46,270.799c1.272,4.139,1.035,10.564,1.982,16.648   C211.669,284.254,212.294,275.617,212.46,270.799z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M225.937,270.799c0.979,1.952,0.949,7.586,1.189,9.91   C224.879,278.81,225.135,273.681,225.937,270.799z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M239.415,270.799c2.035,2.854,1.404,8.373,1.981,12.685   C239.753,280.471,239.362,274.198,239.415,270.799z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M110.194,271.196c2.281,1.947,1.35,7.106,2.378,10.306   C110.411,279.435,111.043,274.575,110.194,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M137.544,271.196c0.396,0,0.793,0,1.189,0   c-0.334,4.518,1.139,10.424,1.982,15.062C137.899,283.155,137.935,275.444,137.544,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M161.724,271.196c1.835,4.508,1.779,10.905,3.171,15.855   C162.307,283.542,161.646,276.056,161.724,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M168.462,271.196c1.605,3.283,1.699,8.078,2.378,12.288   C168.828,280.608,168.561,275.986,168.462,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M194.624,271.196c1.051,3.428,0.899,10.812,1.982,15.459   C194.478,283.21,194.033,276.045,194.624,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M206.515,271.196c0.396,0,0.792,0,1.188,0c-1.305,3.324,0.551,8.574-0.396,11.495   C205.733,279.75,205.662,274.439,206.515,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M219.199,271.196c1.487,3.799,0.923,9.647,1.586,14.27   C218.744,282.45,218.27,274.661,219.199,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M330.186,271.196c1.953,3.9,1.046,8.213,1.981,13.081   C329.998,281.425,330.57,275.833,330.186,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M335.338,271.196c1.918,2.478,1.547,9.241,1.586,12.288   C335.708,280.305,335.408,274.213,335.338,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M376.167,271.196c0.337-0.073,0.374,0.154,0.396,0.396   c0.338-0.073,0.374,0.154,0.396,0.396c0.772,23.556,3.254,45.335,4.36,69.366c0.129,2.794,1.146,6.602-2.378,7.531   c-1.482-25.222-3.364-50.734-4.757-75.312C375.241,273.177,375.492,271.974,376.167,271.196z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M125.256,271.592c1.678,3.872,1.823,9.276,2.775,13.873   c-1.656-0.797-1.611-3.728-1.982-5.945C125.591,276.785,124.789,273.949,125.256,271.592z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M149.04,271.592c1.637,3.411,1.34,10.779,1.982,13.873   C149.197,282.242,148.9,275.467,149.04,271.592z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M280.638,271.592c1.559,2.802,0.6,8.121,1.586,11.495   C280.085,281.091,280.331,274.727,280.638,271.592z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M91.96,271.989c1.331,1.048,0.841,3.916,1.189,5.945   C91.221,277.475,91.481,273.647,91.96,271.989z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M181.146,271.989c1.838,1.465,1.187,5.419,1.585,8.324   C180.841,278.901,181.667,274.772,181.146,271.989z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M307.196,271.989c1.282,1.063,1.499,4.97,1.189,6.342   C306.849,277.356,307.268,274.426,307.196,271.989z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M233.073,272.385c1.999,3.021,0.653,9.388,1.981,13.08   C232.542,283.192,233.164,275.769,233.073,272.385z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M285.395,272.385c0.396,0,0.793,0,1.188,0c-0.716,5.354,0.583,11.73,1.982,16.251   C284.95,284.926,285.73,278.918,285.395,272.385z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M290.547,272.782c1.548,1.228,0.776,4.772,1.586,6.738   C290.328,278.731,289.954,274.681,290.547,272.782z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M296.494,272.782c1.426,4.286,1.196,11.255,2.774,15.854   C296.473,285.466,296.196,277.731,296.494,272.782z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M319.88,272.782c0.396,0,0.792,0,1.188,0c0.015,2.893,0.565,5.248,0.793,7.928   C319.755,279.512,320.694,275.271,319.88,272.782z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M201.362,273.178c2.277,4.114,0.284,10.457,1.982,14.666   C200.402,285.476,202,276.538,201.362,273.178z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M301.25,273.574c2.521,3.426,1.051,10.842,2.775,15.062   C300.88,285.835,302.442,278.329,301.25,273.574z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M313.934,273.574c1.66,3.493,1.217,9.089,2.378,13.081   C313.857,284.146,313.765,277.416,313.934,273.574z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M114.554,275.16c2.116,2.376,1.808,7.177,2.775,10.702   C115.376,283.323,115.077,279.129,114.554,275.16z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M143.49,275.556c1.479,2.655,1.487,8.767,1.982,11.099   C143.41,284.519,143.136,278.825,143.49,275.556z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M34.089,276.746c3.451,5.666,4.595,13.639,6.738,20.611   c-2.236-2.445-2.929-6.482-3.964-9.909C35.788,283.886,34.956,280.222,34.089,276.746z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M371.806,277.141c2.253,25.702,3.916,48.865,4.756,73.331   c-2.464-1.198-1.752-4.955-1.981-7.531c-1.808-20.272-2.549-43.37-4.36-65.007C370.807,277.728,371.219,277.348,371.806,277.141z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M325.033,279.124c0.396,0,0.793,0,1.189,0c-0.809,2.733,0.682,5.33,0.793,8.324   C324.953,286.075,325.159,282.433,325.033,279.124z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M369.031,279.917c2.292,22.657,3.959,47.937,4.757,69.763   c-2.209-0.717-1.38-4.915-1.585-7.928c-1.332-19.534-3.276-41.748-3.964-60.646C368.609,280.815,368.839,280.384,369.031,279.917z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M308.385,282.294c1.706,1.2,1.032,4.781,1.585,7.135   C308.192,288.487,308.116,283.993,308.385,282.294z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M366.256,283.484c0.461-0.064,0.706,0.087,0.793,0.396   c1.72,21.271,3.365,44.729,4.36,65.402c-2.573-0.81-2.198-4.689-2.379-6.738c-1.081-12.332-1.673-26.297-2.378-41.224   c-0.269-5.676-1.711-12.529-0.793-16.648C365.749,284.033,366.235,283.991,366.256,283.484z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M109.401,283.88c1.174,1.023-0.552,2.483,0.396,3.567   C108.285,287.632,109.047,284.351,109.401,283.88z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M89.979,284.277c0.625,0.828,0.275,2.632,0.793,3.567   c-1.155,0.066-5.088,0.133-6.342,0C85.828,286.203,87.633,284.97,89.979,284.277z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M226.333,284.277c1.245,0.505,1.402,3.655,0.793,4.756   C225.814,288.366,226.246,285.195,226.333,284.277z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M336.924,286.258c1.066,3.668,2.104,10.643,1.981,14.666   C337.3,297.22,336.45,290.73,336.924,286.258z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M363.878,286.655c2.74,19.834,3.016,41.147,4.757,61.836   c-4.651-17.245-4.344-42.75-5.55-60.25C362.796,287.159,363.874,287.443,363.878,286.655z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M244.171,291.412c0,1.188,0,2.378,0,3.567   c-62.317,1.282-127.22-1.579-196.209-1.982c2.694-5.46,9.284-4.239,18.233-3.964C119.541,290.677,182.583,289.829,244.171,291.412z   "/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M361.104,289.429c2.27,9.226,1.973,21.018,2.774,31.711   C362.055,311.141,359.56,299.625,361.104,289.429z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M328.997,292.6c0.64,1.466-2.057,2.58-2.774,3.964   c-15.747,1.146-29.874-0.422-46.377,0c-0.495-0.883-0.954-4.47,0.396-4.756C296.936,292.736,315.137,291.787,328.997,292.6z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M331.375,294.979c0.645,8.483,6.306,23.876-1.188,28.539   C331.328,315.659,323.539,299.405,331.375,294.979z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M28.143,297.753c2.803,6.313,4.394,13.84,6.342,21.008   C31.248,313.137,29.63,303.811,28.143,297.753z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M70.556,297.753c0.153,1.607-2.47,0.437-3.567,0.793   C66.835,296.939,69.458,298.11,70.556,297.753z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M72.142,298.15c0.095-0.573,3.262-0.922,2.774,0.396   C73.863,298.542,72.652,298.696,72.142,298.15z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M76.501,297.753c1.142,0.048,2.595-0.217,3.171,0.396   C79.479,298.698,76.099,299.112,76.501,297.753z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M325.826,300.924c-16.399-0.061-30.827-0.165-45.98-0.793   c0-0.396,0-0.792,0-1.188c0.321-0.075,0.396-0.398,0.793-0.396c9.389,0.446,25.581,0.501,36.07,0.793   C319.611,299.419,323.857,297.976,325.826,300.924z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M75.312,301.321c-1.068,0.913-3.823,0.141-5.549,0.396   C70.08,300.168,74.338,300.946,75.312,301.321z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M82.844,300.924c-2.36,1.803-4.383,0.804-7.135,0.793   C76.701,300.067,80.588,301.311,82.844,300.924z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M85.619,300.924c0.925,0,1.85,0,2.774,0   C88.747,302.731,85.395,302.38,85.619,300.924z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M326.222,302.907c-2.257,2.149-7.684,1.188-11.892,1.188   c-11.05,0-23.279-0.053-34.089-1.188c0.064-0.461-0.088-0.706-0.396-0.793c0.176-0.353,0.349-0.709,0.793-0.793   c14.098,0.748,24.01-0.441,40.827,0.396C322.898,301.789,325.49,300.87,326.222,302.907z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M84.826,304.492c0.55-0.903,2.759-0.147,3.964-0.396   C88.887,305.619,85.384,304.852,84.826,304.492z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M95.528,304.095c0.242,1.563-2.176,0.467-3.171,0.793   C92.445,303.656,94.33,304.218,95.528,304.095z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M97.114,304.095c1.321,0,2.642,0,3.963,0   C100.958,305.948,96.921,305.472,97.114,304.095z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M326.222,305.681c0.009,2.779-3.738,1.541-5.153,1.585   c-12.767,0.405-29.055-0.49-40.827-1.188c0-0.396,0-0.793,0-1.189C291.955,304.721,313.011,304.275,326.222,305.681z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M338.51,304.492c-0.946,1.696-2.067,3.218-3.964,3.964   C335.616,306.882,336.24,304.864,338.51,304.492z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M340.095,304.492c1.251,2.104-3.477,4.936-5.152,6.738   C336.199,308.523,338.79,307.15,340.095,304.492z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M342.474,304.888c0.947,1.18-1.561,3.271-2.775,4.757   c-1.354,1.654-2.738,3.719-4.36,4.36C337.151,310.4,340.439,308.271,342.474,304.888z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M26.161,305.285c1.154,0.695,1.509,2.19,1.585,3.964   C26.385,308.761,26.376,306.919,26.161,305.285z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M101.474,307.663c-0.206,1.323-3.567,0.9-4.36,0.396   C98.332,307.471,100.219,307.114,101.474,307.663z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M107.023,307.663c0.407,1.332-1.232,0.617-1.982,0.793   C104.634,307.124,106.274,307.838,107.023,307.663z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M113.365,307.663c0.375,1.433-1.561,0.554-2.378,0.793   C111.031,307.443,112.314,307.669,113.365,307.663z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M118.122,307.663c1.057,0,2.114,0,3.171,0   C121.762,309.395,117.652,309.395,118.122,307.663z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M326.619,309.249c-0.552,2.205-3.801,1.149-5.153,1.189   c-12.971,0.377-28.396-0.463-40.827-0.793c0-0.396,0-0.793,0-1.189c-0.064-0.461,0.088-0.705,0.396-0.793   c11.985,0.171,21.04,0.396,35.277,0.396C319.969,308.059,324.498,307.133,326.619,309.249z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M327.412,313.212c-11.951,0.578-34.739,1.192-46.773-0.793   c0-0.396,0-0.793,0-1.189c0.321-0.075,0.395-0.397,0.793-0.396c10.162,0.362,22.645,0.396,35.674,0.396   C320.555,311.23,325.892,309.812,327.412,313.212z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M113.762,312.419c-3.434-0.154-4.955,0.104-6.739-0.396   C107.294,311.078,113.236,310.298,113.762,312.419z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M24.972,312.419c0.766,0.659,1.427,2.735,0.792,3.567   C24.785,315.542,24.299,313.291,24.972,312.419z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M327.412,315.194c0.032,0.628-0.191,1.513,0.396,1.586   c-17.073,1.865-30.721,0.242-46.772,0c0-0.793,0-1.586,0-2.378C298.027,314.439,312.228,314.456,327.412,315.194z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M103.852,315.987c-1.057,0-2.114,0-3.171,0   C100.624,314.305,103.779,314.566,103.852,315.987z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M112.572,315.194c0.242,1.563-2.176,0.467-3.171,0.793   C109.49,314.754,111.374,315.317,112.572,315.194z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M123.671,315.194c-0.531,2.181-2.012,0.596-3.567,0.793   C120.243,314.672,122.388,315.365,123.671,315.194z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M133.581,316.383c-1.318-0.399-4.312,0.877-4.36-0.793   C130.254,315.32,133.745,314.329,133.581,316.383z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M327.807,320.347c-0.621,2.226-3.641,1.142-5.152,1.189   c-13.594,0.431-26.662-0.924-41.224-0.396c0.28-1.47-0.678-1.701-0.396-3.171c11.702,1.316,27.016-0.893,42.413,0.396   C324.563,318.458,328.354,317.36,327.807,320.347z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M99.888,319.158c-0.287,1.352-3.874,0.893-4.757,0.396   C95.638,318.423,98.87,318.527,99.888,319.158z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M105.438,318.761c0.631,1.458-3.016,1.854-2.775,0.396   C103.914,319.352,104.062,318.444,105.438,318.761z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M110.59,319.158c-0.674,1.318-2.574,0.496-3.567,0.396   C107.377,318.581,109.796,318.48,110.59,319.158z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M22.594,319.554c2.699,4.172,3.729,10.013,5.153,15.459   C24.916,330.973,24.165,324.854,22.594,319.554z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M328.204,323.518c-0.716,2.191-4.007,1.192-5.549,1.189   c-10.929-0.02-30.653-0.173-41.224-1.189c0-0.264,0-0.528,0-0.793c-0.064-0.46,0.087-0.705,0.396-0.792   c13.334,0.678,26.117-0.283,41.62,0.396C324.762,322.386,327.558,321.395,328.204,323.518z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M79.276,323.122c-0.652,1.711-2.944,1.076-3.964,0.793   C75.517,322.534,77.902,323.333,79.276,323.122z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M86.808,323.122c0.621,1.362-2.654,1.882-2.378,0.396   C84.898,323.062,85.831,323.07,86.808,323.122z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M95.131,323.518c-0.204,1.382-2.589,0.581-3.963,0.793   C91.935,322.485,93.942,323.405,95.131,323.518z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M99.492,323.518c1.057,0,2.114,0,3.171,0c0.242,1.563-2.176,0.467-3.171,0.793   C99.492,324.046,99.492,323.783,99.492,323.518z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M281.431,325.897c0.176-0.354,0.348-0.709,0.793-0.793   c10.937,0.029,22.119-0.187,32.503,0.396c0.708-0.112,0.813,0.374,0.396,0.396c-10.416,0.449-23.374,0.13-33.296,0.792   C281.892,326.228,281.74,325.984,281.431,325.897z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M60.646,327.482c1.057,0,2.114,0,3.171,0c0.242,1.563-2.176,0.467-3.171,0.793   C60.646,328.01,60.646,327.747,60.646,327.482z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M68.574,327.878c-0.422,0.899-2.492,0.151-3.568,0.396   C64.822,326.762,68.103,327.524,68.574,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M74.52,327.878c-0.85,1.49-2.183,0.141-3.964,0.396   C70.69,326.984,73.808,327.365,74.52,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M76.501,327.482c12.781-0.089,22.171,0.184,29.729,0.396   c-7.924,1.828-20.788-0.138-28.936,0.793C77.037,328.268,76.383,328.261,76.501,327.482z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M300.854,327.482c0.487,0.173,0.813,0.508,0.792,1.189   c-6.654,5.765-11.59,13.249-18.233,19.026C288.24,339.972,295.473,334.654,300.854,327.482z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M284.206,327.878c1.05,1.076-0.843,2.573-1.981,2.774   C282.766,329.61,283.892,329.151,284.206,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M288.566,327.878c-1.878,2.35-3.273,5.184-6.342,6.342   C283.749,331.517,285.42,328.961,288.566,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M291.737,327.878c-2.494,3.848-5.58,7.104-9.117,9.909   C285.036,333.862,287.828,330.311,291.737,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M294.908,327.878c-3.351,5.105-7.887,9.025-11.892,13.477   c1.555-4.788,7.883-8.236,10.307-13.477C293.851,327.878,294.379,327.878,294.908,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M298.475,327.878c-4.77,5.933-9.869,11.535-15.459,16.648   C287.642,338.45,292.15,332.254,298.475,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M303.628,327.878c-5.038,7.779-13.16,15.908-20.216,22.99   C289.562,342.616,296.952,335.604,303.628,327.878z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M36.071,331.842c-4.055,13.843-10.141,29.312-15.062,43.998   c-2.264,6.755-2.882,14.888-8.72,17.441c6.557-20.793,13.881-40.82,20.612-61.439C33.957,331.842,35.014,331.842,36.071,331.842z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M18.233,342.941c2.801,2.484,2.975,7.596,3.964,11.892   C19.775,351.97,19.813,346.646,18.233,342.941z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M12.684,374.652c1.408,0.045,1.595,1.312,1.585,2.774   C12.872,377.371,13.141,375.648,12.684,374.652z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M260.819,376.237c1.134,0.056,0.726,1.653,0.793,2.774   C260.001,379.384,260.238,376.865,260.819,376.237z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M260.819,380.201c1.507-0.317,0.504,1.874,0.793,2.774   C260.478,382.92,260.887,381.322,260.819,380.201z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M261.215,384.958c1.189,0.049,1.271,2.249,0.793,2.774   C260.875,387.676,261.284,386.079,261.215,384.958z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M264.783,390.903c1.685,0.298,1.046,2.918,1.189,4.757   C263.872,395.778,265.122,392.546,264.783,390.903z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M265.179,396.056c1.134,0.056,0.725,1.653,0.793,2.774   C264.465,399.149,265.468,396.957,265.179,396.056z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M265.576,403.984c1.58-0.259,1.136,1.507,1.189,2.774   C265.414,406.789,265.591,405.29,265.576,403.984z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M271.521,405.172c0.396,0,0.793,0,1.189,0c-0.399,1.319,0.877,4.312-0.793,4.36   C272.113,407.752,271.716,406.563,271.521,405.172z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M268.747,409.136c1.708-0.069,1.368,3.397,0.793,4.36   C268.102,413.216,268.993,410.608,268.747,409.136z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M272.314,412.308c1.607-0.154,0.437,2.47,0.793,3.567   C271.644,415.081,271.983,413.384,272.314,412.308z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M269.143,414.686c1.15,0.082,1.815,3.118,0,2.774   C269.143,416.536,269.143,415.611,269.143,414.686z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M272.314,416.272c1.51,0.207,1.102,2.334,1.189,3.963   C271.804,420.216,272.447,417.857,272.314,416.272z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M269.54,419.443c1.105-0.275,1.677,1.972,0.793,2.378   C268.9,422.197,269.78,420.259,269.54,419.443z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M273.107,423.803c1.115,0.116,1.699,3.234,0,2.774   C273.107,425.653,273.107,424.728,273.107,423.803z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M269.936,424.595c1.222,0.017,1.417,2.104,0.793,2.775   C269.595,427.315,270.003,425.717,269.936,424.595z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M276.674,436.09c1.207,0.031,0.929,2.592,0.396,3.171   C276.406,438.688,275.91,436.903,276.674,436.09z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M276.674,440.451c0.396,0,0.793,0,1.189,0c0,0.661,0,1.321,0,1.982   C276.625,442.614,276.596,441.585,276.674,440.451z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M279.449,440.451c1.59,0.405,1.158,2.494,0.793,3.964   C278.861,444.21,279.661,441.825,279.449,440.451z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M277.071,444.018c1.62,2.765,1.102,6.58,1.585,11.099   C276.833,451.969,277.359,449.098,277.071,444.018z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M279.845,446.792c1.368-0.129,1.45,2.071,0.793,2.775   C279.504,449.512,279.914,447.915,279.845,446.792z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M280.242,449.964c1.513,0.204,0.521,2.914,1.189,3.964   C279.493,454.149,280.484,451.439,280.242,449.964z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M281.035,459.081c1.381,0.204,0.581,2.59,0.793,3.964   C279.962,463.381,280.548,459.857,281.035,459.081z"/>
+	<path fill-rule="evenodd" clip-rule="evenodd" d="M162.12,0.071c2.003,0.375,1.43,3.327,2.774,4.36   c3.65-0.373,9.454-1.626,13.081,0c5.252,2.354,9.229,16.07,11.495,21.801c9.206,23.274,17.663,51.148,23.783,75.312   c20.503-5.115,44.334-8.184,69.366-11.099c18.095-2.106,35.729-4.4,53.908-6.738c11.781-1.516,24.675-5,29.332,5.153   c3.208,6.992,1.764,17.803,2.379,26.161c1.859,25.282,3.176,50.008,5.152,73.727c7.085,0.352,13.992,0.31,23.387,0.793   c5.339,0.274,11.62,0.449,14.27,3.171c2.631,2.7 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M44.791,294.979c62.928,1.305,115.348,1.633,176.787,2.774   c8,0.148,15.881-0.089,23.386,1.189c-54.311,2.113-111.522-1.322-162.913-0.793c46.341,2.132,98.26,1.811,146.662,2.378   c2.604,0.031,4.709-0.081,7.928,0c1.503,0.038,8.611-0.51,8.72,1.586c0.104,1.979-6.136,0.82-7.531,0.793   c-50.062-1.003-101.92-1.092-147.454-1.586c39.596,2.682,83.294,0.693,117.725,1.982c12.548,0.469,21.963,0.237,33.692,0.792   c0.95,0.045,3.752-0.979 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#4E8ABE" d="M141.905,166.155c2.214-2.41,6.478-2.771,8.72-5.153   c-3.167,0.14-7.398,2.641-9.513,5.153c-3.489,0.342-6.665,0.999-10.306,1.189c5.711-4.33,11.951-8.132,19.026-11.099   c-12.311,1.166-16.753,13.636-32.503,12.684c10.001-6.118,20.2-12.039,30.521-17.837c-7.843,2.126-13.428,6.824-21.404,11.099   c-7.463,4-12.219,9.044-23.783,8.721c-6.669-22.795-12.894-46.035-20.215-68.178c12.039-8.573,26.462-14.761,40.828-21.008   c-15.036,3.726 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M361.104,99.959c-2.876,0.295-5.866,0.476-8.324,1.189   c-1.26-8.771-12.406-4.685-21.405-3.171c-38.083,6.409-78.691,13.684-114.95,18.63c0.996-1.957,3.935-1.73,5.55-1.982   c30.588-4.761,63.445-10.396,93.942-15.855c-32.956,3.644-66.957,11.791-99.889,15.459c3.433-2.349,7.875-2.119,11.892-2.775   c28.623-4.674,59.482-9.377,87.601-14.666c-32.802,3.799-67.009,11.738-100.285,15.062c34.409-7.115,70.557-11.695,106.23-18.234   c-4.22 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M366.256,189.145c-2.148-0.899-1.106-4.866-1.188-6.739   c-0.837-19.032-2.763-40.234-4.36-58.665c0.189,22.1,3.221,42.386,3.171,65.8c-2.234-1.118-1.062-4.161-1.189-5.946   c-0.901-12.712-2.515-30.434-3.171-45.584c-1.502,15.423,2.437,34.823,1.981,51.133c-3.176-0.387-1.864-5.013-1.981-7.135   c-0.536-9.687-1.393-21.534-2.378-30.521c-0.266,9.693,0.652,20.844,1.188,30.521c0.11,1.992,1.498,6.625-0.396,7.531   c-2.383-0.494-1.453-3 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#4E8ABE" d="M178.768,6.81c-1.155,0.149-2.695-0.556-4.756,0   c-18.563,5.007-37.796,13.08-56.683,20.612c-9.172,3.657-18.497,7.57-27.351,11.495c-8.814,3.907-19.045,6.367-24.179,14.27   c3.892,18.306,10.618,33.777,15.062,51.53c-2.521,0.274-3.821-0.671-6.342-0.396c1.26,1.514,4.426,1.123,6.738,1.585   c5.671,17.055,10.605,34.846,15.459,52.719c-6.546-0.324-11.937-1.804-18.63-1.982c5.226,2.173,12.698,2.101,19.026,3.171   c1.209,3.679,2.813,6. [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M262.801,170.515c-1.466,0.56-5.868,0.428-8.324,1.189   c-3.771-6.438-13.758-2.479-22.99-0.792c-30.13,5.502-58.971,9.757-89.186,15.458c-12.074,2.279-24.338,5.725-35.278,6.342   c-9.697,0.547-17.108-4.266-27.35-2.775c-0.397-3.566-2.016-5.912-2.378-9.513c8.938-2.83,17.071,2.055,26.161,2.378   c5.459,0.194,12.379-1.656,19.026-2.774c17.688-2.977,37.388-6.225,55.097-9.117c26.347-4.303,51.296-7.854,73.331-12.288   C258.389,157.119 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#F1E5C8" d="M262.008,172.101c0.265,0,0.528,0,0.793,0   c7.112,98.459,14.013,196.625,20.215,295.701c-3.073-1.022-6.807-1.385-9.909-2.379c-6.235-39.806-12.683-81.163-19.819-121.688   c-3.3-18.741-2.246-39.873-5.152-61.043c-0.882,10.159,1.64,25.019,1.981,37.656c-7.744-25.332-1.188-57.714,0-84.43   c0.973-21.869,3.489-42.888,3.964-62.628C256.304,172.475,259.785,172.916,262.008,172.101z M262.008,193.109   c1.416,0.118,1.069-4.013,0-3.964C26 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#4E8ABE" d="M251.703,191.523c-0.328,4.297-0.396,8.853-1.189,12.685   c-13.436-0.301-28.368-0.089-42.017,0c13.072,1.769,28.725,0.11,42.413,0.792c-2.006,2.153-6.183,1.189-9.91,1.189   c-3.71,0-7.844,0-11.099,0c5.041,2.358,15.571-0.773,20.612,1.585c-0.854,1.717-4.187-0.509-6.738,0.792   c1.021,1.856,5.563,0.101,6.738,0.793c-0.932,11.104-1.342,20.509-2.378,31.71c-16.252,0-32.504,0-48.755,0   c14.308,2.095,33.409-0.248,48.755,1.189c-3.992,2 [...]
+	<path fill-rule="evenodd" clip-rule="evenodd" fill="#4E8ABE" d="M334.546,302.907c-1.419-3.206-1.021-8.229-2.775-11.099   c-16.888-1.715-22.872-0.533-38.845-1.189c0.151-3.806-0.475-4.538-0.396-7.928c-2.494,1.071-0.461,5.704-0.396,7.928   c-3.039,0-6.078,0-9.117,0c-0.824-1.421,0.362-4.854-1.188-5.55c-1.428,1.456,0.951,4.57,0,5.55   c-3.698,0.776-2.594-3.292-2.775-5.946c-0.324-4.742-1.171-10.662-1.188-14.666c14.027,0.189,27.41,0.636,40.431,0   c8.051-0.393,19.604,0.691,24.972-3.171c2.743-1 [...]
+</g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/shop/garden_centre.svg b/images/presets/shop/garden_centre.svg
new file mode 100644
index 0000000..01ae445
--- /dev/null
+++ b/images/presets/shop/garden_centre.svg
@@ -0,0 +1,232 @@
+<?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"
+   height="672.13373"
+   id="svg2910"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/drsteele/Personal/Projects & Parties/Clipart"
+   sodipodi:docname="garden_centre.svg"
+   sodipodi:version="0.32"
+   width="568.07068"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>FlowerAndPot</dc:title>
+        <dc:description>A Large cheery Flower in a worryingly small pot...</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>flowerpot</rdf:li>
+            <rdf:li>petal</rdf:li>
+            <rdf:li>flower</rdf:li>
+            <rdf:li>teracotta</rdf:li>
+            <rdf:li>leaf</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Daniel Steele</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Daniel Steele</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>2005/06/28</dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <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="perspective34" />
+    <linearGradient
+       id="linearGradient2952">
+      <stop
+         id="stop2954"
+         offset="0"
+         style="stop-color:#c0d50d;stop-opacity:1;" />
+      <stop
+         id="stop2956"
+         offset="1.0000000"
+         style="stop-color:#eef2cd;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2936">
+      <stop
+         id="stop2938"
+         offset="0.0000000"
+         style="stop-color:#8acf6b;stop-opacity:1.0000000;" />
+      <stop
+         id="stop2940"
+         offset="1.0000000"
+         style="stop-color:#368912;stop-opacity:1.0000000;" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="375.00000"
+     inkscape:cy="529.66833"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="951"
+     inkscape:window-width="1280"
+     inkscape:window-x="0"
+     inkscape:window-y="26"
+     inkscape:zoom="1.0000000"
+     pagecolor="#ffffff"
+     showgrid="false" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-70.97456,-194.21143)">
+    <g
+       id="g3770">
+      <path
+         d="M 474.14884,842.22152 C 474.14884,855.49985 432.90177,866.27647 382.0795,866.27647 C 331.25722,866.27647 290.01016,855.49985 290.01016,842.22152 C 290.01016,835.58235 270.95498,739.16855 261.42739,678.55706 C 318.5707,678.47092 347.14395,678.49265 372.55508,678.49265 C 397.96622,678.49265 423.36466,673.81513 504.31901,673.90126 C 486.8544,756.23981 474.14884,835.58235 474.14884,842.22152 z"
+         id="path2926"
+         sodipodi:nodetypes="ccccccc"
+         style="fill:#ff9602;fill-opacity:1;stroke:#000000;stroke-width:0.13733713;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 507.48428,671.50894 C 507.48428,689.92727 450.94736,704.87549 381.28579,704.87549 C 311.62422,704.87549 255.0873,689.92727 255.0873,671.50894 C 255.0873,662.29978 256.91916,660.32106 255.95005,632.55466 C 299.9838,632.80064 346.45501,638.14239 381.28579,638.14239 C 416.11657,638.14239 447.56989,635.65911 507.01838,633.9514 C 507.50919,655.44643 507.48428,662.29978 507.48428,671.50894 z"
+         id="path2924"
+         sodipodi:nodetypes="ccccccc"
+         style="fill:#ff9602;fill-opacity:1;stroke:#000000;stroke-width:0.13733713;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 507.48428,635.81449 C 507.48428,654.23283 450.94736,669.18104 381.28579,669.18104 C 311.62422,669.18104 255.0873,654.23283 255.0873,635.81449 C 255.0873,617.39616 311.62422,602.44795 381.28579,602.44795 C 450.94736,602.44795 507.48428,617.39616 507.48428,635.81449 z"
+         id="path2920"
+         style="fill:#ff9602;fill-opacity:1;stroke:#000000;stroke-width:0.13733713;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 534,459.86218 A 179,27.5 0 1 1 176,459.86218 A 179,27.5 0 1 1 534,459.86218 z"
+         id="path2931"
+         sodipodi:cx="355"
+         sodipodi:cy="459.86218"
+         sodipodi:rx="179"
+         sodipodi:ry="27.5"
+         sodipodi:type="arc"
+         style="fill:#5d3c0e;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+         transform="matrix(0.552489,0,0,0.543176,183.3266,402.2847)" />
+      <path
+         d="M 383,510.36218 C 433,543.36218 369,654.36218 369,654.36218 L 398,653.36218 C 398,653.36218 434,581.36218 425,538.36218 C 420,484.36218 263,391.36218 257,379.36218 L 383,510.36218 z"
+         id="path3764"
+         sodipodi:nodetypes="cccccc"
+         style="fill:#47b302;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 292,241.36218 C 292,268.41018 268.704,334.36218 240,334.36218 C 211.296,334.36218 188,268.41018 188,241.36218 C 188,214.31418 214.296,180.36218 241,200.36218 C 268.704,180.36218 292,214.31418 292,241.36218 z"
+         id="path3734"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 388.55155,342.70593 C 366.75942,358.72773 299.8237,379.025 282.82097,355.89866 C 265.81826,332.77234 305.15537,274.93668 326.94748,258.9149 C 348.7396,242.8931 391.6705,243.96797 391.37487,277.32987 C 423.89891,287.80359 410.34365,326.68414 388.55155,342.70593 z"
+         id="path3739"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 349.8486,283.15229 C 338.56433,307.73399 289.87774,357.95337 263.79104,345.97823 C 237.70435,334.00309 244.04733,264.3458 255.33159,239.76412 C 266.61586,215.18242 304.67869,195.29678 320.60387,224.61388 C 354.12563,217.99548 361.13286,258.57061 349.8486,283.15229 z"
+         id="path3737"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 383.19092,408.61363 C 356.5314,413.18147 287.59247,401.358 282.74497,373.06627 C 277.89747,344.77456 338.96799,310.67524 365.62748,306.10741 C 392.28698,301.53957 430.19217,321.72407 414.98919,351.4221 C 439.38055,375.35061 409.8504,404.04578 383.19092,408.61363 z"
+         id="path3741"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 328.0922,488.28939 C 304.12045,475.76141 256.45951,424.56761 269.75451,399.12821 C 283.04949,373.68882 352.2907,383.58968 376.26242,396.11765 C 400.23416,408.64562 418.14504,447.6766 388.05108,462.07997 C 392.9446,495.89661 352.06393,500.81734 328.0922,488.28939 z"
+         id="path3743"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 178.92382,504.90726 C 180.31376,477.89499 206.96809,413.22724 235.63418,414.70229 C 264.30024,416.17732 284.17636,483.23931 282.78642,510.25156 C 281.39648,537.26383 253.39053,569.81967 227.74956,548.47386 C 199.05441,567.0238 177.5339,531.91951 178.92382,504.90726 z"
+         id="path3747"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 253.3573,517.8375 C 238.90073,494.97699 223.34016,426.78433 247.60029,411.44267 C 271.86039,396.10101 326.79969,439.39126 341.25624,462.25174 C 355.71281,485.11223 351.63452,527.86248 318.37521,525.23156 C 305.64985,556.9424 267.81387,540.69796 253.3573,517.8375 z"
+         id="path3745"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 114.0775,445.45733 C 129.12479,422.98126 185.17332,381.13711 209.02548,397.10568 C 232.87762,413.07422 215.54564,480.83831 200.49835,503.31437 C 185.45106,525.79044 144.71181,539.37459 133.64794,507.8993 C 99.500394,509.10648 99.030232,467.9334 114.0775,445.45733 z"
+         id="path3749"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 166.59759,264.1637 C 189.43539,278.6561 232.63948,333.66315 217.25978,357.89919 C 201.88011,382.13521 133.71192,366.46781 110.87413,351.97542 C 88.036331,337.48302 73.458646,297.08863 104.65357,285.25732 C 102.61055,251.14958 143.75977,249.67133 166.59759,264.1637 z"
+         id="path3753"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 110.89019,343.51514 C 137.40738,338.18286 206.65769,348.01976 212.31643,376.16047 C 217.97519,404.30114 157.91012,440.14187 131.39294,445.47415 C 104.87575,450.80643 66.406039,431.71987 80.749048,401.5971 C 55.679915,378.37964 84.373009,348.84746 110.89019,343.51514 z"
+         id="path3751"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 228.49374,235.40574 C 240.87684,259.45264 250.35978,328.7523 224.84061,341.89355 C 199.32147,355.0348 148.41614,307.06588 136.03304,283.01899 C 123.64994,258.97209 131.48436,216.74843 164.38181,222.30369 C 179.8555,191.83934 216.1106,211.35885 228.49374,235.40574 z"
+         id="path3755"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#fd19d2;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 298,376.36218 A 59,58 0 1 1 180,376.36218 A 59,58 0 1 1 298,376.36218 z"
+         id="path2974"
+         sodipodi:cx="239"
+         sodipodi:cy="376.36218"
+         sodipodi:rx="59"
+         sodipodi:ry="58"
+         sodipodi:type="arc"
+         style="fill:#fdfa19;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />
+      <path
+         d="M 638.50905,453.95027 C 639.40461,455.27615 586.44631,465.7396 532.68358,532.50937 C 452.2217,588.06341 442.98403,527.44952 422.49095,541.77409 C 443.96972,525.33565 392.10589,507.99413 476.71116,449.64148 C 544.74284,402.4833 638.73294,454.28174 638.50905,453.95027 z"
+         id="path3761"
+         sodipodi:nodetypes="ccccc"
+         style="fill:#47b302;fill-opacity:1;stroke:#000000;stroke-width:1.04999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         d="M 425,539.36218 C 512,448.36218 563,456.36218 563,456.36218"
+         id="path3768"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/apple.png b/images/presets/shop/groceries/apple.png
similarity index 100%
rename from images/presets/apple.png
rename to images/presets/shop/groceries/apple.png
diff --git a/images/presets/shop/groceries/bakery.png b/images/presets/shop/groceries/bakery.png
new file mode 100644
index 0000000..8d117eb
Binary files /dev/null and b/images/presets/shop/groceries/bakery.png differ
diff --git a/images/presets/shop/groceries/butcher.png b/images/presets/shop/groceries/butcher.png
new file mode 100644
index 0000000..5c0af98
Binary files /dev/null and b/images/presets/shop/groceries/butcher.png differ
diff --git a/images/presets/shop/groceries/coffee.svg b/images/presets/shop/groceries/coffee.svg
new file mode 100644
index 0000000..699aea2
--- /dev/null
+++ b/images/presets/shop/groceries/coffee.svg
@@ -0,0 +1,109 @@
+<?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"
+   width="266.52423"
+   height="205.57681"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="coffee2.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994948"
+     inkscape:cx="305.99405"
+     inkscape:cy="-18.294276"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-160.43655,-316.06227)">
+    <path
+       d="m 420.05104,354.5316 c 0.7668,1.88867 1.41254,3.81917 1.93829,5.82231 11.21672,42.73418 -37.88157,95.04943 -109.66306,116.83446 -69.96881,21.23479 -135.65534,5.62648 -149.31657,-34.7531 0.0102,0.89792 0.0204,1.77564 0.0631,2.67329 14.1037,52.83142 65.60441,87.41561 140.65699,73.40214 75.05191,-14.00912 118.60766,-61.92749 122.72028,-116.85622 1.32812,-17.74991 0.35555,-33.8411 -6.39736,-47.12163 z"
+       style="color:#000000;fill:#330000"
+       id="path20021"
+       inkscape:connector-curvature="0"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+    <path
+       d="m 423.70128,363.48491 c 11.29074,42.73349 -38.13076,95.03528 -110.38553,116.82024 -72.25477,21.78494 -139.98196,4.80294 -151.27252,-37.92986 -11.29074,-42.73349 38.13076,-95.03528 110.38553,-116.82023 72.25477,-21.78494 139.98196,-4.80294 151.27252,37.92985 z"
+       style="color:#000000;fill:#5c2610"
+       id="path20019"
+       inkscape:connector-curvature="0"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+    <path
+       d="m 377.63541,328.25908 c -7.44343,19.80662 -12.73283,35.52156 -30.16735,44.15221 -18.9608,9.38604 -40.077,11.70809 -60.57358,14.17658 -29.53757,3.55738 -61.1518,4.18621 -87.09795,21.09704 -16.44504,10.71781 -22.2285,39.50377 -18.14438,53.52666 2.91718,-10.28354 17.15559,-26.98878 28.60713,-34.94377 12.49463,-8.67994 27.98889,-10.45827 42.56289,-11.84728 30.89012,-2.94465 63.23797,-1.42666 92.0453,-15.74976 14.11932,-7.02035 25.41816,-17.94927 32.11847,-32.11787 5.06348,-10.70765 [...]
+       id="path20038"
+       inkscape:connector-curvature="0"
+       style="fill:#330000;fill-rule:evenodd"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+    <path
+       d="m 377.63541,327.80961 c -7.44343,19.80661 -12.74437,35.52445 -30.17889,44.15437 -18.9608,9.38606 -40.07292,11.71317 -60.56951,14.18238 -29.53756,3.55738 -61.15315,4.18114 -87.09794,21.09199 -16.44505,10.71779 -22.21697,39.51028 -18.13285,53.5339 0.0143,-0.0507 0.0278,-0.10765 0.0421,-0.15854 -0.87363,-15.50037 5.48043,-38.14955 19.53222,-47.48486 26.21354,-17.41497 58.15013,-18.06309 87.99376,-21.72631 20.70629,-2.54221 42.02947,-4.92379 61.18437,-14.58981 16.9011,-8.52842 22.5 [...]
+       id="path20042"
+       inkscape:connector-curvature="0"
+       style="fill:#973f1a;fill-opacity:1;fill-rule:evenodd"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+    <path
+       d="m 424.39439,366.40644 c -2.46363,40.83191 -50.80441,85.53797 -117.80685,105.54687 -49.12679,14.67317 -96.25971,12.49322 -126.69717,-2.89985 27.08357,22.06776 78.98808,27.66083 133.46331,11.23687 C 383.974,458.99827 432.76215,408.57299 424.3944,366.40644 z"
+       style="color:#000000;fill:#973f1b;fill-opacity:1"
+       id="path20047"
+       inkscape:connector-curvature="0"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+    <path
+       d="m 210.8911,467.46579 c -6.22525,-7.41561 -4.92421,-21.93582 1.8268,-29.0136 17.31914,-18.15806 49.9975,-5.41246 74.88902,-8.99456 19.50237,-2.80705 53.30185,-14.5311 58.30147,-9.78913 8.28971,7.86219 -30.16803,36.64887 -50.89332,46.86066 -11.42033,5.62719 -24.90849,6.19731 -37.61757,6.53151 -15.63203,0.41104 -36.56363,6.24727 -46.50382,-5.59415 z"
+       id="path20052"
+       inkscape:connector-curvature="0"
+       style="fill:#773215;fill-opacity:1"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+    <path
+       d="m 348.86065,333.45704 c 6.354,6.99434 5.30107,20.78241 -1.33076,27.54555 -17.01308,17.35046 -49.91946,5.48164 -74.7533,9.05331 -19.45961,2.79848 -53.06907,14.15772 -58.15081,9.6927 -8.42679,-7.40329 29.5491,-34.98654 50.10609,-44.82062 11.32735,-5.41886 24.81009,-6.05312 37.51713,-6.45801 15.62931,-0.49804 36.46726,-6.181 46.61308,4.98743 z"
+       id="path20054"
+       inkscape:connector-curvature="0"
+       style="fill:#773215;fill-opacity:1"
+       inkscape:export-xdpi="5.4028859"
+       inkscape:export-ydpi="5.4028859" />
+  </g>
+</svg>
diff --git a/images/presets/shop/groceries/confectionery.svg b/images/presets/shop/groceries/confectionery.svg
new file mode 100644
index 0000000..6edeeb1
--- /dev/null
+++ b/images/presets/shop/groceries/confectionery.svg
@@ -0,0 +1,64 @@
+<?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" width="16" height="16" id="svg2" version="1.1" inkscape:version="0.47 r22583" inkscape:export-filename="C:\Dokumente und Einstellungen\Matthia [...]
+  <defs id="defs4"><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="perspective10"/>
+<inkscape:perspective id="perspective2824" 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"/>
+<inkscape:perspective id="perspective2838" 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"/>
+<inkscape:perspective id="perspective2862" 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"/>
+<inkscape:perspective id="perspective2862-1" 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"/>
+<inkscape:perspective id="perspective2894" inkscape:persp3d-origin="240 : 160 : 1" inkscape:vp_z="480 : 240 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 240 : 1" sodipodi:type="inkscape:persp3d"/>
+<inkscape:perspective id="perspective2862-0" 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"/>
+<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="1 : 0.5 : 1" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" id="perspective2932"/>
+<inkscape:perspective id="perspective10-4" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"/>
+<inkscape:perspective id="perspective3649" inkscape:persp3d-origin="362.5 : 241.66667 : 1" inkscape:vp_z="725 : 362.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 362.5 : 1" sodipodi:type="inkscape:persp3d"/>
+<marker viewBox="0 0 10 10" refY="5" refX="10" orient="auto" markerWidth="4" markerUnits="strokeWidth" markerHeight="3" id="ArrowStart">
+  <path style="font-size: 12px;" id="path607" d="M 10,0 L 0,5 L 10,10 L 10,0 z"/>
+</marker>
+<marker viewBox="0 0 10 10" refY="5" refX="0" orient="auto" markerWidth="4" markerUnits="strokeWidth" markerHeight="3" id="ArrowEnd">
+  <path style="font-size: 12px;" id="path605" d="M 0,0 L 10,5 L 0,10 L 0,0 z"/>
+</marker>
+<inkscape:perspective id="perspective20" inkscape:persp3d-origin="75 : 41.666667 : 1" inkscape:vp_z="150 : 62.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 62.5 : 1" sodipodi:type="inkscape:persp3d"/>
+<inkscape:perspective id="perspective3779" inkscape:persp3d-origin="300.022 : 151.66667 : 1" inkscape:vp_z="600.04401 : 227.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 227.5 : 1" sodipodi:type="inkscape:persp3d"/>
+
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+<inkscape:perspective id="perspective10-5" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 526.18109 : 1" sodipodi:type="inkscape:persp3d"/>
+<inkscape:perspective id="perspective4876" inkscape:persp3d-origin="279.81235 : 124.43199 : 1" inkscape:vp_z="559.62469 : 186.64798 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 186.64798 : 1" sodipodi:type="inkscape:persp3d"/>
+</defs>
+  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="16" inkscape:cx="13.015456" inkscape:cy="-0.30409451" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:snap-grids="false" inkscape:window-width="885" inkscape:window-height="894" inkscape:window-x="186" inkscape:window-y="55" inkscape:window-maximized="0">
+    <inkscape:grid type="xygrid" id="grid2852" empspacing="5" dotted="true" visible="true" enabled="true" snapvisiblegridlinesonly="true"/>
+  </sodipodi:namedview>
+  <metadata id="metadata7">
+    <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>
+  <g inkscape:label="Ebene 1" inkscape:groupmode="layer" id="layer1" transform="translate(0, -1036.36)">
+    <path sodipodi:type="arc" style="fill: rgb(249, 249, 249); stroke: none;" id="path2619" sodipodi:cx="98.055328" sodipodi:cy="95.709503" sodipodi:rx="15.48242" sodipodi:ry="15.951584" d="m 113.53775,95.709503 a 15.48242,15.951584 0 1 1 -30.964842,0 15.48242,15.951584 0 1 1 30.964842,0 z" transform="matrix(0.0215669, -0.0196285, 0.0196285, 0.0215669, -2.8971, 1048.31)"/>
+    <path sodipodi:nodetypes="cssscc" id="path6298" d="m 11.43658,1041.0297 c 1.28208,1.4028 0.687401,4.0358 -1.327404,5.8773 -2.0148066,1.8415 -4.690541,2.1977 -5.9726187,0.795 -1.28208,-1.4028 -0.6874027,-4.0358 1.327402,-5.8773 2.0062635,-1.8337 4.6670897,-2.1963 5.9570687,-0.8118 l 0.01555,0.017 z" style="fill: rgb(172, 57, 172); fill-opacity: 0.443925; fill-rule: evenodd; stroke: none; stroke-width: 0.658947; stroke-linecap: butt; stroke-linejoin: round; stroke-miterlimit: 4; stroke [...]
+    <path style="fill: rgb(172, 57, 172); fill-rule: evenodd; stroke: none; fill-opacity: 1;" d="m 4.2048193,1043.4327 c 2.0381607,0.7471 3.6846991,2.0635 4.4358552,4.6815 l 2.6532355,-2.7439 c -0.580375,-2.3514 -2.0556572,-3.8335 -4.4222966,-4.45 l -2.6667941,2.5124 z" id="path6296" sodipodi:nodetypes="ccccc"/>
+    <path style="fill: none; stroke: none; stroke-width: 0pt; stroke-linecap: butt; stroke-linejoin: round; stroke-miterlimit: 4; stroke-opacity: 1; stroke-dasharray: none; stroke-dashoffset: 0pt; marker: none; visibility: visible; display: inline; overflow: visible;" d="m 11.464877,1041.0245 c 1.282079,1.4027 0.687401,4.0357 -1.327403,5.8773 -2.0148085,1.8415 -4.6905416,2.1976 -5.9726194,0.7949 -1.2820801,-1.4027 -0.6874028,-4.0357 1.327402,-5.8772 2.0062635,-1.8338 4.6670894,-2.1964 5. [...]
+    <path style="fill: rgb(172, 57, 172); fill-opacity: 1; fill-rule: evenodd; stroke: none;" d="m 11.307244,1041.0235 c 1.276776,0.5607 3.209861,0.2774 3.854468,-0.4512 -0.329317,-0.069 -0.640118,-0.4024 -0.831499,-0.7873 -0.200859,-0.404 -0.01844,-0.9301 -0.359731,-1.2424 -0.389681,-0.3566 -0.931856,-0.1608 -1.344943,-0.375 -0.363497,-0.1886 -0.480802,-0.5868 -0.857377,-1.0287 -0.902309,1.2192 -0.823187,2.6807 -0.460918,3.8846 z" id="path6310" sodipodi:nodetypes="ccssscc"/>
+    <path sodipodi:nodetypes="ccssscc" id="path6312" d="m 4.3829514,1047.9272 c -1.2733164,-0.5685 -3.2081009,-0.297 -3.85715833,0.4276 0.32888722,0.071 0.63763903,0.4063 0.82665763,0.7924 0.1983813,0.4052 0.012749,0.9301 0.3521145,1.2445 0.3874887,0.359 0.9308529,0.1665 1.3426201,0.3833 0.3623346,0.1908 0.4771977,0.5897 0.8510578,1.0339 0.9097604,-1.2136 0.8395945,-2.6756 0.4847083,-3.8817 z" style="fill: rgb(172, 57, 172); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width [...]
+  </g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/deli.png b/images/presets/shop/groceries/deli.png
similarity index 100%
rename from images/presets/deli.png
rename to images/presets/shop/groceries/deli.png
diff --git a/images/presets/greengrocer.png b/images/presets/shop/groceries/greengrocer.png
similarity index 100%
rename from images/presets/greengrocer.png
rename to images/presets/shop/groceries/greengrocer.png
diff --git a/images/presets/seafood.png b/images/presets/shop/groceries/seafood.png
similarity index 100%
rename from images/presets/seafood.png
rename to images/presets/shop/groceries/seafood.png
diff --git a/images/presets/shop/groceries/tea.svg b/images/presets/shop/groceries/tea.svg
new file mode 100644
index 0000000..b541f10
--- /dev/null
+++ b/images/presets/shop/groceries/tea.svg
@@ -0,0 +1,470 @@
+<?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"
+   width="16"
+   height="15.98718"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="teabag icon.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="5.5112528"
+     inkscape:cy="8.7749291"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1018"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-370px"
+       originy="-419px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-370,-617.375)">
+    <path
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       d="m 377,622.36218 2,-2 5,0 2,2 0,11 -9,0 z"
+       id="path2987"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       style="fill:#cccccc;fill-opacity:1;stroke:none"
+       d="m 378,632.36218 0,-9 2,-2 3,0 2,2 0,9 z"
+       id="path4221"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       style="fill:none;stroke:#4f4f4f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 379.4917,621.85388 1,1 2,0 1,-1"
+       id="path4223"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 381.5,621.86218 0,-3 -1,-1 -6,0 -2,2 0,4 0,0"
+       id="path4382"
+       inkscape:connector-curvature="0"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <rect
+       style="fill:#008000;fill-opacity:1;stroke:none"
+       id="rect4227"
+       width="5"
+       height="5.0000086"
+       x="370"
+       y="624.36218"
+       ry="1"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(1,-1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-1"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(1,0)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-7"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-1,0)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-4"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(2,-1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-0"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(3,-1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-9"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(3,0)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-48"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(2,0)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-8"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(2,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-2"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(1,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-45"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(0,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-5"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-1,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-17"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-2,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-11"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(3,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-52"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-2,0)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(4,0)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-14"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(4,1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-23"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-2,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-8"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-1,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-9"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(0,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-2"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(1,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-7"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(2,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-95"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(3,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-4"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(4,2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-3"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(0,-1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-34"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(-1,-1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-1"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(1,-2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-13"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(3,-2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-87"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(2,-2)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-42"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+    <path
+       transform="translate(4,-1)"
+       sodipodi:type="arc"
+       style="fill:#75750b;fill-opacity:1;stroke:none"
+       id="path4229-76-77"
+       sodipodi:cx="380.5"
+       sodipodi:cy="629.86218"
+       sodipodi:rx="0.5"
+       sodipodi:ry="0.5"
+       d="m 381,629.86218 a 0.5,0.5 0 1 1 -1,0 0.5,0.5 0 1 1 1,0 z"
+       inkscape:export-xdpi="89"
+       inkscape:export-ydpi="89" />
+  </g>
+</svg>
diff --git a/images/presets/shop/hairdresser.svg b/images/presets/shop/hairdresser.svg
new file mode 100644
index 0000000..5ffc35e
--- /dev/null
+++ b/images/presets/shop/hairdresser.svg
@@ -0,0 +1,213 @@
+<?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"
+   width="423.36899"
+   height="585.67322"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="hairdresser3.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\hairdresser.png"
+   inkscape:export-xdpi="2.4587088"
+   inkscape:export-ydpi="2.4587088">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="-185.2181"
+     inkscape:cy="289.93333"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="0"
+     inkscape:window-y="29"
+     inkscape:window-maximized="0"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-186.88541,-124.96056)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4152"
+       width="423.36899"
+       height="585.67322"
+       x="186.88541"
+       y="124.96056" />
+    <g
+       transform="matrix(0.984863,-0.1733347,0.1733347,0.984863,-63.954713,95.523647)"
+       id="g3167">
+      <ellipse
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path2383"
+         cx="497.14285"
+         cy="642.36218"
+         rx="37.142857"
+         ry="64.285713" />
+      <path
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 500,578.07647 465.71429,112.36218 460,600.93361 500,578.07647 Z"
+         id="path3155"
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3157"
+         cx="497.14285"
+         cy="642.36218"
+         rx="37.142857"
+         ry="64.285713" />
+      <path
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 500,578.07647 465.71429,112.36218 460,600.93361 500,578.07647 Z"
+         id="path3159"
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       id="g3183"
+       transform="matrix(-0.984863,-0.1733347,-0.1733347,0.984863,1029.3244,95.523647)">
+      <ellipse
+         id="path3185"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         cx="497.14285"
+         cy="642.36218"
+         rx="37.142857"
+         ry="64.285713" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3187"
+         d="M 500,578.07647 465.71429,112.36218 460,600.93361 500,578.07647 Z"
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <ellipse
+         id="path3189"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         cx="497.14285"
+         cy="642.36218"
+         rx="37.142857"
+         ry="64.285713" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3191"
+         d="M 500,578.07647 465.71429,112.36218 460,600.93361 500,578.07647 Z"
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       sodipodi:nodetypes="cc"
+       id="path3193"
+       d="m 237.76218,165.86094 0,493.00252"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:41.75354004;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <rect
+       y="160.92047"
+       x="239.98688"
+       height="20.026224"
+       width="91.454796"
+       id="rect3195"
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:25.68806267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       y="155.21933"
+       x="277.14285"
+       height="0"
+       width="20"
+       id="rect3197"
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:25.68806267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3217"
+       width="91.454796"
+       height="20.026224"
+       x="239.98688"
+       y="258.06329" />
+    <rect
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:25.68806267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3233"
+       width="91.454796"
+       height="20.026224"
+       x="239.98688"
+       y="355.20615" />
+    <rect
+       y="452.34903"
+       x="239.98688"
+       height="20.026224"
+       width="91.454796"
+       id="rect3235"
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:25.68806267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       y="549.49188"
+       x="239.98688"
+       height="20.026224"
+       width="91.454796"
+       id="rect3237"
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:25.68806267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:25.68806267;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3239"
+       width="91.454796"
+       height="20.026224"
+       x="239.98688"
+       y="646.63477" />
+  </g>
+</svg>
diff --git a/images/presets/hardware.png b/images/presets/shop/hardware.png
similarity index 100%
rename from images/presets/hardware.png
rename to images/presets/shop/hardware.png
diff --git a/images/presets/hearing_aids.png b/images/presets/shop/hearing_aids.png
similarity index 100%
rename from images/presets/hearing_aids.png
rename to images/presets/shop/hearing_aids.png
diff --git a/images/presets/shop/hifi.svg b/images/presets/shop/hifi.svg
new file mode 100644
index 0000000..f347f0f
--- /dev/null
+++ b/images/presets/shop/hifi.svg
@@ -0,0 +1,121 @@
+<?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"
+   width="12"
+   height="16"
+   viewBox="0 0 12 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="hifi5.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="3.614034"
+     inkscape:cy="11.157564"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="false"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="false"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#a05a2c;fill-opacity:1;stroke:#000000;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4309"
+       width="11.000002"
+       height="14.999961"
+       x="0.49999943"
+       y="1036.8621"
+       ry="1.5000397" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4311"
+       cx="6.0000005"
+       cy="1046.3621"
+       rx="4.0000005"
+       ry="4.0000105" />
+    <ellipse
+       cy="1046.3621"
+       cx="6.0000005"
+       id="circle4313"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       rx="1.1428109"
+       ry="1.1428138" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4311-0"
+       cx="6.0000005"
+       cy="1039.3621"
+       rx="2.0000005"
+       ry="2.0000002" />
+    <circle
+       cy="1039.3621"
+       cx="6.0000005"
+       id="circle4313-4"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       r="0.57140547" />
+  </g>
+</svg>
diff --git a/images/presets/shop/houseware.svg b/images/presets/shop/houseware.svg
new file mode 100644
index 0000000..8f60be9
--- /dev/null
+++ b/images/presets/shop/houseware.svg
@@ -0,0 +1,105 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4149"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="shop__houseware8.svg">
+  <defs
+     id="defs4151" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="7.1507864"
+     inkscape:cy="6.430812"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="false"
+     inkscape:snap-page="false"
+     inkscape:snap-global="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4697" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4154">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1"
+       id="rect4352"
+       width="16"
+       height="16"
+       x="0"
+       y="1036.3622"
+       ry="2.0000174" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 7.5,1037.3613 c -1.9270768,0 -3.5,1.5729 -3.5,3.5 0,1.9271 1.5729232,3.5 3.5,3.5 1.9270768,0 3.5,-1.5729 3.5,-3.5 0,-1.9271 -1.5729232,-3.5 -3.5,-3.5 z"
+       id="path4144"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sssss" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999994px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 7.5007686,1039.148 0,1.7135 1.5383171,0.7158"
+       id="path4146"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="M 12.492188,1037.3173 A 0.50004994,0.50004994 0 0 0 12,1037.8231 l 0,7.5391 -1,0 -1,6 5,0 -1,-6 -1,0 0,-7.5391 a 0.50004994,0.50004994 0 0 0 -0.507812,-0.5058 z"
+       id="path4167"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#da0092;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 1,1044.3722 1,1.99 -1,5.0022 4,0 -1,-5.0022 0.5022826,-1 0.4977174,0 0,2 1,0 0,-3 z"
+       id="path4340"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccc" />
+  </g>
+</svg>
diff --git a/images/presets/shop/interior_decoration.svg b/images/presets/shop/interior_decoration.svg
new file mode 100644
index 0000000..c904c48
--- /dev/null
+++ b/images/presets/shop/interior_decoration.svg
@@ -0,0 +1,243 @@
+<?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"
+   width="577.45197"
+   height="577.45203"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="interior_decoration.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="128.7269"
+     inkscape:cy="325.22028"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3868"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-43.206071px"
+       originy="-214.13132px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-43.206071,-260.77882)">
+    <g
+       id="Layer_2"
+       transform="matrix(1.0017469,0,0,1.0000008,41.499094,259.07437)"
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       inkscape:export-xdpi="2.49807"
+       inkscape:export-ydpi="2.49807">
+      <g
+         id="g1327"
+         style="fill:#ffffff;fill-opacity:1;stroke:none">
+        <path
+           style="fill:#ffffff;fill-opacity:1;stroke:none"
+           inkscape:connector-curvature="0"
+           id="path1329"
+           d="M 66.275,1.768 C 24.94,1.768 1.704,23.139 1.704,66.804 v 450.123 c 0,40.844 20.895,62.229 62.192,62.229 H 515.92 c 41.307,0 62.229,-20.315 62.229,-62.229 V 66.804 c 0,-42.601 -20.923,-65.036 -63.521,-65.036 -0.004,0 -448.495,-0.143 -448.353,0 z" />
+      </g>
+    </g>
+    <g
+       style="display:none"
+       id="svg2-1"
+       sodipodi:version="0.32"
+       inkscape:version="0.46"
+       sodipodi:docbase="s:\Data\FacilityIcons"
+       sodipodi:docname="amenity_atm.svg"
+       inkscape:output_extension="org.inkscape.output.svg.inkscape"
+       display="none"
+       transform="translate(41.502071,259.07482)">
+      <sodipodi:namedview
+         id="base-7"
+         bordercolor="#666666"
+         pagecolor="#ffffff"
+         inkscape:zoom="1.3034483"
+         inkscape:cx="285.84646"
+         inkscape:cy="302.63451"
+         showgrid="false"
+         guidetolerance="10.0"
+         gridtolerance="10.0"
+         objecttolerance="10.0"
+         borderopacity="1.0"
+         inkscape:window-height="1005"
+         inkscape:pageshadow="2"
+         inkscape:pageopacity="0.0"
+         inkscape:window-width="1280"
+         inkscape:window-x="0"
+         inkscape:window-y="0"
+         inkscape:current-layer="svg2" />
+      <defs
+         display="inline"
+         id="defs2992">
+        <inkscape:perspective
+           id="perspective2441"
+           sodipodi:type="inkscape:persp3d"
+           inkscape:vp_x="0 : 290 : 1"
+           inkscape:vp_y="0 : 1000 : 0"
+           inkscape:vp_z="580 : 290 : 1"
+           inkscape:persp3d-origin="290 : 193.33333 : 1" />
+      </defs>
+      <path
+         style="opacity:0.75;fill:#ffffff;stroke:#ffffff;stroke-width:35.84500122;stroke-linecap:round;stroke-linejoin:round;display:inline"
+         inkscape:connector-curvature="0"
+         id="rect3241"
+         sodipodi:nodetypes="ccccccccc"
+         display="inline"
+         enable-background="new    "
+         d="m 103.979,82.413 v 62.924 h 112.403 c 7.778,-20.622 12.715,-34.171 13.042,-36.067 l 190.991,-1.647 14.588,37.714 h 69.613 V 82.413 H 103.979 z" />
+      <path
+         style="fill:none;stroke:#ffffff;stroke-width:20;stroke-linejoin:round;display:inline"
+         inkscape:connector-curvature="0"
+         id="path2443"
+         sodipodi:nodetypes="ccccccc"
+         display="inline"
+         d="m 227.906,158.094 -40.375,0.375 C 185.928,167.765 65.218,517.094 65.218,517.094 l 403.813,-3.406 -15.594,-40.313 -333.094,2.844 c 10e-4,0 75.095,-232.387 107.563,-318.125 z" />
+      <path
+         style="fill:none;stroke:#ffffff;stroke-width:20;stroke-linejoin:round;display:inline"
+         inkscape:connector-curvature="0"
+         id="path3243"
+         sodipodi:nodetypes="ccccc"
+         display="inline"
+         d="m 242.694,117.588 c -1.603,9.296 -122.338,358.618 -122.338,358.618 l 403.838,-3.412 -122.542,-356.725 -158.958,1.519 z" />
+      <path
+         style="opacity:0.1;fill:#ffffff;stroke:#ffffff;stroke-width:20;stroke-linecap:round;stroke-linejoin:round;display:inline"
+         inkscape:connector-curvature="0"
+         id="path3163"
+         sodipodi:nodetypes="ccccc"
+         display="inline"
+         enable-background="new    "
+         d="m 242.694,117.588 c -1.603,9.296 -122.338,358.618 -122.338,358.618 l 403.838,-3.412 -122.542,-356.725 -158.958,1.519 z" />
+      <path
+         style="opacity:0.1;fill:#ffffff;stroke:#ffffff;stroke-width:20;stroke-linecap:round;stroke-linejoin:round;display:inline"
+         inkscape:connector-curvature="0"
+         id="path3165"
+         sodipodi:nodetypes="ccccccc"
+         display="inline"
+         enable-background="new    "
+         d="m 227.906,158.094 -40.375,0.375 C 185.928,167.765 65.218,517.094 65.218,517.094 l 403.813,-3.406 -15.594,-40.313 -333.094,2.844 c 10e-4,0 75.095,-232.387 107.563,-318.125 z" />
+      <g
+         style="display:inline"
+         id="g4372"
+         transform="translate(-130.0802,122.26983)"
+         display="inline" />
+      <g
+         style="display:inline"
+         id="g4998"
+         transform="translate(-133.14896,123.86039)"
+         display="inline">
+        <g
+           id="g5004">
+          <path
+             style="fill:#ffffff"
+             inkscape:connector-curvature="0"
+             id="text2413"
+             d="m 465.402,153.84 c 0.229,0.097 1.086,0.291 2.572,0.581 23.434,3.872 41.037,10.938 52.811,21.199 11.773,10.26 17.661,23.715 17.661,40.364 0,17.036 -6.459,31.798 -19.376,44.285 -12.917,12.487 -30.807,19.263 -53.669,20.327 v 26.426 h -18.347 v -26.135 c -23.32,-2.227 -41.209,-8.64 -53.669,-19.238 -12.46,-10.6 -19.49,-25.434 -21.09,-44.504 l 30.864,-4.646 c 2.4,14.326 7.259,25.36 14.575,33.104 7.315,7.744 17.089,12.148 29.321,13.213 V 175.62 c -23.205,-4.26 -40.581,-11.374 -5 [...]
+        </g>
+        <path
+           style="fill:none;stroke:#ffffff;stroke-width:30;stroke-linecap:round;stroke-linejoin:round"
+           inkscape:connector-curvature="0"
+           id="path4370"
+           sodipodi:nodetypes="cc"
+           d="M 455.376,43.427 V 308.47" />
+      </g>
+    </g>
+    <polygon
+       style="fill:#0066ff"
+       points="57.166,279.626 97.878,125.442 206.176,125.442 249.896,279.626 "
+       id="polygon3008"
+       transform="matrix(0.97903483,0,0,1.0576771,60.700564,227.59602)"
+       inkscape:export-xdpi="2.49807"
+       inkscape:export-ydpi="2.49807" />
+    <rect
+       style="fill:#0066ff"
+       x="194.83911"
+       y="494.229"
+       width="32.347313"
+       height="289.26938"
+       id="rect3010"
+       inkscape:export-xdpi="2.49807"
+       inkscape:export-ydpi="2.49807" />
+    <path
+       style="fill:#0066ff"
+       inkscape:connector-curvature="0"
+       d="m 311.84154,794.1746 c 0,5.89761 -44.24227,10.6762 -98.80881,10.6762 -54.56488,0 -98.80716,-4.77859 -98.80716,-10.6762 0,-5.8976 44.24228,-10.67619 98.80716,-10.67619 54.56654,0 98.80881,4.77753 98.80881,10.67619 z"
+       id="path3012"
+       inkscape:export-xdpi="2.49807"
+       inkscape:export-ydpi="2.49807" />
+    <g
+       id="g3014"
+       transform="matrix(0.93837554,0,0,0.88379798,76.599274,280.78345)"
+       style="fill:#8e3900;fill-opacity:1"
+       inkscape:export-xdpi="2.49807"
+       inkscape:export-ydpi="2.49807">
+      <polygon
+         id="polygon3016"
+         points="307.59,304.929 347.187,261.638 347.187,111.886 307.59,68.593 "
+         style="fill:#8e3900;fill-opacity:1" />
+      <polygon
+         id="polygon3018"
+         points="531.824,65.115 312.54,65.115 350.953,107.113 493.411,107.113 "
+         style="fill:#8e3900;fill-opacity:1" />
+      <polygon
+         id="polygon3020"
+         points="531.929,308.521 493.515,266.523 350.849,266.523 312.436,308.521 "
+         style="fill:#8e3900;fill-opacity:1" />
+      <polygon
+         id="polygon3022"
+         points="537.079,68.26 497.482,111.553 497.482,261.972 537.079,305.264 "
+         style="fill:#8e3900;fill-opacity:1" />
+    </g>
+    <path
+       id="path3024"
+       d="m 547.76931,627.02952 0.78659,-0.77959 H 372.75132 l 0.78659,0.77959 34.78756,34.47766 8.52803,8.45207 c 0,0 -79.14226,72.88438 -21.14488,119.37073 11.97284,9.59688 25.2337,15.22281 38.73863,18.122 8.7274,1.87291 17.55509,2.60579 26.20636,2.52556 8.65128,0.079 17.48017,-0.65265 26.20636,-2.52556 13.50494,-2.89919 26.76459,-8.52512 38.73863,-18.122 57.99739,-46.48516 -21.14488,-119.37073 -21.14488,-119.37073 l 8.52803,-8.45207 34.78756,-34.47766 z"
+       inkscape:connector-curvature="0"
+       style="fill:#677821"
+       inkscape:export-xdpi="2.49807"
+       inkscape:export-ydpi="2.49807" />
+  </g>
+</svg>
diff --git a/images/presets/shop/jewelry.svg b/images/presets/shop/jewelry.svg
new file mode 100644
index 0000000..a0a1bf6
--- /dev/null
+++ b/images/presets/shop/jewelry.svg
@@ -0,0 +1,375 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg2297"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   width="181.40341"
+   height="181.3219"
+   sodipodi:docname="jewelry2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata2302">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs2300">
+    <linearGradient
+       id="linearGradient3960">
+      <stop
+         id="stop3962"
+         offset="0"
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" />
+      <stop
+         id="stop3964"
+         offset="1"
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8554">
+      <stop
+         id="stop8556"
+         offset="0"
+         style="stop-color: rgb(0, 3, 145); stop-opacity: 1;" />
+      <stop
+         id="stop8558"
+         offset="1"
+         style="stop-color: rgb(1, 111, 219); stop-opacity: 1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4142">
+      <stop
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+         offset="0"
+         id="stop4144" />
+      <stop
+         style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
+         offset="1"
+         id="stop4146" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient8560">
+      <stop
+         style="stop-color: rgb(191, 184, 0); stop-opacity: 1;"
+         offset="0"
+         id="stop8562" />
+      <stop
+         id="stop8564"
+         offset="0.5"
+         style="stop-color: rgb(248, 254, 5); stop-opacity: 1;" />
+      <stop
+         style="stop-color: rgb(191, 184, 0); stop-opacity: 1;"
+         offset="1"
+         id="stop8566" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3960"
+       id="linearGradient6278"
+       x1="-29.468746"
+       y1="-10.198757"
+       x2="-29.468746"
+       y2="507.53125"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.944751, 0, 0, 0.804205, 376.333, -23.4036)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8560"
+       id="linearGradient6296"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.373423, 0, 0, 0.373423, -112.281, -15.0815)"
+       x1="171.83858"
+       y1="381.28146"
+       x2="577.02722"
+       y2="381.28146" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient6298"
+       gradientUnits="userSpaceOnUse"
+       x1="353.58734"
+       y1="493.62003"
+       x2="359.00797"
+       y2="180.48428" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient6300"
+       gradientUnits="userSpaceOnUse"
+       x1="357.9162"
+       y1="152.25885"
+       x2="357.00049"
+       y2="440.06088" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient6302"
+       gradientUnits="userSpaceOnUse"
+       x1="361.19095"
+       y1="110.5407"
+       x2="360.27524"
+       y2="444.9689" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient6304"
+       gradientUnits="userSpaceOnUse"
+       x1="361.19095"
+       y1="80.282722"
+       x2="360.27524"
+       y2="444.9689" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3960"
+       id="radialGradient6306"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.279365, 0.654874, -0.658877, -0.0877378, 657.025, 359.295)"
+       cx="259.8519"
+       cy="485.57144"
+       fx="259.8519"
+       fy="485.57144"
+       r="13.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3960"
+       id="linearGradient6326"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.944751, 0, 0, -0.804205, 376.333, 523.121)"
+       x1="-29.468746"
+       y1="-10.198757"
+       x2="-29.468746"
+       y2="507.53125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8560"
+       id="linearGradient7303"
+       x1="170.8125"
+       y1="250.25"
+       x2="526.1875"
+       y2="250.25"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8560"
+       id="linearGradient7332"
+       gradientUnits="userSpaceOnUse"
+       x1="170.8125"
+       y1="250.25"
+       x2="526.1875"
+       y2="250.25"
+       gradientTransform="matrix(0.467824,0,0,0.467824,-71.8466,-14.2105)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient8560"
+       id="linearGradient7336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.373423,0,0,0.373423,-112.281,-15.0815)"
+       x1="171.83858"
+       y1="381.28146"
+       x2="577.02722"
+       y2="381.28146" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient7338"
+       gradientUnits="userSpaceOnUse"
+       x1="353.58734"
+       y1="493.62003"
+       x2="359.00797"
+       y2="180.48428" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient7340"
+       gradientUnits="userSpaceOnUse"
+       x1="357.9162"
+       y1="152.25885"
+       x2="357.00049"
+       y2="440.06088" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient7342"
+       gradientUnits="userSpaceOnUse"
+       x1="361.19095"
+       y1="110.5407"
+       x2="360.27524"
+       y2="444.9689" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4142"
+       id="linearGradient7344"
+       gradientUnits="userSpaceOnUse"
+       x1="361.19095"
+       y1="80.282722"
+       x2="360.27524"
+       y2="444.9689" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3960"
+       id="radialGradient7346"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.279365,0.654874,-0.658877,-0.0877378,657.025,359.295)"
+       cx="259.8519"
+       cy="485.57144"
+       fx="259.8519"
+       fy="485.57144"
+       r="13.5" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="732"
+     inkscape:window-width="1280"
+     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"
+     inkscape:zoom="1.4405687"
+     inkscape:cx="-38.055031"
+     inkscape:cy="130.70765"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:current-layer="svg2297"
+     showgrid="false"
+     inkscape:window-maximized="0" />
+  <path
+     inkscape:connector-curvature="0"
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.76399994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 91.138739,36.696728 c -43.069098,0 -78.023233,29.752497 -78.023233,66.414422 -5e-6,36.66193 34.954135,66.41442 78.023233,66.41442 43.069091,1e-5 78.023211,-29.75249 78.023211,-66.41442 1e-5,-36.661929 -34.95412,-66.414422 -78.023211,-66.414422 z m 0,15.19024 c 30.933601,-4e-6 56.040591,21.379585 56.040591,47.711354 0,26.331768 -25.107,47.697628 -56.040591,47.697628 -30.933599,0 -56.026888,-21.36586 -56.026888,-47.697628 -4e-6,-26.331769 25.093289,-47.711354 56.026888,-47.711354 z"
+     id="path7309" />
+  <path
+     inkscape:connector-curvature="0"
+     id="path7305"
+     d="m 90.701857,29.348485 c -48.151772,-1e-6 -87.2309263,33.263657 -87.2309263,74.252135 -4.7e-6,40.98849 39.0791543,74.25214 87.2309263,74.25215 48.151773,0 87.230913,-33.26366 87.230913,-74.25215 1e-5,-40.988483 -39.07914,-74.252135 -87.230913,-74.252135 z m 0,16.982877 c 34.584153,-5e-6 62.654073,23.902634 62.654073,53.341877 0,29.439241 -28.06993,53.326541 -62.654073,53.326541 -34.584137,0 -62.638738,-23.8873 -62.638738,-53.326541 -5e-6,-29.439243 28.054596,-53.341877 62.638738,- [...]
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.76399994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  <g
+     transform="matrix(0.18938966,0,0,0.18938966,-63.537578,-27.203563)"
+     style="fill:#000000"
+     id="g7519">
+    <path
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccscccc"
+       id="path7521"
+       d="m 812.27336,233.65414 c -77.5924,0 -145.00978,31.03659 -178.91776,76.49839 l -23.67657,0 0.75865,75.45526 c -2.58789,59.14115 96.31085,125.63028 203.82177,125.63026 107.51092,0 201.47605,-56.55868 199.88115,-125.63026 l 0.7271,-75.45526 -23.67658,0 C 957.28135,264.69474 889.86158,233.65414 812.27336,233.65414 Z"
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.46061003;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       id="path7523"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:18.86700058;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(1.01242,0,0,1.01242,435.702,-20.7693)" />
+  </g>
+  <path
+     inkscape:connector-curvature="0"
+     style="opacity:1;fill:url(#linearGradient7332);fill-opacity:1;stroke:none;stroke-width:4.76399994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 91.190064,32.104076 c -45.886101,-10e-7 -83.126477,31.698515 -83.126477,70.758384 -4.7e-6,39.05986 37.240376,70.75837 83.126477,70.75838 45.886106,0 83.126476,-31.69852 83.126476,-70.75838 1e-5,-39.059874 -37.24037,-70.758384 -83.126476,-70.758384 z m 0,16.183787 c 32.956876,-5e-6 59.706036,22.777952 59.706036,50.832001 0,28.054046 -26.74917,50.817386 -59.706036,50.817386 -32.956863,0 -59.691418,-22.76334 -59.691418,-50.817386 -5e-6,-28.054049 26.73455,-50.832001 59.691418,-50. [...]
+     id="path6321" />
+  <g
+     id="g6284"
+     transform="matrix(0.467824,0,0,0.467824,77.873922,-16.966091)">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient7336);fill-opacity:1;stroke:none;stroke-width:1.46061003;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 27.54078,75.469492 c -28.9747399,0 -54.14991,11.58976 -66.81191,28.566208 l -8.84136,0 0.28329,28.17669 c -0.96637,22.08464 35.96464,46.91317 76.11163,46.91317 40.147,0 75.23568,-21.12029 74.64014,-46.91317 l 0.27148,-28.17669 -8.84134,0 C 81.69002,87.060742 56.51397,75.469492 27.54078,75.469492 Z"
+       id="path7525"
+       sodipodi:nodetypes="ccccscccc" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       transform="matrix(0.274552,0,0,0.209226,-73.4314,80.2833)"
+       id="path7529"
+       style="opacity:0.18719201;fill:url(#linearGradient7338);fill-opacity:1;stroke:none;stroke-width:2.20433998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       transform="matrix(0.378061,0,0,0.378061,-113.079,-19.5379)"
+       style="fill:#c0b900;fill-opacity:1;stroke:none;stroke-width:18.86700058;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path7527" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       id="path7531"
+       style="fill:#c2bc00;fill-opacity:1;stroke:none;stroke-width:18.86700058;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(0.370672,0,0,0.370672,-110.443,-15.2717)" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       transform="matrix(0.335835,0,0,-0.298769,-96.9713,208.929)"
+       id="path7533"
+       style="opacity:0.340049;fill:url(#linearGradient7340);fill-opacity:1;stroke:none;stroke-width:2.20433998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       style="opacity:0.63054199;fill:url(#linearGradient7342);fill-opacity:1;stroke:none;stroke-width:2.20433998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path7535"
+       transform="matrix(0.289277,0,0,0.257349,-78.325,5.61153)" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       style="fill:#c0b900;fill-opacity:1;stroke:none;stroke-width:2.20433998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path7537"
+       transform="matrix(0.280548,0,0,0.280548,-76.2445,8.5938)" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       transform="matrix(0.267704,0,0,0.267704,-71.2981,13.4052)"
+       id="path7539"
+       style="fill:#697dbc;fill-opacity:1;stroke:none;stroke-width:2.20433998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       ry="141.61075"
+       rx="199.92105"
+       cy="322.09503"
+       cx="372.07529"
+       transform="matrix(0.231516,0,0,0.205964,-57.3698,26.0148)"
+       id="path7563"
+       style="fill:url(#linearGradient7344);fill-opacity:1;stroke:none;stroke-width:2.20433998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <circle
+       r="13.5"
+       cy="486.86218"
+       cx="264.5"
+       inkscape:export-ydpi="47.93037"
+       inkscape:export-xdpi="47.93037"
+       inkscape:export-filename="/home/peterm/Foto's/afbeeldingen/svg/Mandriva/mcnlivelogo/mcnlivelogowithtext.png"
+       style="display:inline;opacity:0.5;fill:url(#radialGradient7346);fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0pt;stroke-opacity:1"
+       id="path7565"
+       transform="matrix(-0.0421347,-1.12142,1.96207,-0.0881344,-915.908,462.77)" />
+  </g>
+</svg>
diff --git a/images/presets/shop/kiosk.svg b/images/presets/shop/kiosk.svg
new file mode 100644
index 0000000..32b89d1
--- /dev/null
+++ b/images/presets/shop/kiosk.svg
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="244.17607mm"
+   id="svg1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="kiosk2.svg"
+   sodipodi:version="0.32"
+   width="197.38622mm"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata2563">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>a news paper</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li />
+            <rdf:li>11</rdf:li>
+            <rdf:li>education</rdf:li>
+            <rdf:li>work</rdf:li>
+            <rdf:li>books</rdf:li>
+            <rdf:li>office</rdf:li>
+            <rdf:li>mimeicon</rdf:li>
+            <rdf:li>book</rdf:li>
+            <rdf:li>news</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Aubanel MONNIER</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Aubanel MONNIER</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Aubanel MONNIER</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient542">
+      <stop
+         id="stop543"
+         offset="0.00000000"
+         style="stop-color:#0e1e5f;stop-opacity:1.0000000;" />
+      <stop
+         id="stop770"
+         offset="0.35058498"
+         style="stop-color:#0f4f76;stop-opacity:1.0000000;" />
+      <stop
+         id="stop544"
+         offset="0.84552848"
+         style="stop-color:#2979aa;stop-opacity:1.0000000;" />
+      <stop
+         id="stop545"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient452">
+      <stop
+         id="stop453"
+         offset="0.00000000"
+         style="stop-color:#000000;stop-opacity:0.094117649;" />
+      <stop
+         id="stop917"
+         offset="0.14634146"
+         style="stop-color:#000000;stop-opacity:0.27058825;" />
+      <stop
+         id="stop454"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:0.00000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient220">
+      <stop
+         id="stop221"
+         offset="0.00000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop224"
+         offset="0.84552848"
+         style="stop-color:#efefef;stop-opacity:1.0000000;" />
+      <stop
+         id="stop222"
+         offset="1.0000000"
+         style="stop-color:#a2a2a2;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient216">
+      <stop
+         id="stop217"
+         offset="0.00000000"
+         style="stop-color:#505050;stop-opacity:1.0000000;" />
+      <stop
+         id="stop218"
+         offset="1.0000000"
+         style="stop-color:#bfbfbf;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(20.61913,0,0,13.42566,-5863.9622,-8202.1604)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient921"
+       inkscape:collect="always"
+       x1="296.42935"
+       x2="296.37903"
+       xlink:href="#linearGradient216"
+       y1="671.05518"
+       y2="657.97278" />
+    <linearGradient
+       gradientTransform="matrix(21.86298,0,0,12.66184,-5863.9622,-8202.1604)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient922"
+       inkscape:collect="always"
+       x1="285.51788"
+       x2="285.31543"
+       xlink:href="#linearGradient220"
+       y1="683.88354"
+       y2="714.64282" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="255.85705"
+     inkscape:cy="580.84749"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="721"
+     inkscape:window-width="1024"
+     inkscape:window-x="88"
+     inkscape:window-y="116"
+     inkscape:zoom="0.36020031"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-26.391921,-92.28244)">
+    <path
+       d="m 125.74091,463.15395 c -1.8e-4,-1.8e-4 -93.102165,276.75655 -90.989453,333.80132 2.112857,57.04482 59.273128,54.59367 59.273128,54.59367 l 564.134675,0 c 0,0 57.1601,2.45115 59.27312,-54.59367 2.11272,-57.04477 -90.98963,-333.8015 -90.98944,-333.80132 l -500.70203,0 z"
+       id="path30"
+       inkscape:export-filename="F:\vectoriel\scade\news.png"
+       inkscape:export-xdpi="12.437814"
+       inkscape:export-ydpi="12.437814"
+       sodipodi:nodetypes="ccccccc"
+       style="fill:url(#linearGradient922);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:16.63807297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 385.61182,632.07795 -242.96878,0 c 0,0 -44.368085,111.97692 -42.25541,150.0067 2.11272,38.02983 25.35328,33.80443 25.35328,33.80443 l 259.87091,0 0,-183.81113 z"
+       id="path33"
+       inkscape:export-filename="F:\vectoriel\scade\news.png"
+       inkscape:export-xdpi="12.437814"
+       inkscape:export-ydpi="12.437814"
+       style="fill:url(#linearGradient921);fill-opacity:1;fill-rule:evenodd;stroke:#555555;stroke-width:16.63807297;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <text
+       id="text49"
+       inkscape:export-filename="F:\vectoriel\scade\news.png"
+       inkscape:export-xdpi="12.437814"
+       inkscape:export-ydpi="12.437814"
+       sodipodi:linespacing="110%"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.69969654px;line-height:110.00000238%;font-family:'Bookman Old Style';writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="506.26959"
+       xml:space="preserve"
+       y="508.7988"><tspan
+         id="tspan945"
+         sodipodi:role="line"
+         x="506.26959"
+         y="508.7988">Dec 29, 2004 - The Inkscape </tspan><tspan
+         id="tspan947"
+         sodipodi:role="line"
+         x="506.26959"
+         y="517.26849">developers have set a goal</tspan><tspan
+         id="tspan949"
+         sodipodi:role="line"
+         x="506.26959"
+         y="525.73816">for the release of Inkscape 0.41 </tspan><tspan
+         id="tspan951"
+         sodipodi:role="line"
+         x="506.26959"
+         y="534.20782">for mid-late January. There are </tspan><tspan
+         id="tspan953"
+         sodipodi:role="line"
+         x="506.26959"
+         y="542.67749">some noteworthy new features </tspan><tspan
+         id="tspan955"
+         sodipodi:role="line"
+         x="506.26959"
+         y="551.14716">that would be worth getting out </tspan><tspan
+         id="tspan957"
+         sodipodi:role="line"
+         x="506.26959"
+         y="559.61682">to users, and with some major </tspan><tspan
+         id="tspan959"
+         sodipodi:role="line"
+         x="506.26959"
+         y="568.08649">internal changes that will be </tspan><tspan
+         id="tspan961"
+         sodipodi:role="line"
+         x="506.26959"
+         y="576.55615">taking place soon, a good stable </tspan><tspan
+         id="tspan963"
+         sodipodi:role="line"
+         x="506.26959"
+         y="585.02582">release is needed prior to starting </tspan><tspan
+         id="tspan965"
+         sodipodi:role="line"
+         x="506.26959"
+         y="593.49548">such an undertaking.</tspan></text>
+    <text
+       id="text90"
+       inkscape:export-filename="F:\vectoriel\scade\news.png"
+       inkscape:export-xdpi="12.437814"
+       inkscape:export-ydpi="12.437814"
+       sodipodi:linespacing="140%"
+       style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:16.47625923px;line-height:139.99999762%;font-family:'Bookman Old Style';writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="423.21127"
+       xml:space="preserve"
+       y="625.27454"><tspan
+         id="tspan923"
+         sodipodi:role="line"
+         x="423.21127"
+         y="625.27454">Dec 29, 2004 - The Inkscape </tspan><tspan
+         id="tspan925"
+         sodipodi:role="line"
+         x="423.21127"
+         y="648.34131">developers have set a goal</tspan><tspan
+         id="tspan927"
+         sodipodi:role="line"
+         x="423.21127"
+         y="671.40808">for the release of Inkscape 0.41 </tspan><tspan
+         id="tspan929"
+         sodipodi:role="line"
+         x="423.21127"
+         y="694.47485">for mid-late January. There are </tspan><tspan
+         id="tspan931"
+         sodipodi:role="line"
+         x="423.21127"
+         y="717.54156">some noteworthy new features </tspan><tspan
+         id="tspan933"
+         sodipodi:role="line"
+         x="423.21127"
+         y="740.60834">that would be worth getting out </tspan><tspan
+         id="tspan935"
+         sodipodi:role="line"
+         x="423.21127"
+         y="763.67511">to users, and with some major </tspan><tspan
+         id="tspan937"
+         sodipodi:role="line"
+         x="423.21127"
+         y="786.74188">internal changes that will be </tspan><tspan
+         id="tspan939"
+         sodipodi:role="line"
+         x="423.21127"
+         y="809.80865">taking place soon, a good stable </tspan><tspan
+         id="tspan941"
+         sodipodi:role="line"
+         x="423.21127"
+         y="832.87543">release is needed prior to starting </tspan><tspan
+         id="tspan943"
+         sodipodi:role="line"
+         x="423.21127"
+         y="855.94214">such an undertaking.</tspan></text>
+    <g
+       id="g466"
+       inkscape:export-filename="F:\vectoriel\scade\news.png"
+       inkscape:export-xdpi="12.437814"
+       inkscape:export-ydpi="12.437814"
+       transform="matrix(16.63807,0,0,16.63807,-5863.9632,-8202.1634)">
+      <text
+         id="text46"
+         sodipodi:linespacing="100%"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.19524765px;line-height:100%;font-family:'Bitstream Vera Sans';writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         transform="matrix(1,0,-0.273892,1,0,0)"
+         x="503.93686"
+         xml:space="preserve"
+         y="528.50177"><tspan
+           id="tspan47"
+           sodipodi:role="line"
+           style="font-family:'Bitstream Vera Sans';letter-spacing:-0.82717609"
+           x="503.93686"
+           y="528.50177">N</tspan></text>
+      <text
+         id="text460"
+         sodipodi:linespacing="100%"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.19524765px;line-height:100%;font-family:'Bitstream Vera Sans';writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         transform="matrix(1,0,-0.136946,1,0,0)"
+         x="437.3074"
+         xml:space="preserve"
+         y="528.50177"><tspan
+           id="tspan461"
+           sodipodi:role="line"
+           style="font-family:'Bitstream Vera Sans';letter-spacing:-0.82717609"
+           x="437.3074"
+           y="528.50177">E</tspan></text>
+      <text
+         id="text463"
+         sodipodi:linespacing="100%"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.19524765px;line-height:100%;font-family:'Bitstream Vera Sans';writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         x="370.13919"
+         xml:space="preserve"
+         y="528.3999"><tspan
+           id="tspan464"
+           sodipodi:role="line"
+           style="font-family:'Bitstream Vera Sans';letter-spacing:-0.82717609"
+           x="370.13919"
+           y="528.3999">WS</tspan></text>
+    </g>
+    <rect
+       height="53.408539"
+       id="rect620"
+       inkscape:export-filename="F:\vectoriel\scade\news.png"
+       inkscape:export-xdpi="12.437814"
+       inkscape:export-ydpi="12.437814"
+       style="color:#000000;display:block;visibility:visible;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
+       width="663.99811"
+       x="39.12167"
+       y="571.21198" />
+    <g
+       i:dimmedPercent="50"
+       i:layer="yes"
+       i:rgbTrio="#4F008000FFFF"
+       id="Layer_1"
+       transform="matrix(2.7409684,0,0,2.7409684,429.96533,92.387966)">
+      <g
+         id="g2675">
+        <path
+           d="m 46.854,0.018 c -1.476,-0.144 -4.104,0.108 -7.74,0.9 -3.78,0.72 -8.424,1.908 -14.328,3.564 -1.224,1.332 -1.764,3.672 -1.476,7.164 0.252,3.42 1.188,7.848 2.952,13.428 0.936,10.368 1.188,19.332 0.612,27.432 -0.612,8.028 -1.728,14.796 -4.176,20.592 -2.628,5.688 -7.704,9.432 -11.052,13.716 -3.384,4.14 -7.2,7.416 -8.928,11.34 -1.764,3.924 -2.268,7.776 -1.512,11.952 l 2.7,4.464 0,8.64 -2.7,2.088 c -1.008,2.448 -1.404,15.048 -1.188,38.231 0.18,23.293 0.972,56.197 2.376,100.225 l  [...]
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2677"
+           style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 48.114,8.01 C 46.242,7.938 43.398,8.334 39.438,9.342 35.406,10.314 30.618,11.754 24.534,13.806 24.246,12.654 24.102,11.43 24.246,10.134 24.318,8.802 24.534,7.398 25.038,5.922 32.13,4.194 37.278,2.97 41.022,2.25 c 3.528,-0.756 3.6,-0.684 5.76,-0.756 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.072 2.16,0 5.76,0.756 3.564,0.72 8.929,1.944 15.948,3.672 0.468,1.476 0.685,2.88 0.792,4.212 0.072,1.296 0.036,2.52 -0.252,3.672 C 69.822,11.754 65.07,10.314 61.183,9.342 57.294,8.334 54 [...]
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2679"
+           style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 48.114,19.566 c -2.376,0.18 -5.22,0.612 -8.676,1.296 -3.492,0.576 -7.452,1.584 -12.024,2.628 -0.18,-0.792 -0.396,-1.62 -0.792,-2.628 -0.396,-1.044 -0.972,-2.124 -1.584,-3.384 7.092,-1.728 12.24,-2.952 15.984,-3.672 3.528,-0.72 3.6,-0.756 5.76,-0.792 2.124,-0.144 4.86,-0.144 7.092,0 2.052,0.036 2.16,0.072 5.76,0.792 3.564,0.72 8.929,1.944 15.948,3.672 -0.468,1.44 -1.116,2.736 -1.548,3.888 -0.612,1.116 -1.008,2.088 -1.584,2.916 -4.356,-1.476 -8.064,-2.664 -11.268,-3.42 -3.1 [...]
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2681"
+           style="clip-rule:evenodd;fill:#61a228;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 48.87,33.174 c -4.356,0.072 -8.064,-0.108 -11.52,-0.54 -3.456,-0.504 -6.372,-1.152 -8.892,-2.088 -0.72,-1.512 -1.08,-2.592 -0.792,-3.384 0.144,-0.828 0.936,-1.224 2.088,-1.332 1.944,0.936 4.572,1.584 7.884,2.088 3.24,0.432 7.164,0.612 11.772,0.54 l 2.088,0 c 4.536,0.072 8.46,-0.108 11.772,-0.54 3.239,-0.504 5.868,-1.152 7.884,-2.088 1.116,0.108 1.908,0.504 2.088,1.332 0.252,0.792 -0.108,1.872 -0.792,3.384 -2.556,0.936 -5.472,1.584 -8.892,2.088 -3.492,0.432 -7.2,0.612 -11. [...]
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2683"
+           style="clip-rule:evenodd;fill:#cbc6d0;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 46.278,308.861 c -9,-0.863 -15.948,-1.512 -21.24,-2.34 -5.364,-0.863 -7.236,-1.188 -10.188,-2.375 -3.06,-1.369 -5.508,-3.348 -7.344,-4.969 -1.872,-1.619 -2.88,-3.061 -3.42,-4.463 l 0.54,-18.072 2.088,-1.045 0,-7.596 -2.088,-4.428 C 3.942,241.936 3.546,220.264 3.294,197.585 2.97,174.833 2.934,152.153 3.042,128.429 l 3.132,-2.628 0.54,-10.729 -3.132,-5.508 c -0.468,-2.16 -0.252,-4.644 0.792,-7.596 1.008,-2.916 1.908,-5.724 5.22,-9.936 3.24,-4.428 11.016,-10.908 14.148,-15.9 [...]
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2685"
+           style="clip-rule:evenodd;fill:#f1c810;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 44.694,129.258 c -6.156,-0.036 -12.132,-0.432 -18.072,-1.044 -5.976,-0.648 -11.772,-1.656 -17.532,-2.88 l 0,-10.224 c 6.588,0.972 12.996,1.8 19.368,2.34 6.372,0.504 12.42,0.72 18.576,0.792 l 7.344,0 c 6.084,-0.072 12.24,-0.288 18.612,-0.792 6.336,-0.54 12.744,-1.368 19.368,-2.34 l 0,10.224 c -5.796,1.224 -11.592,2.232 -17.532,2.88 -5.976,0.612 -11.952,1.008 -18.072,1.044 l -12.06,0 z"
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2687"
+           style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 44.694,281.07 C 38.538,281.033 32.562,280.638 26.622,280.025 20.646,279.379 14.85,278.369 9.09,277.146 l 0,-10.189 c 6.588,0.973 12.996,1.801 19.368,2.342 6.372,0.504 12.42,0.719 18.576,0.791 l 7.344,0 c 6.084,-0.072 12.24,-0.287 18.612,-0.791 6.336,-0.541 12.744,-1.369 19.368,-2.342 l 0,10.189 c -5.796,1.223 -11.592,2.232 -17.532,2.879 -5.976,0.613 -11.952,1.008 -18.072,1.045 l -12.06,0 z"
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2689"
+           style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 34.758,161.621 c -7.524,3.781 -12.456,8.748 -15.336,15.336 -2.808,6.518 -3.096,16.67 -1.548,23.652 1.584,6.949 5.904,13.572 10.44,17.785 4.392,4.104 9.468,6.299 15.624,6.732 -7.668,-10.801 -10.224,-17.713 -7.668,-21.17 2.52,-3.527 21.708,4.178 22.716,0.613 0.72,-3.6 -18.216,-17.064 -17.496,-21.781 0.864,-4.752 18.324,-3.383 22.104,-6.443 3.601,-3.168 3.349,-7.199 -0.611,-12.24 -2.521,-2.268 -6.012,-3.6 -10.765,-3.996 -4.752,-0.431 -10.476,0.073 -17.46,1.512 z"
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2691"
+           style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 69.103,165.006 c 2.664,1.512 4.968,3.924 7.056,7.381 2.052,3.383 4.392,7.307 5.22,13.176 0.685,5.795 1.404,15.227 -0.611,21.492 -2.089,6.227 -6.12,12.455 -11.664,15.623 -5.725,3.023 -12.96,3.996 -22.104,2.771 -5.724,-8.063 -6.768,-13.176 -2.736,-15.336 3.96,-2.23 25.02,5.832 26.388,2.125 1.08,-3.996 -18.504,-20.701 -19.044,-24.84 -0.468,-4.068 13.248,4.283 16.271,0.611 2.915,-3.743 3.275,-11.411 1.224,-23.003 z"
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2693"
+           style="clip-rule:evenodd;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 36.594,164.105 c -7.524,3.385 -12.492,8.244 -15.048,14.725 -2.592,6.443 -1.764,17.424 -0.288,23.904 1.368,6.299 5.904,10.908 8.892,14.111 2.88,3.096 5.976,4.68 8.892,4.607 -7.884,-9.539 -10.548,-15.982 -7.992,-19.332 2.556,-3.383 21.888,2.521 23.004,-0.898 0.827,-3.602 -17.856,-15.625 -17.172,-19.945 0.648,-4.248 16.452,-3.779 21.167,-5.543 4.572,-1.908 6.769,-3.852 6.444,-5.832 -1.296,-4.248 -4.212,-6.66 -8.892,-7.668 -4.751,-0.972 -10.907,-0.396 -19.007,1.871 z"
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2695"
+           style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 71.874,171.773 c 3.24,3.205 5.725,6.732 7.057,11.016 1.296,4.213 1.655,9.109 1.224,14.113 -0.504,4.896 -1.368,10.836 -3.708,15.047 -2.412,4.178 -5.832,7.777 -10.404,9.828 -4.607,1.945 -10.332,2.557 -17.172,1.836 -5.76,-5.902 -6.588,-9.646 -2.484,-11.375 4.176,-1.836 24.84,4.68 27,1.225 1.872,-3.492 -14.903,-17.93 -15.336,-21.781 -0.396,-3.924 10.152,1.729 12.601,-1.512 2.338,-3.455 2.699,-9.359 1.222,-18.397 z"
+           i:knockout="Off"
+           stroke-miterlimit="10"
+           id="path2697"
+           style="clip-rule:evenodd;fill:#408120;fill-rule:evenodd;stroke:#000000;stroke-width:0.036;stroke-miterlimit:10"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/kitchen.png b/images/presets/shop/kitchen.png
similarity index 100%
rename from images/presets/kitchen.png
rename to images/presets/shop/kitchen.png
diff --git a/images/presets/shop/laundry.svg b/images/presets/shop/laundry.svg
new file mode 100644
index 0000000..ee60c42
--- /dev/null
+++ b/images/presets/shop/laundry.svg
@@ -0,0 +1,164 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="370"
+   height="520"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="washing_machine.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="151.2027"
+     inkscape:cy="277.8224"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     width="370px"
+     height="520px"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="154"
+     inkscape:window-y="203" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-214.64286,-311.71933)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:7;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2160"
+       width="348.57144"
+       height="491.42856"
+       x="226.06091"
+       y="329.36148" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 223.20378,420.79004 L 571.77521,420.79004"
+       id="path3138" />
+    <g
+       id="g3184"
+       transform="translate(2.0203051,-56.568543)">
+      <path
+         transform="matrix(0.8089401,0,0,0.7974459,36.323589,89.265623)"
+         d="M 574.28571 702.36218 A 124.28571 124.28571 0 1 1  325.71429,702.36218 A 124.28571 124.28571 0 1 1  574.28571 702.36218 z"
+         sodipodi:ry="124.28571"
+         sodipodi:rx="124.28571"
+         sodipodi:cy="702.36218"
+         sodipodi:cx="450"
+         id="path3136"
+         style="fill:#808080;fill-opacity:1;stroke:#dddddd;stroke-width:37.35187912;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         transform="translate(-23.939072,-10.1436)"
+         d="M 485.71428 659.50507 A 61.42857 61.42857 0 1 1  362.85714,659.50507 A 61.42857 61.42857 0 1 1  485.71428 659.50507 z"
+         sodipodi:ry="61.42857"
+         sodipodi:rx="61.42857"
+         sodipodi:cy="659.50507"
+         sodipodi:cx="424.28571"
+         id="path3142"
+         style="fill:none;fill-opacity:1;stroke:#c4c4c4;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <rect
+         y="617.17902"
+         x="309.59274"
+         height="64.36496"
+         width="27.222099"
+         id="rect3140"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#d0d0d0;stroke-width:3.49218512;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <path
+       sodipodi:type="arc"
+       style="fill:#505050;fill-opacity:1;stroke:#505050;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3144"
+       sodipodi:cx="488.57144"
+       sodipodi:cy="366.64789"
+       sodipodi:rx="17.142857"
+       sodipodi:ry="17.142857"
+       d="M 505.7143 366.64789 A 17.142857 17.142857 0 1 1  471.42859,366.64789 A 17.142857 17.142857 0 1 1  505.7143 366.64789 z"
+       transform="translate(23.203772,11.284993)" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 340.34663,329.36147 L 340.34663,417.93289"
+       id="path3146" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66105628px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 226.41806,396.90206 L 339.27521,396.90206"
+       id="path3148"
+       sodipodi:nodetypes="cc" />
+    <rect
+       style="fill:#505050;fill-opacity:1;stroke:#000000;stroke-width:7;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3150"
+       width="10"
+       height="2.8571429"
+       x="382.13235"
+       y="392.86148" />
+    <rect
+       y="392.86148"
+       x="405.94186"
+       height="2.8571429"
+       width="10"
+       id="rect3152"
+       style="fill:#505050;fill-opacity:1;stroke:#000000;stroke-width:7;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="fill:#505050;fill-opacity:1;stroke:#000000;stroke-width:7;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3154"
+       width="10"
+       height="2.8571429"
+       x="429.7514"
+       y="392.86148" />
+    <rect
+       y="392.86148"
+       x="453.56091"
+       height="2.8571429"
+       width="10"
+       id="rect3156"
+       style="fill:#505050;fill-opacity:1;stroke:#000000;stroke-width:7;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/shop/library.png b/images/presets/shop/library.png
new file mode 100644
index 0000000..a7536b8
Binary files /dev/null and b/images/presets/shop/library.png differ
diff --git a/images/presets/lottery.svg b/images/presets/shop/lottery.svg
similarity index 100%
rename from images/presets/lottery.svg
rename to images/presets/shop/lottery.svg
diff --git a/images/presets/shop/mall.svg b/images/presets/shop/mall.svg
new file mode 100644
index 0000000..ef514a4
--- /dev/null
+++ b/images/presets/shop/mall.svg
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  --><svg height="270.512" id="Layer_1" inkscape:version="0.40+cvs" sodipodi:docbase="F:\openclip\svg3" sodipodi:docname="Borsa estiva.svg" sodipodi:version="0.32" style="overflow:visible;enable-background:new 0 0 208.532 270.512;" version="1.0" viewBox="0 0 208.532 270.512" width="208.532" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="ht [...]
+<defs id="defs130"></defs>
+<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="Layer_1" inkscape:cx="104.26600" inkscape:cy="135.25600" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="540" inkscape:window-width="640" inkscape:window-x="110" inkscape:window-y="110" inkscape:zoom="1.3973502" pagecolor="#ffffff"></sodipodi:namedview>
+
+<path d="M114.521,42.042c0.249-0.073,0.461-0.202,0.656-0.358C114.915,41.768,114.703,41.893,114.521,42.042z  " id="path3" style="fill:#FFBF00;"></path>
+
+<path d="M113.466,19.438c-0.004,0.007-0.007,0.015-0.011,0.022C113.508,19.429,113.5,19.427,113.466,19.438z" id="path5" style="fill:#FFBF00;"></path>
+
+<path d="M199.475,166.021c-5.722-18.933-10.846-37.861-13.438-57.508c-1.247-9.456-1.855-19.073-1.545-28.611  c0.145-4.442,3.994-20.821,0.259-22.691c-2.031-1.016-4.56-0.582-4.56-3.564c0-3.859,1.221-4.893-2.102-7.188  c-3.339-2.306-9.449-2.406-13.384-3.156c-2.478-0.472-4.923-1.095-7.305-1.929c-2.027-0.709-1.731-4.457-2.455-6.486  c-3.005-8.422-10.572-14.248-18.641-17.356c-3.424-1.319-7.004-1.627-10.634-1.87c-2.357-0.157-7.195,2.005-9.058,0.76  c-1.979-1.323-1.529-5.976-3.283-7.937c-1.847-2. [...]
+
+<path d="M121.202,40.845c0.618-0.068,1.054-0.272,1.348-0.58C122.015,40.318,121.572,40.53,121.202,40.845z" id="path9" style="fill:#FFBF00;"></path>
+
+<path d="M99.049,37.903c-0.621-0.302-1.178-0.385-1.677-0.276C97.93,37.91,98.491,37.991,99.049,37.903z" id="path11" style="fill:#FFBF00;"></path>
+
+<path d="M107.191,41.183c-0.633-0.28-1.229-0.395-1.792-0.375C106.056,41.102,106.649,41.219,107.191,41.183z  " id="path13" style="fill:#FFBF00;"></path>
+
+<path d="M87.744,79.066c-0.156,0.701-0.312,1.402-0.468,2.104C87.432,80.469,87.587,79.768,87.744,79.066" id="path15" style="fill:#FFBF00;"></path>
+
+<path d="M155.063,53.12c-4.282,7.09-7.288,15.138-9.662,23.05c-1.364,4.548-2.151,12.988-8.336,12.48  C140.966,75.108,143.075,62.106,155.063,53.12" id="path17" style="fill:#FFBF00;"></path>
+
+<path d="M3.593,93.092c7.871,2.717,15.192,7.001,23.159,9.416c3.88,1.176,7.917,2.557,11.995,2.776  c3.671,0.197,6.778-1.225,10.544-1.673c15.371-1.831,31.249-4.714,47.012-6.839c18.939-2.554,42.853-0.819,60.194-9.719  c5.158-2.647,9.408-5.084,13.934-8.677c2.628-2.086,9.412-7.752,9.412-10.938c0-5.888,2.833-10.541-3.683-2.045  c-7.628,9.946-17.64,18.246-29.98,21.388c2.883-10.783,5.932-21.682,10.944-31.704c2.754-5.507-1.842-10.986,5.886-10.021  c4.398,0.549,8.57,2.553,12.857,3.623c-1.492,4-6.5 [...]
+
+<path d="M72.082,151.295c8.279-3.682,16.969-6.625,25.712-8.882c-5.153,1.597-10.086,3.128-14.735,6.064  c-4.362,2.755-11.072,12.669-16.12,11.233C68.879,157.072,72.062,154.829,72.082,151.295" id="path21" style="fill:#FFBF00;"></path>
+
+<path d="M31.643,158.776c-2.751-1.009-5.897-0.369-7.947-2.805c-0.09,0.206-0.261,0.976-0.234,0.935  c-1.043-0.706-8.299-5.178-3.506-4.383c4.662,0.772,9.259,1.334,14.137,1.756c6.213,0.537,10.741-0.687,16.25-3.217  c4.072-1.87,10.193-2.95,12.154-7.479c0.1,3.374,4.292-0.125,3.974-1.169c-0.447-1.466-7.283,0.172-8.415,0.116  c0,0.351,0,0.702,0,1.053c-7.369-4.927-19.656,1.942-27.582-6.312c11.118,1.213,22.307,1.47,33.452,0.298  c5.905-0.621,11.716-1.522,17.562-2.566c5.052-0.902,12.563-4.646,17.4 [...]
+
+<path d="M64.134,154.802c-2.272,2.342-4.223,8.216-8.415,5.61C58.524,158.542,61.329,156.672,64.134,154.802" id="path25" style="fill:#FFBF00;"></path>
+
+<path d="M105.041,140.777c9.57-2.385,22.107-7.742,30.389,0.468c-11.152-6.321-24.814-0.646-36.467,0.701  C101.009,141.614,103.016,141.224,105.041,140.777" id="path27" style="fill:#FFBF00;"></path>
+
+<path d="M130.987,134.465c3.21-0.487,6.245,1.13,8.882,2.806  C136.706,137.895,133.484,136.325,130.987,134.465" id="path29" style="fill:#FFBF00;"></path>
+
+<path d="M119.767,128.388c12.425-3.601,24.764-5.454,36.933-10.051c-1.503,5.521-3.695,11.716-2.337,17.473  c1.742,7.386,7.78,2.853,11.804,0.175c4.779-3.181,9.529-7.731,12.098-13.148c1.424-3.003-0.628-9.839-0.292-10.343  c1.889-2.837,2.094,0.592,2.803,2.104c2.678,5.707-1.466,10.579-5.18,14.705c-2.769,3.077-12.839,12.803-17.376,11.184  c-5.516-1.968-8.592-7.033-14.375-8.824C136.122,129.27,127.808,128.664,119.767,128.388" id="path31" style="fill:#FFBF00;"></path>
+
+<path d="M169.557,126.05c1.679-3.042,3.396-6.112,4.674-9.35C176.47,120,172.165,124.115,169.557,126.05" id="path33" style="fill:#FFBF00;"></path>
+
+<path d="M15.28,154.101c-0.86-1.227-0.388-2.18-2.104-2.104c0-0.39,0-0.779,0-1.169  C15.367,151.137,16.33,152.27,15.28,154.101" id="path35" style="fill:#FFBF00;"></path>
+
+<path d="M203.217,223.758c-38.622,13.543-80.004,14.012-118.955,26.633  c-9.088,2.945-18.521,5.184-27.316,8.955c-4.044,1.734-14.937,10.906-18.524,6.428c-4.777-5.964-11.117-10.472-16.562-15.918  c-5.393-5.395-14.062-9.492-11.313-17.74c3.351-10.058,0.125-24.584-0.53-35.074c-0.465-7.446-1-14.896-1.697-22.323  c-0.553-5.9-3.388-15.167-1.922-20.617c13.701,9.811,27.28,14.292,44.344,12.553c16.737-1.705,32.8-6.313,49.319-9.27  c29.556-5.29,61.704-4.017,83.521-27.828c0.891,3.313,6.882,23.086,5.367 [...]
+
+<path d="M180.311,168.827c-6.976,9.282-16.237,18.018-26.882,22.908c4.464-3.507,9.328-6.483,13.768-10.035  C172.12,177.762,175.248,172.555,180.311,168.827" id="path39" style="fill:#FFBF00;"></path>
+
+<path d="M152.26,192.436c-0.779,0.545-1.559,1.09-2.338,1.635C150.701,193.526,151.48,192.981,152.26,192.436  " id="path41" style="fill:#FFBF00;"></path>
+
+<path d="M137.766,181.684c-2.954,1.635-11.074,8.035-10.286,1.637  C130.921,182.863,134.338,182.229,137.766,181.684" id="path43" style="fill:#FFBF00;"></path>
+
+<path d="M104.572,208.097c-2.946,1.82-6.095,4.775-9.582,4.909  C98.184,211.37,101.378,209.734,104.572,208.097" id="path45" style="fill:#FFBF00;"></path>
+
+<path d="M83.769,198.046c4.644-5.981,10.943-9.696,18.466-10.753  C95.136,189.332,91.411,197.002,83.769,198.046" id="path47" style="fill:#FFBF00;"></path>
+
+<path d="M37.721,216.511c-2.335-4.871,0.412-7.965,5.025-9.349c4.885-1.466,8.351-3.598,12.821-5.828  c7.596-3.79,14.889-8.229,23.292-10.067C66.337,201.835,52.999,210.488,37.721,216.511" id="path49" style="fill:#FFBF00;"></path>
+
+<path d="M78.159,205.759c-1.056,1.31-1.64,2.286-3.272,2.338C75.952,207.336,77.006,206.375,78.159,205.759" id="path51" style="fill:#FFBF00;"></path>
+
+<path d="M73.25,208.565c-3.302,3.37-7.851,5.616-12.388,6.777C64.584,212.335,69.076,210.795,73.25,208.565" id="path53" style="fill:#FFBF00;"></path>
+
+<path d="M36.785,197.345c4.359-0.328,8.562,1.418,12.857,0C45.142,199.286,35.346,206.515,36.785,197.345" id="path55" style="fill:#FFBF00;"></path>
+
+<path d="M80.497,55.925c3.906,4.449-4.436,5.011-6.883,5.792c-8.846,2.823-17.519,5.977-26.102,9.521  c-7.746,3.199-15.302,7.615-21.874,12.802c-3.157,2.492-7.758,5.676-11.995,3.908C33.973,72.703,55.891,62.275,80.497,55.925" id="path57" style="fill:#FFBF00;"></path>
+
+<path d="M48.94,62.704c-0.688,2.951-11.031,6.138-14.202,7.787c-5.153,2.68-10.5,4.95-15.951,6.939  C24.451,72.915,41.512,59.986,48.94,62.704" id="path59" style="fill:#FFBF00;"></path>
+
+<path d="M82.133,96.364c3.55-20.515,10.135-39.079,22.089-56.217  c-5.891-3.778-7.977,4.198-10.542,8.662c-2.875,5.003-5.097,10.429-7.143,15.812c-4.02,10.577-6.509,21.401-8.847,32.445  C79.114,96.841,80.772,96.823,82.133,96.364" id="path61" style="fill-rule:evenodd;clip-rule:evenodd;fill:#8B5C29;"></path>
+
+<path d="M120.936,22.966c12.257-0.641,22.92,6.828,31.791,14.493c-3.56-12.209-17.174-21.697-30.389-19.519  c-9.047,1.491-17.463,13.142-22.322,20.57c4.98,3.627,7.137-2.238,10.285-5.61C113.645,29.32,117.298,26.229,120.936,22.966" id="path63" style="fill:#8B5C29;"></path>
+
+<path d="M118.131,30.212c-2.144,3.349-1.753,7.53-1.753,11.337  C122.387,42.146,119.719,33.787,118.131,30.212" id="path65" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M101.301,52.185C94.03,66.018,90.874,81.129,86.106,95.897  c14.7-2.941,29.571-4.5,44.354-6.896c4.09-0.663,5.99-12.117,7.794-16.111c2.732-6.05,5.942-11.561,9.795-16.965  c1.305-1.831,6.603-7.267,5.845-9.876c-1.289-4.443-18.607,0.526-21.724,0.967c-1.597,0.227-11.376,2.311-11.294,2.889  c-0.429-3.021-0.62-6.018-0.759-9.058c-6.858-0.601-1.7,5.675-5.025,8.766C113.049,51.514,104.606,51.212,101.301,52.185" id="path67" style="fill-rule:evenodd;clip-rule:evenodd;fill:#8B5C29;"></path>
+
+<path d="M166.75,55.925c2.591-3.046,7.625-3.247,9.117-7.246c-4.002-0.999-7.855-2.78-11.921-3.506  c-8.765-1.566-3.215,2.691-6.035,8.329c-5.301,10.599-8.68,21.865-11.731,33.279c8.728-2.222,16.698-7.105,23.053-13.466  c3.123-3.126,6.284-6.496,8.638-10.26c0.646-1.035,1.168-1.744,1.591-2.173c0.169-0.907,0.445-1.766,0.821-2.588  C176.218,57.771,169.839,60.096,166.75,55.925z" id="path69" style="fill:#8B5C29;"></path>
+
+<path d="M180.282,58.293c-0.376,0.822-0.652,1.681-0.821,2.588c1.147-1.162,1.56-0.202,1.665,2.407  c0.297,7.34-9.904,14.458-14.887,18.415c-8.108,6.438-19.229,8.511-29.099,10.485c-18.736,3.748-39.284,5.062-58.163,6.981  c-3.721,0.378-7.23,1.709-10.869,2.455c-2.822,0.578-10.434-0.527-12.272,0.76c-3.73,2.611-15.671,3.223-19.811,2.513  c-11.508-1.974-21.519-8.037-32.433-11.804c0.537,8.863-1.093,21.388,5.415,27.535c5.711,5.394,12.237,10.22,20.298,11.035  c-1.091-7.247-2.181-14.493-3.272-21.74c [...]
+
+<path d="M141.506,87.481c4.566-11.477,7.103-23.674,13.557-34.361  c-11.987,8.986-14.097,21.988-17.998,35.53C138.61,88.678,140.163,88.299,141.506,87.481" id="path73" style="fill-rule:evenodd;clip-rule:evenodd;fill:#8B5C29;"></path>
+
+<path d="M22.76,86.313c10.153-8.014,21.031-13.722,33.054-18.427  c5.851-2.29,11.817-4.259,17.8-6.168c2.086-0.666,5.559-0.354,7.117-2.286c4.587-5.69-10.597-0.665-12.762,0.009  c-6.483,2.019-12.834,4.46-19.029,7.237c-12.71,5.697-24.172,12.928-35.296,21.271C17.055,89.372,19.649,87.471,22.76,86.313" id="path75" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M18.787,77.43c5.451-1.989,10.798-4.259,15.951-6.939  c3.171-1.649,13.515-4.836,14.202-7.787C41.512,59.986,24.451,72.915,18.787,77.43" id="path77" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M159.037,140.777c8.465-3.739,18.326-10.28,22.04-19.193  c0.783-1.88,0.66-7.69-1.003-9.441c-1.078-1.136-1.961-0.715-2.569,1.052c0.244-0.71,1.957,3.285,1.986,3.74  c0.103,1.587-0.203,3.29-0.701,4.792c-2.607,7.872-11.59,14.884-18.935,17.94c-9.619,4.003-4.114-17.811-3.156-21.33  c-12.169,4.597-24.508,6.451-36.933,10.051c8.041,0.276,16.355,0.882,24.077,3.273C149.82,133.512,153.171,139.047,159.037,140.777" id="path79" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M174.23,116.7c-1.277,3.238-2.995,6.308-4.674,9.35  C172.165,124.115,176.47,120,174.23,116.7" id="path81" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M130.987,208.565c-22.312,4.009-44.171,10.4-66.539,14.038c-5.766,0.938-11.542,1.777-17.374,2.199  c-0.854,0.063-8.199,0.378-8.171,0.782c0.247,3.562,0.494,7.122,0.74,10.684c0.361,5.217,0.23,10.427,1.875,15.365  c0.847,2.54,1.502,5.112-0.292,7.421c-2.534-5.669-3.655-11.768-4.446-17.887c-0.711-5.507,0.386-16.368-5.489-17.35  c-5.793-0.969-10.906-3.729-15.194-7.715c-1.032-0.96-4.506-8.117-1.519-6.254c4.991,3.115,9.984,7.13,16.129,7.13  c6.049,0,2.551-6.95-1.168-8.297c-5.494-1.989-7.1 [...]
+
+<path d="M181.943,214.175c-1.048-5.077-0.234-16.057,5.612-17.999  C187.359,201.169,185.156,210.315,181.943,214.175" id="path85" style="fill:#FFBF00;"></path>
+
+<path d="M57.355,142.414C57.984,142.514,58.35,142.573,57.355,142.414" id="path87" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M95.691,131.661c-21.399,5.651-43.162,8.015-65.216,5.61  c7.926,8.254,20.213,1.385,27.582,6.312c-0.539-0.834-0.166-0.61-0.701-1.169c1.608,0.283,7.224-1.548,8.416-0.352  c1.372,1.377-3.176,4.828-3.273,1.521c-2.063,4.766-7.502,4.763-11.453,7.069c-5.432,3.173-10.646,4.172-16.952,3.627  c-2.687-0.232-5.378-0.351-8.064-0.585c-0.984-0.086-4.817-1.334-5.722-1.113c-4.582,1.118,0.879,2.784,3.156,4.325  c-0.027,0.041,0.144-0.729,0.234-0.935c6.18,7.343,24.568,0.597,31.266-2.395c14.979-6.689 [...]
+
+<path d="M139.869,137.271c-2.637-1.675-5.672-3.293-8.882-2.806  C133.484,136.325,136.706,137.895,139.869,137.271" id="path91" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M135.43,141.245c-8.282-8.21-20.819-2.853-30.389-0.468  C114.534,138.998,126.479,136.17,135.43,141.245" id="path93" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M98.963,141.946c2.043-0.236,4.095-0.63,6.078-1.169  C103.016,141.224,101.009,141.614,98.963,141.946" id="path95" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M91.834,144.167c2-0.537,3.986-1.142,5.96-1.753C95.791,142.931,93.766,143.408,91.834,144.167" id="path97" style="fill:#FFBF00;"></path>
+
+<path d="M70.913,159.711c5.362-7.05,12.474-12.638,20.921-15.545  c-5.167,1.565-15.898,3.164-19.752,7.129c-1.461,1.503-3.557,6.258-5.142,8.416C68.202,159.711,69.675,159.942,70.913,159.711" id="path99" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M13.177,151.997c0.743,0.656,1.786,0.32,2.104,2.104C16.522,151.934,14.154,150.038,13.177,151.997" id="path101" style="fill:#FFBF00;"></path>
+
+<path d="M64.134,154.802c-2.805,1.87-5.61,3.74-8.415,5.61C59.912,163.018,61.862,157.144,64.134,154.802" id="path103" style="fill:#FFBF00;"></path>
+
+<path d="M153.429,191.735c10.605-5.563,19.679-13.323,26.882-22.908c-4.873,3.589-7.916,8.439-12.508,12.389  C163.296,185.092,158.093,188.071,153.429,191.735" id="path105" style="fill:#FFBF00;"></path>
+
+<path d="M137.766,181.684c-3.428,0.545-6.845,1.179-10.286,1.637  C126.691,189.719,134.812,183.319,137.766,181.684" id="path107" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M83.769,198.046c7.642-1.044,11.367-8.715,18.466-10.753  C94.712,188.35,88.413,192.065,83.769,198.046" id="path109" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M52.447,202.956c-4.637,4.524-19.506,3.587-14.726,13.556  c15.278-6.023,28.617-14.676,41.139-25.244C69.451,193.326,60.853,198.457,52.447,202.956" id="path111" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M183.112,201.318c-0.089,4.346-2.071,8.486-1.169,12.857  c3.213-3.86,5.416-13.006,5.612-17.999C185.212,196.956,183.287,198.791,183.112,201.318" id="path113" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M36.785,197.345c-1.439,9.17,8.357,1.94,12.857,0C45.346,198.763,41.144,197.017,36.785,197.345" id="path115" style="fill:#FFBF00;"></path>
+
+<path d="M78.159,205.759c-1.153,0.616-2.207,1.577-3.272,2.338  C76.52,208.045,77.103,207.069,78.159,205.759" id="path117" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M104.572,208.097c-3.194,1.637-6.388,3.272-9.582,4.909  C98.478,212.873,101.626,209.917,104.572,208.097" id="path119" style="fill:#FFBF00;"></path>
+
+<path d="M73.25,208.565c-4.175,2.23-8.667,3.771-12.388,6.777C65.399,214.181,69.948,211.935,73.25,208.565" id="path121" style="fill:#FFBF00;"></path>
+
+<path d="M62.265,57.328c-3.143,0.587-11.631,3.44-13.792,0.468c-4.061-5.587,4.302-22.858,7.47-27.497  c3.083-4.515,6.299-8.7,9.999-12.726c1.29-1.404,4.185-3.36,6.318-5.394c-0.315-0.611-0.687-1.366-0.986-1.976  C54.851,23.583,44.02,40.258,42.863,62.236c-6.943,2.561-13.881,5.15-20.723,7.969c-4.614,1.901-17.379,5.31-18.78,9.329  c-1.304,3.741,2.139,9.3,5.143,11.103c2.3,1.38,4.772,0.445,7.246,0.702c4.635,0.48,4.877,2.219,8.532,5.142  c13.155,10.522,31.314,2.95,45.954,1.039c5.102-0.666,4.257-4 [...]
+
+<path d="M113.455,19.46c0.053-0.031,0.045-0.033,0.011-0.022  C113.462,19.445,113.459,19.453,113.455,19.46z" id="path125" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFBF00;"></path>
+
+<path d="M99.049,2.249c-2.988-0.107-22.292,4.554-27.775,7.954  c0.371,0.72,0.642,1.23,0.986,1.976c6.869-1.598,20.442-5.918,27.664-5.016c6.464,0.808,9.65,6.942,11.895,12.999  c0.043-0.012,1.452-0.662,1.647-0.723C117.549,12.175,105.185,2.468,99.049,2.249z" id="path127" style="fill-rule:evenodd;clip-rule:evenodd;fill:#8B5C29;"></path>
+
+
+  
+</svg>
diff --git a/images/presets/shop/marketplace.png b/images/presets/shop/marketplace.png
new file mode 100644
index 0000000..a73c447
Binary files /dev/null and b/images/presets/shop/marketplace.png differ
diff --git a/images/presets/shop/medical_supply.svg b/images/presets/shop/medical_supply.svg
new file mode 100644
index 0000000..31608fe
--- /dev/null
+++ b/images/presets/shop/medical_supply.svg
@@ -0,0 +1,177 @@
+<?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="svg6468"
+   sodipodi:docname="01.svg"
+   viewBox="0 0 152.92334 167.08995"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="100%"
+   height="100%">
+  <defs
+     id="defs23" />
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-y="-8"
+     pagecolor="#ffffff"
+     inkscape:window-height="988"
+     inkscape:window-maximized="1"
+     inkscape:zoom="1.979899"
+     inkscape:window-x="-8"
+     showgrid="false"
+     borderopacity="1.0"
+     inkscape:current-layer="layer1"
+     inkscape:cx="30.696583"
+     inkscape:cy="57.254658"
+     inkscape:window-width="1680"
+     inkscape:pageopacity="0.0"
+     inkscape:document-units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(-230.68626,-140.30165)">
+    <g
+       id="g3018"
+       transform="matrix(1.1504598,0,0,0.99998798,-37.904711,3.7907454)">
+      <path
+         id="path11-4-4"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccsccccccc"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.02663;stroke-miterlimit:10"
+         d="m 295.86,136.6 c -2.1037,0.0666 -3.9109,0.24295 -5.4688,0.5625 -3.0358,0.61248 -4.2449,1.6881 -5.6562,3.3125 -1.3848,1.5978 -2.1584,3.6403 -2.5312,6.25 0.86612,1.0264 0.27734,1.7542 6.7749,3.3858 1.0652,-1.4646 2.9222,-2.9597 5.3188,-3.3858 2.4766,-0.47934 5.7566,-0.61929 9.9375,-0.40625 1.2516,-1.8108 1.7177,-3.4335 1.5312,-5.0312 -0.15978,-1.6244 -1.0677,-3.0886 -2.7188,-4.5 -2.7029,-0.18641 -5.0838,-0.25407 -7.1875,-0.1875 z" />
+      <path
+         id="path35-5-9"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccscccc"
+         style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.029743;stroke-miterlimit:10"
+         d="m 291.28,145.44 c 0.80097,-0.96645 1.0573,-1.85 0.76893,-2.9822 -0.25631,-1.1045 -1.0573,-2.3471 -2.4029,-3.6172 -1.4417,0.60748 -2.6913,1.3254 -3.6204,2.4575 -0.96117,0.99405 -1.5699,2.7889 -2.0825,3.8934 -0.38447,1.1045 -0.67281,1.9329 -0.60874,2.5956 0.76894,0.46941 1.3777,1.0769 1.9544,1.9329 0.5767,0.85598 1.1214,1.8224 1.5058,3.1202 0.19222,-2.5956 -0.43066,-0.57227 0.27419,-1.7872 0.83301,-1.2702 2.8336,-5.7234 4.2112,-5.6129 z" />
+    </g>
+    <path
+       id="path49-5"
+       style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.02856303;stroke-miterlimit:10"
+       sodipodi:nodetypes="cccccscccccccccccccccccc"
+       inkscape:connector-curvature="0"
+       d="m 262.3859,193.02037 -10.76382,17.53179 c 0,0 -5.21307,6.17713 -6.77551,11.31686 -1.53265,5.08624 -3.52409,11.98286 -3.95298,19.86476 -0.36763,7.93631 0.85781,19.83877 1.89941,26.97668 1.22454,6.89622 3.12487,10.81087 4.87116,14.61982 1.74628,3.80726 3.37004,6.09813 5.36137,8.09461 2.17598,1.89137 4.74864,2.82266 6.77069,3.40856 1.93093,0.45269 3.36992,0.37279 4.90176,-0.1332 1.65436,-0.5325 3.27893,-1.41128 4.87208,-2.74277 l 9.16031,0.61249 c -1.34799,1.97058 -3.2466,3.78056  [...]
+    <g
+       id="g6431"
+       transform="matrix(1.1504598,0,0,0.99998798,-737.67433,-832.4473)">
+      <path
+         id="path47-0-8-2"
+         d="m 874.02,1078.6 c 0,5.2616 -2.3039,9.5238 -5.1838,9.5238 -2.8415,0 -5.1454,-4.2622 -5.1454,-9.5238 0,-5.2606 2.3039,-9.5228 5.1454,-9.5228 2.8799,0 5.1838,4.2622 5.1838,9.5228 z"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.038398;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path47-6-1"
+         d="m 872.43,1077.9 c 0,3.649 -1.5978,6.6049 -3.595,6.6049 -1.9706,0 -3.5684,-2.9559 -3.5684,-6.6049 0,-3.6483 1.5978,-6.6042 3.5684,-6.6042 1.9972,0 3.595,2.9559 3.595,6.6042 z"
+         style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.02663;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path45-8-2-2"
+         d="m 884.03,1073.3 c 0.0607,11.133 -0.63662,25.628 -4.8286,38.409 -3.9663,13.759 -14.287,18.432 -22.196,0.4703 -4.8128,-22.449 -6.6817,-36.161 -0.49824,-57.782 4.6922,-13.588 11.934,-15.805 17.27,-12.32 2.8848,5.4393 6.9068,8.8085 10.254,31.222 z m 5.5912,-29.99 c 2.573,5.9868 4.5946,12.981 5.6054,20.003 1.0414,6.8533 1.164,13.456 0.49008,21.205 -0.55134,7.778 -1.7459,17.402 -4.1657,24.982 -2.4811,7.5255 -6.2179,15.191 -10.506,19.863 -4.1351,4.5321 -9.1741,6.2636 -13.891,6.0957  [...]
+         sodipodi:nodetypes="cccccccccccccccccccc"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.029273;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path45-4-0"
+         d="m 882.26,1054.2 c 1.5712,4.9531 2.3434,9.134 2.7162,15.712 0.37282,6.5775 0.23967,16.244 -0.39944,23.248 -0.47933,6.8438 -1.0386,12.516 -2.9026,17.842 -1.8641,5.326 -5.1662,11.211 -8.1487,13.768 -2.876,2.4225 -5.9917,2.7421 -9.0274,0.8514 -2.9559,-2.0231 -6.3378,-5.7513 -8.7079,-12.729 -2.2103,-7.1634 -4.6602,-19.2 -4.8732,-29.319 -0.13315,-10.226 1.225,-22.662 3.7814,-30.731 2.6896,-8.0688 8.0422,-14.753 11.637,-16.883 3.595,-2.1304 6.8704,1.4113 9.5068,4.4738 2.7428,3.0897  [...]
+         style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.02663;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       id="path11-4"
+       style="fill-rule:evenodd;stroke:#000000;stroke-width:0.02856303;stroke-miterlimit:10"
+       sodipodi:nodetypes="ccsccccccccccc"
+       inkscape:connector-curvature="0"
+       d="m 358.9555,144.08096 c -2.42022,0.0666 -4.49933,0.24295 -6.29163,0.56249 -3.49257,0.61247 -4.88359,1.68808 -6.50723,3.31246 -1.59316,1.59778 -2.48316,3.64026 -2.91205,6.24993 -18.58683,2.12037 -41.67771,4.00235 -56.70501,-4.19835 2.245,65.13521 7.85879,74.6071 -42.17241,105.91872 8.0806,0.14466 59.59727,8.4454 73.26934,6.61062 48.26984,-15.16281 32.70872,-50.21239 32.33022,-99.95679 0.24509,-2.87597 0.60277,-4.70435 1.79759,-6.06243 1.22547,-1.46458 2.63548,-1.88638 5.39278,-2. [...]
+    <path
+       id="path35-5"
+       style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.031902;stroke-miterlimit:10"
+       inkscape:connector-curvature="0"
+       d="m 353.6864,152.92085 c 0.92148,-0.96644 1.21638,-1.84998 0.88462,-2.98216 -0.29488,-1.10449 -1.21638,-2.34707 -2.76444,-3.61716 -1.65862,0.60747 -3.09623,1.32539 -4.16513,2.45747 -1.10578,0.99404 -1.8061,2.78887 -2.39583,3.89336 -0.44232,1.10448 -0.77404,1.93287 -0.70033,2.59556 0.88463,0.46941 1.58499,1.07689 2.24846,1.93288 0.66347,0.85597 1.29012,1.82238 1.73236,3.12016 0.22114,-2.59557 0.73718,-4.50074 1.54806,-5.71573 0.95834,-1.27018 2.02723,-1.79478 3.61221,-1.68438 z" />
+    <g
+       id="g6437"
+       transform="matrix(1.1504598,0,0,0.99998798,-737.67433,-830.44733)">
+      <path
+         id="path47-0-9"
+         d="m 956.47,1083.6 c 0,5.2617 -2.3039,9.5239 -5.1838,9.5239 -2.8415,0 -5.1454,-4.2622 -5.1454,-9.5239 0,-5.2606 2.3039,-9.5228 5.1454,-9.5228 2.8799,0 5.1838,4.2622 5.1838,9.5228 z"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.038398;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path47-3"
+         d="m 954.88,1083 c 0,3.649 -1.5978,6.6049 -3.595,6.6049 -1.9706,0 -3.5684,-2.9559 -3.5684,-6.6049 0,-3.6483 1.5978,-6.6041 3.5684,-6.6041 1.9972,0 3.595,2.9558 3.595,6.6041 z"
+         style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.02663;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path45-8-7"
+         d="m 962.48,1073.1 c 0.0607,11.133 -0.63662,26.89 -4.8286,39.672 -3.9663,13.759 -14.287,18.432 -22.196,0.4703 -4.8128,-22.449 -6.6817,-36.161 -0.49824,-57.782 4.6922,-13.588 11.934,-15.805 17.27,-12.32 2.8848,5.4393 7.1593,8.3034 10.254,29.96 z m 5.5912,-28.728 c 2.573,5.9868 4.5946,12.981 5.6054,20.003 1.0414,6.8533 1.164,13.456 0.49008,21.205 -0.55134,7.778 -1.7459,17.402 -4.1657,24.982 -2.4811,7.5254 -6.2179,15.191 -10.506,19.863 -4.1351,4.532 -9.6792,7.5262 -14.396,7.3584 -4 [...]
+         sodipodi:nodetypes="cccccccccccccccccccc"
+         style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.029273;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path45-0"
+         sodipodi:nodetypes="cscscccccsccccccccccccccccc"
+         d="m 960.71,1055.2 c 1.5712,4.9532 3.101,9.134 3.4738,15.712 0.37282,6.5776 0.23967,16.244 -0.39944,23.248 -0.47933,6.8438 -1.7962,12.516 -3.6602,17.842 -1.8641,5.3259 -5.1662,11.211 -8.1487,13.768 -2.876,2.4226 -5.9917,2.7421 -9.0274,0.8514 -2.9559,-2.0231 -6.3378,-5.7513 -8.7079,-12.729 -2.2103,-7.1633 -4.6602,-19.2 -4.8732,-29.319 -0.13315,-10.226 1.225,-22.662 3.7814,-30.731 2.6896,-8.0688 8.0422,-14.753 11.637,-16.883 3.595,-2.1304 6.8704,1.4114 9.5068,4.4738 2.7428,3.0898  [...]
+         style="fill:#c0c0c0;fill-rule:evenodd;stroke:#000000;stroke-width:0.02663;stroke-miterlimit:10"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+  <metadata
+     id="metadata21">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2011-03-14T10:50:30</dc:date>
+        <dc:description>Simple wheelchair icon. Based on Gerald_G's "Girl_in_wheelchair".</dc:description>
+        <dc:source>https://openclipart.org/detail/127375/plain-wheelchair-by-tulvur</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>tulvur</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Gerald G Girl in wheelchair</rdf:li>
+            <rdf:li>plain</rdf:li>
+            <rdf:li>simple</rdf:li>
+            <rdf:li>wheelchair</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/images/presets/mobile_phone.png b/images/presets/shop/mobile_phone.png
similarity index 100%
rename from images/presets/mobile_phone.png
rename to images/presets/shop/mobile_phone.png
diff --git a/images/presets/shop/music.svg b/images/presets/shop/music.svg
new file mode 100644
index 0000000..83e676d
--- /dev/null
+++ b/images/presets/shop/music.svg
@@ -0,0 +1,514 @@
+<?xml version="1.0"?>
+<svg
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    xmlns:svg="http://www.w3.org/2000/svg"
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:ns1="http://sozi.baierouge.fr"
+    id="svg2"
+    viewBox="0 0 432.28 432.28"
+    version="1.1"
+  >
+  <defs
+      id="defs4"
+    >
+    <linearGradient
+        id="linearGradient4533"
+      >
+      <stop
+          id="stop4535"
+          stop-color="#8eff6d"
+          offset="0"
+      />
+      <stop
+          id="stop4537"
+          stop-color="#9af978"
+          stop-opacity="0"
+          offset="1"
+      />
+    </linearGradient
+    >
+    <linearGradient
+        id="linearGradient3845"
+      >
+      <stop
+          id="stop3903"
+          stop-color="#525252"
+          stop-opacity=".63478"
+          offset="0"
+      />
+      <stop
+          id="stop3849"
+          stop-color="#ececec"
+          stop-opacity=".43478"
+          offset="1"
+      />
+    </linearGradient
+    >
+    <filter
+        id="filter4282"
+        color-interpolation-filters="sRGB"
+      >
+      <feGaussianBlur
+          id="feGaussianBlur4284"
+          stdDeviation="4.055"
+      />
+    </filter
+    >
+    <filter
+        id="filter4360"
+        color-interpolation-filters="sRGB"
+      >
+      <feGaussianBlur
+          id="feGaussianBlur4362"
+          stdDeviation="1.7120313"
+      />
+    </filter
+    >
+    <filter
+        id="filter4492"
+        color-interpolation-filters="sRGB"
+      >
+      <feGaussianBlur
+          id="feGaussianBlur4494"
+          stdDeviation="1.755396"
+      />
+    </filter
+    >
+    <filter
+        id="filter4549"
+        color-interpolation-filters="sRGB"
+      >
+      <feGaussianBlur
+          id="feGaussianBlur4551"
+          stdDeviation="1.8863557"
+      />
+    </filter
+    >
+    <radialGradient
+        id="radialGradient4668"
+        gradientUnits="userSpaceOnUse"
+        cy="323.14"
+        cx="239.83"
+        gradientTransform="matrix(.78775 .45481 -.34925 .60492 163.76 18.588)"
+        r="203.35"
+      >
+      <stop
+          id="stop4511"
+          stop-color="#ff70ff"
+          offset="0"
+      />
+      <stop
+          id="stop4513"
+          stop-color="#ff70ff"
+          stop-opacity="0"
+          offset="1"
+      />
+    </radialGradient
+    >
+    <radialGradient
+        id="radialGradient4698"
+        xlink:href="#linearGradient4533"
+        gradientUnits="userSpaceOnUse"
+        cy="320.81"
+        cx="240.29"
+        gradientTransform="matrix(1.3666 -.36617 .33705 1.2579 -193.58 2.6914)"
+        r="152.3"
+    />
+    <linearGradient
+        id="linearGradient4703"
+        x1="1058.5"
+        spreadMethod="reflect"
+        gradientUnits="userSpaceOnUse"
+        y1="319.44"
+        gradientTransform="translate(-1024.5 -2.566)"
+        x2="1265.8"
+        y2="319.44"
+      >
+      <stop
+          id="stop4306"
+          stop-color="#7eeebc"
+          stop-opacity=".81961"
+          offset="0"
+      />
+      <stop
+          id="stop3834"
+          stop-color="#fdffdc"
+          stop-opacity=".8"
+          offset="1"
+      />
+    </linearGradient
+    >
+    <linearGradient
+        id="linearGradient4706"
+        x1="237.28"
+        xlink:href="#linearGradient3845"
+        spreadMethod="reflect"
+        gradientUnits="userSpaceOnUse"
+        y1="532.97"
+        gradientTransform="matrix(0 1 -1 0 559.35 79.59)"
+        x2="237.28"
+        y2="105.9"
+    />
+    <linearGradient
+        id="linearGradient4709"
+        x1="175.67"
+        xlink:href="#linearGradient3845"
+        spreadMethod="reflect"
+        gradientUnits="userSpaceOnUse"
+        y1="319.44"
+        gradientTransform="matrix(0 1 -1 0 559.35 79.59)"
+        x2="298.9"
+        y2="319.44"
+    />
+    <linearGradient
+        id="linearGradient4713"
+        x1="35.581"
+        xlink:href="#linearGradient4533"
+        gradientUnits="userSpaceOnUse"
+        y1="383.75"
+        gradientTransform="translate(2.629 -2.566)"
+        x2="182.33"
+        y2="383.75"
+    />
+    <radialGradient
+        id="radialGradient4718"
+        xlink:href="#linearGradient4533"
+        gradientUnits="userSpaceOnUse"
+        cy="319.44"
+        cx="238.03"
+        gradientTransform="matrix(1 0 0 1.8479 2.629 -273.43)"
+        r="115.58"
+    />
+    <linearGradient
+        id="linearGradient4721"
+        x1="18.104"
+        xlink:href="#linearGradient3845"
+        gradientUnits="userSpaceOnUse"
+        y1="319.44"
+        gradientTransform="translate(2.629 -2.566)"
+        x2="456.46"
+        y2="319.44"
+    />
+    <linearGradient
+        id="linearGradient4724"
+        x1="240.53"
+        xlink:href="#linearGradient3845"
+        gradientUnits="userSpaceOnUse"
+        y1="221.99"
+        gradientTransform="translate(2.629 -2.566)"
+        x2="236.75"
+        y2="363.9"
+    />
+    <radialGradient
+        id="radialGradient4728"
+        xlink:href="#linearGradient4533"
+        gradientUnits="userSpaceOnUse"
+        cy="315.98"
+        cx="239"
+        gradientTransform="matrix(1.3872 0 0 1.187 -93.096 -61.665)"
+        r="211.06"
+    />
+    <linearGradient
+        id="linearGradient4731"
+        x1="20.329"
+        xlink:href="#linearGradient3845"
+        spreadMethod="reflect"
+        gradientUnits="userSpaceOnUse"
+        y1="319.44"
+        gradientTransform="translate(2.629 -2.566)"
+        x2="235.78"
+        y2="319.44"
+    />
+    <linearGradient
+        id="linearGradient4740"
+        x1="293.55"
+        xlink:href="#linearGradient4533"
+        gradientUnits="userSpaceOnUse"
+        x2="446.11"
+        y1="252.62"
+        y2="252.62"
+    />
+  </defs
+  >
+  <g
+      id="layer1"
+      transform="translate(-24.688 -100.73)"
+    >
+    <path
+        id="path4185"
+        style="color:#000000"
+        fill="#a1ea7f"
+        d="m239.91 107.8c-115.46 0-209.06 93.602-209.06 209.06s93.602 209.06 209.06 209.06 209.06-93.602 209.06-209.06-93.602-209.06-209.06-209.06zm0 133.06c41.967 0 76 34.033 76 76s-34.033 76-76 76-76-34.033-76-76 34.033-76 76-76z"
+    />
+    <path
+        id="path2996"
+        style="color:#000000"
+        fill="url(#linearGradient4731)"
+        d="m452.51 316.87c0-117.42-95.181-212.6-212.6-212.6s-212.6 95.181-212.6 212.6 95.181 212.6 212.6 212.6 212.6-95.181 212.6-212.6zm-186.04 0c0 14.677-11.886 26.563-26.563 26.563s-26.563-11.886-26.563-26.563 11.886-26.594 26.563-26.594 26.563 11.917 26.563 26.594z"
+    />
+    <path
+        id="path4782"
+        filter="url(#filter4549)"
+        style="color:#000000"
+        fill="url(#radialGradient4728)"
+        d="m48.816 238.18c-7.2062 17.969-11.999 37.092-14.031 56.844l129.63 12.25c0.86437-7.0028 2.6856-13.787 5.3231-20.156l-120.92-48.93z"
+    />
+    <path
+        id="path4780"
+        filter="url(#filter4549)"
+        style="color:#000000"
+        fill="url(#radialGradient4728)"
+        d="m314.2 329.03c-0.81604 5.1711-2.1688 10.18-3.9692 15l120.92 48.906c4.8911-12.667 8.5699-25.846 10.954-39.438l-127.9-24.47z"
+    />
+    <path
+        id="path4504"
+        filter="url(#filter4549)"
+        style="color:#000000"
+        fill="url(#radialGradient4728)"
+        d="m185.4 370.53-87.785 97.75c7.0288 6.7806 14.521 13.046 22.4 18.75l73.354-109.28c-2.8239-2.2046-5.4705-4.6264-7.9692-7.2188z"
+    />
+    <path
+        id="path4368"
+        filter="url(#filter4282)"
+        style="color:#000000"
+        fill="url(#linearGradient4740)"
+        d="m413.47 209.9-110.19 66.938c3.606 5.6927 6.461 11.907 8.4375 18.5l124.66-33.06c-5.1777-18.664-12.962-36.275-22.906-52.375z"
+    />
+    <path
+        id="path3014"
+        style="color:#000000"
+        fill="url(#linearGradient4724)"
+        d="m239.91 288.2c-15.831 0-28.668 12.837-28.668 28.668s12.837 28.668 28.668 28.668 28.668-12.837 28.668-28.668-12.837-28.668-28.668-28.668zm0 0.82161c15.378 0 27.846 12.469 27.846 27.846 0 15.378-12.469 27.846-27.846 27.846-15.378 0-27.846-12.469-27.846-27.846 0-15.378 12.469-27.846 27.846-27.846z"
+    />
+    <path
+        id="path3016"
+        style="color:#000000"
+        fill="url(#linearGradient4721)"
+        d="m239.91 247.72c-38.186 0-69.15 30.963-69.15 69.15 0 38.186 30.963 69.15 69.15 69.15 38.186 0 69.15-30.963 69.15-69.15 0-38.186-30.963-69.15-69.15-69.15zm0 1.9818c37.093 0 67.168 30.075 67.168 67.168s-30.075 67.168-67.168 67.168-67.168-30.075-67.168-67.168 30.075-67.168 67.168-67.168z"
+    />
+    <path
+        id="path4790"
+        filter="url(#filter4282)"
+        style="color:#000000"
+        fill="url(#radialGradient4718)"
+        d="m239.94 113.03c-19.84 0-38.992 2.8383-57.125 8.125l38.406 123.16c5.9864-1.5406 12.252-2.375 18.719-2.375 14.537 0 28.134 4.115 39.625 11.281l66.938-110.12c-31.007-19.053-67.502-30.062-106.56-30.062z"
+    />
+    <path
+        id="path4342"
+        filter="url(#filter4282)"
+        style="color:#000000"
+        fill="url(#radialGradient4718)"
+        d="m278.63 381.06c-11.294 6.8203-24.535 10.75-38.688 10.75-13.96 0-27.027-3.8193-38.219-10.469l-66.906 110.19c30.697 18.519 66.661 29.188 105.12 29.188 36.011 0 69.86-9.362 99.219-25.75l-60.52-113.91z"
+    />
+    <path
+        id="path4370"
+        filter="url(#filter4282)"
+        style="color:#000000"
+        fill="#a9c386"
+        d="m104.5 164.56c-9.3517 8.3246-17.938 17.506-25.625 27.406l103.59 76.875c2.9537-3.5308 6.2027-6.7842 9.75-9.7188l-87.71-94.56z"
+    />
+    <path
+        id="path4800"
+        filter="url(#filter4492)"
+        style="color:#000000"
+        fill="url(#radialGradient4668)"
+        d="m344.75 499.72c11.895-6.6058 23.168-14.373 33.688-23.312l-84.59-101.6c-3.9312 3.4601-8.1775 6.4782-12.656 9.0312l63.562 115.88z"
+    />
+    <path
+        id="path4798"
+        filter="url(#filter4492)"
+        style="color:#000000"
+        fill="url(#radialGradient4668)"
+        d="m41.16 371.12 127.03-36.84c-0.80821-3.526-1.3496-7.104-1.6562-10.719l-130.97 18.625c1.1883 9.7737 3.0543 19.444 5.5938 28.938z"
+    />
+    <path
+        id="path4796"
+        filter="url(#filter4492)"
+        style="color:#000000"
+        fill="url(#radialGradient4668)"
+        d="m318.75 303.93 131.38-15.156c-1.7504-12.732-4.6513-25.283-8.6875-37.469l-126.38 39c1.6455 4.4243 2.8749 8.9755 3.6875 13.625z"
+    />
+    <path
+        id="path4366"
+        filter="url(#filter4282)"
+        style="color:#000000"
+        fill="url(#linearGradient4713)"
+        d="m168.94 340.84-121 44.562c4.526 12.681 10.268 24.745 17.094 36.125l110.19-66.9c-2.5379-4.3405-4.6481-8.9417-6.2812-13.781z"
+    />
+    <path
+        id="path3841"
+        style="color:#000000"
+        fill="url(#linearGradient4709)"
+        d="m239.91 378.49c34.025 0 61.614-27.589 61.614-61.614s-27.589-61.614-61.614-61.614-61.614 27.589-61.614 61.614 27.589 61.614 61.614 61.614zm0-1.7658c-33.05 0-59.848-26.798-59.848-59.848s26.798-59.848 59.848-59.848 59.848 26.798 59.848 59.848-26.798 59.848-59.848 59.848z"
+    />
+    <path
+        id="path3843"
+        style="color:#000000"
+        fill="url(#linearGradient4706)"
+        d="m179.59 316.87c0 33.311 27.01 60.321 60.321 60.321s60.321-27.01 60.321-60.321-27.01-60.321-60.321-60.321-60.321 27.01-60.321 60.321zm1.7288 0c0-32.357 26.236-58.592 58.592-58.592 32.357 0 58.592 26.236 58.592 58.592 0 32.357-26.236 58.592-58.592 58.592-32.357 0-58.592-26.236-58.592-58.592z"
+    />
+    <path
+        id="path4320"
+        filter="url(#filter4282)"
+        style="color:#000000"
+        fill="url(#linearGradient4703)"
+        d="m237.69 113.03c-38.464 0-74.428 10.669-105.12 29.188l66.906 110.19c11.192-6.6494 24.259-10.469 38.219-10.469 14.153 0 27.394 3.9297 38.688 10.75l60.531-113.91c-29.359-16.388-63.208-25.75-99.219-25.75zm39.625 267.5c-11.491 7.1662-25.088 11.281-39.625 11.281-6.4667 0-12.732-0.8344-18.719-2.375l-38.406 123.16c18.133 5.2867 37.285 8.125 57.125 8.125 39.061 0 75.556-11.009 106.56-30.062l-66.938-110.12z"
+    />
+    <path
+        id="path4808"
+        style="color:#000000"
+        d="m376.44 167.75-85.875 96.25c2.4944 2.4951 4.7804 5.1718 6.9062 8l98.594-83.219c-6.0447-7.4611-12.609-14.502-19.625-21.031z"
+        fill-opacity=".97401"
+        filter="url(#filter4282)"
+        fill="#97bd84"
+    />
+    <path
+        id="path4806"
+        style="color:#000000"
+        d="m58.941 218.72c-6.4078 11.62-11.688 23.882-15.75 36.719l122.53 40.156c1.4563-4.8957 3.4026-9.5702 5.7812-14l-112.56-62.875z"
+        fill-opacity=".97401"
+        filter="url(#filter4282)"
+        fill="#97bd84"
+    />
+    <path
+        id="path4804"
+        style="color:#000000"
+        d="m310.07 335.87c-1.7357 6.6608-4.3844 12.961-7.7812 18.781l112.56 62.906c9.353-16.45 16.503-34.348 21-53.188l-125.78-28.5z"
+        fill-opacity=".97401"
+        filter="url(#filter4282)"
+        fill="#97bd84"
+    />
+    <path
+        id="path4443"
+        style="color:#000000"
+        d="m181.85 367.03-100.72 80.59c8.0418 9.6148 16.946 18.489 26.594 26.469l84.219-97.688c-3.6516-2.8038-7.0138-5.9538-10.094-9.375z"
+        fill-opacity=".97401"
+        filter="url(#filter4282)"
+        fill="#97bd84"
+    />
+    <path
+        id="path3018"
+        style="color:#000000"
+        fill="#333"
+        d="m239.91 109.59c-114.47 0-207.28 92.814-207.28 207.28s92.814 207.28 207.28 207.28 207.28-92.814 207.28-207.28-92.814-207.28-207.28-207.28zm0 1.4062c113.69 0 205.88 92.188 205.88 205.88s-92.188 205.88-205.88 205.88-205.88-92.188-205.88-205.88 92.188-205.88 205.88-205.88z"
+    />
+    <path
+        id="path4776"
+        filter="url(#filter4360)"
+        style="color:#000000"
+        fill="url(#radialGradient4698)"
+        d="m391.1 180.59c-8.3246-9.3516-17.506-17.938-27.406-25.625l-76.875 103.59c3.5308 2.9537 6.7842 6.2027 9.7188 9.75l94.562-87.719z"
+    />
+    <path
+        id="path4774"
+        filter="url(#filter4360)"
+        style="color:#000000"
+        fill="url(#radialGradient4698)"
+        d="m345.76 489.56-66.938-110.19c-5.6927 3.606-11.907 6.461-18.5 8.4375l33.062 124.66c18.664-5.1777 36.275-12.962 52.375-22.906z"
+    />
+    <path
+        id="path4358"
+        filter="url(#filter4360)"
+        style="color:#000000"
+        fill="url(#radialGradient4698)"
+        d="m196.04 377.56c-2.9036-2.0218-5.6659-4.2229-8.25-6.625l-93.063 89.312c6.7802 6.7744 14.043 13.074 21.719 18.844l79.594-101.53z"
+    />
+    <path
+        id="path3005"
+        style="color:#000000"
+        fill="#4d4d4d"
+        d="m239.91 240.87c-41.967 0-76 34.033-76 76s34.033 76 76 76 76-34.033 76-76-34.033-76-76-76zm0 5.8887c38.715 0 70.111 31.396 70.111 70.111s-31.396 70.111-70.111 70.111-70.111-31.396-70.111-70.111 31.396-70.111 70.111-70.111z"
+    />
+  </g
+  >
+  <metadata
+    >
+    <rdf:RDF
+      >
+      <cc:Work
+        >
+        <dc:format
+          >image/svg+xml</dc:format
+        >
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"
+        />
+        <cc:license
+            rdf:resource="http://creativecommons.org/licenses/publicdomain/"
+        />
+        <dc:publisher
+          >
+          <cc:Agent
+              rdf:about="http://openclipart.org/"
+            >
+            <dc:title
+              >Openclipart</dc:title
+            >
+          </cc:Agent
+          >
+        </dc:publisher
+        >
+        <dc:title
+          >CD-DVD, Compact disc</dc:title
+        >
+        <dc:date
+          >2013-06-14T15:31:08</dc:date
+        >
+        <dc:description
+          >CD-DVD, Compact disc</dc:description
+        >
+        <dc:source
+          >https://openclipart.org/detail/179327/cd-dvd-compact-disc-by-keistutis-179327</dc:source
+        >
+        <dc:creator
+          >
+          <cc:Agent
+            >
+            <dc:title
+              >Keistutis</dc:title
+            >
+          </cc:Agent
+          >
+        </dc:creator
+        >
+        <dc:subject
+          >
+          <rdf:Bag
+            >
+            <rdf:li
+              >CD-DVD</rdf:li
+            >
+            <rdf:li
+              >Compact disc</rdf:li
+            >
+          </rdf:Bag
+          >
+        </dc:subject
+        >
+      </cc:Work
+      >
+      <cc:License
+          rdf:about="http://creativecommons.org/licenses/publicdomain/"
+        >
+        <cc:permits
+            rdf:resource="http://creativecommons.org/ns#Reproduction"
+        />
+        <cc:permits
+            rdf:resource="http://creativecommons.org/ns#Distribution"
+        />
+        <cc:permits
+            rdf:resource="http://creativecommons.org/ns#DerivativeWorks"
+        />
+      </cc:License
+      >
+    </rdf:RDF
+    >
+  </metadata
+  >
+</svg
+>
diff --git a/images/presets/musical_instrument.png b/images/presets/shop/musical_instrument.png
similarity index 100%
rename from images/presets/musical_instrument.png
rename to images/presets/shop/musical_instrument.png
diff --git a/images/presets/shop/news.svg b/images/presets/shop/news.svg
new file mode 100644
index 0000000..dbe6f44
--- /dev/null
+++ b/images/presets/shop/news.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="m 1,1 0,13 12,0 0,-13 z m 1,1 10,0 0,11 -10,0 z m 1,1 0,2 8,0 0,-2 z M 3,6 3,6.5 6,6.5 6,6 z m 5,4 0,0.5 3,0 0,-0.5 z M 3,7 3,7.5 6,7.5 6,7 z m 5,4 0,0.5 3,0 0,-0.5 z M 3,8 3,8.5 6,8.5 6,8 z M 3,9 3,9.5 6,9.5 6,9 z m 5,-3 0,3 3,0 0,-3 z m -5,4 0,0.5 3,0 0,-0.5 z m 0,1 0,0.5 3,0 0,-0.5 z" id="news" style="fill:#ac39ac;fill-opacity:1" transform="translate(1,1)"/>
+</svg>
diff --git a/images/presets/shop/optician.svg b/images/presets/shop/optician.svg
new file mode 100644
index 0000000..34313e6
--- /dev/null
+++ b/images/presets/shop/optician.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/>
+  <path d="M 5,3 0,6 c 0,2 0.25,5 1.25,5 L 5,11 C 6,11 6.25,7.5 6.25,7.5 6.76702,7.25 7.23298,7.25 7.75,7.5 7.75,7.5 8,11 9,11 l 3.75,0 C 13.75,11 14,8 14,6 L 9,3 C 8.521411,2.7236864 8.12726,3.746123 9,4.25 L 12,6 2,6 5,4.25 C 5.922502,3.7173932 5.364967,2.789286 5,3 z m -3.75,4.25 3.75,0 -0.5,2.5 -2.75,0 z m 7.75,0 3.75,0 -0.5,2.5 -2.75,0 z" id="optician" style="fill:#800080;fill-opacity:1;stroke:none" transform="translate(1,1)"/>
+</svg>
\ No newline at end of file
diff --git a/images/presets/shop/outdoor.svg b/images/presets/shop/outdoor.svg
new file mode 100644
index 0000000..deec3eb
--- /dev/null
+++ b/images/presets/shop/outdoor.svg
@@ -0,0 +1,598 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   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"
+   height="220"
+   id="Layer_1"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="outdoor.svg"
+   sodipodi:version="0.32"
+   style="overflow:visible;enable-background:new 0 0 218.184 265.487;"
+   version="1.0"
+   viewBox="0 0 218.184 265.487"
+   width="220"
+   xml:space="preserve"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
+   id="metadata3016"><rdf:RDF><cc:Work
+       rdf:about=""><dc:title>Camicia in seta</dc:title><dc:description /><dc:subject><rdf:Bag><rdf:li>clothing</rdf:li></rdf:Bag></dc:subject><dc:publisher><cc:Agent
+           rdf:about="http://www.openclipart.org"><dc:title>Architetto Francesco Rollandin</dc:title></cc:Agent></dc:publisher><dc:creator><cc:Agent><dc:title>Architetto Francesco Rollandin</dc:title></cc:Agent></dc:creator><dc:rights><cc:Agent><dc:title>Architetto Francesco Rollandin</dc:title></cc:Agent></dc:rights><dc:date /><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license
+         rdf:resource="http://web.resource.org/cc/PublicDomain" /><dc:language>en</dc:language></cc:Work><cc:License
+       rdf:about="http://web.resource.org/cc/PublicDomain"><cc:permits
+         rdf:resource="http://web.resource.org/cc/Reproduction" /><cc:permits
+         rdf:resource="http://web.resource.org/cc/Distribution" /><cc:permits
+         rdf:resource="http://web.resource.org/cc/DerivativeWorks" /></cc:License></rdf:RDF></metadata>
+<defs
+   id="defs205" />
+<sodipodi:namedview
+   bordercolor="#666666"
+   borderopacity="1.0"
+   id="base"
+   inkscape:current-layer="Layer_1"
+   inkscape:cx="109.092"
+   inkscape:cy="147.49754"
+   inkscape:pageopacity="0.0"
+   inkscape:pageshadow="2"
+   inkscape:window-height="707"
+   inkscape:window-width="964"
+   inkscape:window-x="110"
+   inkscape:window-y="110"
+   inkscape:zoom="1.3635319"
+   pagecolor="#ffffff"
+   height="220px"
+   width="220px" />
+
+<g
+   id="XMLID_1_"
+   transform="translate(25.477769,-0.2488009)">
+	<g
+   id="g4">
+		<path
+   d="M 213.122,217.444 C 206.722,218.334 199.922,220.843 193.152,222.194 C 187.752,223.263 182.362,223.603 177.212,221.803 C 183.492,221.683 189.702,221.063 195.862,219.783 C 197.551,219.432 201.101,218.262 204.561,217.423 C 208.352,216.523 212.032,216.023 213.122,217.444 z "
+   id="path6"
+   style="fill:#047391" />
+
+		<path
+   d="M 195.342,209.983 C 195.562,212.444 194.552,212.093 192.932,212.624 C 193.602,211.673 194.552,210.853 195.342,209.983 z "
+   id="path8" />
+
+		<path
+   d="M 191.432,147.793 C 193.073,152.493 195.252,157.673 196.372,162.263 C 187.222,163.743 178.271,166.253 169.302,168.563 C 169.113,168.614 168.922,168.664 168.732,168.713 C 163.762,170.063 161.703,171.433 159.543,166.393 C 158.183,163.213 156.613,159.873 155.933,156.463 C 155.093,152.253 162.103,151.963 165.853,151.013 C 169.143,150.183 172.483,149.433 175.813,148.713 C 177.244,148.403 178.664,148.103 180.084,147.803 C 183.392,147.114 190.172,144.213 191.432,147.793 z M 175.032,156.98 [...]
+   id="path10"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 182.032,143.603 C 184.521,143.034 186.992,142.574 189.372,142.303 C 184.712,143.404 180.082,145.513 175.332,146.503 C 173.412,146.893 171.481,147.113 169.521,147.003 C 173.622,145.824 177.862,144.563 182.032,143.603 z "
+   id="path12"
+   style="fill:#047391" />
+
+		<path
+   d="M 179.742,156.063 C 180.552,153.074 181.891,153.954 181.572,156.293 C 180.962,156.223 180.352,156.143 179.742,156.063 z "
+   id="path14"
+   style="fill:#8c8c8c" />
+
+		<path
+   d="M 181.572,156.293 C 181.891,153.953 180.551,153.073 179.742,156.063 C 180.352,156.143 180.962,156.223 181.572,156.293 z M 184.322,155.494 C 184.481,163.384 177.622,155.874 175.032,156.983 C 175.892,152.423 183.472,149.843 184.322,155.494 z "
+   id="path16" />
+
+		<path
+   d="M 171.252,206.543 C 171.852,207.933 176.712,217.173 173.542,216.583 C 171.792,216.253 170.042,211.903 168.592,207.203 C 167.142,202.493 165.992,197.423 165.482,195.633 C 163.342,188.253 160.982,180.773 158.172,173.613 C 163.252,175.693 161.892,183.783 165.172,187.613 L 165.782,187.493 C 167.042,194.013 168.602,200.423 171.252,206.543 z "
+   id="path18"
+   style="fill:#047391" />
+
+		<path
+   d="M 165.172,187.614 C 168.452,178.853 157.062,173.853 169.262,170.704 C 169.722,170.584 170.222,170.464 170.762,170.353 C 179.403,168.503 187.812,166.624 196.602,165.473 C 202.323,180.483 208.722,195.404 212.033,211.183 C 212.823,214.983 208.803,214.654 205.432,215.494 C 205.012,215.594 204.592,215.704 204.172,215.804 C 201.312,216.504 198.432,217.184 195.572,217.905 C 193.242,218.484 190.822,216.634 187.771,217.724 C 184.872,218.764 181.761,219.674 179.391,217.094 C 180.331,216.564  [...]
+   id="path20"
+   style="fill:#047391" />
+
+		<path
+   d="M 165.402,85.053 C 166.082,85.933 165.561,86.393 165.511,87.463 C 165.472,86.664 165.432,85.854 165.402,85.053 z "
+   id="path22"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 165.402,109.723 C 165.402,109.873 166.032,110.873 165.511,111.903 C 164.812,111.343 165.282,110.753 165.402,109.723 z "
+   id="path24"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 153.922,149.983 C 157.752,149.183 161.572,148.383 165.402,147.574 C 162.012,149.973 157.962,150.393 153.922,149.983 z "
+   id="path26"
+   style="fill:#047391" />
+
+		<path
+   d="M 183.412,227.423 C 178.512,229.053 161.252,228.603 159.182,233.603 L 158.743,233.523 C 159.113,232.574 159.352,231.303 157.823,232.063 C 156.903,232.523 156.533,230.483 156.682,229.834 C 157.162,227.733 165.382,225.294 168.102,224.134 C 175.852,220.813 176.902,228.364 183.412,227.423 z "
+   id="path28"
+   style="fill:#047391" />
+
+		<path
+   d="M 159.092,233.843 C 164.852,233.433 170.653,232.963 176.352,231.973 C 180.382,231.284 189.732,230.753 192.123,227.763 C 190.083,227.293 187.933,227.483 185.812,227.303 C 187.333,225.824 190.243,224.763 193.533,223.953 C 198.343,222.753 203.972,222.093 207.272,221.453 C 209.672,220.993 213.903,219.312 212.772,223.232 C 212.302,224.882 211.243,226.462 210.022,227.193 C 205.123,226.823 199.732,225.272 194.993,227.302 C 192.043,228.573 193.113,229.432 188.913,230.632 C 179.232,233.403  [...]
+   id="path30"
+   style="fill:#047391" />
+
+		<path
+   d="M 152.092,154.694 C 154.822,159.733 156.602,165.223 158.742,170.523 C 154.872,170.324 152.802,158.343 152.092,154.694 z "
+   id="path32"
+   style="fill:#047391" />
+
+		<path
+   d="M 153.922,149.983 C 157.962,150.393 162.012,149.973 165.402,147.574 C 161.572,148.383 157.752,149.183 153.922,149.983 z M 158.742,170.523 C 156.601,165.223 154.822,159.733 152.092,154.694 C 152.802,158.343 154.872,170.324 158.742,170.523 z M 166.842,207.763 C 161.742,191.654 155.232,175.853 150.022,159.743 C 149.073,156.793 145.642,149.753 147.732,147.343 C 148.323,146.663 156.382,146.194 157.672,145.864 C 165.542,143.904 173.582,142.914 181.462,141.124 L 182.032,143.603 C 177.862, [...]
+   id="path34" />
+
+		<path
+   d="M 136.942,42.033 C 140.202,42.703 156.511,41.453 156.332,44.213 C 154.742,44.333 153.142,44.433 151.542,44.493 C 146.552,44.693 141.542,44.573 136.602,43.873 C 136.712,43.253 136.832,42.644 136.942,42.033 z "
+   id="path36"
+   style="fill:#047391" />
+
+		<path
+   d="M 155.872,35.383 C 157.662,42.033 149.832,39.793 146.242,39.393 C 143.212,39.053 139.802,39.943 136.752,40.203 C 136.742,40.203 136.731,40.203 136.722,40.203 C 135.943,36.393 138.922,30.953 134.882,28.383 C 137.732,27.733 140.792,28.053 143.732,28.613 C 144.802,28.823 145.852,29.063 146.873,29.303 C 152.612,30.653 153.342,30.144 155.872,35.383 z "
+   id="path38"
+   style="fill:#047391" />
+
+		<path
+   d="M 153.122,236.023 C 153.452,238.643 152.561,241.843 152.092,243.944 C 151.802,241.244 152.472,238.633 153.122,236.023 z "
+   id="path40"
+   style="fill:#047391" />
+
+		<path
+   d="M 153.122,231.433 C 152.622,232.643 153.242,233.683 151.512,233.043 C 151.522,232.053 151.852,230.913 152.092,229.943 C 153.222,230.124 152.922,230.694 153.122,231.433 z "
+   id="path42"
+   style="fill:#047391" />
+
+		<path
+   d="M 150.481,232.813 C 149.591,234.523 148.011,235.263 146.122,234.654 C 146.782,232.454 148.562,231.194 150.481,232.813 z "
+   id="path44"
+   style="fill:#047391" />
+
+		<path
+   d="M 149.912,235.914 C 151.141,242.864 146.632,245.554 141.092,246.744 C 138.863,247.214 136.462,247.444 134.193,247.614 C 134.222,246.954 134.293,246.334 134.392,245.754 C 135.742,237.923 143.082,237.824 149.912,235.914 z "
+   id="path46"
+   style="fill:#047391" />
+
+		<path
+   d="M 165.512,111.903 C 166.033,110.873 165.403,109.873 165.403,109.723 C 165.282,110.753 164.812,111.343 165.512,111.903 z M 165.512,87.463 C 165.562,86.393 166.082,85.933 165.403,85.053 C 165.432,85.854 165.472,86.664 165.512,87.463 z M 156.332,44.213 C 156.512,41.453 140.202,42.703 136.942,42.033 L 136.752,40.203 C 139.802,39.943 143.212,39.053 146.242,39.393 C 149.832,39.793 157.662,42.033 155.872,35.383 C 153.342,30.143 152.612,30.653 146.872,29.303 C 145.851,29.063 144.802,28.823 [...]
+   id="path48" />
+
+		<path
+   d="M 147.842,73.693 C 148.242,76.813 148.653,79.923 148.653,83.073 C 148.653,85.523 149.392,87.853 149.453,89.183 C 149.562,91.733 149.713,94.133 147.503,95.843 C 143.213,82.223 146.563,67.723 142.913,54.083 L 144.583,53.303 C 146.992,58.473 147.552,71.414 147.842,73.693 z "
+   id="path50" />
+
+		<path
+   d="M 137.172,235.454 C 138.082,234.983 137.932,234.174 139.242,234.764 C 138.712,234.973 137.662,235.204 137.172,235.454 z "
+   id="path52"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 136.492,58.783 C 136.952,60.093 136.851,61.563 136.262,62.913 C 135.422,61.403 135.392,59.923 136.492,58.783 z "
+   id="path54" />
+
+		<path
+   d="M 136.262,62.914 C 136.852,61.564 136.952,60.094 136.492,58.784 C 135.392,59.923 135.422,61.403 136.262,62.914 z M 137.632,52.593 C 138.642,51.123 138.992,49.333 139.122,47.543 C 138.932,49.873 138.742,52.203 138.552,54.543 C 138.382,54.153 138.242,53.563 138.092,53.163 C 136.322,55.183 138.842,57.773 138.613,60.333 C 138.243,64.403 136.333,69.273 140.392,72.203 C 142.372,69.163 141.413,65.403 141.422,61.993 C 141.762,63.813 141.862,65.633 142.682,67.273 C 143.653,62.923 143.653,58 [...]
+   id="path56"
+   style="fill:#047391" />
+
+		<path
+   d="M 133.622,240.614 C 133.342,242.154 133.262,243.924 132.811,245.454 C 132.471,246.634 131.912,247.664 130.862,248.304 C 130.692,247.964 130.412,246.844 130.561,246.054 C 130.662,245.564 130.912,245.204 131.442,245.204 C 133.322,245.204 132.872,241.933 133.622,240.614 z "
+   id="path58"
+   style="fill:#047391" />
+
+		<path
+   d="M 129.432,173.733 C 129.443,173.664 129.432,173.574 129.392,173.483 L 132.163,172.584 C 137.193,188.194 142.093,203.834 146.703,219.504 C 148.653,226.144 150.043,228.204 143.312,226.274 C 139.882,225.295 137.542,234.344 136.232,229.195 C 134.422,222.104 132.182,215.155 129.852,208.224 C 126.443,198.054 122.863,187.945 120.203,177.524 C 125.062,179.463 128.302,180.543 129.432,173.733 z "
+   id="path60"
+   style="fill:#047391" />
+
+		<path
+   d="M 128.892,162.543 C 129.993,165.883 131.073,169.232 132.163,172.583 L 129.392,173.482 C 128.913,172.272 124.693,169.302 122.953,169.833 C 121.073,170.403 120.553,173.562 118.932,174.653 C 112.212,156.873 105.962,138.873 100.252,120.733 L 102.072,120.163 C 102.382,121.043 108.052,123.593 109.072,122.743 C 111.132,121.023 112.702,118.753 113.662,116.263 C 118.722,131.664 123.862,147.083 128.892,162.543 z "
+   id="path62"
+   style="fill:#047391" />
+
+		<path
+   d="M 129.262,244.404 C 129.172,244.853 129.082,245.303 128.982,245.763 C 128.663,247.114 128.222,248.444 127.422,249.563 C 127.182,248.353 127.282,247.143 127.772,246.124 C 128.102,245.454 128.592,244.864 129.262,244.404 z "
+   id="path64"
+   style="fill:#047391" />
+
+		<path
+   d="M 123.642,173.614 C 125.663,172.284 126.372,174.924 126.283,175.914 C 124.302,177.793 121.442,175.074 123.642,173.614 z "
+   id="path66"
+   style="fill:#8c8c8c" />
+
+		<path
+   d="M 127.312,76.684 C 127.732,74.764 127.892,72.804 127.892,70.824 L 129.142,70.824 C 129.142,74.424 129.142,78.014 129.142,81.614 C 120.982,71.894 110.653,62.844 100.122,55.804 C 105.152,51.113 123.062,73.184 127.312,76.684 z "
+   id="path68" />
+
+		<path
+   d="M 115.082,3.684 C 115.712,3.804 116.352,3.944 116.981,4.064 C 116.692,4.043 115.662,3.813 115.082,3.684 z "
+   id="path70"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 114.832,3.633 C 114.912,3.643 115.002,3.663 115.082,3.683 C 114.981,3.664 114.902,3.644 114.832,3.633 z "
+   id="path72"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 110.332,92.164 C 117.872,116.394 125.242,140.674 133.162,164.784 C 137.132,176.874 141.262,188.904 145.432,200.924 C 146.323,203.474 147.453,206.364 148.512,209.394 C 150.382,214.705 152.042,220.415 151.863,225.354 C 149.213,223.174 148.392,215.995 147.272,212.734 C 145.073,206.304 142.422,200.014 140.272,193.575 C 136.793,183.125 133.132,172.745 129.732,162.274 C 128.592,158.785 127.493,155.285 126.432,151.764 C 122.432,138.514 119.703,124.694 115.033,111.674 C 110.613,99.304 10 [...]
+   id="path74"
+   style="fill:#047391" />
+
+		<path
+   d="M 106.662,117.293 C 106.902,114.063 110.061,116.903 109.992,118.663 C 108.622,120.253 106.472,119.843 106.662,117.293 z "
+   id="path76"
+   style="fill:#8c8c8c" />
+
+		<path
+   d="M 104.942,237.173 C 105.471,235.413 106.011,233.653 106.542,231.893 C 106.192,233.803 106.092,236.124 104.942,237.173 z "
+   id="path78"
+   style="fill:#047391" />
+
+		<path
+   d="M 106.542,3.263 C 105.652,3.413 104.762,3.553 103.872,3.693 C 104.762,3.483 105.662,3.323 106.542,3.263 z "
+   id="path80"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 100.252,120.733 C 98.762,115.993 97.302,111.253 95.892,106.493 C 94.132,100.583 92.372,94.663 90.712,88.723 C 89.682,85.023 86.982,80.143 88.762,76.333 C 90.422,72.793 96.972,71.433 100.582,73.123 C 103.442,87.383 109.282,100.843 112.622,114.993 C 110.692,113.693 107.762,111.553 105.632,113.333 C 103.872,114.793 101.252,117.813 102.072,120.163 L 100.252,120.733 z "
+   id="path82"
+   style="fill:#047391" />
+
+		<path
+   d="M 100.122,55.803 C 110.652,62.843 120.981,71.893 129.142,81.613 C 129.142,78.013 129.142,74.423 129.142,70.823 C 129.153,56.093 129.283,41.383 130.182,26.663 C 133.022,39.653 129.982,54.633 130.443,67.903 C 130.552,71.263 130.583,74.643 130.812,78.003 C 131.092,82.013 132.403,85.713 127.913,82.223 C 121.883,77.533 116.723,71.863 111.133,66.703 C 108.643,64.393 105.673,60.923 102.643,59.353 C 101.583,58.803 100.163,61.123 98.973,59.703 C 96.333,56.533 103.053,48.613 104.483,45.933 C [...]
+   id="path84"
+   style="fill:#047391" />
+
+		<path
+   d="M 52.742,13.813 C 69.572,9.283 86.652,6.523 103.832,3.703 C 101.152,4.353 98.492,5.543 96.332,6.583 C 98.662,6.663 105.372,9.443 104.932,12.173 C 103.502,20.953 98.062,23.743 90.322,24.953 C 89.522,25.073 88.692,25.183 87.842,25.283 C 84.192,25.703 80.532,25.843 76.892,26.433 C 75.032,26.733 73.452,27.233 71.672,27.843 C 70.242,28.333 70.962,26.473 69.952,26.203 C 63.672,24.513 58.282,18.513 52.742,13.813 z "
+   id="path86"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 98.512,64.523 C 100.042,65.133 101.632,66.503 102.072,67.503 C 100.962,68.333 99.292,68.963 98.052,69.453 C 98.212,67.813 98.362,66.164 98.512,64.523 z "
+   id="path88"
+   style="fill:#047391" />
+
+		<path
+   d="M 96.562,240.733 C 97.482,239.694 99.092,239.103 100.692,239.124 C 99.342,239.694 97.942,240.244 96.562,240.733 z "
+   id="path90"
+   style="fill:#047391" />
+
+		<path
+   d="M 90.372,31.763 C 97.732,31.403 98.282,37.363 100.122,43.523 C 97.752,44.643 92.252,46.653 87.392,47.593 C 84.272,48.193 81.412,48.353 79.812,47.543 C 76.382,45.813 75.542,38.053 73.852,34.923 C 77.652,34.103 81.342,33.053 85.132,32.383 C 86.852,32.083 88.592,31.854 90.372,31.763 z "
+   id="path92"
+   style="fill:#022d38" />
+
+		<path
+   d="M 98.402,47.193 C 97.782,51.333 94.192,54.063 93.702,58.323 C 90.212,57.283 87.252,55.033 84.462,52.693 C 83.592,51.973 82.732,51.233 81.882,50.523 C 83.792,49.833 85.722,49.363 87.662,48.993 C 91.212,48.313 94.812,47.954 98.402,47.193 z "
+   id="path94"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 94.612,63.833 C 94.812,64.073 95.982,65.883 95.992,65.893 C 94.282,68.963 90.302,66.283 94.612,63.833 z "
+   id="path96"
+   style="fill:#8c8c8c" />
+
+		<path
+   d="M 90.662,27.083 C 93.322,26.663 96.012,26.343 98.742,26.143 C 103.522,25.793 105.323,25.693 104.592,30.793 C 104.232,33.363 102.432,36.543 101.842,38.703 C 100.492,35.833 99.142,32.953 97.792,30.073 C 96.152,26.573 94.572,28.313 91.062,28.953 C 89.062,29.323 86.922,29.783 84.752,30.163 C 81.342,30.763 77.852,31.133 74.652,30.563 C 80.002,29.153 85.282,27.923 90.662,27.083 z "
+   id="path98"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 82.452,244.513 C 85.472,241.673 90.082,242.483 93.812,241.534 C 90.082,242.833 86.432,244.233 82.452,244.513 z "
+   id="path100"
+   style="fill:#047391" />
+
+		<path
+   d="M 104.702,147.253 C 100.372,133.493 96.122,119.713 91.752,105.963 C 89.972,100.333 88.522,94.503 86.582,88.953 C 85.812,86.723 84.222,84.543 84.862,82.183 C 96.352,115.113 105.872,149.482 118.362,181.653 C 119.622,184.963 124.462,197.253 128.322,208.732 C 131.942,219.522 134.702,229.613 132.811,230.863 C 130.152,223.543 127.551,216.213 125.001,208.863 C 117.902,188.444 111.192,167.893 104.702,147.253 z "
+   id="path102"
+   style="fill:#047391" />
+
+		<path
+   d="M 107.002,229.253 C 103.902,219.153 99.632,209.343 96.232,199.303 C 94.442,194.043 92.892,188.713 91.862,183.253 C 96.852,198.624 103.162,213.914 107.002,229.253 z "
+   id="path104"
+   style="fill:#047391" />
+
+		<path
+   d="M 86.012,166.733 C 87.502,171.254 88.992,175.763 90.482,180.273 C 87.252,176.553 87.092,171.324 86.012,166.733 z "
+   id="path106"
+   style="fill:#047391" />
+
+		<path
+   d="M 51.712,172.704 C 58.742,170.654 65.722,170.103 72.932,168.804 C 75.152,168.405 81.252,166.115 83.262,167.534 C 84.702,168.563 87.582,179.773 87.502,181.654 C 79.772,184.053 71.602,184.183 63.842,186.444 C 59.422,187.733 55.472,188.593 52.852,183.834 C 51.802,184.954 52.992,192.264 49.762,186.354 C 45.272,195.945 41.692,180.224 40.812,175.684 C 44.462,175.003 48.152,173.733 51.712,172.704 z M 61.462,178.893 C 61.272,170.813 47.442,175.473 51.552,180.784 C 51.252,180.103 56.682,181 [...]
+   id="path108"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 72.592,31.593 C 70.322,31.273 67.942,31.883 65.932,32.973 C 66.622,34.183 67.522,35.603 68.462,36.643 C 69.702,35.843 68.892,36.103 70.522,35.723 C 70.962,34.613 70.692,33.853 70.182,32.973 C 71.012,32.583 71.792,32.053 72.592,31.593 z M 52.742,13.813 C 58.282,18.513 63.672,24.513 69.952,26.203 C 70.962,26.473 70.242,28.333 71.672,27.843 C 73.452,27.233 75.032,26.733 76.892,26.433 C 80.532,25.843 84.192,25.703 87.842,25.283 C 88.692,25.183 89.522,25.073 90.322,24.953 L 90.662,27. [...]
+   id="path110" />
+
+		<path
+   d="M 75.112,246.353 C 76.872,245.063 78.952,243.423 80.392,244.864 C 79.082,246.263 77.172,246.293 75.112,246.353 z "
+   id="path112"
+   style="fill:#047391" />
+
+		<path
+   d="M 81.192,163.983 C 74.632,166.553 67.312,167.574 60.312,167.883 C 67.162,165.914 74.312,165.694 81.192,163.983 z "
+   id="path114"
+   style="fill:#047391" />
+
+		<path
+   d="M 74.422,229.713 C 72.982,229.843 72.722,228.113 72.472,226.163 C 72.752,227.704 73.482,228.523 74.422,229.713 z "
+   id="path116" />
+
+		<path
+   d="M 106.662,117.293 C 106.472,119.843 108.622,120.253 109.992,118.663 C 110.062,116.903 106.902,114.063 106.662,117.293 z M 116.981,4.063 C 116.351,3.943 115.711,3.803 115.082,3.683 C 115.002,3.663 114.912,3.643 114.832,3.633 C 114.902,3.643 114.981,3.663 115.082,3.683 C 115.662,3.813 116.692,4.043 116.981,4.063 z M 127.652,27.003 C 127.631,19.133 121.271,12.183 118.131,5.323 C 119.581,10.363 120.301,11.503 117.801,15.993 C 116.072,19.103 114.471,22.273 113.072,25.543 C 110.181,32.29 [...]
+   id="path118" />
+
+		<path
+   d="M 62.612,224.893 C 63.392,226.103 64.372,227.284 65.022,228.574 C 64.102,223.634 60.572,218.803 59.392,213.654 C 58.992,214.744 58.812,216.164 58.712,217.324 C 59.392,217.324 60.332,224.114 60.882,226.733 C 61.322,225.763 61.982,225.704 62.612,224.893 z M 56.872,196.444 C 61.142,192.063 51.862,191.133 61.892,188.624 C 70.812,186.394 80.162,185.624 89.222,184.054 C 91.022,189.325 92.832,194.584 94.642,199.844 C 97.562,208.354 100.482,216.844 103.392,225.354 C 104.422,228.375 103.132 [...]
+   id="path120"
+   style="fill:#047391" />
+
+		<path
+   d="M 146.122,234.654 C 148.012,235.263 149.592,234.523 150.481,232.813 C 148.562,231.194 146.782,232.454 146.122,234.654 z M 151.512,233.043 C 153.242,233.683 152.622,232.643 153.122,231.433 C 152.922,230.694 153.222,230.123 152.092,229.944 C 151.852,230.914 151.521,232.053 151.512,233.043 z M 152.092,243.944 C 152.562,241.843 153.452,238.643 153.122,236.023 C 152.472,238.633 151.802,241.244 152.092,243.944 z M 106.542,231.893 C 106.012,233.654 105.472,235.414 104.942,237.173 C 106.09 [...]
+   id="path122" />
+
+		<path
+   d="M 65.192,247.093 C 67.692,246.543 70.202,245.983 72.702,245.433 C 71.282,248.833 67.952,246.603 65.192,247.093 z "
+   id="path124"
+   style="fill:#047391" />
+
+		<path
+   d="M 65.932,32.973 C 67.942,31.883 70.322,31.273 72.592,31.593 C 71.792,32.053 71.012,32.583 70.182,32.973 C 70.692,33.853 70.962,34.613 70.522,35.723 C 68.892,36.103 69.702,35.843 68.462,36.643 C 67.522,35.604 66.622,34.184 65.932,32.973 z "
+   id="path126"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 78.092,255.994 C 73.792,257.034 69.662,258.183 65.532,259.313 L 65.202,258.103 C 68.832,257.154 72.232,255.423 75.802,254.154 C 77.662,253.483 84.352,252.744 81.192,250.944 C 85.772,248.313 93.252,246.933 98.512,248.303 C 98.282,247.993 98.052,247.694 97.832,247.383 C 103.842,248.993 111.392,242.663 118.592,242.913 C 118.752,245.642 123.863,241.533 126.502,241.993 C 126.622,242.943 126.682,244.562 126.282,245.663 C 121.721,246.352 117.181,247.043 112.622,247.723 C 113.311,247.203 [...]
+   id="path128"
+   style="fill:#047391" />
+
+		<path
+   d="M 65.592,211.593 C 65.942,212.703 66.542,214.893 66.622,215.493 C 65.462,214.263 64.712,213.543 65.592,211.593 z "
+   id="path130" />
+
+		<path
+   d="M 67.192,28.723 C 64.442,32.363 61.132,26.593 59.052,24.023 C 61.752,25.553 64.542,27.863 67.192,28.723 z "
+   id="path132"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 63.412,70.023 C 64.202,71.383 64.702,72.893 64.672,74.273 C 64.312,72.843 63.832,71.443 63.412,70.023 z "
+   id="path134" />
+
+		<path
+   d="M 65.022,228.574 C 64.372,227.284 63.392,226.103 62.612,224.893 C 61.982,225.704 61.322,225.763 60.882,226.733 C 60.332,224.114 59.392,217.324 58.712,217.324 C 58.812,216.164 58.992,214.744 59.392,213.654 C 60.572,218.803 64.102,223.633 65.022,228.574 z "
+   id="path136" />
+
+		<path
+   d="M 57.672,113.164 C 59.052,115.534 60.432,117.904 61.802,120.274 C 61.092,117.903 60.312,114.523 57.672,113.164 z M 56.642,110.983 C 58.112,107.063 45.842,91.703 40.692,94.003 C 41.472,96.443 52.042,104.653 48.732,105.133 C 49.142,105.943 49.392,106.303 49.642,107.083 C 49.782,106.623 50.242,105.323 50.102,104.553 C 52.532,106.463 53.362,110.434 56.642,110.983 z M 45.092,73.104 C 48.152,79.514 52.312,85.414 56.412,91.194 C 58.562,94.224 65.292,106.974 68.342,106.854 C 65.092,101.304 [...]
+   id="path138"
+   style="fill:#047391" />
+
+		<path
+   d="M 59.972,252.083 C 65.772,253.503 72.152,253.843 77.522,250.823 C 72.592,254.333 66.452,255.333 61.462,258.743 C 62.752,258.642 63.992,258.413 65.202,258.102 L 65.532,259.312 C 61.582,260.403 57.632,261.472 53.542,262.413 C 53.342,259.473 55.492,258.633 57.502,257.073 C 60.232,254.953 58.152,253.213 59.342,251.222 C 60.002,250.122 59.632,247.762 61.102,247.762 C 61.252,247.762 61.432,247.783 61.632,247.842 C 63.062,248.253 60.502,251.414 59.972,252.083 z "
+   id="path140"
+   style="fill:#047391" />
+
+		<path
+   d="M 61.802,120.273 C 60.432,117.903 59.052,115.533 57.672,113.163 C 60.312,114.523 61.092,117.903 61.802,120.273 z "
+   id="path142" />
+
+		<path
+   d="M 58.022,197.483 C 58.942,199.313 59.852,201.154 60.772,202.983 C 58.822,201.753 58.812,199.483 58.022,197.483 z "
+   id="path144" />
+
+		<path
+   d="M 56.242,94.823 C 69.062,116.523 85.192,136.063 99.202,157.213 C 95.112,157.593 86.682,145.313 83.992,141.963 C 78.762,135.453 73.842,128.743 68.982,121.953 C 66.422,118.363 55.672,106.993 58.262,103.543 C 58.972,102.593 57.362,99.263 55.112,95.483 L 56.242,94.823 z "
+   id="path146" />
+
+		<path
+   d="M 59.052,177.173 C 59.002,180.293 54.822,179.683 55.612,177.403 C 56.272,175.503 58.582,176.673 59.052,177.173 z "
+   id="path148"
+   style="fill:#8c8c8c" />
+
+		<path
+   d="M 55.612,177.404 C 54.822,179.683 59.002,180.294 59.052,177.174 C 58.582,176.673 56.272,175.503 55.612,177.404 z M 61.462,178.893 C 60.432,180.563 58.492,181.313 56.532,181.423 C 56.682,181.413 51.252,180.103 51.552,180.783 C 47.442,175.473 61.272,170.813 61.462,178.893 z "
+   id="path150" />
+
+		<path
+   d="M 56.312,61.293 C 56.392,61.643 56.462,61.993 56.532,62.343 C 56.452,62.003 56.372,61.653 56.312,61.293 z "
+   id="path152" />
+
+		<path
+   d="M 47.582,170.523 C 49.532,168.253 52.882,168.973 55.612,168.803 C 53.122,169.843 50.072,169.824 47.582,170.523 z "
+   id="path154"
+   style="fill:#047391" />
+
+		<path
+   d="M 53.542,262.414 C 57.632,261.474 61.582,260.404 65.532,259.313 C 69.662,258.183 73.792,257.034 78.092,255.994 C 90.522,252.983 102.652,251.324 114.122,245.324 C 114.342,245.624 114.572,245.933 114.802,246.233 C 114.052,246.654 113.312,247.204 112.622,247.723 C 117.182,247.043 121.722,246.353 126.282,245.663 L 127.771,246.123 C 127.282,247.143 127.181,248.352 127.421,249.562 C 128.221,248.443 128.661,247.113 128.981,245.762 L 130.561,246.052 C 130.412,246.842 130.692,247.962 130.86 [...]
+   id="path156" />
+
+		<path
+   d="M 48.952,73.233 C 51.512,76.923 54.722,81.453 56.872,84.713 C 52.722,82.013 51.652,77.093 48.952,73.233 z "
+   id="path158"
+   style="fill:#047391" />
+
+		<path
+   d="M 53.432,49.033 C 53.102,49.003 52.782,48.903 52.502,48.753 C 52.572,48.613 52.652,48.483 52.742,48.343 C 52.972,48.573 53.202,48.803 53.432,49.033 z "
+   id="path160" />
+
+		<path
+   d="M 51.482,66.813 C 46.082,58.953 38.892,51.703 35.992,42.613 C 47.492,59.093 59.172,75.493 68.802,92.743 C 69.682,91.803 71.052,89.523 72.682,86.573 C 78.252,76.583 86.972,58.963 90.712,60.393 C 84.382,67.453 80.742,76.473 76.722,84.943 C 75.322,87.873 73.822,91.223 71.782,93.773 C 69.542,96.593 68.912,96.563 68.072,94.913 C 67.592,93.993 67.052,92.563 66.112,90.843 C 61.612,82.583 56.802,74.563 51.482,66.813 z "
+   id="path162"
+   style="fill:#047391" />
+
+		<path
+   d="M 52.112,51.533 C 52.422,52.363 52.742,53.203 53.082,54.083 C 52.622,53.263 52.252,52.403 52.112,51.533 z "
+   id="path164" />
+
+		<path
+   d="M 45.512,15.653 C 47.272,15.193 49.032,14.733 50.792,14.273 C 50.682,15.873 50.562,17.803 50.332,19.203 C 50.302,18.983 47.932,15.283 46.912,18.023 C 47.012,16.874 46.732,15.914 45.512,15.653 z "
+   id="path166"
+   style="fill:#023f4f" />
+
+		<path
+   d="M 50.102,104.553 C 50.242,105.323 49.782,106.623 49.642,107.083 C 49.392,106.303 49.142,105.943 48.732,105.133 C 52.042,104.653 41.472,96.443 40.692,94.003 C 45.842,91.703 58.112,107.063 56.642,110.983 C 53.362,110.434 52.532,106.463 50.102,104.553 z "
+   id="path168" />
+
+		<path
+   d="M 48.502,36.644 C 48.962,37.634 49.412,38.634 49.872,39.624 C 49.372,38.653 48.942,37.624 48.502,36.644 z "
+   id="path170"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 46.912,18.033 C 46.862,18.623 46.712,19.263 46.542,19.893 C 46.622,19.083 46.742,18.473 46.912,18.033 z "
+   id="path172"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 64.672,74.273 C 64.702,72.893 64.202,71.383 63.412,70.023 C 63.832,71.443 64.312,72.843 64.672,74.273 z M 52.112,51.533 C 51.942,50.583 52.022,49.643 52.502,48.753 C 52.782,48.903 53.102,49.003 53.432,49.033 C 53.202,48.803 52.972,48.573 52.742,48.343 C 52.652,48.483 52.572,48.613 52.502,48.753 C 51.052,48.033 50.272,46.063 51.712,44.213 C 51.822,44.483 51.942,44.753 52.052,45.013 C 52.132,44.013 52.592,43.033 52.632,42.033 C 54.112,44.983 55.272,48.573 54.002,51.783 C 53.892,51. [...]
+   id="path174"
+   style="fill:#047391" />
+
+		<path
+   d="M 49.872,39.624 C 49.412,38.634 48.962,37.634 48.502,36.644 C 48.942,37.624 49.372,38.653 49.872,39.624 z M 43.792,37.563 C 43.042,33.953 43.492,31.023 42.532,27.353 C 43.832,30.793 45.132,34.233 46.432,37.673 C 46.722,36.813 47.672,36.523 47.462,35.153 C 47.582,35.753 47.922,36.153 48.042,36.643 C 48.192,35.623 48.872,34.673 49.072,33.663 C 50.102,35.343 51.132,37.023 52.172,38.703 C 53.862,38.163 62.772,64.213 63.182,68.073 C 62.172,65.733 61.422,63.213 60.882,60.733 C 59.982,62. [...]
+   id="path176" />
+
+		<path
+   d="M 39.552,172.244 C 40.752,170.714 42.412,170.654 43.562,171.674 C 42.372,172.713 41.162,173.074 39.552,172.244 z "
+   id="path178"
+   style="fill:#047391" />
+
+		<path
+   d="M 86.012,166.733 C 87.092,171.324 87.252,176.553 90.482,180.273 C 88.992,175.763 87.502,171.253 86.012,166.733 z M 60.312,167.883 C 67.312,167.573 74.632,166.553 81.192,163.983 C 74.312,165.694 67.162,165.914 60.312,167.883 z M 39.552,172.244 C 41.162,173.074 42.372,172.714 43.562,171.674 C 42.412,170.654 40.752,170.713 39.552,172.244 z M 40.812,175.683 C 41.692,180.223 45.272,195.944 49.762,186.353 C 52.992,192.263 51.802,184.954 52.852,183.833 C 55.472,188.593 59.422,187.732 63.8 [...]
+   id="path180" />
+
+		<path
+   d="M 38.062,135.533 C 39.172,136.763 39.912,138.413 39.892,139.893 C 39.282,138.433 38.672,136.983 38.062,135.533 z "
+   id="path182" />
+
+		<path
+   d="M 39.892,87.463 C 38.252,85.053 36.602,82.643 34.962,80.233 C 37.092,82.204 39.002,85.283 39.892,87.463 z "
+   id="path184" />
+
+		<path
+   d="M 32.322,72.553 C 33.352,74.233 34.382,75.913 35.422,77.593 C 33.022,77.113 32.402,74.783 32.322,72.553 z "
+   id="path186" />
+
+		<path
+   d="M 35.992,62.573 C 35.112,64.273 33.022,65.383 30.742,66.243 C 28.462,67.103 25.972,67.723 24.292,68.423 C 21.462,69.603 13.252,74.343 12.012,71.973 C 17.632,69.813 22.832,66.673 28.302,64.583 C 30.782,63.633 33.322,62.903 35.992,62.573 z "
+   id="path188"
+   style="fill:#047391" />
+
+		<path
+   d="M 28.902,52.954 C 27.262,55.894 34.152,57.254 33.122,60.734 C 31.202,61.194 29.352,61.824 27.532,62.534 C 21.982,64.704 16.742,67.594 10.752,68.654 C 10.162,64.904 8.082,61.584 7.782,58.744 C 7.522,56.334 8.542,54.284 12.822,52.594 C 17.722,50.664 25.232,56.013 28.902,52.954 z "
+   id="path190"
+   style="fill:#047391" />
+
+		<path
+   d="M 29.802,51.903 C 29.542,52.333 29.232,52.673 28.902,52.953 C 29.092,52.624 29.382,52.273 29.802,51.903 z "
+   id="path192"
+   style="fill:#ffffff" />
+
+		<path
+   d="M 27.402,161.824 C 35.802,187.063 39.352,213.744 45.472,239.694 L 43.412,240.164 C 34.952,203.384 26.122,166.714 16.072,130.314 L 17.702,129.854 C 20.692,140.614 23.892,151.293 27.402,161.824 z "
+   id="path194" />
+
+		<path
+   d="M 37.032,38.673 C 44.842,52.623 56.352,64.213 63.822,78.273 C 64.942,80.373 67.982,89.153 70.292,89.073 C 70.852,89.053 71.642,87.933 72.462,86.453 L 72.682,86.573 C 71.052,89.523 69.682,91.803 68.802,92.743 C 59.172,75.493 47.492,59.093 35.992,42.613 C 38.892,51.703 46.082,58.953 51.482,66.813 C 56.802,74.563 61.612,82.583 66.112,90.843 C 67.052,92.563 67.592,93.993 68.072,94.913 L 65.432,95.653 C 64.602,94.263 63.702,92.923 62.612,91.713 C 63.272,93.373 63.512,94.763 62.612,96.18 [...]
+   id="path196" />
+
+		<path
+   d="M 45.472,239.694 C 39.352,213.744 35.802,187.063 27.402,161.824 C 23.892,151.294 20.692,140.614 17.702,129.854 C 12.672,111.714 8.242,93.334 3.982,75.074 C 5.632,75.744 6.872,77.474 7.432,78.864 C 12.712,91.144 15.712,101.984 19.012,114.764 C 18.662,114.504 18.282,114.194 17.982,113.964 C 17.612,117.484 17.612,121.934 20.392,124.634 C 20.662,124.064 20.922,123.484 21.192,122.914 C 20.082,128.324 23.892,136.024 24.752,141.384 C 26.042,149.405 29.392,157.594 31.592,165.424 C 36.262,1 [...]
+   id="path198"
+   style="fill:#047391" />
+
+		<path
+   d="M 7.202,67.963 C 7.792,68.913 7.502,69.563 7.202,70.603 C 5.182,70.243 5.152,69.523 7.202,67.963 z "
+   id="path200"
+   style="fill:#047391" />
+
+	</g>
+
+	<g
+   id="g202">
+	</g>
+
+</g>
+
+
+  
+<g
+   id="layer1"
+   style="display:inline"
+   transform="matrix(0.5122066,0,0,0.5122066,-68.033864,-67.054583)"><g
+     id="g19140"><path
+       d="M 138,284.36218 C 126,298.36218 180,266.36218 180,266.36218 C 180,266.36218 192,258.36218 220,254.36218 C 248,250.36218 276,256.36218 276,256.36218 L 266,324.36218 L 182,390.36218 L 138,284.36218 z "
+       id="path9973"
+       style="fill:#573400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path
+       d="M 380,510.36218 L 282,462.36218 C 282,462.36218 210,348.36218 210,326.36218 C 210,304.36218 208,288.36218 226,264.36218 C 244,240.36218 286,238.36218 286,238.36218 C 286,238.36218 306,244.36218 292,236.36218 C 278,228.36218 296,232.36218 296,232.36218 C 296,232.36218 294,226.36218 302,236.36218 C 310,246.36218 306,270.36218 310,300.36218 C 314,330.36218 320,370.36218 334,396.36218 C 348,422.36218 426,476.36218 426,476.36218 L 460,518.36218 L 380,510.36218 z "
+       id="path9213"
+       style="fill:#753f00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path
+       d="M 93.851901,511.60588 L 96.840884,462.44622 C 96.840884,462.44622 105.80783,420.73499 110.2913,408.81749 C 110.70403,397.48154 112.94887,392.10432 112.94887,392.10432 C 112.94887,392.10432 114.85608,378.62545 117.76376,374.5547 L 118.26399,349.0468 C 119.42706,344.21129 116.26306,339.16069 119.83979,332.22211 C 119.83979,324.77367 114.77478,317.9466 114.77478,317.9466 C 114.77478,317.9466 107.30233,300.07036 111.7858,292.62192 C 116.26927,285.17349 131.21417,277.72506 143.17011 [...]
+       id="path6934"
+       style="fill:#803a00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path
+       d="M 99.442567,580.15537 L 88.974929,524.32796 L 94.208748,497.57733 C 94.208748,497.57733 125.03013,520.25722 130.84548,521.42029 C 136.66084,522.58336 173.87911,544.10017 173.87911,544.10017 C 173.87911,544.10017 208.1897,545.84478 216.3312,547.58938 C 224.4727,549.33399 247.73412,553.40474 257.62022,558.63856 C 267.50632,563.87238 303.56152,589.45994 309.95841,592.94915 C 316.3553,596.43836 355.89972,610.39522 371.01964,609.81368 C 386.13956,609.23214 447.20079,610.39522 452.43 [...]
+       id="path7694"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><g
+       id="g15332"><g
+         id="g14566"
+         transform="translate(-2,0)"><path
+           d="M 391.95187,522.67769 C 390.48663,516.81673 425.65241,474.32475 423.45455,464.06806 C 421.25668,453.81138 339.93583,484.58143 332.60963,476.52261 C 325.28342,468.46379 334.80749,452.34614 340.66845,443.5547 C 346.52941,434.76325 361.91444,428.16967 360.4492,419.37823 C 358.98396,410.58678 353.12299,409.85416 347.99465,409.12154 C 342.86631,408.38892 277.6631,430.36753 277.6631,430.36753 C 277.6631,430.36753 242.49733,445.01994 239.56684,431.10015 C 236.63636,417.18036 251.2 [...]
+           id="path13804"
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /><path
+           d="M 394.14973,521.94507 C 450.5615,488.24454 452.02674,486.77929 452.02674,486.77929 C 452.02674,486.77929 456.42246,475.78999 449.09626,475.78999 C 441.77005,475.78999 368.50802,502.89694 363.37968,502.16432 C 358.25134,501.4317 355.32086,502.16432 358.25134,496.30336 C 361.18182,490.4424 394.88235,441.35684 388.28877,437.69373 C 381.69519,434.03063 359.71658,430.36753 331.87701,440.62421 C 304.03743,450.8809 286.45455,471.39427 294.51337,454.544 C 302.57219,437.69373 333.34 [...]
+           id="path13806"
+           style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.69999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /></g><path
+         d="M 321.62032,360.7686 C 320.15508,357.83812 232.97326,352.70978 232.97326,339.52261 C 232.97326,326.33544 302.57219,306.5547 302.57219,306.5547"
+         id="path14570"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /></g><g
+       id="g13789"><path
+         d="M 400.0107,521.94507 C 400.0107,527.20507 396.40264,531.46914 391.95188,531.46914 C 387.50111,531.46914 383.89305,527.20507 383.89305,521.94507 C 383.89305,516.68507 387.50111,512.421 391.95188,512.421 C 396.40264,512.421 400.0107,516.68507 400.0107,521.94507 z "
+         id="path13009"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 369.97328,501.4317 C 369.97328,506.6917 366.52922,510.95577 362.28077,510.95577 C 358.03231,510.95577 354.58825,506.6917 354.58825,501.4317 C 354.58825,496.1717 358.03231,491.90763 362.28077,491.90763 C 366.52922,491.90763 369.97328,496.1717 369.97328,501.4317 z "
+         id="path13011"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 336.27273,476.88892 C 336.27273,481.94661 332.50067,486.04668 327.8476,486.04668 C 323.19452,486.04668 319.42246,481.94661 319.42246,476.88892 C 319.42246,471.83123 323.19452,467.73116 327.8476,467.73116 C 332.50067,467.73116 336.27273,471.83123 336.27273,476.88892 z "
+         id="path13013"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 301.83957,453.81137 C 301.83957,458.66675 298.55952,462.60282 294.51337,462.60282 C 290.46721,462.60282 287.18716,458.66675 287.18716,453.81137 C 287.18716,448.95599 290.46721,445.01992 294.51337,445.01992 C 298.55952,445.01992 301.83957,448.95599 301.83957,453.81137 z "
+         id="path13015"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 249.82353,430.73383 C 249.82353,439.43305 246.05147,446.48517 241.3984,446.48517 C 236.74532,446.48517 232.97326,439.43305 232.97326,430.73383 C 232.97326,422.03461 236.74532,414.98249 241.3984,414.98249 C 246.05147,414.98249 249.82353,422.03461 249.82353,430.73383 z "
+         id="path13017"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 246.16042,387.50925 C 246.16448,392.16546 242.71923,395.94242 238.46791,395.94242 C 234.21659,395.94242 230.77134,392.16546 230.7754,387.50925 C 230.77134,382.85304 234.21659,379.07608 238.46791,379.07608 C 242.71923,379.07608 246.16448,382.85304 246.16042,387.50925 z "
+         id="path13019"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 241.76471,335.49319 C 241.76471,339.74165 238.48466,343.18571 234.43851,343.18571 C 230.39235,343.18571 227.1123,339.74165 227.1123,335.49319 C 227.1123,331.24473 230.39235,327.80067 234.43851,327.80067 C 238.48466,327.80067 241.76471,331.24473 241.76471,335.49319 z "
+         id="path13021"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 452.75935,479.08679 C 452.76198,481.71851 450.46517,483.85323 447.63101,483.85323 C 444.79685,483.85323 442.50004,481.71851 442.50267,479.08679 C 442.50004,476.45507 444.79685,474.32035 447.63101,474.32035 C 450.46517,474.32035 452.76198,476.45507 452.75935,479.08679 z "
+         id="path13023"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 419.79144,457.47449 C 419.79144,459.90218 417.98741,461.87022 415.76203,461.87022 C 413.53664,461.87022 411.73261,459.90218 411.73261,457.47449 C 411.73261,455.0468 413.53664,453.07876 415.76203,453.07876 C 417.98741,453.07876 419.79144,455.0468 419.79144,457.47449 L 419.79144,457.47449 z "
+         id="path13025"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 389.754,436.59482 C 389.754,438.8202 387.78597,440.62423 385.35827,440.62423 C 382.93058,440.62423 380.96255,438.8202 380.96255,436.59482 C 380.96255,434.36944 382.93058,432.56541 385.35827,432.56541 C 387.78597,432.56541 389.754,434.36944 389.754,436.59482 z "
+         id="path13027"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /><path
+         d="M 360.4492,410.58679 C 360.45115,412.61124 358.81055,414.25342 356.7861,414.25342 C 354.76165,414.25342 353.12105,412.61124 353.123,410.58679 C 353.12105,408.56234 354.76165,406.92016 356.7861,406.92016 C 358.81055,406.92016 360.45115,408.56234 360.4492,410.58679 z "
+         id="path13029"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.70000005;stroke-miterlimit:4;stroke-opacity:0.49729728" /></g><path
+       d="M 308.43316,305.82208 C 308.43316,305.82208 289.38503,303.62421 282.05882,305.08946 C 274.73262,306.5547 262.27807,318.27662 262.27807,324.13758 C 262.27807,329.99855 263.74332,338.05737 267.40642,340.25523 C 271.06952,342.45309 284.25668,341.72047 286.45455,335.85951 C 288.65241,329.99855 301.83957,321.93972 305.50267,315.34614 C 309.16578,308.75256 321.62032,296.29801 328.2139,291.16967 C 334.80749,286.04133 343.59893,282.37823 347.99465,288.23919 C 352.39037,294.10015 363.37 [...]
+       id="path15338"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /><path
+       d="M 318.68984,302.89159 C 317.95722,305.82208 311.36364,297.03063 311.36364,297.03063 L 320.15508,283.11085 L 334.07487,277.24988 L 339.20321,275.05202"
+       id="path15340"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /><path
+       d="M 303.30481,307.28732 L 321.62032,323.40496 L 323.08556,341.72047"
+       id="path17622"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.10000038;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" /></g></g></svg>
\ No newline at end of file
diff --git a/images/presets/paint.png b/images/presets/shop/paint.png
similarity index 100%
rename from images/presets/paint.png
rename to images/presets/shop/paint.png
diff --git a/images/presets/pawnbroker.svg b/images/presets/shop/pawnbroker.svg
similarity index 100%
rename from images/presets/pawnbroker.svg
rename to images/presets/shop/pawnbroker.svg
diff --git a/images/presets/shop/perfumery.svg b/images/presets/shop/perfumery.svg
new file mode 100644
index 0000000..72a7d84
--- /dev/null
+++ b/images/presets/shop/perfumery.svg
@@ -0,0 +1,174 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4149"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="shop__perfumery6.svg">
+  <defs
+     id="defs4151" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="75.660426"
+     inkscape:cx="1.5527655"
+     inkscape:cy="12.545216"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="false"
+     inkscape:snap-page="true"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4697" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4154">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6,1042.8622 5,0 c 0,0 4,1 4,3 0,2 -5,6 -5,6 l -3,0 c 0,0 -5,-4 -5,-6 0,-2 4,-3 4,-3 z"
+       id="path4144"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccsc" />
+    <path
+       style="fill:#ac39ac;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 3,1047.3622 3.8942644,4.5815 3.0396509,-0.013 L 14,1047.3622 Z"
+       id="path4146"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.5000002,1042.3622 0,7"
+       id="path4148"
+       inkscape:connector-curvature="0" />
+    <rect
+       rx="0"
+       ry="1.7382812e-005"
+       y="1039.3622"
+       x="9"
+       height="1.0000174"
+       width="6"
+       id="rect4176"
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1" />
+    <ellipse
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1"
+       id="path4178"
+       cx="13.5"
+       cy="1039.8622"
+       rx="2.5"
+       ry="2.5000055" />
+    <rect
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.5;stroke-opacity:1"
+       id="rect4174"
+       width="3"
+       height="6.0000348"
+       x="7"
+       y="1037.3622"
+       ry="1.0000174"
+       rx="1.0000174" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2,1036.8622 -1,0"
+       id="path4180"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4188"
+       d="m 4,1037.8622 -1,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2,1041.8622 -1,0"
+       id="path4190"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4192"
+       d="m 1,1038.8622 -1,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6,1039.8622 -1,0"
+       id="path4194"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4196"
+       d="m 3,1039.8622 -1,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ac39ac;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 6,1038.8622 -1,0"
+       id="path4147"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4149"
+       d="m 4,1040.8622 -1,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 2,1038.8622 -1,0"
+       id="path4151"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4153"
+       d="m 4,1038.8622 -1,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 1,1040.8622 -1,0"
+       id="path4155"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4157"
+       d="m 3,1036.8622 -1,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/shop/pet.svg b/images/presets/shop/pet.svg
new file mode 100644
index 0000000..576a15b
--- /dev/null
+++ b/images/presets/shop/pet.svg
@@ -0,0 +1,857 @@
+<?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"
+   version="1.0"
+   width="524.19867"
+   height="524.66309"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="pet.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata2975">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.90509668"
+     inkscape:cx="176.31844"
+     inkscape:cy="226.81886"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 290 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="580 : 290 : 1"
+       inkscape:persp3d-origin="290 : 193.33333 : 1"
+       id="perspective2441" />
+    <inkscape:perspective
+       id="perspective2466"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3333"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3401"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3464"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3581"
+       inkscape:persp3d-origin="225 : 150 : 1"
+       inkscape:vp_z="450 : 225 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 225 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective4312"
+       inkscape:persp3d-origin="225 : 150 : 1"
+       inkscape:vp_z="450 : 225 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 225 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective8860"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective8887"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective4904" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 6 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="12 : 6 : 1"
+       inkscape:persp3d-origin="6 : 4 : 1"
+       id="perspective4668" />
+    <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="perspective4471" />
+    <symbol
+       id="symbol-university"
+       viewBox="244.5 110 489 219.9">
+      <path
+         d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 z"
+         id="path4460"
+         inkscape:connector-curvature="0" />
+      <path
+         d="M 94,176 73,215"
+         id="path4462"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#000000;stroke-width:20" />
+      <path
+         d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 z"
+         id="path4464"
+         inkscape:connector-curvature="0" />
+      <path
+         ill="none"
+         d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
+         id="path4466"
+         inkscape:connector-curvature="0"
+         style="stroke:#000000;stroke-width:20" />
+    </symbol>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 30 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="60 : 30 : 1"
+       inkscape:persp3d-origin="30 : 20 : 1"
+       id="perspective3452" />
+    <inkscape:perspective
+       id="perspective9479"
+       inkscape:persp3d-origin="290 : 193.33333 : 1"
+       inkscape:vp_z="580 : 290 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 290 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective9690"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 290 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="580 : 290 : 1"
+       inkscape:persp3d-origin="290 : 193.33333 : 1"
+       id="perspective9819" />
+    <inkscape:perspective
+       id="perspective9817"
+       inkscape:persp3d-origin="30 : 20 : 1"
+       inkscape:vp_z="60 : 30 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 30 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <symbol
+       viewBox="244.5 110 489 219.9"
+       id="symbol9807">
+      <path
+         id="path9809"
+         d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path9811"
+         d="M 94,176 73,215"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#000000;stroke-width:20" />
+      <path
+         id="path9813"
+         d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path9815"
+         d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
+         ill="none"
+         inkscape:connector-curvature="0"
+         style="stroke:#000000;stroke-width:20" />
+    </symbol>
+    <inkscape:perspective
+       id="perspective9805"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective9803"
+       inkscape:persp3d-origin="6 : 4 : 1"
+       inkscape:vp_z="12 : 6 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 6 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective9801"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 16 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <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="perspective9799" />
+    <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="perspective9797" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 225 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="450 : 225 : 1"
+       inkscape:persp3d-origin="225 : 150 : 1"
+       id="perspective9795" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 225 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="450 : 225 : 1"
+       inkscape:persp3d-origin="225 : 150 : 1"
+       id="perspective9793" />
+    <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="perspective9791" />
+    <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="perspective9789" />
+    <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="perspective9787" />
+    <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="perspective9785" />
+    <inkscape:perspective
+       id="perspective9783"
+       inkscape:persp3d-origin="290 : 193.33333 : 1"
+       inkscape:vp_z="580 : 290 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 290 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <defs
+       id="defs48974" />
+    <sodipodi:namedview
+       pagecolor="#ffffff"
+       inkscape:zoom="0.61399264"
+       inkscape:window-y="26"
+       inkscape:window-x="0"
+       inkscape:window-width="1012"
+       inkscape:window-height="739"
+       inkscape:pageshadow="2"
+       inkscape:pageopacity="0.0"
+       inkscape:cy="250.37448"
+       inkscape:cx="475.26707"
+       id="namedview4258"
+       borderopacity="1.0"
+       bordercolor="#666666" />
+    <inkscape:perspective
+       id="perspective11483"
+       inkscape:persp3d-origin="100 : 66.666667 : 1"
+       inkscape:vp_z="200 : 100 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 100 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       id="linearGradient2936">
+      <stop
+         style="stop-color:#8acf6b;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2938" />
+      <stop
+         style="stop-color:#368912;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2940" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2952">
+      <stop
+         style="stop-color:#c0d50d;stop-opacity:1;"
+         offset="0"
+         id="stop2954" />
+      <stop
+         style="stop-color:#eef2cd;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2956" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective34"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective13933"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective13955"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <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="perspective2446" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 204.28572 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="405.71429 : 204.28572 : 1"
+       inkscape:persp3d-origin="202.85715 : 136.19048 : 1"
+       id="perspective5571" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 250 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="500 : 250 : 1"
+       inkscape:persp3d-origin="250 : 166.66667 : 1"
+       id="perspective5412" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective5233" />
+    <marker
+       inkscape:stockid="RazorWire"
+       id="RazorWire"
+       refX="0"
+       refY="0"
+       orient="auto">
+       style="overflow:visible">
+      <path
+   id="path4286"
+   transform="scale(0.8,0.8)"
+   style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.1pt"
+   d="m 0.02272727,-0.74009011 0,1.4375 -7.78124997,2.31250001 18.4374997,0 -7.1874997,-2.31250001 0,-1.4375 7.2499997,-2.15624999 -18.4687497,0 7.74999997,2.15624999 z"
+   inkscape:connector-curvature="0" />
+</marker>
+    <marker
+       inkscape:stockid="DiamondS"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="DiamondS"
+       style="overflow:visible">
+      <path
+         id="path4202"
+         d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="scale(0.2,0.2)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Sstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Sstart"
+       style="overflow:visible">
+      <path
+         id="path4146"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(0.3,0,0,0.3,-0.69,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="StopS"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="StopS"
+       style="overflow:visible">
+      <path
+         id="path4229"
+         d="M 0,5.65 0,-5.65"
+         style="fill:none;stroke:#000000;stroke-width:1pt"
+         transform="scale(0.2,0.2)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto">
+      <g
+         id="g4298"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4300"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           d="M 3.8,0 C 3.8,0.44182781 3.4418278,0.80000001 3,0.80000001 2.5581722,0.80000001 2.2,0.44182781 2.2,0 c 0,-0.44182781 0.3581722,-0.80000001 0.8,-0.80000001 0.4418278,0 0.8,0.3581722 0.8,0.80000001 z"
+           sodipodi:cx="3"
+           sodipodi:cy="0"
+           sodipodi:rx="0.80000001"
+           sodipodi:ry="0.80000001" />
+        <circle
+           id="circle4302"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           d="M 7.3,0 C 7.3,0.44182781 6.9418278,0.80000001 6.5,0.80000001 6.0581722,0.80000001 5.7,0.44182781 5.7,0 c 0,-0.44182781 0.3581722,-0.80000001 0.8,-0.80000001 0.4418278,0 0.8,0.3581722 0.8,0.80000001 z"
+           sodipodi:cx="6.5"
+           sodipodi:cy="0"
+           sodipodi:rx="0.80000001"
+           sodipodi:ry="0.80000001" />
+        <circle
+           id="circle4304"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           d="M 10.8,0 C 10.8,0.44182781 10.441828,0.80000001 10,0.80000001 9.5581722,0.80000001 9.2,0.44182781 9.2,0 c 0,-0.44182781 0.3581722,-0.80000001 0.8,-0.80000001 0.441828,0 0.8,0.3581722 0.8,0.80000001 z"
+           sodipodi:cx="10"
+           sodipodi:cy="0"
+           sodipodi:rx="0.80000001"
+           sodipodi:ry="0.80000001" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="CurveIn"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="CurveIn"
+       style="overflow:visible">
+      <path
+         id="path4238"
+         d="m 4.625493,-5.0456926 c -2.76,0 -5.00000002,2.24 -5.00000002,5.00000002 0,2.75999998 2.24000002,4.99999998 5.00000002,4.99999998"
+         style="fill:none;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
+         transform="scale(0.6,0.6)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="TriangleOutS"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="TriangleOutS"
+       style="overflow:visible">
+      <path
+         id="path4220"
+         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.2,0.2)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Send"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Send"
+       style="overflow:visible">
+      <path
+         id="path4149"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-0.3,0,0,-0.3,0.69,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="SemiCircleOut"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="SemiCircleOut"
+       style="overflow:visible">
+      <path
+         id="path4235"
+         d="m -2.5,-0.80913858 c 0,2.75999998 -2.24,4.99999998 -5,4.99999998 l 0,-10 c 2.76,0 5,2.24 5,5.00000002 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
+         transform="matrix(0.6,0,0,0.6,4.2752958,0.4580676)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Send"
+       style="overflow:visible">
+      <path
+         id="path4131"
+         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)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Sstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Sstart"
+       style="overflow:visible">
+      <path
+         id="path4128"
+         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)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Tail"
+       style="overflow:visible">
+      <g
+         id="g4152"
+         transform="scale(-1.2,-1.2)">
+        <path
+           id="path4154"
+           d="M -3.8048674,-3.9585227 0.54352094,0"
+           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4156"
+           d="M -1.2866832,-3.9585227 3.0617053,0"
+           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4158"
+           d="M 1.3053582,-3.9585227 5.6537466,0"
+           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4160"
+           d="M -3.8048674,4.1775838 0.54352094,0.21974226"
+           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4162"
+           d="M -1.2866832,4.1775838 3.0617053,0.21974226"
+           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path4164"
+           d="M 1.3053582,4.1775838 5.6537466,0.21974226"
+           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;marker-start:none;marker-end:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible">
+      <path
+         id="path4119"
+         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)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="TriangleOutL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="TriangleOutL"
+       style="overflow:visible">
+      <path
+         id="path4214"
+         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.8,0.8)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         id="path4125"
+         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.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible">
+      <path
+         id="path4137"
+         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective14642" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 6 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="12 : 6 : 1"
+       inkscape:persp3d-origin="6 : 4 : 1"
+       id="perspective14640" />
+    <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="perspective14638" />
+    <symbol
+       id="symbol14628"
+       viewBox="244.5 110 489 219.9">
+      <path
+         d="m 79,43 57,119 c 0,0 21,-96 104,-96 83,0 124,106 124,106 L 407,39 489,22 0,17 79,43 z"
+         id="path14630"
+         inkscape:connector-curvature="0" />
+      <path
+         d="M 94,176 73,215"
+         id="path14632"
+         inkscape:connector-curvature="0"
+         style="fill:none;stroke:#000000;stroke-width:20" />
+      <path
+         d="M 300,19 C 300,29.5 277.4,38 249.5,38 221.6,38 199,29.5 199,19 199,8.5 221.6,0 249.5,0 277.4,0 300,8.5 300,19 z"
+         id="path14634"
+         inkscape:connector-curvature="0" />
+      <path
+         ill="none"
+         d="M 112,216 96,178 64,88 C 64,88 55,80 60,53 65,26 76,29 76,29"
+         id="path14636"
+         inkscape:connector-curvature="0"
+         style="stroke:#000000;stroke-width:20" />
+    </symbol>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 30 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="60 : 30 : 1"
+       inkscape:persp3d-origin="30 : 20 : 1"
+       id="perspective14626" />
+    <inkscape:perspective
+       id="perspective14624"
+       inkscape:persp3d-origin="290 : 193.33333 : 1"
+       inkscape:vp_z="580 : 290 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 290 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective14775"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective14839"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2562"
+       inkscape:persp3d-origin="212.91061 : 133.01251 : 1"
+       inkscape:vp_z="425.82123 : 199.51877 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 199.51877 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="layer3"
+     inkscape:label="Layout"
+     style="stroke:#757575;stroke-opacity:1;display:none"
+     transform="matrix(48.14969,0,0,48.14969,-1240.0161,-83.091265)">
+    <rect
+       style="fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="rect4134"
+       width="10"
+       height="10"
+       x="1"
+       y="1" />
+    <rect
+       style="fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="rect4136"
+       width="8"
+       height="8"
+       x="2"
+       y="2" />
+  </g>
+  <g
+     id="g9828"
+     inkscape:label="Layout"
+     style="stroke:#757575;stroke-opacity:1;display:none"
+     transform="matrix(48.14969,0,0,48.14969,-1900.314,71.750799)">
+    <rect
+       style="fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="rect9830"
+       width="10"
+       height="10"
+       x="1"
+       y="1" />
+    <rect
+       style="fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="rect9832"
+       width="8"
+       height="8"
+       x="2"
+       y="2" />
+  </g>
+  <g
+     id="g14695"
+     inkscape:label="Layout"
+     style="stroke:#757575;stroke-opacity:1;display:none"
+     transform="matrix(48.14969,0,0,48.14969,-1240.0161,-213.28869)">
+    <rect
+       style="fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="rect14697"
+       width="10"
+       height="10"
+       x="1"
+       y="1" />
+    <rect
+       style="fill:none;stroke:#757575;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="rect14699"
+       width="8"
+       height="8"
+       x="2"
+       y="2" />
+  </g>
+  <g
+     id="layer1"
+     transform="matrix(1.0432444,0.619486,-0.619486,1.0432444,-327.07982,-964.07764)"
+     style="fill:#ac39ac;fill-opacity:1;stroke:none">
+    <path
+       id="path2078"
+       style="fill:#ac39ac;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 922.96817,588.96089 c 24.0243,2.80534 52.37886,8.1762 65.0633,31.40835 9.26227,13.69502 17.32513,28.38401 28.87643,40.36617 20.4742,10.36026 40.8732,22.80183 55.5624,40.70359 18.4349,27.56507 12.8528,67.04874 -8.5754,91.25527 -23.9937,21.96745 -58.5285,32.94178 -90.50944,24.81452 -20.44108,-4.08663 -40.82293,-16.11271 -62.09074,-9.39446 -19.67342,5.52125 -39.19757,14.22038 -60.14891,11.8866 -19.91653,-0.67497 -37.78663,-10.41533 -54.54059,-20.2091 -19.53406,-12.53883 -31.7396 [...]
+       sodipodi:nodetypes="cccccccccccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2040"
+       style="fill:#ac39ac;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 706.83161,545.9715 c 5.12977,-18.01457 19.67126,-34.6786 38.97729,-37.11684 13.80277,-1.78026 28.08593,1.72456 40.23749,8.24205 22.16066,14.75851 35.05953,39.74123 42.35302,64.6795 3.67599,11.92517 6.17666,24.67526 3.14767,37.03976 -2.7993,14.60207 -13.39057,26.97443 -27.02046,32.66676 -17.70364,10.64278 -41.17953,9.20349 -58.05972,-2.43004 -10.04038,-6.64991 -18.93779,-15.32943 -24.33797,-26.20917 -12.78899,-23.06312 -21.41515,-50.46696 -15.29732,-76.87202 z"
+       sodipodi:nodetypes="ccccccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2071"
+       style="fill:#ac39ac;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       transform="translate(452.857,333.791)"
+       d="m 421.73586,81.462526 c 0,0 29.46428,0.178571 45.71428,37.857144 0,0 11.21308,24.43717 7.32143,61.96429 0,0 -0.60865,37.77966 -23.08454,53.18448 0,0 -30.55712,27.7792 -65.65992,-9.59645 0,0 -24.4962,-26.26396 -29.29442,-63.38707 0,0 -5.3033,-38.3858 18.43528,-61.36677 0,0 20.13932,-18.834196 46.56789,-18.655624 z"
+       sodipodi:nodetypes="cccccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2073"
+       style="fill:#ac39ac;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       transform="translate(452.857,333.791)"
+       d="m 576.52455,89.717037 c 0,0 36.25,10.714283 32.32143,52.142853 0,0 2.05835,33.27693 -17.63963,63.58151 0,0 -19.95051,37.37564 -46.46702,41.41625 0,0 -29.29442,9.09137 -50.50762,-35.86042 0,0 -15.15229,-51.0127 8.33376,-85.35789 0,0 27.42112,-50.946446 73.95908,-35.922303 z"
+       sodipodi:nodetypes="ccccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2075"
+       style="fill:#ac39ac;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 1117.8,529.42866 c 17.0128,5.19957 29.0252,21.65542 30.538,39.14833 1.6415,15.71874 -2.0788,31.51923 -7.3703,46.23188 -8.6097,21.5116 -24.1266,40.31698 -43.7581,52.63552 -14.8357,8.09747 -33.3338,4.66111 -46.9133,-4.41714 -5.555,-2.66124 -8.9406,-7.70303 -11.333,-13.19597 -9.0423,-17.99186 -10.3113,-39.89227 -2.093,-58.41912 6.9469,-17.44643 15.4953,-35.25253 30.1471,-47.54014 11.1088,-10.0964 25.6272,-18.34264 41.1562,-16.72517 3.2906,0.33413 6.5337,1.11092 9.6264,2.28181 z"
+       sodipodi:nodetypes="cccccccccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/shop/photo.svg b/images/presets/shop/photo.svg
new file mode 100644
index 0000000..db7e166
--- /dev/null
+++ b/images/presets/shop/photo.svg
@@ -0,0 +1,193 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="15.99997"
+   height="13.019"
+   id="svg3168"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs3170">
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4893"
+       id="linearGradient3119"
+       gradientUnits="userSpaceOnUse"
+       x1="289.29999"
+       y1="429.13"
+       x2="289.29999"
+       y2="420.67999" />
+    <linearGradient
+       id="linearGradient4893"
+       inkscape:collect="always">
+      <stop
+         id="stop4895"
+         style="stop-color:#729fcf"
+         offset="0" />
+      <stop
+         id="stop4897"
+         style="stop-color:#eeeeec"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2194"
+       id="linearGradient3130"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.58027148,0,0,0.79986757,-180.30929,695.4509)"
+       x1="329.03"
+       y1="434.63"
+       x2="329.03"
+       y2="433.06" />
+    <linearGradient
+       id="linearGradient2194"
+       inkscape:collect="always">
+      <stop
+         id="stop2196"
+         style="stop-color:#babdb6"
+         offset="0" />
+      <stop
+         id="stop2198"
+         style="stop-color:#eeeeec"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2204"
+       id="linearGradient3133"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.29251852,0,0,0.29251852,343.00012,452.99408)"
+       x1="225.75999"
+       y1="288.59"
+       x2="225.75999"
+       y2="309.35999" />
+    <linearGradient
+       id="linearGradient2204">
+      <stop
+         id="stop2206"
+         style="stop-color:#babdb6"
+         offset="0" />
+      <stop
+         id="stop2208"
+         style="stop-color:#7b7f76"
+         offset=".81098" />
+      <stop
+         id="stop2210"
+         style="stop-color:#50524e"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="309.35999"
+       x2="225.75999"
+       y1="288.59"
+       x1="225.75999"
+       gradientTransform="matrix(0.29251852,0,0,0.29251852,-48.17407,960.67675)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3166"
+       xlink:href="#linearGradient2204"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="375"
+     inkscape:cy="520.00002"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3173">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1039.3432)">
+    <path
+       id="path3943"
+       style="fill:url(#linearGradient3166)"
+       d="m 3.6371104,1040.0339 c -0.71368,0 -1.28923,0.5295 -1.3583,1.2316 -0.42591,0.1497 -0.72519,0.5411 -0.72519,1.013 v 8.311 c 0,0.5986 0.48346,1.082 1.08203,1.082 H 14.22727 c 0.59857,0 1.08204,-0.4834 1.08204,-1.082 v -8.311 c 0,-0.5986 -0.48347,-1.082 -1.08204,-1.082 H 6.7911404 c -0.1036,-0.6677 -0.64462,-1.1626 -1.33528,-1.1626 h -1.81875 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3859"
+       style="fill:url(#linearGradient3130)"
+       d="m 6.5033604,1041.5878 c -0.0345,0.9094 0.48347,1.508 1.10506,1.508 H 15.02153 v -0.5525 c 0,-0.4144 -0.34533,-0.7252 -0.79426,-0.7252 H 6.7911404 c -0.14964,0 -0.27627,-0.1036 -0.28778,-0.2303 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3857"
+       style="fill:#555753"
+       d="m 3.6371104,1039.3432 c -0.89786,0 -1.57701,0.6331 -1.85327,1.4504 -0.52951,0.2993 -0.92088999,0.8288 -0.92088999,1.4849 v 8.311 c 0,0.9669 0.80577999,1.7727 1.77269999,1.7727 H 14.22727 c 0.97844,0 1.7727,-0.8058 1.7727,-1.7727 v -8.311 c 0,-0.9784 -0.79426,-1.7727 -1.7727,-1.7727 H 7.1594904 c -0.34533,-0.6561 -0.92088,-1.1626 -1.70363,-1.1626 h -1.81875 z m 0,1.3813 h 1.81875 c 0.35684,0 0.59857,0.2302 0.64462,0.5756 0.0575,0.3338 0.34533,0.587 0.69066,0.5755 H 14.22727 c 0. [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3869"
+       sodipodi:rx="1.125"
+       sodipodi:ry="1.125"
+       style="fill:#ef2929"
+       sodipodi:type="arc"
+       d="m 283.125,434.98718 c 0,0.62132 -0.50368,1.125 -1.125,1.125 -0.62132,0 -1.125,-0.50368 -1.125,-1.125 0,-0.62132 0.50368,-1.125 1.125,-1.125 0.62132,0 1.125,0.50368 1.125,1.125 z"
+       transform="matrix(1.1238458,0,0,1.1238458,-310.96764,554.79061)"
+       sodipodi:cy="434.98718"
+       sodipodi:cx="282" />
+    <path
+       id="path3843"
+       sodipodi:rx="6.25"
+       sodipodi:ry="6.25"
+       style="fill:url(#linearGradient3119);stroke:#555753;stroke-width:2.9467001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2.41420007"
+       sodipodi:type="arc"
+       d="m 295,425.11218 c 0,3.45178 -2.79822,6.25 -6.25,6.25 -3.45178,0 -6.25,-2.79822 -6.25,-6.25 0,-3.45178 2.79822,-6.25 6.25,-6.25 3.45178,0 6.25,2.79822 6.25,6.25 z"
+       transform="matrix(0.54181309,0,0,0.54181309,-146.31719,817.11107)"
+       sodipodi:cy="425.11218"
+       sodipodi:cx="288.75" />
+    <path
+       id="path3951"
+       sodipodi:nodetypes="ccccccsc"
+       style="fill:#555753"
+       d="M 0.41402041,1042.8886 H 3.5450304 c 0.59857,0 1.08203,0.495 1.08203,1.0935 -0.41439,1.6807 -0.34533,3.3728 0,5.0534 0,0.5986 -0.48346,1.082 -1.08203,1.082 H 0.41402041 c -0.79426,-0.8057 -0.0345,-2.2676 -0.046,-3.7065 -0.0115,-1.3583 -0.85182,-2.7051 0.046,-3.5224 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3871"
+       sodipodi:nodetypes="ccccccc"
+       style="fill:#babdb6"
+       d="m 0.05718041,1044.3505 c 0.0576,0.4144 0.19569,0.8863 0.28778,1.3698 H 2.8428504 c 0.48347,0 0.87484,-0.2647 0.87484,-0.6101 v -0.1496 c 0,-0.3453 -0.39137,-0.6101 -0.87484,-0.6101 H 0.05718041 z"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3873"
+       sodipodi:nodetypes="ccccccc"
+       style="fill:#babdb6"
+       d="m 0.35647041,1047.1707 c -0.0691,0.495 -0.19569,0.9554 -0.25325,1.3813 H 2.8658704 c 0.48347,0 0.87484,-0.2762 0.87484,-0.6101 v -0.1496 c 0,-0.3453 -0.39137,-0.6216 -0.87484,-0.6216 H 0.35647041 z"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/present.svg b/images/presets/shop/present.svg
similarity index 100%
rename from images/presets/present.svg
rename to images/presets/shop/present.svg
diff --git a/images/presets/shop/shoes.svg b/images/presets/shop/shoes.svg
new file mode 100644
index 0000000..575ecb9
--- /dev/null
+++ b/images/presets/shop/shoes.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="375.00000" id="svg2" version="1.0" width="500.00000" x="0.00000000" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0.00000000">
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>tennis shoes</dc:title>
+        <dc:description>tennis shoes</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>sports</rdf:li>
+            <rdf:li>clothing</rdf:li>
+            <rdf:li>shoes</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jarno Vasamaa</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jarno Vasamaa</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3">
+    <linearGradient id="linearGradient2413">
+      <stop id="stop2415" offset="0.00000000" style="stop-color:#00006d;stop-opacity:1.0000000;"/>
+      <stop id="stop2419" offset="0.50000000" style="stop-color:#1f4b72;stop-opacity:0.83673471;"/>
+      <stop id="stop2417" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2996">
+      <stop id="stop2998" offset="0.00000000" style="stop-color:#000000;stop-opacity:1.0000000;"/>
+      <stop id="stop3000" offset="1.0000000" style="stop-color:#000000;stop-opacity:0.00000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2988">
+      <stop id="stop2990" offset="0.00000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
+      <stop id="stop2992" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:0.00000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2926">
+      <stop id="stop2928" offset="0.00000000" style="stop-color:#000000;stop-opacity:1.0000000;"/>
+      <stop id="stop2930" offset="1.0000000" style="stop-color:#000000;stop-opacity:0.00000000;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2122">
+      <stop id="stop2124" offset="0.00000000" style="stop-color:#d0f0ff;stop-opacity:1.0000000;"/>
+      <stop id="stop2126" offset="1.0000000" style="stop-color:#003968;stop-opacity:1.0000000;"/>
+    </linearGradient>
+    <linearGradient gradientTransform="matrix(0.555010,0.000000,0.000000,0.418677,0.432240,23.74855)" gradientUnits="userSpaceOnUse" id="linearGradient2128" x1="214.03627" x2="175.58330" xlink:href="#linearGradient2122" y1="191.02786" y2="308.42743"/>
+    <radialGradient cx="133.52780" cy="783.30951" fx="133.52780" fy="776.26428" gradientTransform="matrix(5.442391,0.000000,0.000000,0.508459,-460.3333,-112.2011)" gradientUnits="userSpaceOnUse" id="radialGradient2934" r="39.923176" xlink:href="#linearGradient2926"/>
+    <pattern height="131.12500" id="pattern2966" patternTransform="translate(-311.6250,-153.0312)" patternUnits="userSpaceOnUse" width="131.09375">
+      <path d="M -271.53125 -152.53125 L -271.53125 -121.40625 L -214.96875 -121.40625 L -214.96875 -152.53125 L -271.53125 -152.53125 z M -214.96875 -121.40625 L -214.96875 -59.187500 L -181.03125 -59.187500 L -181.03125 -121.40625 L -214.96875 -121.40625 z M -214.96875 -59.187500 L -271.53125 -59.187500 L -271.53125 -22.406250 L -214.96875 -22.406250 L -214.96875 -59.187500 z M -271.53125 -59.187500 L -271.53125 -121.40625 L -311.12500 -121.40625 L -311.12500 -59.187500 L -271.53125 -5 [...]
+    </pattern>
+    <linearGradient gradientTransform="scale(1.455680,0.686964)" gradientUnits="userSpaceOnUse" id="linearGradient2978" x1="286.58630" x2="-509.75967" xlink:href="#linearGradient2122" y1="228.04239" y2="776.38965"/>
+    <linearGradient gradientTransform="scale(1.251383,0.799116)" gradientUnits="userSpaceOnUse" id="linearGradient2986" x1="214.88705" x2="-46.229206" xlink:href="#linearGradient2122" y1="108.75815" y2="352.20242"/>
+    <linearGradient gradientTransform="scale(1.687069,0.592744)" gradientUnits="userSpaceOnUse" id="linearGradient2994" x1="220.02895" x2="208.66641" xlink:href="#linearGradient2988" y1="367.87140" y2="322.10733"/>
+    <linearGradient gradientTransform="scale(1.361889,0.734274)" gradientUnits="userSpaceOnUse" id="linearGradient3002" x1="137.94797" x2="178.18408" xlink:href="#linearGradient2996" y1="239.13179" y2="186.93596"/>
+    <linearGradient gradientTransform="matrix(1.306714,0.000000,0.000000,0.683788,-27.50945,-10.82293)" gradientUnits="userSpaceOnUse" id="linearGradient2252" x1="-84.012840" x2="-42.793274" xlink:href="#linearGradient2122" y1="-27.979443" y2="44.798901"/>
+    <linearGradient gradientTransform="matrix(0.994124,0.000000,0.000000,0.898796,-27.50945,-10.82293)" gradientUnits="userSpaceOnUse" id="linearGradient2278" x1="-228.34370" x2="104.23048" xlink:href="#linearGradient2122" y1="156.02844" y2="-528.19983"/>
+    <linearGradient gradientTransform="matrix(-1.969486,0.000000,0.000000,0.691970,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2299" x1="220.02895" x2="208.66641" xlink:href="#linearGradient2988" y1="367.87140" y2="322.10733"/>
+    <linearGradient gradientTransform="matrix(-1.699362,0.000000,0.000000,0.801962,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2305" x1="286.58630" x2="-509.75967" xlink:href="#linearGradient2122" y1="228.04239" y2="776.38965"/>
+    <radialGradient cx="133.52780" cy="783.30951" fx="133.52780" fy="776.26428" gradientTransform="matrix(-6.449434,0.000000,0.000000,4.018662,581.6695,-2968.854)" gradientUnits="userSpaceOnUse" id="radialGradient2308" r="39.923176" xlink:href="#linearGradient2926"/>
+    <linearGradient gradientTransform="matrix(-0.647919,0.000000,0.000000,0.488764,-28.92678,-132.9711)" gradientUnits="userSpaceOnUse" id="linearGradient2311" x1="214.03627" x2="175.58330" xlink:href="#linearGradient2122" y1="191.02786" y2="308.42743"/>
+    <linearGradient gradientTransform="matrix(-1.589871,0.000000,0.000000,0.857192,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2314" x1="137.94797" x2="178.18408" xlink:href="#linearGradient2996" y1="239.13179" y2="186.93596"/>
+    <linearGradient gradientTransform="matrix(-1.460866,0.000000,0.000000,0.932889,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2317" x1="214.88705" x2="-46.229206" xlink:href="#linearGradient2122" y1="108.75815" y2="352.20242"/>
+    <linearGradient gradientTransform="matrix(-1.460866,0.000000,0.000000,0.932889,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2354" x1="214.88705" x2="-46.229206" xlink:href="#linearGradient2122" y1="108.75815" y2="352.20242"/>
+    <linearGradient gradientTransform="matrix(-1.589871,0.000000,0.000000,0.857192,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2356" x1="137.94797" x2="178.18408" xlink:href="#linearGradient2996" y1="239.13179" y2="186.93596"/>
+    <linearGradient gradientTransform="matrix(-0.647919,0.000000,0.000000,0.488764,-28.92678,-132.9711)" gradientUnits="userSpaceOnUse" id="linearGradient2358" x1="214.03627" x2="175.58330" xlink:href="#linearGradient2122" y1="191.02786" y2="308.42743"/>
+    <radialGradient cx="133.52780" cy="783.30951" fx="133.52780" fy="776.26428" gradientTransform="matrix(-6.449434,0.000000,0.000000,4.018662,581.6695,-2968.854)" gradientUnits="userSpaceOnUse" id="radialGradient2360" r="39.923176" xlink:href="#linearGradient2926"/>
+    <linearGradient gradientTransform="matrix(-1.699362,0.000000,0.000000,0.801962,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2362" x1="286.58630" x2="-509.75967" xlink:href="#linearGradient2122" y1="228.04239" y2="776.38965"/>
+    <linearGradient gradientTransform="matrix(-1.969486,0.000000,0.000000,0.691970,-28.42218,-160.6952)" gradientUnits="userSpaceOnUse" id="linearGradient2364" x1="220.02895" x2="208.66641" xlink:href="#linearGradient2988" y1="367.87140" y2="322.10733"/>
+    <linearGradient gradientTransform="matrix(1.306714,0.000000,0.000000,0.683788,-27.50945,-10.82293)" gradientUnits="userSpaceOnUse" id="linearGradient2366" x1="-84.012840" x2="-42.793274" xlink:href="#linearGradient2122" y1="-27.979443" y2="44.798901"/>
+    <linearGradient gradientTransform="matrix(0.994124,0.000000,0.000000,0.898796,-27.50945,-10.82293)" gradientUnits="userSpaceOnUse" id="linearGradient2368" x1="-228.34370" x2="104.23048" xlink:href="#linearGradient2122" y1="156.02844" y2="-528.19983"/>
+    <linearGradient gradientTransform="matrix(0.704605,0.000000,0.000000,0.637040,415.2939,76.68502)" gradientUnits="userSpaceOnUse" id="linearGradient2381" x1="-228.34370" x2="104.23048" xlink:href="#linearGradient2122" y1="156.02844" y2="-528.19983"/>
+    <linearGradient gradientTransform="matrix(0.926160,0.000000,0.000000,0.484648,415.2939,76.68502)" gradientUnits="userSpaceOnUse" id="linearGradient2384" x1="-84.012840" x2="-42.793274" xlink:href="#linearGradient2122" y1="-27.979443" y2="44.798901"/>
+    <linearGradient gradientTransform="matrix(-1.395913,0.000000,0.000000,0.490448,414.6470,-29.53995)" gradientUnits="userSpaceOnUse" id="linearGradient2393" x1="220.02895" x2="208.66641" xlink:href="#linearGradient2988" y1="367.87140" y2="322.10733"/>
+    <linearGradient gradientTransform="matrix(-1.204457,0.000000,0.000000,0.568407,414.6470,-29.53995)" gradientUnits="userSpaceOnUse" id="linearGradient2399" x1="286.58630" x2="-509.75967" xlink:href="#linearGradient2122" y1="228.04239" y2="776.38965"/>
+    <radialGradient cx="133.52780" cy="783.30951" fx="133.52780" fy="776.26428" gradientTransform="matrix(-4.571165,0.000000,0.000000,2.848307,847.0617,-2019.879)" gradientUnits="userSpaceOnUse" id="radialGradient2402" r="39.923176" xlink:href="#linearGradient2413"/>
+    <linearGradient gradientTransform="scale(-1.151360,0.868538)" gradientUnits="userSpaceOnUse" id="linearGradient2405" x1="-273.97739" x2="-289.79379" xlink:href="#linearGradient2122" y1="46.203632" y2="111.63103"/>
+    <linearGradient gradientTransform="matrix(-1.126853,0.000000,0.000000,0.607552,414.6470,-29.53995)" gradientUnits="userSpaceOnUse" id="linearGradient2408" x1="137.94797" x2="178.18408" xlink:href="#linearGradient2996" y1="239.13179" y2="186.93596"/>
+    <linearGradient gradientTransform="matrix(-1.035418,0.000000,0.000000,0.661204,414.6470,-29.53995)" gradientUnits="userSpaceOnUse" id="linearGradient2411" x1="214.88705" x2="-46.229206" xlink:href="#linearGradient2122" y1="108.75815" y2="352.20242"/>
+    <radialGradient cx="195.70198" cy="252.70335" fx="195.70198" fy="252.70335" gradientTransform="scale(1.297277,0.770846)" gradientUnits="userSpaceOnUse" id="radialGradient2429" r="158.86395" xlink:href="#linearGradient2413"/>
+  </defs>
+  <path d="M 459.97014 194.79526 A 206.09052 122.45958 0 1 1  47.789108,194.79526 A 206.09052 122.45958 0 1 1  459.97014 194.79526 z" id="path2421" style="fill:url(#radialGradient2429);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.4250000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" transform="matrix(1.169082,0.000000,0.000000,0.861789,-53.87817,43.84823)"/>
+  <path d="M 146.00811,137.38942 C 146.00811,137.38942 290.86692,88.423067 290.86692,79.241871 C 290.86692,70.060675 286.78641,75.161339 285.76627,64.960018 C 302.08839,45.577501 285.76628,44.557360 274.54482,38.436554 C 267.40387,55.778822 227.61872,72.100941 227.61872,72.100941 L 136.82690,122.08744 L 146.00811,137.38942 z " id="path2130" style="fill:url(#linearGradient2411);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.5528684px;stroke-linecap:butt;stroke-line [...]
+  <path d="M 375.92337,59.859354 C 372.86297,53.738556 353.48046,47.617767 349.39992,51.698290 C 345.31939,55.778822 325.41669,66.763321 319.29588,70.843829 C 313.17509,74.924368 310.87187,82.065290 302.47383,81.282145 C 296.35302,78.221730 277.99063,69.040558 276.97049,75.161339 C 275.95038,81.282145 270.84971,116.98677 298.39329,116.98677 C 325.93688,116.98677 355.52071,127.18810 363.68178,110.86597 C 371.84283,94.543849 375.92337,59.859354 375.92337,59.859354 z " id="path2120" style=" [...]
+  <path d="M 395.94059,152.69142 C 395.94059,152.69142 396.96072,101.68479 392.88019,92.503591 C 388.79967,83.322403 380.63860,64.960018 376.55808,60.879486 C 372.47754,56.798946 369.41715,55.778822 365.33662,60.879486 C 361.25608,65.980143 361.25608,84.342527 356.15542,91.483458 C 351.05476,98.624388 347.99435,103.72505 337.79303,104.74519 C 327.59171,105.76531 316.37025,100.66465 307.18905,92.503591 C 298.00786,84.342527 291.88707,74.141214 284.74614,72.100941 C 277.60522,70.060675 276 [...]
+  <path d="M 393.38156,144.75114 C 395.63782,139.11049 395.63782,176.33886 394.50969,178.59512 C 277.18393,201.15776 208.36787,186.49204 208.36787,186.49204 C 208.36787,186.49204 295.23405,194.38897 383.22837,166.18566 C 391.12529,159.41687 393.38156,144.75114 393.38156,144.75114 z " id="path2942" style="fill:#000000;fill-opacity:0.22702701;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+  <path d="M 397.98086,158.40119 L 401.04125,183.27918 C 401.04125,183.27918 401.04125,184.83406 400.02111,190.27612 C 399.00099,195.71817 397.98086,198.82792 391.86006,201.16023 C 385.73926,203.49253 328.61184,212.04434 325.55145,212.04434 C 322.49105,212.04434 299.02799,205.82484 286.78641,207.37972 C 274.54480,208.93458 266.38375,210.48948 260.26295,212.82178 C 254.14217,215.15409 240.88043,222.15102 215.37713,222.92847 C 189.87381,223.70589 162.33023,225.26077 132.74640,219.04127 C 1 [...]
+  <path d="M 141.92759,118.00691 L 163.94278,131.50561 L 170.01735,100.66465 L 216.39726,103.60657 L 219.45765,75.161339 L 265.36363,83.322403 L 255.16229,67.000284 L 235.77977,65.980143 L 241.47286,92.148134 L 196.27667,85.950806 L 189.56460,115.72967 L 141.92759,118.00691 z " id="path2142" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:6.2500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+  <path d="M 136.44148,127.57353 C 136.44148,127.57353 128.28043,131.65407 119.09923,132.67419 C 109.91804,133.69434 83.394592,130.63393 83.394592,130.63393 C 83.394592,130.63393 72.173132,130.63393 82.374466,136.75473 C 92.575786,142.87552 170.10587,161.23791 158.88440,155.11712 C 147.66294,148.99631 119.09923,145.93593 110.93818,140.83527 C 102.77712,135.73458 136.44148,127.57353 136.44148,127.57353 z " id="path2902" style="fill:url(#linearGradient2393);fill-opacity:1.0000000;fill-rule [...]
+  <path d="M 373.30686,65.736303 C 373.30686,65.736303 371.13461,57.575247 368.86445,63.696045 C 366.59427,69.816826 364.03831,85.118828 359.42853,91.239617 C 356.29633,96.462202 340.28528,114.85694 353.28087,104.98902 C 374.60269,82.546093 373.30686,65.736303 373.30686,65.736303 z " id="path2904" style="fill:#ffffff;fill-opacity:0.61621624;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+  <path d="M 233.73951,103.72505 C 233.73951,103.72505 143.96785,132.28877 157.22957,138.40956 C 170.49130,144.53035 233.73951,103.72505 233.73951,103.72505 z " id="path2906" style="fill:#000000;fill-opacity:0.054054026;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+  <path d="M 256.18243,67.000284 C 265.36363,63.939877 262.30322,63.939877 270.46428,65.980143 C 278.62533,68.020401 286.78641,78.221730 277.60522,79.241871 C 268.42401,80.262004 261.28309,76.181481 256.18243,67.000284 z " id="path2936" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.6586056;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+  <path d="M 257.20256,63.939877 C 257.20256,63.939877 253.12202,54.758697 245.98110,55.778822 C 238.84016,56.798963 228.63884,63.939894 236.79990,60.879486 C 243.94082,65.980143 257.20256,63.939877 257.20256,63.939877 z " id="path2938" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.6586056;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+  <path d="M 247.00123,89.443192 L 256.18243,65.980143 C 256.18243,65.980143 236.79992,76.181481 230.67911,81.282145" id="path2940" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:4.6586056;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+  <path d="M 323.39842,122.87026 C 323.39842,122.87026 296.64100,110.85087 290.55978,104.29484 C 284.47854,97.738794 282.04605,93.368103 278.39731,93.368103 C 274.74857,93.368103 194.47631,130.51897 187.17883,133.79699 C 179.88137,137.07500 153.12394,140.35304 170.15139,142.53838 C 187.17883,144.72371 240.69368,142.53838 258.93737,138.16768 C 277.18106,133.79699 323.39842,122.87026 323.39842,122.87026 z " id="path2944" style="fill:#ffffff;fill-opacity:0.21621622;fill-rule:evenodd;stroke: [...]
+  <path d="M 301.20484,87.358137 C 301.20484,87.358137 328.64399,95.362972 341.64148,90.026415 C 354.63896,84.689858 370.52479,64.677768 376.30145,62.009490 C 382.07811,59.341212 393.80140,55.204486 403.91056,61.875183 C 414.01972,68.545879 414.20475,61.174325 417.09309,75.849857 C 419.98142,90.525389 421.07058,116.70920 409.51726,119.37748 C 397.96393,122.04576 301.20484,87.358137 301.20484,87.358137 z " id="path2244" style="fill:url(#linearGradient2384);fill-opacity:1.0000000;fill-rule [...]
+  <path d="M 218.88740,176.74547 L 302.64901,92.694694 C 302.64901,92.694694 295.42818,88.692276 298.31651,82.021579 C 301.20484,75.350883 305.53735,62.009490 319.97900,63.343629 C 334.42065,64.677768 358.97146,60.675350 360.41563,70.014325 C 361.85979,79.353300 358.97146,87.358137 360.41563,95.362972 C 361.85979,103.36781 354.63896,98.031251 350.30647,103.36781 C 345.97397,108.70437 234.77323,200.75997 234.77323,200.75997 L 217.44324,194.08928 L 218.88740,176.74547 z " id="path2256" sty [...]
+  <path d="M 385.10077,66.392322 C 390.10869,61.169767 399.80431,61.930627 403.80524,66.266999 C 410.88961,69.796767 423.71893,76.521741 414.49331,94.573243 C 411.19724,104.89065 405.52039,117.68233 402.05654,108.42469 C 403.05678,123.60200 401.55413,73.172745 385.10077,66.392322 z " id="path2319" style="fill:#000000;fill-opacity:0.32432428;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+  <path d="M 129.34914,254.12554 C 129.34914,254.12554 135.12581,226.10862 143.79080,222.10620 C 152.45579,218.10379 179.89493,206.09654 187.11577,200.75997 C 194.33659,195.42341 205.88992,174.07719 213.11074,168.74064 C 220.33157,163.40408 262.21237,120.71162 272.32154,114.04092 C 282.43069,107.37022 291.09568,80.687440 296.87234,82.021579 C 302.64901,83.355719 308.42567,88.692276 302.64901,98.031251 C 296.87234,107.37022 221.77574,176.74547 221.77574,182.08203 C 221.77574,187.41858 224 [...]
+  <path d="M 129.34914,252.83508 C 129.34914,252.83508 129.34914,270.93204 130.79331,276.96437 C 132.23748,282.99669 135.12581,290.53709 142.34664,293.55325 C 149.56746,296.56941 191.44826,311.65022 237.66156,313.15830 C 283.87486,314.66637 302.64901,311.65022 327.19983,302.60173 C 351.75063,293.55325 356.08313,289.02901 358.97146,281.48861 C 361.85979,273.94820 364.74813,260.37548 351.75063,260.37548 C 338.75315,260.37548 321.42316,279.98052 309.86983,286.01284 C 298.31651,292.04516 234 [...]
+  <path d="M 195.78076,207.43067 C 195.78076,207.43067 171.22995,214.10137 162.56495,219.43793 C 153.89996,224.77448 153.89996,222.10620 155.34412,226.10862 C 156.78829,230.11105 179.89493,242.11829 223.21990,232.77932 C 266.54488,223.44034 341.64148,206.09654 314.20233,207.43067 C 286.76319,208.76481 239.10573,222.10620 228.99656,220.77206 C 218.88740,219.43793 195.78076,207.43067 195.78076,207.43067 z " id="path2240" style="fill:#ffffff;fill-opacity:0.34594592;fill-rule:evenodd;stroke: [...]
+  <path d="M 360.41563,264.79867 C 360.41563,264.79867 361.85979,241.54083 382.07812,227.00468 C 402.29643,212.46854 438.40057,192.11793 445.62140,181.94263 C 452.84222,171.76733 452.84222,167.40648 452.84222,167.40648 C 452.84222,167.40648 458.61889,203.74685 454.28639,213.92215 C 449.95390,224.09746 395.07560,247.35529 387.85478,247.35529 C 380.63395,247.35529 383.52228,247.35529 376.30145,250.26250 C 369.08063,253.16974 360.41563,264.79867 360.41563,264.79867 z " id="path2242" style=" [...]
+  <path d="M 407.26729,111.03645 C 407.26729,111.03645 416.25453,100.45004 417.12868,92.445207 C 418.00283,84.440371 422.23003,81.407339 415.23679,73.402504 C 407.67468,65.867571 388.24936,58.459549 395.24260,59.793688 C 402.23584,61.127827 420.99668,67.422126 423.61914,75.426962 C 426.24161,83.431797 423.87623,93.692642 418.63130,101.69748 C 413.38637,109.70231 410.76391,123.04371 407.26729,111.03645 z " id="path2254" style="fill:#d2eeff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:n [...]
+  <path d="M 211.66657,183.41617 L 244.88239,192.75514 L 234.77323,156.73338 L 288.20736,150.06269 L 278.09820,115.37506 L 337.30898,106.03609 L 317.09067,90.026415 L 291.09568,98.031251 L 311.31401,128.71645 L 253.54738,138.05543 L 265.10071,172.74305 L 211.66657,183.41617 z " id="path2280" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:7.0876999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+  <path d="M 280.98653,196.75756 L 353.19480,122.04576 C 353.19480,122.04576 356.08313,116.70920 364.74813,118.04334 C 373.41312,119.37748 374.85729,124.71404 383.52228,127.38232 C 392.18727,130.05059 409.51726,135.38715 410.96142,134.05301 C 412.40559,132.71887 367.63645,171.40891 350.30647,179.41375 C 332.97649,187.41858 292.53985,200.75997 280.98653,196.75756 z " id="path2282" style="fill:#ffffff;fill-opacity:0.25945947;fill-rule:evenodd;stroke:#000000;stroke-width:1.6749290;stroke-li [...]
+  <path d="M 315.84766,87.292882 C 315.84766,87.292882 312.91077,79.950652 302.63165,78.482206 C 292.35253,77.013759 276.19961,90.229775 286.47874,88.761329 C 296.75786,87.292882 327.59524,79.950652 337.87436,82.887544 C 348.15348,85.824436 367.24328,101.97734 352.55882,101.97734 C 337.87436,101.97734 315.84766,87.292882 315.84766,87.292882 z " id="path2321" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:7.0876999;stroke-linecap:round;stroke-linejo [...]
+  <path d="M 292.35253,107.85113 C 292.35253,107.85113 305.56854,94.635113 312.91077,88.761329 C 320.25300,82.887544 314.37922,107.85113 318.78456,122.53559 C 323.18990,137.22005 320.25300,135.75160 320.25300,135.75160" id="path2323" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:7.0876999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+</svg>
diff --git a/images/presets/stationery.png b/images/presets/shop/stationery.png
similarity index 100%
rename from images/presets/stationery.png
rename to images/presets/shop/stationery.png
diff --git a/images/presets/shop/supermarket.svg b/images/presets/shop/supermarket.svg
new file mode 100644
index 0000000..c818ca6
--- /dev/null
+++ b/images/presets/shop/supermarket.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 0,0 0,1 1,1 2,11 12,11 12,10 3,10 2.875,9 12,9 14,3 2.34375,3 2,0 z m 3,12 c -0.552285,0 -1,0.447715 -1,1 0,0.552285 0.447715,1 1,1 0.552285,0 1,-0.447715 1,-1 0,-0.552285 -0.447715,-1 -1,-1 z m 8,0 c -0.552285,0 -1,0.447715 -1,1 0,0.552285 0.447715,1 1,1 0.552285,0 1,-0.447715 1,-1 0,-0.552285 -0.447715,-1 -1,-1 z" id="supermarket" style="fill:#ac39ac;fill-opacity:1" transform="translate(1,1)"/>
+</svg>
diff --git a/images/presets/shop/tailor.svg b/images/presets/shop/tailor.svg
new file mode 100644
index 0000000..98194f4
--- /dev/null
+++ b/images/presets/shop/tailor.svg
@@ -0,0 +1,276 @@
+<?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"
+   height="160.00000pt"
+   id="svg1"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/nicu/Desktop/camel"
+   sodipodi:docname="tailor.svg"
+   sodipodi:version="0.32"
+   width="160.00000pt"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\shopping\tailor.png"
+   inkscape:export-xdpi="7.471417"
+   inkscape:export-ydpi="7.471417">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>t-shirt</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>people</rdf:li>
+            <rdf:li>clothing</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Nicu Buculei</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 100 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="200 : 100 : 1"
+       inkscape:persp3d-origin="100 : 66.666667 : 1"
+       id="perspective27" />
+    <sodipodi:namedview
+       bordercolor="#666666"
+       borderopacity="1.0"
+       id="namedview4258"
+       inkscape:cx="475.26707"
+       inkscape:cy="250.37448"
+       inkscape:pageopacity="0.0"
+       inkscape:pageshadow="2"
+       inkscape:window-height="739"
+       inkscape:window-width="1012"
+       inkscape:window-x="0"
+       inkscape:window-y="26"
+       inkscape:zoom="0.61399264"
+       pagecolor="#ffffff" />
+    <defs
+       id="defs48974" />
+    <inkscape:perspective
+       id="perspective10"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:cx="136.40832"
+     inkscape:cy="105.59459"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="964"
+     inkscape:window-width="1400"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:zoom="3.5"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:current-layer="svg1" />
+  <g
+     id="g2776">
+    <path
+       d="M 7.7954843,97.974423 C 10.290914,101.81355 36.652504,113.09481 44.368044,110.75406 C 47.284684,107.83740 47.015394,94.483303 48.743004,91.066763 C 52.966024,104.35035 43.905434,176.72080 43.638884,188.04489 C 54.889704,195.91369 138.80798,195.06855 158.53939,190.38567 C 161.57065,186.08665 151.24785,122.39154 152.28354,93.254223 C 154.27906,96.173613 155.41755,103.83339 155.92932,107.10824 C 164.06882,109.44904 193.65360,102.73332 195.84116,99.087513 C 195.91708,91.794533 175. [...]
+       id="path2773"
+       sodipodi:nodetypes="ccccccccccccccc"
+       style="fill:#3c5889;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:3.7500000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;" />
+    <path
+       d="M 83.031250,4.5937500 C 77.453404,12.463182 62.437934,15.158085 53.167383,21.490685 C 44.010674,27.093993 32.007139,30.442347 27.666035,41.250980 C 18.785770,59.284699 10.555505,76.491767 5.7812500,96.062500 C 8.8870275,105.39955 22.528072,106.92179 30.846025,110.68957 C 33.644061,111.42432 39.435242,113.05978 43.115415,112.20193 C 46.081301,109.55837 46.936179,104.42150 48.433036,95.540179 C 52.511675,112.83820 43.036832,161.40210 41.815119,188.58266 C 49.433004,194.91429 64.4 [...]
+       id="path909"
+       sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc"
+       style="fill:#000000;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:3.7500000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000;" />
+  </g>
+  <g
+     id="g3615"
+     transform="matrix(0.445330,0.000000,0.000000,0.445330,77.48423,30.03762)">
+    <g
+       id="g1108"
+       transform="matrix(0.192029,0.000000,0.000000,0.192029,10.17587,51.14223)">
+      <path
+         d="M 281.59307,73.122280 C 289.29251,73.122280 294.53956,67.133790 294.53956,52.590450 C 294.53956,45.290240 292.48635,33.769600 282.04933,33.769600 C 272.75298,33.769600 268.76066,43.807390 268.76066,53.331870 C 268.76066,62.856340 271.84044,73.122280 281.53605,73.122280 L 281.59307,73.122280 M 281.76417,65.479910 C 279.19769,65.479910 277.82889,60.917210 277.94297,53.217810 C 277.88593,46.430910 279.19769,41.411990 281.76417,41.411990 C 284.44471,41.411990 285.35725,46.430910  [...]
+         id="path5010"
+         style="font-size:54.000000;font-style:normal;font-variant:normal;font-weight:800;font-stretch:condensed;fill:#000000;fill-opacity:0.20000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad Pro Black Cond;text-anchor:start;writing-mode:lr;" />
+      <path
+         d="M 278.23347,69.704248 C 285.93291,69.704248 291.17996,63.715755 291.17996,49.172417 C 291.17996,41.872203 289.12675,30.351569 278.68973,30.351569 C 269.39338,30.351569 265.40106,40.389360 265.40106,49.913838 C 265.40106,59.438309 268.48084,69.704248 278.17645,69.704248 L 278.23347,69.704248 M 278.40457,62.061874 C 275.83809,62.061874 274.46929,57.499178 274.58337,49.799772 C 274.52633,43.012880 275.83809,37.993957 278.40457,37.993957 C 281.08511,37.993957 281.99765,43.012880  [...]
+         id="path48984"
+         style="font-size:54.000000;font-style:normal;font-variant:normal;font-weight:800;font-stretch:condensed;fill:#ffffff;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Myriad Pro Black Cond;text-anchor:start;writing-mode:lr;" />
+    </g>
+    <g
+       id="g1092"
+       transform="matrix(5.915837e-2,0.000000,0.000000,5.915837e-2,85.92543,66.21956)">
+      <path
+         d="M 296.77515,91.480067 C 292.39395,91.203657 288.27505,93.294297 285.80645,96.823867 L 176.33769,96.823867 C 169.39928,96.823867 163.80645,102.38537 163.80645,109.32387 L 163.80645,132.57387 L 48.712696,173.57387 C 42.176676,175.90237 38.790386,183.03777 41.118946,189.57387 L 116.77520,401.94887 C 119.10376,408.48477 126.23919,411.87117 132.77520,409.54257 L 297.46265,350.88627 L 451.58765,392.51127 C 458.28595,394.32087 465.12185,390.39707 466.93145,383.69887 L 525.74395,166. [...]
+         id="path910"
+         style="fill-opacity:0.20161290;fill-rule:evenodd;stroke-width:1.0000000pt;" />
+      <path
+         d="M 289.13776,11.141406 C 282.19933,11.141406 276.61353,16.727213 276.61353,23.665638 L 276.61353,249.10181 C 276.61353,256.04023 282.19933,261.62604 289.13776,261.62604 L 514.57393,261.62604 C 521.51235,261.62604 527.09816,256.04023 527.09816,249.10181 L 527.09816,23.665638 C 527.09816,16.727213 521.51235,11.141406 514.57393,11.141406 L 289.13776,11.141406 z "
+         id="rect911"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;"
+         transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)" />
+      <path
+         d="M 310.90331,38.364491 C 305.39329,38.364491 300.95743,42.800352 300.95743,48.310369 L 300.95743,227.33617 C 300.95743,232.84619 305.39329,237.28205 310.90331,237.28205 L 489.92911,237.28205 C 495.43912,237.28205 499.87498,232.84619 499.87498,227.33617 L 499.87498,48.310369 C 499.87498,42.800352 495.43912,38.364491 489.92911,38.364491 L 310.90331,38.364491 z "
+         id="rect912"
+         style="fill:#f3e533;fill-opacity:1.0000000;fill-rule:evenodd;stroke-width:0.79413080pt;"
+         transform="matrix(0.965391,0.260807,-0.260807,0.965391,0.000000,0.000000)" />
+      <path
+         d="M 153.28592,91.074089 C 146.34750,91.074089 140.76169,96.659896 140.76169,103.59832 L 140.76169,329.03449 C 140.76169,335.97292 146.34750,341.55872 153.28592,341.55872 L 378.72209,341.55872 C 385.66052,341.55872 391.24632,335.97292 391.24632,329.03449 L 391.24632,103.59832 C 391.24632,96.659896 385.66052,91.074089 378.72209,91.074089 L 153.28592,91.074089 z "
+         id="rect913"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000pt;" />
+      <path
+         d="M 175.05156,118.29723 C 169.54154,118.29723 165.10568,122.73310 165.10568,128.24311 L 165.10568,307.26891 C 165.10568,312.77893 169.54154,317.21479 175.05156,317.21479 L 354.07736,317.21479 C 359.58738,317.21479 364.02324,312.77893 364.02324,307.26891 L 364.02324,128.24311 C 364.02324,122.73310 359.58738,118.29723 354.07736,118.29723 L 175.05156,118.29723 z "
+         id="rect914"
+         style="fill:#ff7f00;fill-rule:evenodd;stroke-width:0.79413080pt;" />
+      <path
+         d="M -32.155801,166.71382 C -39.094218,166.71382 -44.680019,172.29962 -44.680019,179.23804 L -44.680019,404.67401 C -44.680019,411.61243 -39.094218,417.19823 -32.155801,417.19823 L 193.28017,417.19823 C 200.21858,417.19823 205.80439,411.61243 205.80439,404.67401 L 205.80439,179.23804 C 205.80439,172.29962 200.21858,166.71382 193.28017,166.71382 L -32.155801,166.71382 z "
+         id="rect915"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999866pt;"
+         transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)" />
+      <path
+         d="M -10.390225,193.93687 C -15.900234,193.93687 -20.336090,198.37273 -20.336090,203.88274 L -20.336090,382.90835 C -20.336090,388.41836 -15.900234,392.85422 -10.390225,392.85422 L 168.63539,392.85422 C 174.14540,392.85422 178.58125,388.41836 178.58125,382.90835 L 178.58125,203.88274 C 178.58125,198.37273 174.14540,193.93687 168.63539,193.93687 L -10.390225,193.93687 z "
+         id="rect916"
+         style="fill:#bf0000;fill-rule:evenodd;stroke-width:0.79413080pt;"
+         transform="matrix(0.942003,-0.335604,0.335604,0.942003,0.000000,0.000000)" />
+    </g>
+    <g
+       id="g3612">
+      <path
+         d="M 137.86172,98.940798 C 137.86172,98.597796 137.81755,98.323413 137.72923,98.117602 C 137.64090,97.909520 137.52469,97.805486 137.38057,97.805486 C 137.23801,97.805486 137.12255,97.908384 137.03423,98.114179 C 136.94745,98.319974 136.90406,98.595508 136.90406,98.940798 C 136.90406,99.288375 136.94745,99.565045 137.03423,99.770840 C 137.12255,99.976651 137.23801,100.07955 137.38057,100.07955 C 137.52469,100.07955 137.64090,99.976651 137.72923,99.770840 C 137.81755,99.562758 13 [...]
+         id="path2369"
+         style="font-size:12.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:0.20000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans Mono;text-anchor:start;writing-mode:lr;" />
+      <path
+         d="M 137.28099,98.258217 C 137.28099,97.915215 137.23682,97.640832 137.14850,97.435021 C 137.06017,97.226939 136.94396,97.122905 136.79984,97.122905 C 136.65728,97.122905 136.54182,97.225803 136.45350,97.431598 C 136.36672,97.637393 136.32333,97.912927 136.32333,98.258217 C 136.32333,98.605794 136.36672,98.882464 136.45350,99.088259 C 136.54182,99.294070 136.65728,99.396967 136.79984,99.396967 C 136.94396,99.396967 137.06017,99.294070 137.14850,99.088259 C 137.23682,98.880177 13 [...]
+         id="text1744"
+         style="font-size:12.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans Mono;text-anchor:start;writing-mode:lr;" />
+    </g>
+  </g>
+  <g
+     id="g2546"
+     transform="matrix(0.7515689,0.9386509,-0.9386509,0.7515689,-43.774405,79.124311)">
+    <g
+       id="g3167"
+       transform="matrix(0.2747478,-4.8355285e-2,4.8355285e-2,0.2747478,-68.316528,-171.9058)">
+      <path
+         d="M 534.28571,642.36218 A 37.142857,64.285713 0 1 1 460,642.36218 A 37.142857,64.285713 0 1 1 534.28571,642.36218 z"
+         sodipodi:ry="64.285713"
+         sodipodi:rx="37.142857"
+         sodipodi:cy="642.36218"
+         sodipodi:cx="497.14285"
+         id="path2383"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3155"
+         d="M 500,578.07647 L 465.71429,112.36218 L 460,600.93361 L 500,578.07647 z"
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         d="M 534.28571,642.36218 A 37.142857,64.285713 0 1 1 460,642.36218 A 37.142857,64.285713 0 1 1 534.28571,642.36218 z"
+         sodipodi:ry="64.285713"
+         sodipodi:rx="37.142857"
+         sodipodi:cy="642.36218"
+         sodipodi:cx="497.14285"
+         id="path3157"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3159"
+         d="M 500,578.07647 L 465.71429,112.36218 L 460,600.93361 L 500,578.07647 z"
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       transform="matrix(-0.2747478,-4.8355285e-2,-4.8355285e-2,0.2747478,236.6762,-171.9058)"
+       id="g3183">
+      <path
+         sodipodi:type="arc"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3185"
+         sodipodi:cx="497.14285"
+         sodipodi:cy="642.36218"
+         sodipodi:rx="37.142857"
+         sodipodi:ry="64.285713"
+         d="M 534.28571,642.36218 A 37.142857,64.285713 0 1 1 460,642.36218 A 37.142857,64.285713 0 1 1 534.28571,642.36218 z" />
+      <path
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 500,578.07647 L 465.71429,112.36218 L 460,600.93361 L 500,578.07647 z"
+         id="path3187"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path3189"
+         sodipodi:cx="497.14285"
+         sodipodi:cy="642.36218"
+         sodipodi:rx="37.142857"
+         sodipodi:ry="64.285713"
+         d="M 534.28571,642.36218 A 37.142857,64.285713 0 1 1 460,642.36218 A 37.142857,64.285713 0 1 1 534.28571,642.36218 z" />
+      <path
+         style="opacity:0.98999999;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 500,578.07647 L 465.71429,112.36218 L 460,600.93361 L 500,578.07647 z"
+         id="path3191"
+         sodipodi:nodetypes="cccc" />
+    </g>
+  </g>
+  <rect
+     y="-143.82388"
+     x="26.839664"
+     height="0"
+     width="5.579412"
+     id="rect3197"
+     style="opacity:0.98999999;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5.57941198;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#efeb00;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     d="M 191.14286,154.28572 C 191.14286,154.28572 158.94854,133.46013 154.28571,128.28572 C 149.62289,123.11131 127.03797,128.75119 119.42857,129.71429 C 111.81916,130.67738 100.93288,142.6351 98.285713,149.14286 C 95.638543,155.65063 96.409243,164.06359 100.57143,170.28572 C 104.73361,176.50785 114.44891,183.33626 121.14285,182.00001 C 127.8368,180.66375 135.43084,176.05619 136.28571,170.85715 C 137.14059,165.6581 133.57065,156.53689 130,153.71429 C 126.42935,150.8917 121.02564,150.43 [...]
+     id="path3330"
+     sodipodi:nodetypes="czzzzzzzz" />
+</svg>
diff --git a/images/presets/shop/tattoo.svg b/images/presets/shop/tattoo.svg
new file mode 100644
index 0000000..868a2e7
--- /dev/null
+++ b/images/presets/shop/tattoo.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="581.8125"
+   height="380.1875"
+   viewBox="0 0 581.8125 380.1875"
+   enable-background="new 0 0 580 580"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="06.svg"><metadata
+   id="metadata21"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs19">
+	
+</defs><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview17"
+   showgrid="true"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="1.1508772"
+   inkscape:cx="249.56066"
+   inkscape:cy="184.73928"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2"><inkscape:grid
+     type="xygrid"
+     id="grid3001"
+     empspacing="5"
+     visible="true"
+     enabled="true"
+     snapvisiblegridlinesonly="true"
+     originx="0.90625px"
+     originy="-99.90625px" /></sodipodi:namedview>
+
+<rect
+   style="fill:#ffccaa;fill-opacity:1;stroke:#e5e7e5;stroke-width:1.45502162;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+   id="rect3003"
+   width="378.75961"
+   height="580.34497"
+   x="-379.47357"
+   y="0.73377991"
+   transform="matrix(0,-1,1,0,0,0)" /><g
+   id="Layer_2_1_"
+   style="fill:#000000"
+   transform="matrix(0,-1.130235,1.130235,0,-37.70721,519.16517)">
+	<g
+   id="g9"
+   style="fill:#000000">
+		<path
+   clip-rule="evenodd"
+   d="m 270.681,338.544 c 48.514,-21.003 92.012,-49.875 123.051,-89.62 14.844,-19.009 28.994,-42.481 36.986,-69.351 7.547,-25.367 10.215,-57.255 6.758,-86.42 -0.186,-1.568 0.609,-4.383 -1.424,-5.334 -8.576,42.141 -24.096,79.291 -46.232,106.691 -3.227,-87.322 -53,-137.918 -128.029,-154.702 -0.415,0.059 -0.387,0.563 -0.356,1.067 -0.217,0.02 -0.422,0.052 -0.355,0.356 31.414,15.679 58.166,38.176 76.105,68.638 17.434,29.602 27.641,72.926 19.916,118.784 -8.588,7.534 -19.117,15.023 -29.518,19.5 [...]
+   id="path11"
+   style="fill:#000000;fill-rule:evenodd"
+   inkscape:connector-curvature="0" />
+		<path
+   clip-rule="evenodd"
+   d="m 448.144,256.392 c -34.807,41.824 -79.549,76.415 -132.652,100.29 -0.229,2.255 2.32,3.315 3.557,4.623 9.328,9.866 18.551,21.595 26.672,33.073 48.688,-33.349 81.818,-82.245 106.336,-139.765 0,-0.237 0,-0.475 0,-0.711 -1.909,-1.045 -3.194,1.628 -3.913,2.49 z"
+   id="path13"
+   style="fill:#000000;fill-rule:evenodd"
+   inkscape:connector-curvature="0" />
+		<path
+   clip-rule="evenodd"
+   d="m 193.49,285.037 c 36.541,0 66.164,-30.763 66.164,-68.711 0,-36.721 -27.739,-66.714 -62.644,-68.614 14.513,10.002 24.213,28.144 24.213,48.866 0,31.528 -22.453,57.086 -50.151,57.086 -18.345,0 -34.386,-11.215 -43.13,-27.948 4.411,33.505 32.073,59.321 65.548,59.321 z"
+   id="path15"
+   style="fill:#000000;fill-rule:evenodd"
+   inkscape:connector-curvature="0" />
+	</g>
+</g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/shop/ticket.svg b/images/presets/shop/ticket.svg
new file mode 100644
index 0000000..c48628a
--- /dev/null
+++ b/images/presets/shop/ticket.svg
@@ -0,0 +1,105 @@
+<?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"
+   width="492.54626"
+   height="492.54675"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="ticket2.svg">
+  <defs
+     id="defs4">
+	
+
+		
+		
+	</defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-309.51441"
+     inkscape:cy="245.84328"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1018"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-112.37155,-285.65871)">
+    <g
+       style="opacity:0.5;fill:#4d4d4d"
+       id="g2994"
+       transform="translate(68.644928,241.93196)">
+			
+				<rect
+   style="fill:#4d4d4d"
+   x="271.20801"
+   y="195.659"
+   transform="matrix(0.7071,0.7071,-0.7071,0.7071,262.6363,-186.1794)"
+   width="169.69901"
+   height="56.567001"
+   id="rect2996" />
+
+			
+				<rect
+   style="fill:#4d4d4d"
+   x="105.154"
+   y="361.71201"
+   transform="matrix(0.7071,0.7071,-0.7071,0.7071,331.4186,-20.126)"
+   width="169.69901"
+   height="56.567001"
+   id="rect2998" />
+
+			
+				<rect
+   style="fill:#4d4d4d"
+   x="189.99899"
+   y="234.015"
+   transform="matrix(0.7071,0.7071,-0.7071,0.7071,296.2747,-104.9703)"
+   width="169.69901"
+   height="142.271"
+   id="rect3000" />
+
+		</g>
+    <path
+       style="fill:#ac39ac;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       d="m 558.82393,499.78696 40.836,-40.835 c 7.011,-7.01 7.01,-18.376 0,-25.386 l -142.648,-142.649 c -7.012,-7.011 -18.377,-7.011 -25.388,0 l -40.836,40.835 1.6,1.6 -3.862,3.862 -1.6,-1.599 -269.297,269.296 c -7.01,7.011 -7.01,18.375 0.001,25.387 l 44.008,44.008 c 15.086,-15.086 39.547,-15.086 54.633,0 15.086,15.087 15.086,39.547 0,54.633 l 44.008,44.009 c 7.009,7.01 18.375,7.01 25.386,0 l 269.297,-269.296 -1.6,-1.599 3.864,-3.863 1.598,1.597 z m -41.159,-41.159 6.593,6.593 -3.862,3 [...]
+       id="path3002" />
+  </g>
+</svg>
diff --git a/images/presets/shop/tobacco.svg b/images/presets/shop/tobacco.svg
new file mode 100644
index 0000000..5b6a857
--- /dev/null
+++ b/images/presets/shop/tobacco.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.1"
+   id="svg2"
+   viewBox="0 0 16 16"
+   height="100%"
+   width="100%">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(-189.96206,-428.35103)"
+     style="display:inline"
+     id="layer1">
+    <path
+       id="path3349"
+       d="m 205.51409,437.19895 c -0.01,2.8e-4 -0.0193,0.002 -0.0293,0.004 -0.15985,0.04 -1.50565,0.0329 -2.05342,0.0834 -0.52679,0.0485 -1.49997,0.21273 -2.35915,0.61235 -0.85919,0.39962 -2.51623,1.29586 -3.68512,2.05514 -1.09532,0.71149 -1.88821,1.12895 -2.12799,1.1889 -0.23977,0.0599 -0.49949,0 -0.65934,-0.27974 -0.15984,-0.27973 -0.47959,-1.37878 -0.47959,-1.37878 -0.20364,-0.51375 -0.89912,-0.61936 -1.51853,-0.63934 -0.5795,-0.0187 -1.76968,0.20294 -1.90822,0.78921 -0.0851,0.36019 - [...]
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       id="path4217"
+       d="m 189.96878,432.88483 c 0.18005,-1.42838 2.55049,-3.14676 2.85356,-3.26589 0.61391,-0.70441 -1.05475,1.21586 -1.43685,1.80096 -0.57435,0.81025 -0.88645,1.84982 -0.22851,2.83507 0.52198,0.74825 1.72588,2.0939 0.90214,1.8228 -0.82374,-0.27109 -2.20502,-1.84963 -2.09034,-3.19294 z"
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-opacity:1" />
+    <path
+       id="path4219"
+       d="m 192.49379,433.50891 c 0.80034,0.44313 1.56528,1.22871 1.88396,2.27397 0.31867,1.04527 -0.38448,1.71955 -1.00122,1.77039 0.93016,-1.59519 -0.0746,-2.19704 -0.94984,-3.3013 -0.21028,-0.4541 -0.15423,-0.54501 0.0671,-0.74306 z"
+       style="opacity:1;fill:#ac39ac;fill-opacity:1;stroke:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/shop/toys.svg b/images/presets/shop/toys.svg
new file mode 100644
index 0000000..859eb6a
--- /dev/null
+++ b/images/presets/shop/toys.svg
@@ -0,0 +1,704 @@
+<?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"
+   height="478.29468"
+   id="svg1441"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/petri/Desktop/Omat Open ClipArt kuvat"
+   sodipodi:docname="toys.svg"
+   sodipodi:version="0.32"
+   width="439.00189"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Rubik's Cube</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>toy</rdf:li>
+            <rdf:li>entertainment</rdf:li>
+            <rdf:li>rubik</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Petri Lummemäki</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Petri Lummemäki</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Petri Lummemäki</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <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="perspective68" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-324.88138"
+     inkscape:cy="516.59705"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="691"
+     inkscape:window-width="1024"
+     inkscape:window-x="132"
+     inkscape:window-y="174"
+     inkscape:zoom="0.46181819"
+     pagecolor="#ffffff"
+     showborder="false"
+     showgrid="true"
+     showguides="false" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-119.99828,-330.27552)">
+    <rect
+       height="255.02942"
+       id="rect11246"
+       rx="9.3528385"
+       ry="20.971859"
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.834898,-0.550405,0.864612,0.502441,0,0)"
+       width="265.99307"
+       x="-390.42795"
+       y="513.17072" />
+    <rect
+       height="219.91122"
+       id="rect27716"
+       rx="13.064381"
+       ry="23.303207"
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.835911,-0.548865,-1.115279e-2,0.999938,0,0)"
+       width="264.3092"
+       x="415.70972"
+       y="822.96997" />
+    <rect
+       height="57.293526"
+       id="rect5005"
+       rx="10.133426"
+       ry="7.2579436"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.827575,-0.561355,0,1,0,0)"
+       width="75.21022"
+       x="419.25668"
+       y="978.3692" />
+    <rect
+       height="57.293526"
+       id="rect5765"
+       rx="11.229022"
+       ry="8.7938929"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.827575,-0.561355,0,1,0,0)"
+       width="75.210205"
+       x="421.13376"
+       y="908.84857" />
+    <rect
+       height="57.293526"
+       id="rect5767"
+       rx="6.5736008"
+       ry="13.178907"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.827575,-0.561355,0,1,0,0)"
+       width="75.21019"
+       x="421.13422"
+       y="838.35925" />
+    <rect
+       height="57.293526"
+       id="rect5769"
+       rx="10.163038"
+       ry="11.398757"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.829696,-0.558215,0,1,0,0)"
+       width="75.633125"
+       x="505.80771"
+       y="835.5835" />
+    <rect
+       height="57.293526"
+       id="rect5771"
+       rx="7.9782119"
+       ry="13.613882"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.829696,-0.558215,0,1,0,0)"
+       width="75.633224"
+       x="505.80765"
+       y="905.64008" />
+    <rect
+       height="57.293526"
+       id="rect5773"
+       rx="11.255482"
+       ry="14.721444"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.829696,-0.558215,0,1,0,0)"
+       width="75.633179"
+       x="503.93579"
+       y="974.91052" />
+    <rect
+       height="57.293526"
+       id="rect5775"
+       rx="10.163044"
+       ry="11.43206"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.829696,-0.558215,0,1,0,0)"
+       width="75.633118"
+       x="589.6532"
+       y="972.40277" />
+    <rect
+       height="57.293526"
+       id="rect5777"
+       rx="9.0706072"
+       ry="11.660234"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.829696,-0.558215,0,1,0,0)"
+       width="75.63308"
+       x="590.87598"
+       y="907.00354" />
+    <rect
+       height="57.293526"
+       id="rect5779"
+       rx="9.0705986"
+       ry="7.4581566"
+       style="fill:#f41809;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.829696,-0.558215,0,1,0,0)"
+       width="75.633041"
+       x="590.87598"
+       y="836.25555" />
+    <rect
+       height="213.04601"
+       id="rect12043"
+       rx="7.9972653"
+       ry="20.767048"
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858337,0.513087,-1.174769e-2,0.999931,0,0)"
+       width="264.44156"
+       x="147.73535"
+       y="386.89716" />
+    <rect
+       height="57.293526"
+       id="rect8055"
+       rx="9.5210896"
+       ry="12.922897"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="323.19785"
+       y="530.08698" />
+    <rect
+       height="57.293526"
+       id="rect8815"
+       rx="9.5210896"
+       ry="6.7671733"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="324.43497"
+       y="458.46951" />
+    <rect
+       height="57.293526"
+       id="rect8817"
+       rx="9.5210896"
+       ry="8.7938929"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="324.43497"
+       y="390.69592" />
+    <rect
+       height="57.293526"
+       id="rect8819"
+       rx="9.5210896"
+       ry="11.16412"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="240.31349"
+       y="530.0022" />
+    <rect
+       height="57.293526"
+       id="rect8821"
+       rx="9.5210896"
+       ry="11.967944"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="240.31349"
+       y="460.63699" />
+    <rect
+       height="57.293526"
+       id="rect8823"
+       rx="9.5210896"
+       ry="9.5977173"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="240.91728"
+       y="393.49118" />
+    <rect
+       height="57.293526"
+       id="rect8825"
+       rx="9.5210896"
+       ry="8.1824446"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="155.55878"
+       y="530.29865" />
+    <rect
+       height="57.293526"
+       id="rect8827"
+       rx="9.5210896"
+       ry="7.8389387"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="156.79585"
+       y="463.12341" />
+    <rect
+       height="57.293526"
+       id="rect8829"
+       rx="9.5210896"
+       ry="6.9402728"
+       style="fill:#0000dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.845439,0.534071,0,1,0,0)"
+       width="73.621025"
+       x="156.79585"
+       y="394.70844" />
+    <rect
+       height="70.533371"
+       id="rect10429"
+       rx="5.3930631"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099503"
+       x="517.44788"
+       y="295.32614" />
+    <rect
+       height="70.533371"
+       id="rect11189"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="601.07758"
+       y="296.96936" />
+    <rect
+       height="70.533371"
+       id="rect11191"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="685.29041"
+       y="296.95157" />
+    <rect
+       height="70.533371"
+       id="rect11193"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="518.03107"
+       y="210.43871" />
+    <rect
+       height="70.533371"
+       id="rect11195"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="601.07758"
+       y="210.40494" />
+    <rect
+       height="70.533371"
+       id="rect11197"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="687.09668"
+       y="210.41183" />
+    <rect
+       height="70.533371"
+       id="rect11199"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="518.03107"
+       y="127.44115" />
+    <rect
+       height="70.533371"
+       id="rect11201"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="602.27228"
+       y="126.19641" />
+    <rect
+       height="70.533371"
+       id="rect11203"
+       rx="5.3930578"
+       ry="11.47725"
+       style="fill:#ffe200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.858218,0.513286,-0.834194,0.551472,0,0)"
+       width="71.099434"
+       x="687.09668"
+       y="127.35677" />
+    <rect
+       height="9.7216167"
+       id="rect27914"
+       rx="6.9345498"
+       ry="6.6661358"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726181"
+       x="661.7085"
+       y="367.68378" />
+    <rect
+       height="9.7216244"
+       id="rect29432"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="704.979"
+       y="476.18167" />
+    <rect
+       height="9.7216244"
+       id="rect29434"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="806.00317"
+       y="572.07086" />
+    <rect
+       height="9.7216282"
+       id="rect29436"
+       rx="6.9345455"
+       ry="6.6661444"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726135"
+       x="792.71735"
+       y="482.18478" />
+    <rect
+       height="9.7216244"
+       id="rect29438"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="877.44794"
+       y="483.28918" />
+    <rect
+       height="9.7216244"
+       id="rect29440"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="898.237"
+       y="576.9176" />
+    <rect
+       height="9.7216244"
+       id="rect29442"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="975.47064"
+       y="576.513" />
+    <rect
+       height="9.7216244"
+       id="rect29444"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="903.29169"
+       y="658.4646" />
+    <rect
+       height="9.7216244"
+       id="rect29446"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="992.48706"
+       y="662.67249" />
+    <rect
+       height="9.7216244"
+       id="rect29448"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="1076.4445"
+       y="664.12" />
+    <rect
+       height="9.7216244"
+       id="rect29450"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="748.61578"
+       y="370.9436" />
+    <rect
+       height="9.7216244"
+       id="rect29452"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="624.30426"
+       y="261.58273" />
+    <rect
+       height="9.7216244"
+       id="rect29454"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="709.68542"
+       y="260.00729" />
+    <rect
+       height="9.7216244"
+       id="rect29456"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="794.41608"
+       y="261.11169" />
+    <rect
+       height="9.7216244"
+       id="rect29458"
+       rx="6.9345469"
+       ry="6.6661415"
+       style="opacity:0.41807909;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.86241,0.50621,-0.971166,0.238406,0,0)"
+       width="66.726151"
+       x="835.73175"
+       y="369.87903" />
+    <path
+       d="M 259.60921,501.82904 A 9.5964489,9.0913725 0 1 1 240.41631,501.82904 A 9.5964489,9.0913725 0 1 1 259.60921,501.82904 z"
+       id="path29466"
+       sodipodi:cx="250.01276"
+       sodipodi:cy="501.82904"
+       sodipodi:rx="9.5964489"
+       sodipodi:ry="9.0913725"
+       sodipodi:type="arc"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.392835,0.139358,-0.257425,0.725654,518.5323,177.6341)" />
+    <path
+       d="M 259.60921,501.82904 A 9.5964489,9.0913725 0 1 1 240.41631,501.82904 A 9.5964489,9.0913725 0 1 1 259.60921,501.82904 z"
+       id="path29470"
+       sodipodi:cx="250.01276"
+       sodipodi:cy="501.82904"
+       sodipodi:rx="9.5964489"
+       sodipodi:ry="9.0913725"
+       sodipodi:type="arc"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.392835,0.139358,-0.257425,0.725654,448.5323,226.0992)" />
+    <path
+       d="M 259.60921,501.82904 A 9.5964489,9.0913725 0 1 1 240.41631,501.82904 A 9.5964489,9.0913725 0 1 1 259.60921,501.82904 z"
+       id="path29472"
+       sodipodi:cx="250.01276"
+       sodipodi:cy="501.82904"
+       sodipodi:rx="9.5964489"
+       sodipodi:ry="9.0913725"
+       sodipodi:type="arc"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.392835,0.139358,-0.257425,0.725654,447.5323,297.6341)" />
+    <path
+       d="M 259.60921,501.82904 A 9.5964489,9.0913725 0 1 1 240.41631,501.82904 A 9.5964489,9.0913725 0 1 1 259.60921,501.82904 z"
+       id="path29474"
+       sodipodi:cx="250.01276"
+       sodipodi:cy="501.82904"
+       sodipodi:rx="9.5964489"
+       sodipodi:ry="9.0913725"
+       sodipodi:type="arc"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.392835,0.139358,-0.257425,0.725654,520.4068,246.6341)" />
+    <path
+       d="M 259.60921,501.82904 A 9.5964489,9.0913725 0 1 1 240.41631,501.82904 A 9.5964489,9.0913725 0 1 1 259.60921,501.82904 z"
+       id="path29476"
+       sodipodi:cx="250.01276"
+       sodipodi:cy="501.82904"
+       sodipodi:rx="9.5964489"
+       sodipodi:ry="9.0913725"
+       sodipodi:type="arc"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.392835,0.139358,-0.257425,0.725654,379.5323,272.6341)" />
+    <path
+       d="M 259.60921,501.82904 A 9.5964489,9.0913725 0 1 1 240.41631,501.82904 A 9.5964489,9.0913725 0 1 1 259.60921,501.82904 z"
+       id="path29478"
+       sodipodi:cx="250.01276"
+       sodipodi:cy="501.82904"
+       sodipodi:rx="9.5964489"
+       sodipodi:ry="9.0913725"
+       sodipodi:type="arc"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.392835,0.139358,-0.257425,0.725654,376.4068,344.6341)" />
+    <rect
+       height="9.7216396"
+       id="rect29482"
+       rx="6.9345427"
+       ry="6.666152"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726105"
+       x="674.46985"
+       y="975.60944" />
+    <rect
+       height="9.7216358"
+       id="rect30242"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="762.71179"
+       y="978.85162" />
+    <rect
+       height="9.7216358"
+       id="rect30244"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="845.4859"
+       y="975.84167" />
+    <rect
+       height="9.7216339"
+       id="rect30246"
+       rx="6.9345384"
+       ry="6.6661491"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726059"
+       x="532.28467"
+       y="759.51495" />
+    <rect
+       height="9.7216358"
+       id="rect30248"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="448.58212"
+       y="761.51392" />
+    <rect
+       height="9.7216358"
+       id="rect30250"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="611.38715"
+       y="758.0542" />
+    <rect
+       height="9.7216358"
+       id="rect30252"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="565.07758"
+       y="869.57178" />
+    <rect
+       height="9.7216358"
+       id="rect30254"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="644.18005"
+       y="868.11102" />
+    <rect
+       height="9.7216358"
+       id="rect30256"
+       rx="6.9345398"
+       ry="6.6661501"
+       style="opacity:0.24858757;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="matrix(0.842776,-0.538264,-0.228865,0.973458,0,0)"
+       width="66.726074"
+       x="729.39166"
+       y="864.89191" />
+  </g>
+</svg>
diff --git a/images/presets/travel.png b/images/presets/shop/travel.png
similarity index 100%
rename from images/presets/travel.png
rename to images/presets/shop/travel.png
diff --git a/images/presets/vacuum_cleaner.png b/images/presets/shop/vacuum_cleaner.png
similarity index 100%
rename from images/presets/vacuum_cleaner.png
rename to images/presets/shop/vacuum_cleaner.png
diff --git a/images/presets/variety_store.png b/images/presets/shop/variety_store.png
similarity index 100%
rename from images/presets/variety_store.png
rename to images/presets/shop/variety_store.png
diff --git a/images/presets/shop/vehicle.svg b/images/presets/shop/vehicle.svg
new file mode 100644
index 0000000..37885af
--- /dev/null
+++ b/images/presets/shop/vehicle.svg
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.1"
+   height="12.8"
+   width="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="vehicle2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="30.16"
+     inkscape:cx="7.6295494"
+     inkscape:cy="12.161979"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="true"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="0"
+       originy="1.3053417e-005" />
+  </sodipodi:namedview>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.02941835;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4135"
+     width="15.970582"
+     height="12.770582"
+     x="0.014709175"
+     y="0.014709175" />
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     id="Car"
+     d="m 0.80590777,7.2573175 c -0.036385,-2.68144 -0.1818775,-0.37415 1.43425303,-4.34954 1.1692315,-2.70222001 -0.01558,-1.97470001 6.0332315,-2.07343001 5.3836597,0.10912 4.2975727,-0.67036 5.5343587,2.19815001 1.548585,3.67399 1.429066,1.75124 1.418673,4.14687 -0.05719,2.62947 0.914593,1.95392 -7.2336427,2.04226 -8.08588703,-0.10913 -7.12971203,0.57682 -7.18687353,-1.96431 z m 1.63692603,-2.5879 1.106864,-2.55672 c 0.2065205,-0.45415 0.1406285,-0.38711 0.6235895,-0.38974 l 7.7386717 [...]
+     inkscape:connector-curvature="0" />
+  <circle
+     style="fill:#ffffff;fill-opacity:1;stroke:none"
+     r="1.0108"
+     cy="6.5822749"
+     cx="2.6805849"
+     id="LeftLamp" />
+  <circle
+     style="fill:#ffffff;fill-opacity:1;stroke:none"
+     r="1.0108"
+     cy="6.5822749"
+     cx="13.320568"
+     id="RightLamp" />
+</svg>
diff --git a/images/presets/shop/video.png b/images/presets/shop/video.png
new file mode 100644
index 0000000..d94ee66
Binary files /dev/null and b/images/presets/shop/video.png differ
diff --git a/images/presets/shop/video_games.png b/images/presets/shop/video_games.png
new file mode 100644
index 0000000..1b7fd8a
Binary files /dev/null and b/images/presets/shop/video_games.png differ
diff --git a/images/presets/shop/wine.svg b/images/presets/shop/wine.svg
new file mode 100644
index 0000000..68977c7
--- /dev/null
+++ b/images/presets/shop/wine.svg
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448)  -->
+<svg xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns1="http://sozi.baierouge.fr" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" style="enable-background:new 0 0 115.301 213.549" so [...]
+<sodipodi:namedview id="base" bordercolor="#666666" inkscape:pageshadow="2" inkscape:window-width="640" pagecolor="#ffffff" inkscape:zoom="1.7700856" inkscape:window-x="22" borderopacity="1.0" inkscape:current-layer="Layer_1" inkscape:cx="57.650504" inkscape:cy="106.77450" inkscape:window-y="22" inkscape:window-height="540" inkscape:pageopacity="0.0"/>
+<g id="g3">
+	<path id="path5" style="fill:#004033" d="m5 211.61c11.05 2.07 23.26 2.045 34.444 1.188 3.036-0.232 6.068-0.386 9.101-0.674 2.379-0.226 5.315-0.275 7.106-2.065 1.747-1.747 1.149-5.769 1.149-8.057v-94.975c0-8.788 0.214-17.604-0.109-26.388-0.229-6.192-2.711-11.658-6.59-16.431-3.716-4.572-9.016-8.547-10.59-14.394-0.521-1.934-0.274-4.273-0.359-6.259-0.188-4.422-0.377-8.843-0.565-13.265-0.147-3.454-0.294-6.907-0.441-10.361-0.026-0.609-0.043-1.212-0.043-1.821 0-1.111 0.341-0.642 0.9-1.2 0.677- [...]
+	<path id="path7" style="stroke:#000000;stroke-width:.4;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m5 211.61c11.05 2.07 23.26 2.045 34.444 1.188 3.036-0.232 6.068-0.386 9.101-0.674 2.379-0.226 5.315-0.275 7.106-2.065 1.747-1.747 1.149-5.769 1.149-8.057v-94.975c0-8.788 0.214-17.604-0.109-26.388-0.229-6.192-2.711-11.658-6.59-16.431-3.716-4.572-9.016-8.547-10.59-14.394-0.521-1.934-0.274-4.273-0.359-6.259-0.188-4.422-0.377-8.843-0.565-13.265-0.147-3.454-0.294-6.907-0.441-10.361 [...]
+	<path id="path9" style="fill:#608F86" d="m3.3 82.413c1.035-0.027 2.067-0.134 3.101-0.2 0.499-0.032 2.784 0.121 3.1-0.2 0.44-0.446 0-3.395 0-4.074 0-1.166 0.314-2.364 0.491-3.514 0.694-4.503 3.413-8.609 5.959-12.271 2.635-3.79 4.871-6.976 5.082-11.66 0.256-5.693 0.512-11.387 0.768-17.081-0.591 0.034-3.157-0.197-3.5 0.2-0.253 0.293-0.068 1.799-0.082 2.166-0.129 3.392-0.258 6.783-0.386 10.175-0.083 2.173-0.236 3.849-0.801 5.947-0.558 2.071-2.757 4.169-4.17 5.695-3.464 3.741-6.667 7.445-9.4 [...]
+	<path id="path11" style="fill:#001F17" d="m56.8 206.31c0.305 6.307-8.062 6.021-12.532 6.207-5.929 0.246-11.829 0.594-17.767 0.594-5.868 0-11.746-0.367-17.582-0.948-4.512-0.449-8.719-0.938-8.719-6.422v-85.437-35.788c0-0.666-0.241-1.807 0.585-1.958 2.841-0.517 5.69-0.726 8.57-0.9 6.269-0.379 12.572-0.448 18.852-0.448 5.799 0 11.62 0.075 17.41 0.426 3.044 0.184 6.141 0.367 9.15 0.869 1.551 0.258 2.033 0.452 2.033 1.846v34.106 86.995 0.87"/>
+	<path id="path13" style="stroke:#292929;stroke-width:.2;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m56.8 206.31c0.305 6.307-8.062 6.021-12.532 6.207-5.929 0.246-11.829 0.594-17.767 0.594-5.868 0-11.746-0.367-17.582-0.948-4.512-0.449-8.719-0.938-8.719-6.422v-85.437-35.788c0-0.666-0.241-1.807 0.585-1.958 2.841-0.517 5.69-0.726 8.57-0.9 6.269-0.379 12.572-0.448 18.852-0.448 5.799 0 11.62 0.075 17.41 0.426 3.044 0.184 6.141 0.367 9.15 0.869 1.551 0.258 2.033 0.452 2.033 1.846v [...]
+	<path id="path15" style="fill:#FFFFFF" d="m43 68.013c1.098 11.516 1.223 23.416 0.988 34.979-0.016 0.756-0.019 8.904-0.395 8.928-3.045 0.197-5.979 0.362-8.938 1.152-0.622 0.166-2.357 1.413-2.856 1.341-0.843-0.121-0.399-2.254-0.399-3.224 0-2.735 0.051-5.49 0.118-8.225 0.192-7.824 0.461-15.903-0.649-23.67-0.252-1.763-0.369-3.586-0.369-5.367 0-0.925-0.277-2.005-0.1-2.915 0.086-0.44-0.274-1 0.285-1 0.618 0 1.211-0.033 1.827-0.084 1.778-0.148 3.551-0.724 5.287-1.116 1.564-0.348 3.897-0.279 5. [...]
+	<path id="path17" style="stroke:#A6A6A6;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m43 68.013c1.098 11.516 1.223 23.416 0.988 34.979-0.016 0.756-0.019 8.904-0.395 8.928-3.045 0.197-5.979 0.362-8.938 1.152-0.622 0.166-2.357 1.413-2.856 1.341-0.843-0.121-0.399-2.254-0.399-3.224 0-2.735 0.051-5.49 0.118-8.225 0.192-7.824 0.461-15.903-0.649-23.67-0.252-1.763-0.369-3.586-0.369-5.367 0-0.925-0.277-2.005-0.1-2.915 0.086-0.44-0.274-1 0.285-1 0.618 0 1.211-0.033 1.8 [...]
+	<path id="path19" style="fill:#C7D8C7" d="m31 81.513c-0.212-3.202-0.508-6.397-0.6-9.6-0.014-0.489-0.227-1.9 0.285-1.9 0.734 0 1.476-0.01 2.202-0.131 1.654-0.276 3.277-0.7 4.912-1.069 1.481-0.334 3.026-0.7 4.55-0.7 1.114 0 0.95 2.93 0.95 4.019 0 3.22 0.232 6.465 0.4 9.681-4.232-0.101-8.466-0.2-12.699-0.3"/>
+	<path id="path21" style="fill:#B8C2B8" d="m43.601 81.413c0.386 5.825 0.399 11.726 0.399 17.565 0 2.767-0.032 5.556-0.131 8.32-0.054 1.5-0.109 2.999-0.164 4.498-0.01 0.276-3.472 0.345-4.127 0.395-2.592 0.198-5.418 0.651-7.627 2.121-1.082 0.72-0.55-1.53-0.55-2.145 0-1.554 0.077-3.102 0.1-4.655 0.089-5.96 0.217-11.94 0.05-17.9-0.076-2.717 0.095-5.825-0.55-8.4 4.199 0.059 8.399 0.126 12.6 0.193"/>
+	<path id="path23" style="stroke:#608F86;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m30.3 75.613c4.688-1.101 9.227-2.405 14.101-2.1"/>
+	<path id="path25" style="stroke:#608F86;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m37.4 68.813c0.281 4.231 0.283 8.464 0.6 12.7"/>
+	<path id="path27" style="stroke:#336633;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m38 81.313c0.719 10.008 0.429 20.39-0.2 30.4"/>
+	<path id="path29" style="stroke:#608F86;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m30.9 80.712c4.852-1.04 8.946-2.466 14-2.2"/>
+	<path id="path31" style="stroke:#336633;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m30.8 85.712c2.282-0.342 4.593-0.837 6.741-1.696 2.252-0.9 4.999-0.616 7.36-0.503"/>
+	<path id="path33" style="fill:#404040" d="m38.8 35.913c-1.179-2.226-7.821-1.66-10.022-1.79-2.492-0.146-8.778-0.359-10.478 1.79 0.132-3.202 0.264-6.404 0.396-9.606 0.098-2.365 1-6.062 0.305-8.394-0.276-0.925-0.323-0.423-0.9-1-0.47-0.47-0.196-0.755-0.2-1.4-0.014-2.162-0.19-4.635 0.1-6.8 0.153-1.146 1.021-2.02 1.3-3.1 0.23-0.893 0.2-1.866 0.2-2.8 0-3.787 12.496-2.545 14.686-2.148 1.799 0.327 3.199 0.785 3.515 2.648 0.148 0.873-0.05 1.5 0.2 2.3 0.299 0.958 1.013 1.703 1.2 2.7 0.336 1.788 0. [...]
+	<path id="path35" style="stroke:#333333;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m38.8 35.913c-1.179-2.226-7.821-1.66-10.022-1.79-2.492-0.146-8.778-0.359-10.478 1.79 0.132-3.202 0.264-6.404 0.396-9.606 0.098-2.365 1-6.062 0.305-8.394-0.276-0.925-0.323-0.423-0.9-1-0.47-0.47-0.196-0.755-0.2-1.4-0.014-2.162-0.19-4.635 0.1-6.8 0.153-1.146 1.021-2.02 1.3-3.1 0.23-0.893 0.2-1.866 0.2-2.8 0-3.787 12.496-2.545 14.686-2.148 1.799 0.327 3.199 0.785 3.515 2.648 0.14 [...]
+	<path id="path37" style="stroke:#C7D8C7;stroke-width:.8;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m19.2 35.212c-0.162 4.795-0.324 9.591-0.486 14.386-0.139 4.107-3.858 7.537-6.447 10.342-2.65 2.871-5.781 6.018-7.508 9.562-2.124 4.359-3.078 8.197-3.56 13.011"/>
+		<line id="line39" style="stroke:#A6A6A6;stroke-width:.8;stroke-miterlimit:10;stroke-linecap:square;fill:none" y2="111.61" y1="82.513" x2="1.2" x1="1.2"/>
+	<path id="path41" style="fill:#CC7A00" d="m38.8 35.913c-1.179-2.226-7.821-1.66-10.022-1.79-2.492-0.146-8.778-0.359-10.478 1.79 0.132-3.202 0.264-6.404 0.396-9.606 0.098-2.365 1-6.062 0.305-8.394-0.276-0.925-0.323-0.423-0.9-1-0.47-0.47-0.196-0.755-0.2-1.4-0.014-2.162-0.19-4.635 0.1-6.8 0.153-1.146 1.021-2.02 1.3-3.1 0.23-0.893 0.2-1.866 0.2-2.8 0-3.787 12.496-2.545 14.686-2.148 1.799 0.327 3.199 0.785 3.515 2.648 0.148 0.873-0.05 1.5 0.2 2.3 0.299 0.958 1.013 1.703 1.2 2.7 0.336 1.788 0. [...]
+	<path id="path43" style="stroke:#662900;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m38.8 35.913c-1.179-2.226-7.821-1.66-10.022-1.79-2.492-0.146-8.778-0.359-10.478 1.79 0.132-3.202 0.264-6.404 0.396-9.606 0.098-2.365 1-6.062 0.305-8.394-0.276-0.925-0.323-0.423-0.9-1-0.47-0.47-0.196-0.755-0.2-1.4-0.014-2.162-0.19-4.635 0.1-6.8 0.153-1.146 1.021-2.02 1.3-3.1 0.23-0.893 0.2-1.866 0.2-2.8 0-3.787 12.496-2.545 14.686-2.148 1.799 0.327 3.199 0.785 3.515 2.648 0.14 [...]
+	<path id="path45" style="stroke:#662900;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m33.3 0.613c1.494 1.524 1.4 4.729 1.4 6.675 0 0.424 0.4 0.799 0.4 1.363v3.342c0 1.299 0.067 2.461-0.301 3.62-0.159 0.501-0.5 0.599-0.5 1.297v5.371 12.031"/>
+	<path id="path47" style="stroke:#FFE699;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m32.601 0.513c0.688 0.616 0.86 1.346 1 2.2 0.246 1.494 0.5 2.609 0.5 4.247 0 1.557 0.3 3.35 0.3 5.034 0 0.503 0.386 3.275-0.2 3.57-1.441 0.724-0.6 5.609-0.6 6.718v12.031"/>
+	<path id="path49" style="stroke:#FFE699;stroke-width:.8;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m19.2 35.113c0.261-5.993 0.7-12.001 0.7-18"/>
+	<path id="path51" style="stroke:#FFE699;stroke-width:.8;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m18.7 15.913c0.837-2.588-0.421-5.924 0.45-8.55 0.363-1.096 0.915-1.967 1.05-2.95 0.119-0.868 0.218-1.785 0.3-2.7"/>
+	<path id="path53" style="stroke:#662900;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m38.9 35.913c-1.761-2.2-7.486-1.635-10.123-1.79-2.491-0.146-8.777-0.359-10.477 1.79"/>
+	<path id="path55" style="fill:#99B399" d="m1.2 195.41v9.764c0 1.041 0.133 2.061 0.6 2.937-0.2-4.23-0.4-8.46-0.6-12.7"/>
+	<path id="path57" style="fill:#FFF9E6" d="m56.8 194.21c-1.234 1.89-6.354 1.704-8.375 1.982-2.735 0.378-5.556 0.537-8.313 0.669-5.986 0.287-11.961 0.358-17.952 0.224-6.184-0.141-12.394-0.465-18.488-1.571-1.531-0.278-3.471-0.202-3.471-2.027v-5.655-49.853-21.2-4.653c0-0.673 1.437-0.316 1.966-0.316h47.013 6.918c0.943 0 0.703 0.15 0.703 1.088v16.124c-0.001 21.63-0.001 43.93-0.001 65.2"/>
+	<path id="path59" style="stroke:#994D4D;stroke-width:.2;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m56.8 194.21c-1.234 1.89-6.354 1.704-8.375 1.982-2.735 0.378-5.556 0.537-8.313 0.669-5.986 0.287-11.961 0.358-17.952 0.224-6.184-0.141-12.394-0.465-18.488-1.571-1.531-0.278-3.471-0.202-3.471-2.027v-5.655-49.853-21.2-4.653c0-0.673 1.437-0.316 1.966-0.316h47.013 6.918c0.943 0 0.703 0.15 0.703 1.088v16.124 65.288"/>
+	<path id="path61" style="stroke:#662900;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m17.8 16.712c3.069-1.75 7.54-1.4 10.957-1.4 3.134 0 7.819-0.423 10.543 1.4"/>
+	<path id="path63" style="stroke:#662900;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m19.4 4.913c2.898-0.972 6.188-0.8 9.2-0.8 2.97 0 6.253-0.19 9.1 0.8"/>
+	<path id="path65" style="stroke:#333333;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m19.5 2.712c0.743-2.906 6.912-2.4 9.101-2.4"/>
+	<path id="path67" style="stroke:#333333;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m28.601 0.212c2.219 0.148 8.353-0.416 9.1 2.5"/>
+	<path id="path69" style="stroke:#737373;stroke-width:.2;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m30.9 81.212c4.261 0 8.545 0.403 12.8 0.3"/>
+	<path id="path71" style="stroke:#000000;stroke-width:.7;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m91.3 212.61c3.538 0.093 7.097 0.151 10.625-0.213 3.385-0.35 8.002-0.254 10.982-2.117 3.101-1.938-4.953-3.053-6.307-3.27-3.849-0.616-7.585-1.331-11.4-2.201 1.076-1.688-0.254-4.25-0.445-6.128-0.294-2.879-0.542-5.759-0.777-8.644-0.489-6.011-0.678-11.997-0.678-18.027 0-2.958 0.099-5.883 0.283-8.835 0.095-1.506 0.278-2.956 0.5-4.449 0.117-0.787 0.342-0.543 0.917-1.116 0.856-0.852 [...]
+	<path id="path73" style="fill:#E6E6E6" d="m91.3 212.61c3.538 0.093 7.097 0.151 10.625-0.213 3.385-0.35 8.002-0.254 10.982-2.117 3.101-1.938-4.953-3.053-6.307-3.27-3.849-0.616-7.585-1.331-11.4-2.201 1.076-1.688-0.254-4.25-0.445-6.128-0.294-2.879-0.542-5.759-0.777-8.644-0.489-6.011-0.678-11.997-0.678-18.027 0-2.958 0.099-5.883 0.283-8.835 0.095-1.506 0.278-2.956 0.5-4.449 0.117-0.787 0.342-0.543 0.917-1.116 0.856-0.852 1.225-1.353 0.65-2.5-0.893-1.784 1.021-2.072 2.405-3.117 2.412-1.818 5 [...]
+	<path id="path75" style="stroke:#BFBFBF;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m91.3 212.61c3.538 0.093 7.097 0.151 10.625-0.213 3.385-0.35 8.002-0.254 10.982-2.117 3.101-1.938-4.953-3.053-6.307-3.27-3.849-0.616-7.585-1.331-11.4-2.201 1.076-1.688-0.254-4.25-0.445-6.128-0.294-2.879-0.542-5.759-0.777-8.644-0.489-6.011-0.678-11.997-0.678-18.027 0-2.958 0.099-5.883 0.283-8.835 0.095-1.506 0.278-2.956 0.5-4.449 0.117-0.787 0.342-0.543 0.917-1.116 0.856-0.852 [...]
+	<path id="path77" style="fill:#E6E0E6" d="m91.3 212.61c3.538 0.093 7.097 0.151 10.625-0.213 3.385-0.35 8.002-0.254 10.982-2.117 3.101-1.938-4.953-3.053-6.307-3.27-3.849-0.616-7.585-1.331-11.4-2.201 1.076-1.688-0.254-4.25-0.445-6.128-0.294-2.879-0.542-5.759-0.777-8.644-0.489-6.011-0.678-11.997-0.678-18.027 0-2.958 0.099-5.883 0.283-8.835 0.095-1.506 0.278-2.956 0.5-4.449 0.117-0.787 0.342-0.543 0.917-1.116 0.856-0.852 1.225-1.353 0.65-2.5-0.893-1.784 1.021-2.072 2.405-3.117 2.412-1.818 5 [...]
+	<path id="path79" style="stroke:#BFB6BF;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m91.3 212.61c3.538 0.093 7.097 0.151 10.625-0.213 3.385-0.35 8.002-0.254 10.982-2.117 3.101-1.938-4.953-3.053-6.307-3.27-3.849-0.616-7.585-1.331-11.4-2.201 1.076-1.688-0.254-4.25-0.445-6.128-0.294-2.879-0.542-5.759-0.777-8.644-0.489-6.011-0.678-11.997-0.678-18.027 0-2.958 0.099-5.883 0.283-8.835 0.095-1.506 0.278-2.956 0.5-4.449 0.117-0.787 0.342-0.543 0.917-1.116 0.856-0.852 [...]
+	<path id="path81" style="fill:#1A1A1A" d="m90 200.41c0.198 0.264 0 0.493 0.4 0.7-0.837 0.482-1.674 0.966-2.512 1.448-0.488 0.282-0.165 1.909-0.288 2.251-1.774-2.34 1.076-3.74 2.4-4.4"/>
+	<path id="path83" style="stroke:#1A1A1A;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m90 200.41c0.198 0.264 0 0.493 0.4 0.7-0.837 0.482-1.674 0.966-2.512 1.448-0.488 0.282-0.165 1.909-0.288 2.251-1.446-1.906 0.445-4.174 2.5-4.299"/>
+	<path id="path85" style="fill:#FFFFFF" d="m88 201.31c0.948-2.587 0.808-6.192 1.043-9.071 0.317-3.895 0.577-7.808 0.664-11.716 0.091-4.105 0.258-8.207 0.093-12.313-0.085-2.104-0.238-4.207-0.374-6.308-0.07-1.081 0-3.075-0.626-3.692 0.223 0.03 2.101 0.177 2.101 0.252 0 2.35 0.018 4.699 0 7.049-0.032 4.423-0.131 8.849-0.211 13.271-0.084 4.68-0.15 9.362-0.293 14.041-0.071 2.342-0.14 4.683-0.285 7.021-0.05 0.8-1.326 1.05-2.112 1.47"/>
+	<path id="path87" style="stroke:#A6A6A6;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m88 201.31c0.948-2.587 0.808-6.192 1.043-9.071 0.317-3.895 0.577-7.808 0.664-11.716 0.091-4.105 0.258-8.207 0.093-12.313-0.085-2.104-0.238-4.207-0.374-6.308-0.07-1.081 0-3.075-0.626-3.692 0.223 0.03 2.101 0.177 2.101 0.252 0 2.35 0.018 4.699 0 7.049-0.032 4.423-0.131 8.849-0.211 13.271-0.084 4.643-0.161 9.286-0.289 13.928-0.063 2.246-0.125 4.494-0.265 6.737-0.087 1.401-0.985  [...]
+	<path id="path89" style="stroke:#4D4D4D;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m89.7 180.71c0.16-4.171 0.285-8.327 0.1-12.5-0.09-2.03-0.137-4.074-0.3-6.1-0.078-0.967-0.057-3.386-0.7-3.9"/>
+	<path id="path91" style="stroke:#000000;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m72.4 94.813c4.551-0.675 9.193-1 13.8-1"/>
+	<path id="path93" style="fill:#800066" d="m94.601 153.81c5.144-2.968 9.994-6.139 13.335-11.212 3.312-5.029 5.953-10.865 6.472-16.967 0.265-3.119 0.498-6.186 0.393-9.321-0.05-1.475-0.196-2.952-0.295-4.424-0.011-0.161-0.985-0.076-1.126-0.076h-21.422-22.146-1.402c-0.277 0-0.439 3.722-0.483 4.213-0.266 2.999 0.066 6.066 0.32 9.052 0.503 5.918 2.752 11.801 5.991 16.721 3.547 5.389 8.382 8.782 13.806 12.079 0.559 0.34 2.913-0.165 3.657-0.165 0.798 0.01 2.584 0.23 2.91 0.11"/>
+	<path id="path95" style="stroke:#999999;stroke-width:.2;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m110.8 95.212c-1.957 1.689-7.026 1.167-9.477 1.261-3.346 0.129-6.685 0.239-10.032 0.239-3.473 0-6.937-0.122-10.406-0.26-2.547-0.102-6.821 0.305-8.984-1.24"/>
+	<path id="path97" style="stroke:#FFFFFF;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m102.7 96.513c-5.981 0.527-11.92 0.312-17.9 0.2"/>
+	<path id="path99" style="stroke:#333333;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m90.3 96.613c-5.721 0-12.135 0.389-17.699-1.1"/>
+	<path id="path101" style="fill:#FFFFFF" d="m108.1 99.712c0.915 5.404 1.196 11.027 0.899 16.5-0.1 1.83 0.42 2.86-1.493 2.983-1.501 0.097-3.062 0.106-4.547 0.34-2.315 0.364-4.387 1.443-6.56 1.877 0.958-5.458-0.051-11.182-0.726-16.607-0.078-0.623-0.301-3.593 0.185-3.593 1.418 0 2.838-0.153 4.237-0.369 2.47-0.38 5.79-0.46 8-1.128"/>
+	<path id="path103" style="stroke:#A6A6A6;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m108.1 99.712c0.915 5.404 1.196 11.027 0.899 16.5-0.1 1.83 0.42 2.86-1.493 2.983-1.501 0.097-3.062 0.106-4.547 0.34-2.315 0.364-4.387 1.443-6.56 1.877 0.962-5.477-0.235-10.954-0.7-16.4-0.057-0.664-0.523-3.33-0.1-3.8 0.325-0.361 3.415-0.202 4.05-0.3 2.814-0.434 5.581-1.16 8.45-1.1"/>
+	<path id="path105" style="stroke:#4D4D4D;stroke-width:.6;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m68.8 124.71c0.905 6.622 2.942 12.709 7.101 18"/>
+	<path id="path107" style="fill:#E6B8DA" d="m69.101 113.91c2.173 0.1 2.3-0.064 2.3 2.167 0 1.515-0.101 3.021-0.101 4.537 0 3.072 0.195 6.042 0.5 9.097-2.719-0.883-2.657-4.963-2.773-7.281-0.075-1.47-0.027-2.94-0.027-4.4 0-1.28 0.438-2.98 0.101-4.13"/>
+	<path id="path109" style="fill:#CC8FB8" d="m70.4 113.91c1.483-0.29 1 2.056 1 3.037 0 1.371-0.101 2.739-0.101 4.112 0 2.921 0.211 5.746 0.5 8.65-1.61-1.902-1.451-5.069-1.574-7.407-0.145-2.79 0.111-5.6 0.175-8.39"/>
+	<path id="path111" style="stroke:#808080;stroke-width:.6;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m72.101 96.013c-1.516 4.841-2.335 9.816-3.2 14.8"/>
+	<path id="path113" style="stroke:#B3B3B3;stroke-width:.6;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m72.3 96.513c-1.438 4.849-2.473 9.884-3.1 14.9"/>
+	<path id="path115" style="fill:#FFFFFF" d="m69.5 105.11c-0.307 3.446-1.031 6.821-1.235 10.298-0.101 1.727-0.176 4.731 0.235 6.103 0-2.952-0.019-5.89 0.165-8.837 0.15-2.414 1.443-5.714 1.035-7.963-0.025 0.19-0.151 0.32-0.2 0.4"/>
+	<path id="path117" style="stroke:#B3B3B3;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m69.5 105.11c-0.307 3.446-1.031 6.821-1.235 10.298-0.101 1.727-0.176 4.731 0.235 6.103 0-2.952-0.019-5.89 0.165-8.837 0.15-2.414 1.443-5.714 1.035-7.963-0.065 0.125-0.048 0.271-0.1 0.4"/>
+	<path id="path119" style="stroke:#FFFFFF;stroke-width:.6;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m73.4 96.113c-1.096 4.755-1.7 9.713-1.7 14.6"/>
+		<line id="line121" style="stroke:#999999;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" y2="112.01" y1="112.01" x2="113.3" x1="109.1"/>
+	<path id="path123" style="fill:#FFFFFF" d="m111.9 100.21c2.105 6.738 2.6 13.876 2.6 20.9-1.193-0.821-0.503-4.543-0.64-6.176-0.23-2.772-0.264-5.687-0.902-8.401-0.575-2.451-2.399-6.424-1.658-8.823-0.09 0.907 0.64 2.011 0.6 2.503"/>
+	<path id="path125" style="stroke:#999999;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m111.9 100.21c2.105 6.738 2.6 13.876 2.6 20.9-1.193-0.821-0.503-4.543-0.64-6.176-0.23-2.772-0.264-5.687-0.902-8.401-0.575-2.451-2.399-6.424-1.658-8.823-0.093 0.946 0.51 1.706 0.7 2.6"/>
+	<path id="path127" style="stroke:#E6E6E6;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m96 107.01c4.339-0.896 8.209-2 12.7-2"/>
+	<path id="path129" style="fill:#E673CF" d="m109 111.71c0.297 1.555 0.169 3.541-0.025 5.108-0.063 0.495 0.152 1.927-0.175 2.292-0.325 0.364-2.558 0.161-3.1 0.199-1.883 0.134-3.743 0.271-5.571 0.76-1.285 0.343-2.477 1.038-3.729 1.341 0.578-3.087 0.324-6.48 0.1-9.601 4.169-0.03 8.329-0.06 12.499-0.1"/>
+	<path id="path131" style="stroke:#E6E6E6;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m102.5 100.41c0.272 3.788 0.046 7.645 0.7 11.399"/>
+	<path id="path133" style="fill:#CC8FB8" d="m72.5 131.71c2.246 4.828 4.498 8.96 8.5 12.6-2.833-4.2-5.667-8.4-8.5-12.6"/>
+	<path id="path135" style="fill:#CC8FB8" d="m83.4 149.41c-0.382-0.082-0.626-0.174-0.9 0.101 1.753 1.193 3.618 2.161 5.4 3.299-6.248-2.81-13.425-8.608-15.601-15.399 1.07 0.108 1.309 1.333 1.852 2.093 0.975 1.363 1.927 2.742 3 4.029 1.715 2.057 4.265 4.966 6.749 5.979-0.217 0.05-0.333-0.04-0.5-0.1"/>
+	<path id="path137" style="stroke:#E6E6E6;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m78.7 94.113c5.598 0 11.196-0.3 16.8-0.3"/>
+	<path id="path139" style="fill:#807380" d="m110.4 95.513c-0.665 0.269-1.384 0.31-2.101 0.4 1.115 0.197 0.958 0.295 1.4 1.2 0.553 1.13 0.95 2.544 1.8 3.5 0.38-1.166-0.151-2.706-0.448-3.893-0.338-1.35-0.574-1.07-1.651-0.808 0.3-0.108 1-0.398 1-0.396"/>
+	<path id="path141" style="stroke:#665766;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m110.4 95.513c-0.665 0.269-1.384 0.31-2.101 0.4 1.115 0.197 0.958 0.295 1.4 1.2 0.553 1.13 0.95 2.544 1.8 3.5 0.38-1.166-0.151-2.706-0.448-3.893-0.338-1.35-0.574-1.07-1.651-0.808 0.354-0.157 0.741-0.306 1.1-0.4"/>
+	<path id="path143" style="fill:#4D003D" d="m112.4 120.11c-2.04 11.986-6.65 24.283-18.994 28.661-1.36 0.482-5.711-0.552-6.456 0.938-0.235 0.471 0.742 1.657 1.05 1.9 0.845 0.669 2.833 0.952 3.877 0.89 3.048-0.18 5.729-0.729 8.497-2.03 1.071-0.505 2.171-1.979 3.078-2.79 1.093-0.978 2.162-1.994 3.086-3.134 3.678-4.543 5.503-9.882 6.168-15.648 0.367-3.185 0.557-6.274 0.656-9.48 0.011-0.318 0.188-2.16-0.362-2.207-0.65-0.05-0.63 2.55-0.61 2.9"/>
+	<path id="path145" style="fill:#CCCCCC" d="m95.9 151.51c-2.588 1.491-5.813 1.431-8.4 0 2.563 0.76 6.199 1.18 8.4 0"/>
+	<path id="path147" style="stroke:#CCCCCC;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m95.9 151.51c-2.588 1.491-5.813 1.431-8.4 0 2.563 0.76 6.199 1.18 8.4 0"/>
+	<path id="path149" style="stroke:#CCCCCC;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m79.101 114.31c0.12 4.127-1.216 10.255 0.899 14"/>
+	<path id="path151" style="stroke:#CCCCCC;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m80.4 130.81c0.284 1.136 0.518 2.306 0.899 3.4"/>
+	<path id="path153" style="stroke:#4D003D;stroke-width:1.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m69 123.01c0.571 0.591 1.602 1.06 2.4 1.199"/>
+	<path id="path155" style="stroke:#CCCCCC;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m93.3 157.11c0.112-0.832 0.061-1.946 0.5-2.7 0.841-1.442 3.682-2.461 5.158-3.352 4.014-2.423 7.447-5.963 9.942-9.898 5.737-9.048 5.961-19.081 5.3-29.45"/>
+	<path id="path157" style="stroke:#CCCCCC;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m68.601 111.61c-0.644 1.552-0.4 4.267-0.4 6.118 0 2.597 0.173 5.114 0.394 7.704 0.407 4.779 2.316 9.3 4.273 13.604 1.956 4.304 5.691 7.807 9.244 10.767 1.815 1.513 3.935 2.581 5.97 3.778 1.248 0.734 0.997 2.123 1.219 3.43"/>
+	<path id="path159" style="fill:#A69DA6" d="m91 158.11c1.191 0.05 3.807-0.456 3.8-2.1-0.007-1.604-2.523-2.096-3.699-2.101-1.263-0.005-3.663 0.459-3.7 2.101-0.039 1.67 2.721 2.18 3.599 2.1"/>
+	<path id="path161" style="fill:#4D3D4D" d="m94.5 157.31c1.661-1.446-0.702-4.168-2.3-3.199 0.471 0.44 1.081 0.901 1.3 1.699 0.175 0.64-0.473 2.14 1 1.5"/>
+	<path id="path163" style="fill:#FFFFFF" d="m94 157.41c-2.146 1.892-9.439-0.415-5.85-2.8 0.593-0.395 1.51-0.431 0.55 0.05-1.256 0.628-1.656 1.593-0.5 2.55 0.895 0.74 2.858 0.97 3.95 0.75 0.528-0.105 0.965-0.294 1.45-0.449 0.471-0.15 0.422-0.16 0.4-0.1"/>
+	<path id="path165" style="stroke:#FFFFFF;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m94 157.41c-2.146 1.892-9.439-0.415-5.85-2.8 0.737-0.49 1.019-0.58 0.649 0-0.481 0.757-2.337 1.299-0.8 2.449 1.039 0.778 2.624 1.047 3.9 0.951 0.71-0.054 1.976-0.677 2.1-0.5"/>
+	<path id="path167" style="stroke:#404040;stroke-width:.2;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m92.601 158.01c-1.17 0.394-2.821 0.281-4-0.201-1.19-0.487-2.424-2.034-0.9-2.899"/>
+	<path id="path169" style="fill:#808080" d="m93.8 158.01c-0.278 0.172-1.8 0.432-1.8 0.556v5.944c0 3.147-0.794 7.401 0 10.299 0.517-5.53 1.873-11.24 1.8-16.8"/>
+	<path id="path171" style="stroke:#808080;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m93.8 158.01c-0.278 0.172-1.8 0.432-1.8 0.556v5.944c0 3.147-0.794 7.401 0 10.299 0.516-5.511 1.809-11.164 1.8-16.699"/>
+	<path id="path173" style="fill:#4D3D4D" d="m93.7 158.11c-0.276 0.035-0.223 0.219-0.4 0.1-1.624 7.661-1.448 15.894-1.599 23.725-0.083 4.35-0.001 8.71-0.001 13.06 0 0.635-0.128 5.312 0.149 5.312 1.064 0 2.264 0.28 3.15 0.9-0.279-1.44-0.363-3.028-0.5-4.5-0.058-0.626 0.1-1.445-0.314-1.935-0.858-1.015-0.987-1.205-1.035-2.515-0.145-3.906-0.234-7.813-0.332-11.721-0.092-3.659-0.019-7.3-0.019-10.959 0-1.962 0.051-3.912 0.2-5.871 0.124-1.62 0.897-4.19 0.701-5.6"/>
+	<path id="path175" style="stroke:#999999;stroke-width:.4;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m95.5 155.51c0.562 1.587-1.061 1.694-1.7 2.6-0.819 1.16-0.741 4.17-0.8 5.6"/>
+	<path id="path177" style="fill:#261926" d="m91.3 205.61c0.725 0.149 4.882-0.079 3.801-0.801 3.856 0.891 7.612 1.579 11.5 2.201 1.819 0.291 6.507 0.469 7.3 2.399-2.207 2.052-7.212 1.889-10.086 2.195-4.146 0.442-8.256 0.499-12.414 0.505-4.015 0.006-7.997-0.022-12-0.45-3.005-0.32-8.294-0.108-10.601-2.25 0.794-1.931 5.481-2.108 7.301-2.399 3.888-0.622 7.644-1.311 11.5-2.201-1.104 0.75 3.375 0.99 3.704 0.81"/>
+	<path id="path179" style="stroke:#000000;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m112.2 210.21c-8.52 2.436-17.855 1.9-26.6 1.9"/>
+	<path id="path181" style="fill:#403040" d="m91.3 210.11c-3.56-0.118-7.854-0.006-11.199-1.4-2.477-1.032-1.015-1.943 0.803-2.361 2.232-0.513 4.465-1.026 6.697-1.539-1.105 0.735 3.114 0.903 3.8 0.9 0.685-0.003 4.801-0.166 3.7-0.9l6.696 1.539c1.816 0.418 3.281 1.328 0.804 2.361-1.595 0.665-3.905 0.98-5.616 1.108-1.596 0.12-4.206 0.73-5.684 0.29"/>
+	<path id="path183" style="fill:#BFBFBF" d="m79.3 208.31c2.367-0.833 4.733-1.667 7.101-2.5-0.844-0.847-4.639 0.789-5.882 1.108-0.565 0.145-1.864 0.161-1.918 0.792-0.03 0.35 0.641 0.6 0.699 0.6"/>
+	<path id="path185" style="stroke:#BFBFBF;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m79.3 208.31c2.367-0.833 4.733-1.667 7.101-2.5-0.808-0.811-4.215 0.681-5.396 0.983-0.752 0.193-3.779 0.744-1.704 1.617"/>
+	<path id="path187" style="fill:#404040" d="m94.7 201.41c0.335 0.641 1.275 3.3-0.101 3.3-0.721 0-1.703 0.086-2.049-0.6-0.389-0.77 0.749-1.469 0.749-2.35 0.001-1.15 0.463-0.82 1.401-0.35"/>
+	<path id="path189" style="stroke:#404040;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m94.7 201.41c0.335 0.641 1.275 3.3-0.101 3.3-0.721 0-1.703 0.086-2.049-0.6-0.389-0.77 0.749-1.469 0.749-2.35 0.001-1.15 0.463-0.82 1.401-0.35"/>
+	<path id="path191" style="stroke:#0D0D0D;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m93.601 201.21c0.442 0.79 0.24 2.143-0.2 2.9"/>
+	<path id="path193" style="fill:#FFFFFF" d="m89.7 201.01c-1.179 0.541-3.619 2.406-1.7 3.699-0.357-0.838-0.314-2.076 0.75-2.5 0.221-0.088 1.96-0.364 1.95-0.8-0.011-0.46-0.624-0.47-1-0.4"/>
+	<path id="path195" style="stroke:#FFFFFF;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m89.7 201.01c-1.179 0.541-3.619 2.406-1.7 3.699-0.357-0.838-0.314-2.076 0.75-2.5 0.221-0.088 1.96-0.364 1.95-0.8-0.011-0.46-0.624-0.47-1-0.4"/>
+	<path id="path197" style="fill:#8C8C8C" d="m95.601 205.21c-0.346 0.339-0.819 0.525-1.301 0.6 1.272 0.971 2.785 2.668 4.301 2.801 1.313 0.115 2.795-1.062 4.1-0.6-0.066 0.066-0.134 0.133-0.2 0.199 0.044 0.204 0.246 0.021 0.101 0.4 0.675-0.009 2.359-1.061 1.038-1.391-2.68-0.67-5.36-1.34-8.039-2.01"/>
+	<path id="path199" style="stroke:#1A1A1A;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m95.601 205.21c-0.346 0.339-0.819 0.525-1.301 0.6 1.272 0.971 2.785 2.668 4.301 2.801 1.313 0.115 2.795-1.062 4.1-0.6-0.066 0.066-0.134 0.133-0.2 0.199 0.044 0.204 0.246 0.021 0.101 0.4 0.691-0.009 1.792-0.576 1.399-1.301"/>
+		<line id="line201" style="stroke:#A6A6A6;stroke-width:.4;stroke-miterlimit:10;stroke-linecap:square;fill:none" y2="208.31" y1="205.81" x2="98.4" x1="95.101"/>
+	<path id="path203" style="fill:#0D0D0D" d="m104.1 207.71c-2.745-0.245-5.433-1.766-8-2.199 4.93 1.122 9.819 2.133 14.8 3v0.199c-2.41-0.48-4.49-0.58-6.8-1"/>
+	<path id="path205" style="stroke:#0D0D0D;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m104.1 207.71c-2.745-0.245-5.433-1.766-8-2.199 4.93 1.122 9.819 2.133 14.8 3v0.199c-2.353-0.471-4.477-0.471-6.7-1"/>
+	<path id="path207" style="fill:#736273" d="m78.5 207.41c-1.172-0.044-9.936 0.434-9.6 2 0.478 2.229 8.867-0.86 10.399-1-0.46-0.22-0.81-0.74-0.799-1"/>
+	<path id="path209" style="stroke:#000000;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m87.9 204.61c1.208 1.003 3.335 0.6 4.8 0.6"/>
+	<path id="path211" style="stroke:#E6E6E6;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m98.2 111.71c3.79-0.541 6.837-1.933 10.8-1.7"/>
+		<line id="line213" style="stroke:#4D4D4D;stroke-width:.3;stroke-miterlimit:10;stroke-linecap:square;fill:none" y2="112.01" y1="112.01" x2="109.1" x1="85.2"/>
+	<path id="path215" style="stroke:#4D4D4D;stroke-width:.1;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m68.8 209.41c1.69 2.642 7.9 2.565 10.65 2.851 3.945 0.407 7.899 0.449 11.861 0.449 3.805 0 7.617-0.003 11.406-0.395 2.981-0.309 9.271-0.161 11.183-2.905"/>
+	<path id="path217" style="stroke:#4D003D;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m103.1 111.71c0.318 2.702 0.055 5.21-0.2 7.9"/>
+	<path id="path219" style="stroke:#4D003D;stroke-width:.5;stroke-miterlimit:10;stroke-linecap:square;fill:none" d="m96.7 117.11c4.332-0.651 7.937-2.234 12.4-2"/>
+</g>
+<metadata><rdf:RDF><cc:Work><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/><dc:publisher><cc:Agent rdf:about="http://openclipart.org/"><dc:title>Openclipart</dc:title></cc:Agent></dc:publisher><dc:title>Architetto -- Botiglia di vino</dc:title><dc:date>2009-04-20T20:21:02</dc:date><dc:description>Wine bottle by Francesco 'Architetto' Rollandin.</dc:descriptio [...]
\ No newline at end of file
diff --git a/images/presets/sightseeing.png b/images/presets/sightseeing.png
deleted file mode 100644
index a072be7..0000000
Binary files a/images/presets/sightseeing.png and /dev/null differ
diff --git a/images/presets/sightseeing/archaeological.svg b/images/presets/sightseeing/archaeological.svg
new file mode 100644
index 0000000..2340193
--- /dev/null
+++ b/images/presets/sightseeing/archaeological.svg
@@ -0,0 +1,148 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="320"
+   height="320"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="archaeological.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="350"
+     inkscape:cy="177.14286"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="309"
+     inkscape:window-y="227" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-231.42857,-429.50504)">
+    <rect
+       style="opacity:1;fill:#55d400;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2162"
+       width="320"
+       height="320"
+       x="231.42857"
+       y="429.50504"
+       ry="0" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#ffe680;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2166"
+       sodipodi:cx="431.42856"
+       sodipodi:cy="589.50507"
+       sodipodi:rx="82.85714"
+       sodipodi:ry="62.857143"
+       d="M 514.2857 589.50507 A 82.85714 62.857143 0 1 1  348.57142,589.50507 A 82.85714 62.857143 0 1 1  514.2857 589.50507 z"
+       transform="matrix(0.9655172,0,0,1.409091,14.876847,-281.16117)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#ffe680;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2168"
+       sodipodi:cx="358.57144"
+       sodipodi:cy="622.36218"
+       sodipodi:rx="75.714287"
+       sodipodi:ry="90"
+       d="M 434.28573 622.36218 A 75.714287 90 0 1 1  282.85715,622.36218 A 75.714287 90 0 1 1  434.28573 622.36218 z"
+       transform="matrix(1.1132075,0,0,1.3492063,-46.307278,-231.61854)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="458.57144"
+       sodipodi:cy="530.93359"
+       sodipodi:rx="32.857143"
+       sodipodi:ry="32.857143"
+       d="M 491.42859 530.93359 A 32.857143 32.857143 0 1 1  425.7143,530.93359 A 32.857143 32.857143 0 1 1  491.42859 530.93359 z"
+       transform="matrix(0.826087,0,0,0.826087,71.180125,83.764847)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2176"
+       sodipodi:cx="405.71429"
+       sodipodi:cy="595.2193"
+       sodipodi:rx="11.428572"
+       sodipodi:ry="11.428572"
+       d="M 417.14287 595.2193 A 11.428572 11.428572 0 1 1  394.28572,595.2193 A 11.428572 11.428572 0 1 1  417.14287 595.2193 z" />
+    <path
+       d="M 417.14287 595.2193 A 11.428572 11.428572 0 1 1  394.28572,595.2193 A 11.428572 11.428572 0 1 1  417.14287 595.2193 z"
+       sodipodi:ry="11.428572"
+       sodipodi:rx="11.428572"
+       sodipodi:cy="595.2193"
+       sodipodi:cx="405.71429"
+       id="path2178"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc"
+       transform="translate(-17.142857,-37.142857)" />
+    <g
+       id="g2184"
+       transform="matrix(1.0909091,0,0,0.9482759,-30.909089,32.954691)">
+      <rect
+         ry="12.340425"
+         y="526.64789"
+         x="329.99997"
+         height="165.71429"
+         width="20"
+         id="rect2180"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="10"
+         y="632.36218"
+         x="308.57141"
+         height="22.857143"
+         width="62.857143"
+         id="rect2182"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/attraction.svg b/images/presets/sightseeing/attraction.svg
new file mode 100644
index 0000000..650ab55
--- /dev/null
+++ b/images/presets/sightseeing/attraction.svg
@@ -0,0 +1,91 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="331.42856"
+   height="331.42856"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="sightseeing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-190.84221"
+     inkscape:cy="258.85125"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="66"
+     inkscape:window-y="87" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-208.57143,-266.64789)">
+    <rect
+       style="opacity:1;fill:#874e04;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2160"
+       width="331.42856"
+       height="331.42856"
+       x="208.57143"
+       y="266.64789" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2166"
+       width="74.285721"
+       height="204.01215"
+       x="337.14285"
+       y="285.21933"
+       ry="43.191769" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2170"
+       sodipodi:cx="197.85715"
+       sodipodi:cy="270.71426"
+       sodipodi:rx="39.285713"
+       sodipodi:ry="39.285713"
+       d="M 237.14286 270.71426 A 39.285713 39.285713 0 1 1  158.57143,270.71426 A 39.285713 39.285713 0 1 1  237.14286 270.71426 z"
+       transform="matrix(0.9409091,0,0,0.9409091,188.12012,286.0375)" />
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/battlefield.svg b/images/presets/sightseeing/battlefield.svg
new file mode 100644
index 0000000..3c634fe
--- /dev/null
+++ b/images/presets/sightseeing/battlefield.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="60.0000000" id="svg1" inkscape:version="0.38.1" sodipodi:docbase="/home/danny/flat/scalable/apps" sodipodi:docname="falconseye.svg" sodipodi:version="0.32" version="1.0" width="60.0000000" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" y="0">
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:23:49 2004)</dc:title>
+        <dc:description></dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>hash</rdf:li>
+            <rdf:li></rdf:li>
+            <rdf:li>application</rdf:li>
+            <rdf:li>computer</rdf:li>
+            <rdf:li>icons</rdf:li>
+            <rdf:li>theme</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org">
+            <dc:title>Danny Allen</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Danny Allen</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Danny Allen</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date></dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:cx="31.493585" inkscape:cy="19.557514" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="693" inkscape:window-width="1016" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="6.9465338" pagecolor="#ffffff" showguides="true" snaptoguides="true"/>
+  <defs id="defs3"/>
+  <path d="M 4.3727943,8.4361263 C 4.1636684,4.2536057 22.443885,17.601051 30.390675,3.5896070 C 36.405696,17.601051 53.308286,4.4627303 54.353915,8.4361263 C 56.236050,11.782142 45.792763,51.171074 29.849550,51.097836 C 12.694708,50.795948 1.4450304,11.782141 4.3727943,8.4361263 z " id="path906" sodipodi:nodetypes="ccccc" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" style="fill:#cccccc;fill-rule:evenodd;stroke:#4c4c4c;stroke-width:2.8828011;stroke-linecap:round;stro [...]
+  <path d="M 43.902772,48.302951 L 17.563890,21.964069 L 17.112363,17.707680 L 21.380954,18.274247 L 47.656215,44.549508 L 43.902772,48.302951 z " id="path840" sodipodi:nodetypes="cccccc" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#7f7f7f;fill-rule:evenodd;stroke:#333333;stroke-width:1.8750006;stroke-linecap:round;stroke-linejoin:round;"/>
+  <path d="M 17.633530,18.331682 L 38.501051,39.199203" id="path841" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.30000001)" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:1.2500004;stroke-linecap:round;stroke-linejoin:round;"/>
+  <path d="M 43.902772,48.302951 L 17.563890,21.964069 L 17.112363,17.707680 L 21.380954,18.274247 L 47.656215,44.549508 L 43.902772,48.302951 z " id="path842" sodipodi:nodetypes="cccccc" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-width:1.8750006;stroke-linecap:round;stroke-linejoin:round;"/>
+  <path d="M 45.393550,48.848029 C 48.192852,53.683187 50.355948,59.154549 54.936623,55.591801 C 58.626612,51.138367 52.773527,49.356994 48.192852,46.048728 L 45.393550,48.848029 z " id="path843" sodipodi:nodetypes="cccc" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:2.4250007;stroke-linecap:round;stroke-linejoin:round;"/>
+  <rect height="3.9979601" id="rect844" rx="1.0000003" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#7f7f7f;fill-rule:evenodd;stroke:#333333;stroke-width:1.8750006;" transform="matrix(0.707107,-0.707107,0.707107,0.707107,0.000000,0.000000)" width="8.8843554" x="-4.9444762" y="63.574132"/>
+</svg>
diff --git a/images/presets/sightseeing/castle.svg b/images/presets/sightseeing/castle.svg
new file mode 100644
index 0000000..2afe413
--- /dev/null
+++ b/images/presets/sightseeing/castle.svg
@@ -0,0 +1,82 @@
+<?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"
+   width="160"
+   height="90"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="castle.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="151.69799"
+     inkscape:cy="8.3599243"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2996"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="1.7382813e-005px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-962.3622)">
+    <path
+       style="fill:#784421;fill-opacity:1;stroke:none"
+       d="m 10,1052.3622 0,-65 -10,0 0,-25 10,0 0,10 10,0 0,-10 10,0 0,10 10,0 0,-10 10,0 0,25 -10,0 0,25 20,0 20,-30 20,30 20,0 0,-25 -10,0 0,-25 10,0 0,10 10,0 0,-10 10,0 0,10 10,0 0,-10 10,0 0,25 -10,0 0,65 z"
+       id="path3004"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccc" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       d="m 70,1052.3622 0,-20 10,-10 10,10 0,20 z"
+       id="path3774"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/memorial.svg b/images/presets/sightseeing/memorial.svg
new file mode 100644
index 0000000..07954b7
--- /dev/null
+++ b/images/presets/sightseeing/memorial.svg
@@ -0,0 +1,139 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="171.42857"
+   height="365.71426"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="memorial.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 L 10,5 L 0,10 L 0,0 z "
+         id="path1512" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 L 0,5 L 10,10 L 10,0 z "
+         id="path1515" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="39.778054"
+     inkscape:cy="259.65371"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="301"
+     inkscape:window-y="258" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-282.85715,-220.93361)">
+    <path
+       style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 283.53058,289.65994 L 369.24487,220.93361 L 454.95915,289.65994 L 454.95915,586.64788 L 283.53058,586.64788 L 283.53058,289.65994 z "
+       id="rect2160"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#ffd42a;fill-rule:evenodd;stroke:#ffd42a;stroke-width:10.07386494;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 313.617,440.8657 L 424.87273,441.00105"
+       id="path3139"
+       sodipodi:nodetypes="cc" />
+    <g
+       style="fill:#ffd42a;fill-opacity:1"
+       id="g3293"
+       transform="matrix(0.6686826,0,0,1.2524888,305.13693,289.76346)">
+      <path
+         d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z "
+         id="path3295"
+         style="fill:#ffd42a;fill-opacity:1;stroke:none" />
+      <path
+         id="path3297"
+         style="fill:#ffd42a;fill-opacity:1;stroke:none"
+         d="" />
+    </g>
+    <g
+       style="fill:#000000;fill-opacity:1"
+       id="g2248"
+       transform="matrix(0.3223502,0,0,0.6037843,338.34051,316.25363)">
+      <path
+         d="M 95.872,81.671 C 118.422,81.671 136.706,63.387 136.706,40.835 C 136.706,18.284 118.422,0 95.872,0 C 73.319,0 55.038,18.284 55.038,40.835 C 55.038,63.387 73.319,81.671 95.872,81.671 z "
+         id="path2250"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         id="path2252"
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d="" />
+    </g>
+    <path
+       style="fill:#ffd42a;fill-rule:evenodd;stroke:#ffd42a;stroke-width:10.07386494;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 424.87273,483.54464 L 313.617,483.67999"
+       id="path3299"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/monument.svg b/images/presets/sightseeing/monument.svg
new file mode 100644
index 0000000..cbe017c
--- /dev/null
+++ b/images/presets/sightseeing/monument.svg
@@ -0,0 +1,123 @@
+<?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"
+   width="7"
+   height="15.999995"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="monument4.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.678384"
+     inkscape:cx="12.034174"
+     inkscape:cy="5.9823339"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4138"
+       originx="-1.6503906e-006"
+       originy="-1.8259125e-005" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-194.28572,-702.07646)">
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2168"
+       width="3"
+       height="10.863967"
+       x="196.28572"
+       y="705.60651" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2172"
+       sodipodi:cx="197.78572"
+       sodipodi:cy="704.07648"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 195.78572,704.07648 a 2,2 0 0 1 2,-2 2,2 0 0 1 2,2 l -2,0 z"
+       sodipodi:start="3.1415927"
+       sodipodi:end="6.2831853" />
+    <rect
+       y="704.07648"
+       x="195.28572"
+       height="2"
+       width="5"
+       id="rect2170"
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       y="715.88019"
+       x="195.00706"
+       height="2.1552491"
+       width="5.7706785"
+       id="rect2166"
+       style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2162"
+       width="7"
+       height="1.3437889"
+       x="194.28572"
+       y="716.73267" />
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/museum.svg b/images/presets/sightseeing/museum.svg
new file mode 100644
index 0000000..038505c
--- /dev/null
+++ b/images/presets/sightseeing/museum.svg
@@ -0,0 +1,14 @@
+<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" version="1.1" width="100%" height="100%" viewBox="0 0 16 16" id="svg2">
+  <metadata id="metadata8">
+    <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="defs6"/>
+  <rect width="16" height="16" x="0" y="0" id="canvas" style="fill:none;stroke:none;visibility:hidden"/><rect x="0" y="0" width="16" height="16" rx="2" ry="2" id="shield" style="fill:#ffffff;stroke:none;"/>
+  <path d="M 7,1 1,3 1,4 13,4 13,3 z m -6,4 0,1 1,0 0,5 -1,0 -1,2 14,0 -1,-2 -1,0 0,-5 1,0 0,-1 z M 5,6 C 5.497372,6 6,6.5325904 6,7 L 6,11 4,11 4,7 C 4,6.4726661 4.502628,6 5,6 z m 4,0 c 0.503364,0 1,0.4726661 1,1 l 0,4 -2,0 0,-4 C 8,6.4726661 8.496636,6 9,6 z" id="museum" style="fill:#734a08;fill-opacity:1" transform="translate(1,1)"/>
+</svg>
diff --git a/images/presets/palaeontological_site.png b/images/presets/sightseeing/palaeontological_site.png
similarity index 100%
rename from images/presets/palaeontological_site.png
rename to images/presets/sightseeing/palaeontological_site.png
diff --git a/images/presets/sightseeing/peak_viewpoint.svg b/images/presets/sightseeing/peak_viewpoint.svg
new file mode 100644
index 0000000..31cd73d
--- /dev/null
+++ b/images/presets/sightseeing/peak_viewpoint.svg
@@ -0,0 +1,97 @@
+<?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"
+   width="400"
+   height="400"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="peak.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.28"
+     inkscape:cx="94.350082"
+     inkscape:cy="243.59651"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="true"
+     showguides="true"
+     inkscape:snap-global="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="995"
+     inkscape:window-x="1272"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3149"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-0.125,2.75)">
+    <path
+       style="fill:#0000ff"
+       d="m 35.900874,206.12207 c -8.649727,-2.16859 -16.366887,-9.2973 -18.630387,-17.20979 -0.632225,-2.21005 -1.139636,-8.0335 -1.127583,-12.94098 0.01767,-7.19383 0.446324,-9.93263 2.212279,-14.13484 5.178759,-12.32326 16.599976,-17.33237 34.38021,-15.07846 12.513234,1.58623 86.404757,24.07795 89.515137,27.24737 3.51431,3.581 -1.84633,6.59816 -26.20561,14.74954 -19.292151,6.45576 -52.851825,15.99305 -61.263718,17.41048 -7.117731,1.19935 -13.986556,1.1836 -18.880328,-0.0433 l 0,0 z"
+       id="path3087"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="M 162.98955,141.46689 C 151.40321,133.12032 101.3937,80.654453 95.249481,70.399579 85.531559,54.180095 85.669023,42.397355 95.700725,31.721527 105.13056,21.686201 117.52596,17.590864 127.64487,21.167433 c 8.47901,2.996939 16.76352,14.216259 21.67999,29.360232 2.08593,6.425158 14.22517,57.257145 18.50988,77.508445 3.25419,15.38069 2.14184,18.4641 -4.84519,13.43078 l 0,0 z"
+       id="path3089"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="m 228.76979,142.78722 c -1.61917,-1.25992 -1.65539,-1.87962 -0.53726,-9.19318 3.27902,-21.4476 15.54902,-72.721527 20.85372,-87.14365 8.82669,-23.997457 23.29471,-32.199103 40.70748,-23.076285 19.78126,10.363711 23.63354,27.510966 10.8099,48.116983 -3.94533,6.339658 -27.39885,31.613452 -53.20312,57.332342 -15.21493,15.16458 -16.16877,15.87949 -18.63072,13.96379 z"
+       id="path3091"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="m 333.97425,203.2081 c -16.10713,-3.65816 -77.37282,-23.11127 -79.49293,-25.24064 -3.82801,-3.84469 0.45142,-6.27045 26.48592,-15.01338 8.63099,-2.89845 24.60026,-7.74103 35.48727,-10.76127 16.67364,-4.62555 21.39093,-5.5624 29.91957,-5.94208 11.89525,-0.52955 17.10806,0.856 22.83032,6.06826 9.12349,8.31031 11.24108,28.37199 4.25491,40.31003 -6.60419,11.28531 -20.26268,14.94478 -39.48506,10.57908 z"
+       id="path3093"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#aa4400;fill-rule:evenodd;stroke:#000000;stroke-width:1.58364117px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 199.92412,110.62652 2.0903838,396.45845 398.24849,396.45629 z"
+       id="rect2985"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/ruins.svg b/images/presets/sightseeing/ruins.svg
new file mode 100644
index 0000000..b2079c6
--- /dev/null
+++ b/images/presets/sightseeing/ruins.svg
@@ -0,0 +1,116 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="352.85715"
+   height="342.85715"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="ruins.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="201.08095"
+     inkscape:cy="160.50756"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="797"
+     inkscape:window-height="573"
+     inkscape:window-x="44"
+     inkscape:window-y="58" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Ulf Lamping</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-289.5,-347.14789)">
+    <rect
+       style="opacity:1;fill:#786721;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3134"
+       width="45.714287"
+       height="207.14285"
+       x="514.28577"
+       y="440.93362"
+       ry="19.642857" />
+    <rect
+       style="opacity:1;fill:#786721;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4105"
+       width="57.142849"
+       height="98.571434"
+       x="375.71429"
+       y="510.93359"
+       ry="15.945377" />
+    <rect
+       style="opacity:1;fill:#786721;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4107"
+       width="48.57143"
+       height="298.57144"
+       x="344.28571"
+       y="376.64789"
+       ry="15.714286" />
+    <rect
+       ry="15.714286"
+       y="465.21936"
+       x="417.14288"
+       height="165.71428"
+       width="45.714287"
+       id="rect4111"
+       style="opacity:1;fill:#786721;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       ry="10.39916"
+       y="563.79077"
+       x="451.42856"
+       height="64.285721"
+       width="88.571419"
+       id="rect4113"
+       style="opacity:1;fill:#786721;fill-opacity:1;stroke:none;stroke-width:10.07386494;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:40.29545975, 10.07386494;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:#00cd00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.95963115px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 151.40838,706.66809 C 151.40838,706.66809 347.85199,594.19632 480.00498,590.90768 C 612.15796,587.61904 678.59162,706.66808 678.59162,706.66808"
+       id="path2160"
+       sodipodi:nodetypes="csc" />
+  </g>
+</svg>
diff --git a/images/presets/sightseeing/viewpoint.svg b/images/presets/sightseeing/viewpoint.svg
new file mode 100644
index 0000000..3f7d2c8
--- /dev/null
+++ b/images/presets/sightseeing/viewpoint.svg
@@ -0,0 +1,103 @@
+<?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"
+   width="293.46463"
+   height="275.7652"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="viewpoint3.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.28"
+     inkscape:cx="-80.870736"
+     inkscape:cy="148.41924"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     showguides="true"
+     inkscape:snap-global="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3149"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-42.017694"
+       originy="-85.742077" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-42.142694,-35.742745)">
+    <path
+       style="fill:#0000ff"
+       d="m 61.900874,206.12207 c -8.649727,-2.16859 -16.366887,-9.2973 -18.630387,-17.20979 -0.632225,-2.21005 -1.139636,-8.0335 -1.127583,-12.94098 0.01767,-7.19383 0.446324,-9.93263 2.212279,-14.13484 5.178759,-12.32326 16.599976,-17.33237 34.38021,-15.07846 12.513234,1.58623 86.404757,24.07795 89.515137,27.24737 3.51431,3.581 -1.84633,6.59816 -26.20561,14.74954 -19.29215,6.45576 -52.851825,15.99305 -61.263718,17.41048 -7.117731,1.19935 -13.986556,1.1836 -18.880328,-0.0433 l 0,0 z"
+       id="path3087"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="M 172.98955,157.46689 C 161.40321,149.12032 111.3937,96.654453 105.24948,86.399579 95.531559,70.180095 95.669023,58.397355 105.70073,47.721527 c 9.42983,-10.035326 21.82523,-14.130663 31.94414,-10.554094 8.47901,2.996939 16.76352,14.216259 21.67999,29.360232 2.08593,6.425158 14.22517,57.257145 18.50988,77.508445 3.25419,15.38069 2.14184,18.4641 -4.84519,13.43078 l 0,0 z"
+       id="path3089"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="m 200.76979,158.78722 c -1.61917,-1.25992 -1.65539,-1.87962 -0.53726,-9.19318 3.27902,-21.4476 15.54902,-72.721527 20.85372,-87.14365 8.82669,-23.997457 23.29471,-32.199103 40.70748,-23.076285 19.78126,10.363711 23.63354,27.510966 10.8099,48.116983 -3.94533,6.339658 -27.39885,31.613452 -53.20312,57.332342 -15.21493,15.16458 -16.16877,15.87949 -18.63072,13.96379 z"
+       id="path3091"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="m 291.97425,203.2081 c -16.10713,-3.65816 -77.37282,-23.11127 -79.49293,-25.24064 -3.82801,-3.84469 0.45142,-6.27045 26.48592,-15.01338 8.63099,-2.89845 24.60026,-7.74103 35.48727,-10.76127 16.67364,-4.62555 21.39093,-5.5624 29.91957,-5.94208 11.89525,-0.52955 17.10806,0.856 22.83032,6.06826 9.12349,8.31031 11.24108,28.37199 4.25491,40.31003 -6.60419,11.28531 -20.26268,14.94478 -39.48506,10.57908 z"
+       id="path3093"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="m 207.12005,189.7838 c 11.58634,8.34657 61.59585,60.81243 67.74007,71.0673 9.71792,16.21949 9.58045,28.00223 -0.45125,38.67805 -9.42983,10.03533 -21.82523,14.13066 -31.94414,10.55409 -8.47901,-2.99693 -16.76352,-14.21625 -21.67999,-29.36022 -2.08593,-6.42516 -14.22517,-57.25715 -18.50988,-77.50844 -3.25419,-15.38069 -2.14184,-18.4641 4.84519,-13.43078 l 0,0 z"
+       id="path3089-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff"
+       d="m 181.33981,188.46347 c 1.61917,1.25992 1.65539,1.87962 0.53726,9.19318 -3.27902,21.44759 -15.54902,72.72152 -20.85372,87.14364 -8.82669,23.99745 -23.29471,32.1991 -40.70748,23.07628 -19.78126,-10.3637 -23.633542,-27.51096 -10.8099,-48.11698 3.94533,-6.33965 27.39885,-31.61345 53.20312,-57.33233 15.21493,-15.16458 16.16877,-15.87949 18.63072,-13.96379 z"
+       id="path3091-0"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/silo.png b/images/presets/silo.png
deleted file mode 100644
index df5151b..0000000
Binary files a/images/presets/silo.png and /dev/null differ
diff --git a/images/presets/skating.png b/images/presets/skating.png
deleted file mode 100644
index 9a21011..0000000
Binary files a/images/presets/skating.png and /dev/null differ
diff --git a/images/presets/social_facility/assisted_living.svg b/images/presets/social_facility/assisted_living.svg
new file mode 100644
index 0000000..2583d4a
--- /dev/null
+++ b/images/presets/social_facility/assisted_living.svg
@@ -0,0 +1,250 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="social_facility__assisted_living2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.9656382"
+     inkscape:cy="8.3053734"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="2.0000393" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 10.531465,1045.7896 c -0.5714731,0 -1.0311731,0.5365 -1.0311731,1.2025 l 0,0.6846 c -3.916e-4,0.013 -3.916e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.9628121,0.7514 0.9536851,0 l 0,-3.9584 0.491463,0 0,4.5316 3.059323,0 0,-4.5316 0.54149,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.936448,0 z"
+       id="path3772-4-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccsscc" />
+    <path
+       sodipodi:nodetypes="csccccccccccccccsscc"
+       inkscape:connector-curvature="0"
+       id="path4266"
+       d="m 1.5627162,1045.7896 c -0.57147308,0 -1.03117258,0.5365 -1.03117258,1.2025 l 0,0.6846 c -3.92e-4,0.013 -3.92e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.96281148,0.7514 0.95368448,0 l 0,-3.9584 0.4914631,0 0,4.5316 3.059323,0 0,-4.5316 0.54149,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.936448,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.9999996,1041.8539 7.0000014,-4 7.000001,4"
+       id="path4209"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4211-7"
+       cx="3.5312514"
+       cy="1044.0005"
+       rx="1.3232266"
+       ry="1.3232436" />
+    <ellipse
+       ry="1.3232436"
+       rx="1.3232266"
+       cy="1044.0005"
+       cx="12.5"
+       id="ellipse4298"
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 7.9913152,1040.7547 c -0.293773,0.01 -0.528274,0.2771 -0.524637,0.6074 l 0,11 1.066646,0 0,-11 c 0.0037,-0.3379 -0.241434,-0.6127 -0.542009,-0.6074 z"
+       id="path4211"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/images/presets/social_facility/food_bank.svg b/images/presets/social_facility/food_bank.svg
new file mode 100644
index 0000000..131b3f4
--- /dev/null
+++ b/images/presets/social_facility/food_bank.svg
@@ -0,0 +1,230 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="social_facility__food_bank2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.0253283"
+     inkscape:cy="7.3051535"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="2.0000393" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.9999997,1041.8565 7.0000013,-4 7.000001,4"
+       id="path4209"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:#3771c8;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 7.9999984,1044.669 c 0.897468,0 0.8974694,-0.6038 1.7949372,-0.6038 1.7949364,0 2.6924044,0.9182 2.6924044,2.7547 0,3.6728 -2.320796,5.5092 -3.2182646,5.5092 -0.8974676,0 -0.3716088,-0.4632 -1.2690767,-0.4632 -0.8974679,0 -0.4627556,0.4632 -1.3602235,0.4632 -0.897468,0 -3.1271158,-1.8364 -3.1271136,-5.5092 1.2e-6,-1.8365 0.8974658,-2.7547 2.692402,-2.7547 0.8974681,0 0.8974669,0.6038 1.7949348,0.6038 z"
+       id="path4211"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sssssssss" />
+    <path
+       style="fill:#3771c8;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 7.5872564,1044.0956 c 0,0 -0.071797,-2.8153 2.6206066,-3.7335 -0.0718,2.6939 -2.6206066,3.7335 -2.6206066,3.7335"
+       id="path4213"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+  </g>
+</svg>
diff --git a/images/presets/social_facility/group_home.svg b/images/presets/social_facility/group_home.svg
new file mode 100644
index 0000000..e243a16
--- /dev/null
+++ b/images/presets/social_facility/group_home.svg
@@ -0,0 +1,244 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="social_facility__group_home4.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.9656382"
+     inkscape:cy="8.3053734"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="2.0000393" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 10.531465,1045.7896 c -0.5714731,0 -1.0311731,0.5365 -1.0311731,1.2025 l 0,0.6846 c -3.916e-4,0.013 -3.916e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.9628121,0.7514 0.9536851,0 l 0,-3.9584 0.491463,0 0,4.5316 3.059323,0 0,-4.5316 0.54149,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.936448,0 z"
+       id="path3772-4-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccsscc" />
+    <path
+       sodipodi:nodetypes="csccccccccccccccsscc"
+       inkscape:connector-curvature="0"
+       id="path4266"
+       d="m 1.5627162,1045.7896 c -0.57147308,0 -1.03117258,0.5365 -1.03117258,1.2025 l 0,0.6846 c -3.92e-4,0.013 -3.92e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.96281148,0.7514 0.95368448,0 l 0,-3.9584 0.4914631,0 0,4.5316 3.059323,0 0,-4.5316 0.54149,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.936448,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.9999996,1041.8539 7.0000014,-4 7.000001,4"
+       id="path4209"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4211-7"
+       cx="3.5312514"
+       cy="1044.0005"
+       rx="1.3232266"
+       ry="1.3232436" />
+    <ellipse
+       ry="1.3232436"
+       rx="1.3232266"
+       cy="1044.0005"
+       cx="12.5"
+       id="ellipse4298"
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/social_facility/nursing_home.svg b/images/presets/social_facility/nursing_home.svg
new file mode 100644
index 0000000..373a58f
--- /dev/null
+++ b/images/presets/social_facility/nursing_home.svg
@@ -0,0 +1,250 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="amenity__nursing_home2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-14.253592"
+     inkscape:cy="0.82680268"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302-4"
+       width="16.000004"
+       height="16.000004"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       ry="2.0000398" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.99999993,1041.8539 7.00000297,-4 7.0000021,4"
+       id="path4209-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 2.3191549,1045.7896 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.92e-4,0.013 -3.92e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,4.5316 3.059324,0 0,-4.5316 0.541491,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032026,-1.2024 l -3.936449,0 z"
+       id="path3772-4-3-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccsscc" />
+    <ellipse
+       ry="1.3232441"
+       rx="1.323227"
+       cy="1044.0004"
+       cx="4.2876902"
+       id="ellipse4298-7"
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 11.692867,1045.876 c -0.571473,0 -0.626766,0.1653 -0.945235,0.4837 l -2.5653285,3.0191 c -0.4785,0.5705 0.3208816,1.1982 0.8152486,0.5988 l 1.8547409,-2.0629 0,4.5316 2.573188,0 0,-6.5703 z"
+       id="path3772-4-3-5-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <ellipse
+       ry="1.3232443"
+       rx="1.3232273"
+       cy="1044.269"
+       cx="12.102254"
+       id="ellipse4298-0-0"
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:#3771c8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 10.325657,1040.7157 0,2.4962 3.387938,0 0,-1 -1.981068,-0.017 z"
+       id="path4224-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/images/presets/social_facility/outreach.svg b/images/presets/social_facility/outreach.svg
new file mode 100644
index 0000000..76de6c6
--- /dev/null
+++ b/images/presets/social_facility/outreach.svg
@@ -0,0 +1,247 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="social_facility__outreach.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="21.032665"
+     inkscape:cx="10.173775"
+     inkscape:cy="7.1426501"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="2.0000393" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 6.0314662,1040.5085 c -0.571473,0 -1.031173,0.5365 -1.031173,1.2025 l 0,0.6846 c -3.92e-4,0.013 -3.92e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.962812,0.7514 0.953685,0 l 0,-3.9584 0.491463,0 0,4.5316 3.059322,0 0,-4.5316 0.5414898,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.0320248,-1.2024 l -3.936447,0 z"
+       id="path3772-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccsscc" />
+    <path
+       style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
+       inkscape:connector-curvature="0"
+       id="path4358"
+       d="m 11.97686,1049.6284 c -4.022971,0.9453 -7.3800062,-1.5272 -7.9768598,-4.5436 3.5301755,-0.4888 5.1686099,3.3454 7.9768598,4.5436 z"
+       sodipodi:nodetypes="ccc" />
+    <ellipse
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4211"
+       cx="8.000001"
+       cy="1038.6854"
+       rx="1.3232263"
+       ry="1.3232434" />
+    <path
+       d="m 7.4293712,1049.3137 c -2.8678269,0.5504 -4.1366914,-2.7034 -6.1092282,-3.8915 2.8903702,-0.5473 4.0231699,2.7961 6.1092282,3.8915 z"
+       id="path13"
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill-rule:evenodd;fill:#008000;fill-opacity:1" />
+    <path
+       d="m 10.085452,1049.3137 c -2.8130786,0.7556 -4.0135081,-2.3039 -5.5778506,-3.632 2.4684889,-0.3908 3.6141705,2.6742 5.5778506,3.632 z"
+       id="path15"
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill-rule:evenodd;fill:#008000;fill-opacity:1" />
+    <path
+       d="m 16.000003,1047.6442 0,4.7179 c -4.267926,-0.5583 -7.0105355,0.5619 -9.985443,-0.5853 -2.5852309,-0.9971 -3.7992879,-2.4057 -5.5754397,-4.1298 -0.67010537,-0.6505 -0.47054745,-1.0383 -0.0812025,-1.2438 1.0797932,-0.5699 3.1328208,2.9899 5.7430103,3.6889 2.9950355,0.8029 4.3147829,-0.6661 8.2888399,-0.089 -0.309083,-2.6632 -4.025586,-0.026 -4.025586,-2.0598 0,-1.5727 4.851385,-0.7379 5.635821,-0.2991 z"
+       id="path17"
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill-rule:evenodd;fill:#008000;fill-opacity:1"
+       sodipodi:nodetypes="cccssccsc" />
+  </g>
+</svg>
diff --git a/images/presets/social_facility/shelter.svg b/images/presets/social_facility/shelter.svg
new file mode 100644
index 0000000..b1c9370
--- /dev/null
+++ b/images/presets/social_facility/shelter.svg
@@ -0,0 +1,231 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="social_facility__shelter.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-2.9926547"
+     inkscape:cy="7.2961663"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4302"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621"
+       ry="2.0000393" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.9999996,1041.8539 7.0000014,-4 7.000001,4"
+       id="path4209"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#3771c8;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 6.0314654,1045.7896 c -0.5714732,0 -1.0311733,0.5365 -1.0311733,1.2025 l 0,0.6846 c -3.916e-4,0.013 -3.916e-4,0.026 0,0.039 l 0,0.1148 0,3.9584 c -0.0091,0.7514 0.9628123,0.7514 0.9536853,0 l 0,-3.9584 0.4914631,0 0,4.5316 3.0593235,0 0,-4.5316 0.54149,0 0,3.9584 c -0.0092,0.7514 0.962855,0.7514 0.953685,0 l 0,-4.0735 0,-0.7235 c 0,-0.6658 -0.460553,-1.2024 -1.032025,-1.2024 l -3.9364486,0 z"
+       id="path3772-4-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccccccccccccccsscc" />
+    <ellipse
+       ry="1.3232439"
+       rx="1.3232268"
+       cy="1044.0004"
+       cx="8.000001"
+       id="ellipse4298"
+       style="opacity:1;fill:#3771c8;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/sport/10pin.svg b/images/presets/sport/10pin.svg
new file mode 100644
index 0000000..daa7fcb
--- /dev/null
+++ b/images/presets/sport/10pin.svg
@@ -0,0 +1,132 @@
+<?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"
+   width="417.09787"
+   height="459.65884"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="10pin.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\sports\10pin.png"
+   inkscape:export-xdpi="3.1295931"
+   inkscape:export-ydpi="3.1295931"
+   version="1.0">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.43901235"
+     inkscape:cx="414.18729"
+     inkscape:cy="526.18109"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-767.63214,154.11418)">
+    <rect
+       style="fill:#333333;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3183"
+       width="417.09787"
+       height="459.65884"
+       x="767.63214"
+       y="-154.11418" />
+    <g
+       id="g3193"
+       transform="translate(670.82396,-457.84588)">
+      <path
+         sodipodi:nodetypes="czzzzzzzcc"
+         id="path2383"
+         d="M 331.94786,761.34772 C 331.94786,761.34772 365.72933,682.89892 364.0866,643.46646 C 362.44387,604.03401 323.28255,544.14307 324.4488,511.20944 C 325.61505,478.27582 348.38424,455.79306 342.30367,436.45548 C 336.2231,417.1179 319.47696,400.16516 302.66586,400.16516 C 285.85477,400.16516 271.9654,417.11791 265.88483,436.45548 C 259.80426,455.79305 282.57345,478.27582 283.7397,511.20944 C 284.90595,544.14307 245.74463,604.03401 244.1019,643.46646 C 242.45917,682.89892 273.38388 [...]
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.01541185;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         y="500.23621"
+         x="284.65128"
+         height="38.222721"
+         width="38.880768"
+         id="rect3155"
+         style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g3197"
+       transform="translate(804.07762,-457.84588)">
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.01541185;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 331.94786,761.34772 C 331.94786,761.34772 365.72933,682.89892 364.0866,643.46646 C 362.44387,604.03401 323.28255,544.14307 324.4488,511.20944 C 325.61505,478.27582 348.38424,455.79306 342.30367,436.45548 C 336.2231,417.1179 319.47696,400.16516 302.66586,400.16516 C 285.85477,400.16516 271.9654,417.11791 265.88483,436.45548 C 259.80426,455.79305 282.57345,478.27582 283.7397,511.20944 C 284.90595,544.14307 245.74463,604.03401 244.1019,643.46646 C 242.45917,682.89892 273.38388 [...]
+         id="path3199"
+         sodipodi:nodetypes="czzzzzzzcc" />
+      <rect
+         style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect3201"
+         width="38.880768"
+         height="38.222721"
+         x="284.65128"
+         y="500.23621" />
+    </g>
+    <g
+       id="g3203"
+       transform="translate(537.57029,-457.84588)">
+      <path
+         sodipodi:nodetypes="czzzzzzzcc"
+         id="path3205"
+         d="M 331.94786,761.34772 C 331.94786,761.34772 365.72933,682.89892 364.0866,643.46646 C 362.44387,604.03401 323.28255,544.14307 324.4488,511.20944 C 325.61505,478.27582 348.38424,455.79306 342.30367,436.45548 C 336.2231,417.1179 319.47696,400.16516 302.66586,400.16516 C 285.85477,400.16516 271.9654,417.11791 265.88483,436.45548 C 259.80426,455.79305 282.57345,478.27582 283.7397,511.20944 C 284.90595,544.14307 245.74463,604.03401 244.1019,643.46646 C 242.45917,682.89892 273.38388 [...]
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.01541185;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         y="500.23621"
+         x="284.65128"
+         height="38.222721"
+         width="38.880768"
+         id="rect3207"
+         style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/archery.svg b/images/presets/sport/archery.svg
new file mode 100644
index 0000000..04090ae
--- /dev/null
+++ b/images/presets/sport/archery.svg
@@ -0,0 +1,142 @@
+<?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"
+   width="420"
+   height="420"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="archery.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\sports\archery.png"
+   inkscape:export-xdpi="3.4285715"
+   inkscape:export-ydpi="3.4285715">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="-107.14497"
+     inkscape:cy="372.39033"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-192.14286,-170.57647)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4141"
+       width="420"
+       height="420"
+       x="192.14285"
+       y="170.57646" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3177"
+       sodipodi:cx="-722.85712"
+       sodipodi:cy="-679.28571"
+       sodipodi:rx="105.71429"
+       sodipodi:ry="105.71429"
+       d="m -617.14283,-679.28571 a 105.71429,105.71429 0 0 1 -105.71429,105.71429 105.71429,105.71429 0 0 1 -105.71428,-105.71429 105.71429,105.71429 0 0 1 105.71428,-105.71428 105.71429,105.71429 0 0 1 105.71429,105.71428 z"
+       transform="matrix(1.2027027,0,0,1.2027027,1331.525,1198.2695)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#2a7fff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3173"
+       sodipodi:cx="-147.14285"
+       sodipodi:cy="-666.42859"
+       sodipodi:rx="52.857143"
+       sodipodi:ry="52.857143"
+       d="m -94.285709,-666.42859 a 52.857143,52.857143 0 0 1 -52.857141,52.85714 52.857143,52.857143 0 0 1 -52.85715,-52.85714 52.857143,52.857143 0 0 1 52.85715,-52.85714 52.857143,52.857143 0 0 1 52.857141,52.85714 z"
+       transform="matrix(1.6936937,0,0,1.6936937,711.35776,1510.0167)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3171"
+       sodipodi:cx="-35.714287"
+       sodipodi:cy="-509.28574"
+       sodipodi:rx="30"
+       sodipodi:ry="30"
+       d="m -5.7142868,-509.28574 a 30,30 0 0 1 -30.0000002,30 30,30 0 0 1 -30,-30 30,30 0 0 1 30,-30 30,30 0 0 1 30.0000002,30 z"
+       transform="matrix(1.8587301,0,0,1.8587301,528.52605,1327.9155)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3167"
+       sodipodi:cx="-14.285714"
+       sodipodi:cy="-405"
+       sodipodi:rx="14.285714"
+       sodipodi:ry="14.285714"
+       d="M 0,-405 A 14.285714,14.285714 0 0 1 -14.285714,-390.71429 14.285714,14.285714 0 0 1 -28.571428,-405 14.285714,14.285714 0 0 1 -14.285714,-419.28571 14.285714,14.285714 0 0 1 0,-405 Z"
+       transform="matrix(1.9666667,0,0,1.9666667,490.23807,1177.7908)" />
+    <g
+       id="g3191"
+       transform="translate(-108.57143,-2.8571429)">
+      <path
+         sodipodi:nodetypes="czzzz"
+         id="path3155"
+         d="M 394.28572,178.07647 C 394.28572,178.07647 410.26887,190.53866 408.57143,223.79075 C 406.87399,257.04284 340.33269,330.77939 340,383.79075 C 339.66731,436.80211 406.36284,516.02341 408.57143,549.50504 C 410.78002,582.98667 397.14286,592.36218 397.14286,592.36218"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         id="path3157"
+         d="M 408.57143,552.36218 L 408.57143,218.07646"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/athletics.png b/images/presets/sport/athletics.png
new file mode 100644
index 0000000..62ac5b7
Binary files /dev/null and b/images/presets/sport/athletics.png differ
diff --git a/images/presets/sport/baseball.svg b/images/presets/sport/baseball.svg
new file mode 100644
index 0000000..e4ee4cc
--- /dev/null
+++ b/images/presets/sport/baseball.svg
@@ -0,0 +1,216 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="470.85999"
+   id="svg1"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/aliekens/personal/inkscape"
+   sodipodi:docname="baseball.svg"
+   sodipodi:version="0.32"
+   width="470"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Baseball</dc:title>
+        <dc:description>Baseball</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>sports</rdf:li>
+            <rdf:li>toy</rdf:li>
+            <rdf:li>baseball</rdf:li>
+            <rdf:li>ball</rdf:li>
+            <rdf:li>entertainment</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Anthony Liekens</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Anthony Liekens</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <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="perspective26" />
+    <linearGradient
+       id="linearGradient122">
+      <stop
+         id="stop123"
+         offset="0.0000000"
+         style="stop-color:#ff0000;stop-opacity:1.0000000;" />
+      <stop
+         id="stop124"
+         offset="1.0000000"
+         style="stop-color:#761414;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient118">
+      <stop
+         id="stop119"
+         offset="0.0000000"
+         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
+      <stop
+         id="stop120"
+         offset="1.0000000"
+         style="stop-color:#929648;stop-opacity:0.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient90">
+      <stop
+         id="stop91"
+         offset="0.0000000"
+         style="stop-color:#997c75;stop-opacity:1.0000000;" />
+      <stop
+         id="stop92"
+         offset="1.0000000"
+         style="stop-color:#929648;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="257.64386"
+       cy="341.40033"
+       fx="257.64386"
+       fy="341.40033"
+       gradientTransform="scale(1.020069,0.980326)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient93"
+       inkscape:collect="always"
+       r="555.5459"
+       xlink:href="#linearGradient90" />
+    <linearGradient
+       gradientTransform="scale(0.965896,1.035308)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient125"
+       inkscape:collect="always"
+       x1="457.40964"
+       x2="602.93018"
+       xlink:href="#linearGradient122"
+       y1="292.32196"
+       y2="528.50598" />
+    <linearGradient
+       gradientTransform="matrix(1.021654,0,0,0.978805,0,-8.571429)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient129"
+       inkscape:collect="always"
+       x1="408.17328"
+       x2="411.05389"
+       xlink:href="#linearGradient118"
+       y1="307.2547"
+       y2="696.27338" />
+    <linearGradient
+       gradientTransform="matrix(1.021654,0,0,0.978805,0,-8.571429)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient131"
+       inkscape:collect="always"
+       x1="408.17328"
+       x2="411.05389"
+       xlink:href="#linearGradient118"
+       y1="307.2547"
+       y2="696.27338" />
+    <linearGradient
+       gradientTransform="scale(1.021654,0.978805)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient133"
+       inkscape:collect="always"
+       x1="301.9812"
+       x2="481.55508"
+       xlink:href="#linearGradient118"
+       y1="354.11786"
+       y2="624.12701" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-3076.4286"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="667"
+     inkscape:window-width="912"
+     inkscape:window-x="132"
+     inkscape:window-y="174"
+     inkscape:zoom="0.04375"
+     pagecolor="#ffffff"
+     showgrid="false" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-182.14285,-260.21931)">
+    <path
+       d="M 637.14285,486.64789 A 220,211.42857 0 1 1 197.14285,486.64789 A 220,211.42857 0 1 1 637.14285,486.64789 z"
+       id="path85"
+       sodipodi:cx="417.14285"
+       sodipodi:cy="486.64789"
+       sodipodi:rx="220"
+       sodipodi:ry="211.42857"
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient93);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline" />
+    <path
+       d="M 394.85268,292.15625 C 322.25529,299.2018 254.03609,346.81512 225.52695,414.41895 C 192.77846,488.77754 215.78223,583.10321 278.78875,634.31019 C 341.76742,688.99027 438.51048,700.70417 512.37375,661.67624 C 574.31933,630.17505 619.29231,564.55185 620.20104,494.28335 C 623.66372,423.54731 583.02349,353.53899 521.23,319.52052 C 483.21911,297.58343 438.50599,288.27109 394.85268,292.15625 z"
+       id="path94"
+       style="opacity:0.68000034;fill:url(#linearGradient133);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline" />
+    <path
+       d="M 325.71428,292.36218 C 420.78242,291.96605 434.59377,366.33984 405.71428,409.50504 C 368.59394,483.76824 325.35056,529.14132 362.85714,583.79075 C 395.92588,628.28806 486.94969,650.70223 511.42857,543.79075 C 543.48972,479.35216 568.05607,451.84683 631.42857,478.07647"
+       id="path9"
+       sodipodi:nodetypes="ccccc"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient125);stroke-width:25;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:50, 25;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline" />
+    <path
+       d="M 637.14285,486.64789 A 220,211.42857 0 1 1 197.14285,486.64789 A 220,211.42857 0 1 1 637.14285,486.64789 z"
+       id="path8"
+       sodipodi:cx="417.14285"
+       sodipodi:cy="486.64789"
+       sodipodi:rx="220"
+       sodipodi:ry="211.42857"
+       sodipodi:type="arc"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline" />
+  </g>
+</svg>
diff --git a/images/presets/sport/basketball.svg b/images/presets/sport/basketball.svg
new file mode 100644
index 0000000..8761830
--- /dev/null
+++ b/images/presets/sport/basketball.svg
@@ -0,0 +1,182 @@
+<?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://web.resource.org/cc/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="252.26271"
+   height="251.88049"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien"
+   sodipodi:docname="basketball.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/gioppo/Disegni/basketball2.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   version="1.0">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient2189">
+      <stop
+         style="stop-color:#ffd52a;stop-opacity:1;"
+         offset="0"
+         id="stop2191" />
+      <stop
+         style="stop-color:#ff7f2a;stop-opacity:1;"
+         offset="1"
+         id="stop2193" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient17099">
+      <stop
+         style="stop-color:#f09700;stop-opacity:1;"
+         offset="0"
+         id="stop17101" />
+      <stop
+         id="stop17107"
+         offset="1"
+         style="stop-color:#f6f700;stop-opacity:0.49803922;" />
+      <stop
+         style="stop-color:#f6f700;stop-opacity:0;"
+         offset="1"
+         id="stop17103" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4180">
+      <stop
+         style="stop-color:#ffe92a;stop-opacity:1;"
+         offset="0"
+         id="stop4182" />
+      <stop
+         id="stop4188"
+         offset="0.5"
+         style="stop-color:#fff22a;stop-opacity:0.49803922;" />
+      <stop
+         style="stop-color:#ff7f2a;stop-opacity:0;"
+         offset="1"
+         id="stop4184" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4180"
+       id="radialGradient5277"
+       cx="378.40622"
+       cy="466.38931"
+       fx="378.40622"
+       fy="466.38931"
+       r="171.71356"
+       gradientTransform="matrix(1,0,0,0.9950338,0,2.3161611)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient17099"
+       id="radialGradient17105"
+       cx="129.15811"
+       cy="738.49414"
+       fx="129.15811"
+       fy="738.49414"
+       r="483.95963"
+       gradientTransform="matrix(1,0,0,0.9994274,0,0.4228264)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2189"
+       id="radialGradient2197"
+       cx="362.17661"
+       cy="386.00372"
+       fx="362.17661"
+       fy="386.00372"
+       r="126.13136"
+       gradientTransform="matrix(1.137734,0.8803895,-0.611057,0.7896716,185.98624,-237.57876)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2189"
+       id="linearGradient3172"
+       x1="481.63095"
+       y1="537.79144"
+       x2="274.91696"
+       y2="486.54004"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.58534981"
+     inkscape:cx="676.72069"
+     inkscape:cy="496.62837"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1152"
+     inkscape:window-height="821"
+     inkscape:window-x="401"
+     inkscape:window-y="59" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-274.91695,-319.59866)">
+    <path
+       style="fill:url(#radialGradient2197);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:4.9243083;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 290.0785,500.00544 C 259.96555,438.84531 285.24054,364.80661 346.49588,334.74047 C 407.75122,304.67433 481.90518,329.91004 512.01812,391.07016 C 542.13106,452.23029 516.85608,526.269 455.60074,556.33513 C 394.4012,586.37388 320.32972,561.22529 290.15667,500.16393"
+       id="path2236" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.73245698px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 277.39495,430.72241 L 277.39495,430.72241 z "
+       id="path9163" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.39474154;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 278.66319,433.19164 C 298.10952,385.86469 514.13298,432.36856 523.43341,457.88397"
+       id="path9165"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.39474154;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 430.85192,324.54541 C 534.84755,361.17236 486.65446,555.83018 389.00002,567.76481"
+       id="path10136"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.39474154;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 349.6846,333.18772 C 408.86911,338.12619 447.76178,427.01856 510.75101,394.91854"
+       id="path12150"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.39474154;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 295.15031,510.97246 C 380.12235,523.73016 492.99566,405.61854 500.60509,519.61478"
+       id="path13121"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/images/presets/sport/beachvolleyball.png b/images/presets/sport/beachvolleyball.png
new file mode 100644
index 0000000..fe38173
Binary files /dev/null and b/images/presets/sport/beachvolleyball.png differ
diff --git a/images/presets/sport/billiards.svg b/images/presets/sport/billiards.svg
new file mode 100644
index 0000000..c6accf7
--- /dev/null
+++ b/images/presets/sport/billiards.svg
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+    xmlns:ns1="http://sozi.baierouge.fr"
+    xmlns:cc="http://creativecommons.org/ns#"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+    xmlns:dc="http://purl.org/dc/elements/1.1/"
+    id="svg2"
+    sodipodi:docname="8ball.svg"
+    viewBox="0 0 598.14 598.14"
+    version="1.1"
+    inkscape:version="0.48.2 r9819"
+  >
+  <defs
+      id="defs4"
+    >
+    <linearGradient
+        id="linearGradient3787"
+        inkscape:collect="always"
+      >
+      <stop
+          id="stop3789"
+          style="stop-color:#ffffff"
+          offset="0"
+      />
+      <stop
+          id="stop3791"
+          style="stop-color:#ffffff;stop-opacity:0"
+          offset="1"
+      />
+    </linearGradient
+    >
+    <radialGradient
+        id="radialGradient3779"
+        gradientUnits="userSpaceOnUse"
+        cy="511.2"
+        cx="223.33"
+        gradientTransform="matrix(-2.4818 1.7063 -2.3828 -3.4659 2035.2 1825.9)"
+        r="299.07"
+        inkscape:collect="always"
+      >
+      <stop
+          id="stop3775"
+          style="stop-color:#502d16"
+          offset="0"
+      />
+      <stop
+          id="stop3777"
+          style="stop-color:#000000"
+          offset="1"
+      />
+    </radialGradient
+    >
+    <linearGradient
+        id="linearGradient3793"
+        y2="520.93"
+        xlink:href="#linearGradient3787"
+        gradientUnits="userSpaceOnUse"
+        x2="397.14"
+        y1="-436.21"
+        x1="71.429"
+        inkscape:collect="always"
+    />
+    <linearGradient
+        id="linearGradient3797"
+        y2="113.74"
+        xlink:href="#linearGradient3787"
+        gradientUnits="userSpaceOnUse"
+        x2="278.92"
+        y1="706.45"
+        x1="439.7"
+        inkscape:collect="always"
+    />
+  </defs
+  >
+  <sodipodi:namedview
+      id="base"
+      bordercolor="#666666"
+      inkscape:pageshadow="2"
+      inkscape:window-y="0"
+      fit-margin-left="0"
+      pagecolor="#ffffff"
+      fit-margin-top="0"
+      inkscape:window-maximized="0"
+      inkscape:zoom="0.35"
+      inkscape:window-x="0"
+      inkscape:window-height="942"
+      showgrid="false"
+      borderopacity="1.0"
+      inkscape:current-layer="layer1"
+      inkscape:cx="256.92857"
+      inkscape:cy="274.78575"
+      fit-margin-right="0"
+      fit-margin-bottom="0"
+      inkscape:window-width="1680"
+      inkscape:pageopacity="0.0"
+      inkscape:document-units="px"
+  />
+  <g
+      id="layer1"
+      inkscape:label="Layer 1"
+      inkscape:groupmode="layer"
+      transform="translate(-68.071 -209.01)"
+    >
+    <path
+        id="path2985"
+        sodipodi:rx="298.57144"
+        sodipodi:ry="298.57144"
+        style="fill-rule:evenodd;stroke:#000000;stroke-width:1px;fill:url(#radialGradient3779)"
+        sodipodi:type="arc"
+        d="m677.14 539.51c0 164.9-133.67 298.57-298.57 298.57s-298.57-133.68-298.57-298.57c0-164.9 133.67-298.58 298.57-298.58s298.57 133.67 298.57 298.57z"
+        transform="translate(-11.429 -31.429)"
+        sodipodi:cy="539.50507"
+        sodipodi:cx="378.57144"
+    />
+    <path
+        id="path2991"
+        sodipodi:rx="182.85715"
+        sodipodi:ry="182.85715"
+        style="fill:url(#linearGradient3797)"
+        sodipodi:type="arc"
+        d="m625.71 678.08a182.86 182.86 0 1 1 -365.71 0 182.86 182.86 0 1 1 365.71 0z"
+        transform="matrix(.90625 0 0 .90625 2.0893 -66.43)"
+        sodipodi:cy="678.07648"
+        sodipodi:cx="442.85715"
+    />
+    <text
+        id="text2993"
+        style="font-size:217.54px;font-family:Sans;letter-spacing:0px;line-height:125%;word-spacing:0px;fill:#000000"
+        xml:space="preserve"
+        y="636.99103"
+        x="334.27731"
+        sodipodi:linespacing="125%"
+      >
+      <tspan
+          id="tspan2995"
+          sodipodi:role="line"
+          x="334.27731"
+          y="636.99103"
+        >8</tspan
+      >
+    </text
+    >
+    <path
+        id="path3784"
+        sodipodi:nodetypes="sssss"
+        style="fill-rule:evenodd;stroke-width:0;fill:url(#linearGradient3793)"
+        inkscape:connector-curvature="0"
+        d="m633.13 402.75c0 94.1-128.91 107.53-263.19 107.53s-271.64-13.426-271.64-107.53c0-94.1 134.57-193.24 268.84-193.24 134.28 0 265.98 99.14 265.98 193.24z"
+    />
+  </g
+  >
+  <metadata
+    >
+    <rdf:RDF
+      >
+      <cc:Work
+        >
+        <dc:format
+          >image/svg+xml</dc:format
+        >
+        <dc:type
+            rdf:resource="http://purl.org/dc/dcmitype/StillImage"
+        />
+        <cc:license
+            rdf:resource="http://creativecommons.org/licenses/publicdomain/"
+        />
+        <dc:publisher
+          >
+          <cc:Agent
+              rdf:about="http://openclipart.org/"
+            >
+            <dc:title
+              >Openclipart</dc:title
+            >
+          </cc:Agent
+          >
+        </dc:publisher
+        >
+      </cc:Work
+      >
+      <cc:License
+          rdf:about="http://creativecommons.org/licenses/publicdomain/"
+        >
+        <cc:permits
+            rdf:resource="http://creativecommons.org/ns#Reproduction"
+        />
+        <cc:permits
+            rdf:resource="http://creativecommons.org/ns#Distribution"
+        />
+        <cc:permits
+            rdf:resource="http://creativecommons.org/ns#DerivativeWorks"
+        />
+      </cc:License
+      >
+    </rdf:RDF
+    >
+  </metadata
+  >
+</svg
+>
diff --git a/images/presets/sport/boule.svg b/images/presets/sport/boule.svg
new file mode 100644
index 0000000..1bffc7e
--- /dev/null
+++ b/images/presets/sport/boule.svg
@@ -0,0 +1,127 @@
+<?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"
+   width="140"
+   height="140"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="boule.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\boule.png"
+   inkscape:export-xdpi="10.285714"
+   inkscape:export-ydpi="10.285714">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="-51.172645"
+     inkscape:cy="107.67556"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-257.14284,-335.21933)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4138"
+       width="140"
+       height="140"
+       x="257.14285"
+       y="335.21936" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#999999;fill-opacity:1;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path2385"
+       sodipodi:cx="324.28571"
+       sodipodi:cy="342.36218"
+       sodipodi:rx="15.714286"
+       sodipodi:ry="15.714286"
+       d="m 339.99999,342.36218 a 15.714286,15.714286 0 0 1 -15.71428,15.71429 15.714286,15.714286 0 0 1 -15.71429,-15.71429 15.714286,15.714286 0 0 1 15.71429,-15.71428 15.714286,15.714286 0 0 1 15.71428,15.71428 z"
+       transform="translate(48.571429,14.285715)" />
+    <path
+       d="m 339.99999,342.36218 a 15.714286,15.714286 0 0 1 -15.71428,15.71429 15.714286,15.714286 0 0 1 -15.71429,-15.71429 15.714286,15.714286 0 0 1 15.71429,-15.71428 15.714286,15.714286 0 0 1 15.71428,15.71428 z"
+       sodipodi:ry="15.714286"
+       sodipodi:rx="15.714286"
+       sodipodi:cy="342.36218"
+       sodipodi:cx="324.28571"
+       id="path2387"
+       style="fill:#999999;fill-opacity:1;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none"
+       sodipodi:type="arc"
+       transform="translate(-42.857147,34.285714)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#999999;fill-opacity:1;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path2389"
+       sodipodi:cx="324.28571"
+       sodipodi:cy="342.36218"
+       sodipodi:rx="15.714286"
+       sodipodi:ry="15.714286"
+       d="m 339.99999,342.36218 a 15.714286,15.714286 0 0 1 -15.71428,15.71429 15.714286,15.714286 0 0 1 -15.71429,-15.71429 15.714286,15.714286 0 0 1 15.71429,-15.71428 15.714286,15.714286 0 0 1 15.71428,15.71428 z"
+       transform="translate(8.5714257,111.42858)" />
+    <path
+       transform="matrix(0.8181819,0,0,0.8181819,81.818184,110.8191)"
+       d="m 339.99999,342.36218 a 15.714286,15.714286 0 0 1 -15.71428,15.71429 15.714286,15.714286 0 0 1 -15.71429,-15.71429 15.714286,15.714286 0 0 1 15.71429,-15.71428 15.714286,15.714286 0 0 1 15.71428,15.71428 z"
+       sodipodi:ry="15.714286"
+       sodipodi:rx="15.714286"
+       sodipodi:cy="342.36218"
+       sodipodi:cx="324.28571"
+       id="path2391"
+       style="fill:#000000;fill-opacity:1;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none"
+       sodipodi:type="arc" />
+  </g>
+</svg>
diff --git a/images/presets/sport/canoe.svg b/images/presets/sport/canoe.svg
new file mode 100644
index 0000000..388ef12
--- /dev/null
+++ b/images/presets/sport/canoe.svg
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="471.17099"
+   height="413.276"
+   viewBox="0 0 471.17099 413.276"
+   enable-background="new 0 0 580 580"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="21097.svg"><metadata
+   id="metadata21"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs19">
+	
+
+		
+		
+		
+	</defs><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview17"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="0.57543862"
+   inkscape:cx="240.62476"
+   inkscape:cy="156.25044"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" />
+
+<circle
+   cx="215.743"
+   cy="127.07"
+   r="43.708"
+   id="circle11"
+   sodipodi:cx="215.743"
+   sodipodi:cy="127.07"
+   sodipodi:rx="43.708"
+   sodipodi:ry="43.708"
+   style="fill:#501616"
+   transform="translate(-54.414,-83.362)" /><path
+   d="m 29.006,320.026 c 9.039,-4.176 19.279,-6.637 29.863,-6.637 10.583,0 20.823,2.46 29.806,6.637 8.867,3.947 18.764,6.235 29.119,6.235 10.297,0 20.194,-2.288 29.005,-6.235 8.981,-4.176 19.222,-6.637 29.862,-6.637 10.64,0 20.767,2.46 29.863,6.637 8.753,3.947 18.707,6.235 29.005,6.235 10.297,0 20.251,-2.288 29.004,-6.235 9.097,-4.176 19.279,-6.637 29.921,-6.637 10.641,0 20.767,2.46 29.806,6.637 8.867,3.947 18.764,6.235 29.062,6.235 10.355,0 20.194,-2.288 29.063,-6.235 8.981,-4.176 19.22 [...]
+   id="path13"
+   inkscape:connector-curvature="0"
+   style="fill:#501616" /><path
+   d="m 442.224,363.504 c -9.097,-4.177 -19.223,-6.637 -29.92,-6.637 -10.584,0 -20.824,2.46 -29.806,6.637 -8.867,3.947 -18.707,6.293 -29.063,6.293 -10.298,0 -20.194,-2.346 -29.062,-6.293 -9.039,-4.177 -19.165,-6.637 -29.806,-6.637 -10.641,0 -20.824,2.46 -29.92,6.637 -8.753,3.947 -18.708,6.293 -29.005,6.293 -10.298,0 -20.252,-2.346 -29.005,-6.293 -9.097,-4.177 -19.223,-6.637 -29.863,-6.637 -10.64,0 -20.881,2.46 -29.862,6.637 -8.811,3.947 -18.707,6.293 -29.005,6.293 -10.354,0 -20.252,-2.34 [...]
+   id="path15"
+   inkscape:connector-curvature="0"
+   style="fill:#0000ff" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/sport/centre.png b/images/presets/sport/centre.png
new file mode 100644
index 0000000..7b1ed83
Binary files /dev/null and b/images/presets/sport/centre.png differ
diff --git a/images/presets/sport/chess.png b/images/presets/sport/chess.png
new file mode 100644
index 0000000..5d9770f
Binary files /dev/null and b/images/presets/sport/chess.png differ
diff --git a/images/presets/sport/climbing.svg b/images/presets/sport/climbing.svg
new file mode 100644
index 0000000..73b6686
--- /dev/null
+++ b/images/presets/sport/climbing.svg
@@ -0,0 +1,115 @@
+<?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"
+   width="168.57144"
+   height="346.87723"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="climbing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\icons\sport\climbing.png"
+   inkscape:export-xdpi="4.1513247"
+   inkscape:export-ydpi="4.1513247">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="-80.297052"
+     inkscape:cy="297.03711"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-308.57141,-286.64789)">
+    <path
+       style="fill:#ff8080;fill-rule:evenodd;stroke:#004e00;stroke-width:7.15445232;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 391.85111,310.49076 L 346.85686,543.98461 L 330.29175,629.94789"
+       id="path3163"
+       sodipodi:nodetypes="ccc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#ffd42a;fill-opacity:1;stroke:none;stroke-width:16.70000076000000200;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3155"
+       sodipodi:cx="330"
+       sodipodi:cy="379.50504"
+       sodipodi:rx="21.428572"
+       sodipodi:ry="21.428572"
+       d="M 351.42857,379.50504 A 21.428572,21.428572 0 1 1 308.57143,379.50504 A 21.428572,21.428572 0 1 1 351.42857,379.50504 z"
+       transform="translate(0,-41.428571)" />
+    <rect
+       y="207.37912"
+       x="-493.64743"
+       height="99.711678"
+       width="18.253916"
+       id="rect3159"
+       style="opacity:1;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:16.70000076;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       transform="matrix(-0.2975847,-0.9546954,0.9228932,-0.385056,0,0)"
+       inkscape:transform-center-y="18.90741"
+       inkscape:transform-center-x="-18.208805" />
+    <rect
+       inkscape:transform-center-y="105.63063"
+       inkscape:transform-center-x="216.14747"
+       transform="matrix(0.8265252,-0.5628997,0.5628997,0.8265252,0,0)"
+       style="opacity:1;fill:#d38d5f;fill-opacity:1;stroke:none;stroke-width:16.70000076000000200;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3161"
+       width="17.142857"
+       height="105.71428"
+       x="13.348231"
+       y="571.49854" />
+    <rect
+       style="opacity:1;fill:#784421;fill-opacity:1;stroke:none;stroke-width:16.70000076;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2383"
+       width="85.714287"
+       height="342.14282"
+       x="391.42856"
+       y="286.64789" />
+    <rect
+       style="opacity:1;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:16.70000076;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3157"
+       width="37.142857"
+       height="105.71429"
+       x="308.57141"
+       y="362.36221" />
+  </g>
+</svg>
diff --git a/images/presets/sport/cricket.svg b/images/presets/sport/cricket.svg
new file mode 100644
index 0000000..55cf904
--- /dev/null
+++ b/images/presets/sport/cricket.svg
@@ -0,0 +1,175 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="659.23596"
+   id="svg1"
+   inkscape:version="0.46"
+   sodipodi:docbase="/home/cgoerner/workspace/openclipart"
+   sodipodi:docname="cricket.svg"
+   sodipodi:version="0.32"
+   width="271.93799"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Cricket Bat</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li />
+            <rdf:li>sports</rdf:li>
+            <rdf:li>cricket</rdf:li>
+            <rdf:li>recreation</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>Chris Goerner</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Chris Goerner</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Chris Goerner</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <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="perspective21" />
+    <linearGradient
+       id="linearGradient1738">
+      <stop
+         id="stop1739"
+         offset="0.0000000"
+         style="stop-color:#ca3030;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1740"
+         offset="1.0000000"
+         style="stop-color:#a52727;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient1734">
+      <stop
+         id="stop1735"
+         offset="0.0000000"
+         style="stop-color:#826b35;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1737"
+         offset="0.50000000"
+         style="stop-color:#bfad62;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1736"
+         offset="1.0000000"
+         style="stop-color:#b1a855;stop-opacity:1.0000000;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.50364,0.153907,-0.55494,1.815962,69.28644,-234.43574)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1733"
+       inkscape:collect="always"
+       x1="284.05496"
+       x2="622.53253"
+       xlink:href="#linearGradient1734"
+       y1="298.13403"
+       y2="345.0676" />
+    <linearGradient
+       gradientTransform="matrix(0.347622,0.10623,-0.804006,2.630995,71.67734,-233.70511)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient1741"
+       inkscape:collect="always"
+       x1="611.54199"
+       x2="729.05194"
+       xlink:href="#linearGradient1738"
+       y1="125.26135"
+       y2="125.26135" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg1"
+     inkscape:cx="-299.83104"
+     inkscape:cy="484.7334"
+     inkscape:guide-bbox="true"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="696"
+     inkscape:window-width="1024"
+     inkscape:window-x="176"
+     inkscape:window-y="232"
+     inkscape:zoom="0.30699632"
+     pagecolor="#ffffff"
+     showguides="true"
+     showgrid="false" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     transform="translate(-199.46146,-264.56778)" />
+  <g
+     id="layer2"
+     inkscape:groupmode="layer"
+     inkscape:label="kjh"
+     transform="translate(-199.46146,-264.56778)" />
+  <path
+     d="M 122.00016,220.02161 L 164.36931,217.16372 L 203.6977,229.18209 L 240.7656,256.31516 L 119.39043,653.49792 C 98.06361,654.78622 78.04637,662.87218 55.93584,655.64194 C 29.6144,647.69553 18.88665,630.59052 0.625,617.20437 L 122.00016,220.02161 z"
+     id="rect1104"
+     sodipodi:nodetypes="cccccccc"
+     style="fill:url(#linearGradient1733);fill-opacity:1;stroke:#473b18;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  <path
+     d="M 231.20112,7.0080694 L 270.86866,19.130079 L 206.49976,229.76805 L 156.91717,321.05576 L 166.83221,217.64604 L 231.20112,7.0080694 z"
+     id="rect1106"
+     sodipodi:nodetypes="cccccc"
+     style="fill:url(#linearGradient1741);fill-opacity:1;stroke:#7b0505;stroke-width:0.98828926pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  <path
+     d="M 263.08085,183.7635 A 19.074261,13.495939 0 1 1 224.93233,183.7635 A 19.074261,13.495939 0 1 1 263.08085,183.7635 z"
+     id="path1108"
+     sodipodi:cx="244.00659"
+     sodipodi:cy="183.7635"
+     sodipodi:rx="19.074261"
+     sodipodi:ry="13.495939"
+     sodipodi:type="arc"
+     style="fill:#bd1e1e;fill-opacity:1;stroke:#810404;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     transform="matrix(1.042164,0.318475,-0.229092,0.749672,39.04414,-203.09324)" />
+</svg>
diff --git a/images/presets/sport/croquet.svg b/images/presets/sport/croquet.svg
new file mode 100644
index 0000000..3dfface
--- /dev/null
+++ b/images/presets/sport/croquet.svg
@@ -0,0 +1,103 @@
+<?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"
+   width="355"
+   height="339.84775"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="croquet2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\sports\croquet.png"
+   inkscape:export-xdpi="3.5481346"
+   inkscape:export-ydpi="3.5481346">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="71.550858"
+     inkscape:cy="40.328915"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-166.74364,-279.94034)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4136"
+       width="355"
+       height="339.84772"
+       x="166.74364"
+       y="279.94034" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:12.99589157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 198.70965,613.29013 2.79953,-165.46068 c 0,0 10.93414,-139.29337 144.17587,-141.13047 133.15353,-1.83588 144.1759,141.13047 144.1759,141.13047 l -2e-5,165.46068 0,0"
+       id="path2383"
+       sodipodi:nodetypes="cczccc"
+       inkscape:connector-curvature="0" />
+    <circle
+       style="fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3157"
+       cx="341.71384"
+       cy="510.50235"
+       r="104.14286" />
+  </g>
+</svg>
diff --git a/images/presets/sport/cycling.svg b/images/presets/sport/cycling.svg
new file mode 100644
index 0000000..c740c85
--- /dev/null
+++ b/images/presets/sport/cycling.svg
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   enable-background="new 0 0 455.148 454.788"
+   height="298.03735"
+   i:pageBounds="0 792 612 0"
+   i:rulerOrigin="0 0"
+   i:viewOrigin="78 623"
+   overflow="visible"
+   space="preserve"
+   viewBox="0 0 341.14413 298.03736"
+   width="341.14413"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="cycling.svg"
+   version="1.1"
+   style="overflow:visible">
+  <defs
+     id="defs110">
+    <foreignObject
+       id="foreignObject8"
+       y="0"
+       x="0"
+       width="1"
+       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+       height="1">
+      <i:pgfRef
+         xlink:href="#adobe_illustrator_pgf" />
+    </foreignObject>
+    <linearGradient
+       y2="227.73579"
+       y1="227.73579"
+       x2="455.14841"
+       x1="424.36719"
+       id="XMLID_1_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop16"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop18"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop20"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop22"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop24"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop26"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop28"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop30"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop32"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop34"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="227.37601"
+       y1="227.37601"
+       x2="0.0713"
+       x1="30.851601"
+       id="XMLID_2_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop39"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop41"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop43"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop45"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop47"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop49"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="0.071800001"
+       y1="30.8521"
+       x2="227.73579"
+       x1="227.73579"
+       id="XMLID_3_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop54"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop56"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop58"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop60"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop62"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop64"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="454.67969"
+       y1="423.89941"
+       x2="227.37601"
+       x1="227.37601"
+       id="XMLID_4_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop69"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop71"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop73"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop75"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop77"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop79"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop81"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop83"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop85"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop87"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="1.1754328"
+     inkscape:cx="66.808505"
+     inkscape:cy="137.7421"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>Part of Hotel Icons Collection</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>hotel</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4176"
+     width="341.14413"
+     height="298.03735"
+     x="0"
+     y="0" />
+  <path
+     d="m 173.48238,97.712242 -28.187,27.431998 40.392,23.22 c 0.252,17.713 0.395,32.832 0.287,46.188 -0.107,13.284 1.08,26.172 -0.863,32.976 -2.088,6.553 -6.984,6.624 -11.088,6.624 -4.141,-0.107 -10.909,-1.943 -13.357,-6.876 -2.447,-5.111 -1.295,-12.672 -1.404,-22.68 -0.252,-10.08 -0.252,-22.176 0,-36.972 -12.887,-6.013 -23.615,-11.232 -32.723,-16.345 -9.217,-5.076 -16.921,-8.855 -21.601,-13.716 -4.644,-5.04 -6.265001,-10.512 -6.265001,-15.588 -0.071,-5.112 1.729001,-8.928 5.688001,-14. [...]
+     i:knockout="Off"
+     id="path93"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 202.73838,21.772242 c 13.494,0 24.445,10.161 24.445,22.68 0,12.52 -10.951,22.68 -24.445,22.68 -13.492,0 -24.443,-10.161 -24.443,-22.68 0,-12.519 10.951,-22.68 24.443,-22.68"
+     i:knockout="Off"
+     id="path95"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 83.267379,153.26024 c 37.757001,0 68.399001,28.434 68.399001,63.468 0,35.034 -30.642,63.467 -68.399001,63.467 -37.757,0 -68.4,-28.434 -68.4,-63.468 0,-35.034 30.643,-63.467 68.4,-63.467 z m 0,12.276 c 30.464001,0 55.188001,22.934 55.188001,51.191 0,28.257 -24.725,51.192 -55.188001,51.192 -30.463,0 -55.188,-22.935 -55.188,-51.192 0,-28.257 24.724,-51.191 55.188,-51.191 z"
+     i:knockout="Off"
+     id="path97"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 262.15038,153.26024 c 37.758,0 68.4,28.434 68.4,63.468 0,35.034 -30.643,63.468 -68.4,63.468 -37.756,0 -68.4,-28.434 -68.4,-63.468 0,-35.034 30.644,-63.468 68.4,-63.468 z m 0,12.276 c 30.445,0 55.152,22.934 55.152,51.191 0,28.257 -24.707,51.192 -55.152,51.192 -30.443,0 -55.152,-22.935 -55.152,-51.192 0,-28.257 24.709,-51.191 55.152,-51.191 z"
+     i:knockout="Off"
+     id="path99"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 171.10738,93.320242 -28.189,27.431998 40.392,23.22 c 0.252,17.748 0.396,32.76 0.289,46.152 -0.109,13.248 1.08,26.244 -0.865,33.012 -2.088,6.588 -6.984,6.516 -11.088,6.588 -4.141,-0.108 -10.908,-1.944 -13.355,-6.876 -2.449,-5.04 -1.297,-12.78 -1.404,-22.68 -0.252,-10.116 -0.252,-22.104 0,-36.937 -12.889,-5.976 -23.616,-11.304 -32.725,-16.38 -9.18,-5.076 -16.992,-8.856 -21.636,-13.716 -4.681001,-5.112 -6.155001,-10.44 -6.228001,-15.552 -0.072,-5.112 1.728,-8.928 5.688001,-14.508  [...]
+     i:knockout="Off"
+     id="path101"
+     style="clip-rule:evenodd;fill:#17057a;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 200.34038,17.212242 c 13.492,0 24.443,10.16 24.443,22.68 0,12.52 -10.951,22.68 -24.443,22.68 -13.494,0 -24.445,-10.161 -24.445,-22.68 0,-12.519 10.95,-22.68 24.445,-22.68"
+     i:knockout="Off"
+     id="path103"
+     style="clip-rule:evenodd;fill:#17057a;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 80.891379,148.83224 c 37.756001,0 68.400001,28.434 68.400001,63.468 0,35.034 -30.645,63.468 -68.400001,63.468 -37.757,0 -68.4,-28.434 -68.4,-63.468 0,-35.034 30.643,-63.468 68.4,-63.468 z m 0,12.276 c 30.463001,0 55.188001,22.935 55.188001,51.192 0,28.257 -24.725,51.191 -55.188001,51.191 -30.464,0 -55.188,-22.934 -55.188,-51.191 0,-28.257 24.724,-51.192 55.188,-51.192 z"
+     i:knockout="Off"
+     id="path105"
+     style="clip-rule:evenodd;fill:#17057a;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 259.77538,148.83224 c 37.756,0 68.4,28.434 68.4,63.468 0,35.034 -30.645,63.468 -68.4,63.468 -37.758,0 -68.4,-28.434 -68.4,-63.468 0,-35.034 30.642,-63.468 68.4,-63.468 z m 0,12.276 c 30.443,0 55.152,22.935 55.152,51.192 0,28.257 -24.709,51.191 -55.152,51.191 -30.445,0 -55.152,-22.934 -55.152,-51.191 0,-28.257 24.707,-51.192 55.152,-51.192 z"
+     i:knockout="Off"
+     id="path107"
+     style="clip-rule:evenodd;fill:#17057a;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/field_hockey.png b/images/presets/sport/field_hockey.png
similarity index 100%
rename from images/presets/field_hockey.png
rename to images/presets/sport/field_hockey.png
diff --git a/images/presets/sport/fishing.png b/images/presets/sport/fishing.png
new file mode 100644
index 0000000..17adad4
Binary files /dev/null and b/images/presets/sport/fishing.png differ
diff --git a/images/presets/gymnastics.png b/images/presets/sport/fitness_centre.png
similarity index 100%
rename from images/presets/gymnastics.png
rename to images/presets/sport/fitness_centre.png
diff --git a/images/presets/sport/football.svg b/images/presets/sport/football.svg
new file mode 100644
index 0000000..7336968
--- /dev/null
+++ b/images/presets/sport/football.svg
@@ -0,0 +1,752 @@
+<?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://web.resource.org/cc/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="161.66531"
+   height="98.176353"
+   id="svg2095"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   version="1.0"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\sports"
+   sodipodi:docname="football.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs2097">
+    <linearGradient
+       id="linearGradient3749">
+      <stop
+         id="stop3751"
+         offset="0"
+         style="stop-color:#722e00;stop-opacity:1;" />
+      <stop
+         style="stop-color:#722e00;stop-opacity:1;"
+         offset="0.5"
+         id="stop3813" />
+      <stop
+         id="stop3753"
+         offset="1"
+         style="stop-color:#722e00;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3851">
+      <stop
+         id="stop3853"
+         offset="0"
+         style="stop-color:#dcdcdc;stop-opacity:1;" />
+      <stop
+         id="stop3855"
+         offset="1"
+         style="stop-color:white;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2336"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2338"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2340"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2342"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2344"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2346"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2348"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2350"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2352"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2354"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2356"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2358"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2360"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2362"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient2364"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3851"
+       id="linearGradient2393"
+       gradientUnits="userSpaceOnUse"
+       x1="-746.70801"
+       y1="401.65866"
+       x2="-746.70801"
+       y2="273.72971"
+       gradientTransform="matrix(0.4276173,0,0,0.4276173,123.92176,444.08246)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3851"
+       id="linearGradient2396"
+       gradientUnits="userSpaceOnUse"
+       x1="-746.70801"
+       y1="401.65866"
+       x2="-746.70801"
+       y2="273.72971"
+       gradientTransform="matrix(0.4276173,0,0,0.4276173,123.92176,444.08246)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3851"
+       id="linearGradient3014"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4276173,0,0,0.4276173,123.92176,444.08246)"
+       x1="-746.70801"
+       y1="401.65866"
+       x2="-746.70801"
+       y2="273.72971" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3851"
+       id="linearGradient3016"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4276173,0,0,0.4276173,123.92176,444.08246)"
+       x1="-746.70801"
+       y1="401.65866"
+       x2="-746.70801"
+       y2="273.72971" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3018"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3020"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3022"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3024"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3026"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3028"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3030"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3032"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3034"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3036"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3038"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3040"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3042"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3044"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3749"
+       id="radialGradient3046"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.2,0,-52.03003)"
+       cx="-601.7984"
+       cy="260.15005"
+       fx="-601.7984"
+       fy="260.15005"
+       r="2.5253813" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.9839906"
+     inkscape:cx="115.76689"
+     inkscape:cy="41.383624"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="160px"
+     height="100px"
+     inkscape:window-width="1024"
+     inkscape:window-height="626"
+     inkscape:window-x="132"
+     inkscape:window-y="174" />
+  <metadata
+     id="metadata2100">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>molumen</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Calque 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(235.94636,-524.69864)">
+    <g
+       id="g3847"
+       transform="matrix(0.253908,-7.621158e-3,7.621158e-3,0.253908,-147.41095,524.51715)" />
+    <g
+       id="g2983">
+      <path
+         sodipodi:nodetypes="czzzz"
+         id="path1927"
+         d="M -154.88169,526.71821 C -112.28217,525.80995 -76.201276,556.6805 -76.290815,574.20391 C -76.378173,591.30082 -109.93048,620.88401 -153.53019,620.88401 C -196.82447,620.88401 -233.36552,589.22245 -233.95371,573.39831 C -234.5419,557.57419 -197.4812,527.62648 -154.88169,526.71821 z"
+         style="color:#000000;fill:#ad4700;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00000048;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="czzzz"
+         id="path2817"
+         d="M -154.97557,545.09317 C -116.22056,543.48199 -76.821877,557.64141 -76.290798,574.20286 C -75.759723,590.76431 -119.41623,605.29763 -155.27678,604.04314 C -191.56929,602.78645 -233.93835,583.3977 -233.9537,573.39727 C -233.96907,563.38464 -193.73058,546.70435 -154.97557,545.09317 z"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#722e00;stroke-width:0.85523498;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="rect2819"
+         d="M -206.64649,541.9655 C -201.33011,552.93439 -197.61846,578.88239 -206.57716,605.17807 C -202.22002,607.96467 -197.45389,610.40386 -192.46637,612.64747 C -178.4538,585.20606 -184.7239,542.89438 -192.16178,534.72812 C -197.2702,536.80767 -201.9873,539.16936 -206.64649,541.9655 z"
+         style="color:#000000;fill:url(#linearGradient3014);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path2832"
+         d="M -117.9519,614.55382 C -111.89368,611.98484 -106.20615,608.97835 -101.09587,605.72668 C -88.687838,586.19769 -91.929592,559.83758 -100.15906,543.01221 C -105.30001,539.55631 -111.10898,536.38664 -117.41727,533.78358 C -108.83941,547.65787 -104.20779,590.74642 -117.9519,614.55382 z"
+         style="color:#000000;fill:url(#linearGradient3016);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3729"
+         d="M -176.45096,547.4503 C -163.50472,544.54072 -141.79807,544.24327 -128.33542,546.40025"
+         style="fill:none;fill-rule:evenodd;stroke:#ececec;stroke-width:4.27617359;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3731"
+         d="M -176.45096,547.4503 C -163.50472,544.54072 -141.79807,544.24327 -128.33542,546.40025"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#722e00;stroke-width:0.47037905;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3018);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3757"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-375.12131,79.283681)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3020);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3761"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-375.88076,69.452588)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3022);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3765"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-370.31489,68.617109)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3024);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3769"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-368.6365,78.290924)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3026);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3773"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-361.83182,78.001727)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3028);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3777"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-363.34815,68.328724)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3030);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3781"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-356.21806,67.825205)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3032);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3785"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-355.02501,77.388524)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3034);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3789"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-348.16902,77.639535)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3036);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3793"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-348.92933,67.970424)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3038);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3797"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-348.87502,67.86275)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3040);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3801"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-341.53368,68.27818)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3042);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3805"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-341.52898,77.889392)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient3044);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3809"
+         sodipodi:cx="-601.7984"
+         sodipodi:cy="260.15005"
+         sodipodi:rx="2.5253813"
+         sodipodi:ry="3.0304577"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-333.9717,78.306019)" />
+      <path
+         transform="matrix(4.0056888e-3,-0.7839546,0.7839546,4.0056888e-3,-334.2488,69.125375)"
+         d="M -599.27302,260.15005 A 2.5253813,3.0304577 0 1 1 -604.32378,260.15005 A 2.5253813,3.0304577 0 1 1 -599.27302,260.15005 z"
+         sodipodi:ry="3.0304577"
+         sodipodi:rx="2.5253813"
+         sodipodi:cy="260.15005"
+         sodipodi:cx="-601.7984"
+         id="path3747"
+         style="color:#000000;fill:url(#radialGradient3046);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.9000001;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3735"
+         sodipodi:cx="-585.50964"
+         sodipodi:cy="277.82773"
+         sodipodi:rx="14.268405"
+         sodipodi:ry="4.2931485"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:start="5.8925783"
+         sodipodi:end="9.7207341"
+         sodipodi:open="true"
+         transform="matrix(-3.6874385e-2,-0.3597848,0.4276117,2.1849217e-3,-314.06098,335.7153)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3737"
+         sodipodi:cx="-585.50964"
+         sodipodi:cy="277.82773"
+         sodipodi:rx="14.268405"
+         sodipodi:ry="4.2931485"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:start="5.8925783"
+         sodipodi:end="9.7207341"
+         sodipodi:open="true"
+         transform="matrix(-6.1986549e-2,-0.3599131,0.4276117,2.1849217e-3,-322.4983,335.02423)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3739"
+         sodipodi:cx="-585.50964"
+         sodipodi:cy="277.82773"
+         sodipodi:rx="14.268405"
+         sodipodi:ry="4.2931485"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:start="5.8925783"
+         sodipodi:end="9.7207341"
+         sodipodi:open="true"
+         transform="matrix(-6.1986549e-2,-0.3599131,0.4276117,2.1849217e-3,-315.90829,334.51797)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3741"
+         sodipodi:cx="-585.50964"
+         sodipodi:cy="277.82773"
+         sodipodi:rx="14.268405"
+         sodipodi:ry="4.2931485"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:start="5.8925783"
+         sodipodi:end="9.7207341"
+         sodipodi:open="true"
+         transform="matrix(-3.6874282e-2,-0.3597848,0.4276117,2.1849217e-3,-294.29091,334.19645)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3743"
+         sodipodi:cx="-585.50964"
+         sodipodi:cy="277.82773"
+         sodipodi:rx="14.268405"
+         sodipodi:ry="4.2931485"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:start="5.8925783"
+         sodipodi:end="9.7207341"
+         sodipodi:open="true"
+         transform="matrix(-1.8040071e-2,-0.3596886,0.4276117,2.1849217e-3,-276.13513,334.18122)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="path3745"
+         sodipodi:cx="-585.50964"
+         sodipodi:cy="277.82773"
+         sodipodi:rx="14.268405"
+         sodipodi:ry="4.2931485"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:start="5.8925783"
+         sodipodi:end="9.7207341"
+         sodipodi:open="true"
+         transform="matrix(7.0723497e-3,-0.3595599,0.4276117,2.1849217e-3,-254.41414,334.72417)" />
+      <path
+         transform="matrix(7.0723497e-3,-0.3595599,0.4276117,2.1849217e-3,-247.07311,335.19365)"
+         sodipodi:open="true"
+         sodipodi:end="9.7207341"
+         sodipodi:start="5.8925783"
+         d="M -572.31596,276.19311 A 14.268405,4.2931485 0 1 1 -599.15771,276.57561"
+         sodipodi:ry="4.2931485"
+         sodipodi:rx="14.268405"
+         sodipodi:cy="277.82773"
+         sodipodi:cx="-585.50964"
+         id="path3733"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:5.34341764;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         sodipodi:type="arc" />
+      <path
+         id="path2400"
+         d="M -154.9375,524.71875 C -176.69325,525.18261 -196.91233,533.01153 -211.71875,542.78125 C -219.12196,547.66611 -225.1796,553.05484 -229.40625,558.3125 C -233.6329,563.57016 -236.11438,568.71025 -235.9375,573.46875 C -235.76282,578.16819 -233.12157,583.36359 -228.78125,588.75 C -224.44093,594.13641 -218.33009,599.67406 -210.875,604.71875 C -195.96481,614.80813 -175.66593,622.87499 -153.53125,622.875 C -131.27905,622.875 -111.63416,615.34449 -97.46875,605.59375 C -83.303336,595. [...]
+         style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf.svg b/images/presets/sport/golf.svg
new file mode 100644
index 0000000..9944c98
--- /dev/null
+++ b/images/presets/sport/golf.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="479.32132"
+   height="510.47299"
+   viewBox="0 0 479.32132 510.47299"
+   enable-background="new 0 0 580 580"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="21011.svg"><metadata
+   id="metadata21"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs19">
+	
+
+		
+		
+		
+	</defs><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview17"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="0.8137931"
+   inkscape:cx="317.09017"
+   inkscape:cy="182.51276"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" />
+
+<polygon
+   points="83.081,58.995 83.081,46.44 50.339,46.44 50.339,534.896 83.081,534.896 83.081,185.056 244.864,119.197 "
+   id="polygon11"
+   style="fill:#ff0000"
+   transform="translate(-50.339,-34.763)" /><path
+   d="m 313.098,149.709 c 7.559,-7.174 11.338,-15.989 11.338,-26.446 0,-10.469 -3.779,-19.29 -11.338,-26.465 -7.559,-7.174 -16.572,-10.761 -27.041,-10.761 -10.457,0 -19.37,3.587 -26.739,10.761 -7.369,7.175 -11.054,15.996 -11.054,26.465 0,10.457 3.685,19.272 11.054,26.446 7.369,7.174 16.282,10.762 26.739,10.761 10.468,0 19.482,-3.587 27.041,-10.761 z"
+   id="path13"
+   inkscape:connector-curvature="0"
+   style="fill:#a05a2c" /><path
+   d="m 479.086,159.884 c -1.159,-5.039 -4.063,-9.304 -8.712,-12.793 L 247.11,0 226.759,29.648 c -5.039,6.979 -3.874,12.989 3.495,18.027 6.968,4.259 12.97,3.094 18.009,-3.495 l 11.64,-17.441 181.39,119.199 -148.245,26.739 c -5.43,1.159 -9.792,3.969 -13.086,8.428 -3.294,4.46 -4.167,9.209 -2.617,14.248 l 31.974,125.001 -104.65,156.407 c -1.939,3.478 -2.909,7.156 -2.909,11.036 0,6.199 2.229,11.527 6.689,15.987 4.459,4.459 9.788,6.688 15.986,6.689 8.138,-0.001 14.727,-3.874 19.765,-11.622 l  [...]
+   id="path15"
+   inkscape:connector-curvature="0"
+   style="fill:#a05a2c" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/sport/golf/bunker.svg b/images/presets/sport/golf/bunker.svg
new file mode 100644
index 0000000..4a4d73b
--- /dev/null
+++ b/images/presets/sport/golf/bunker.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="102"
+   height="102"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="pin.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="45.771857"
+     inkscape:cy="-60.692427"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-354.56025,-169.09633)">
+    <g
+       id="g3033"
+       transform="translate(353.12275,167.65883)">
+      <path
+         id="path3035"
+         d="m 22.429134,2.4448819 60.023622,0 c 11.055118,0 19.984254,8.9291341 19.984254,19.9842521 l 0,60.023622 c 0,11.055118 -8.929136,19.984254 -19.984254,19.984254 l -60.023622,0 c -11.055118,0 -19.9842521,-8.929136 -19.9842521,-19.984254 l 0,-60.023622 c 0,-11.055118 8.9291341,-19.9842521 19.9842521,-19.9842521 z"
+         style="fill:#a8fa8b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98425198px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3037"
+         d="M 98.43307,63.248031 C 96.590551,71.858267 78.838582,62.681102 68.031496,65.232283 58.96063,67.393701 66.366141,91.062992 54.744094,87.838582 40.96063,84.047244 39.791338,66.259842 32.562992,58.003937 26.433071,50.952756 13.181102,49.748031 9.9921259,41.988189 6.4133858,33.271653 12.401575,24.377953 22.216535,24.590551 c 16.334646,0.318898 19.346457,15.69685 32.456693,16.61811 37.133858,2.586614 47.125982,6.200788 43.759842,22.03937 z"
+         style="fill:#fae675;fill-opacity:1;fill-rule:nonzero;stroke:#037200;stroke-width:1.59448814px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/driving_range.svg b/images/presets/sport/golf/driving_range.svg
new file mode 100644
index 0000000..2d321ce
--- /dev/null
+++ b/images/presets/sport/golf/driving_range.svg
@@ -0,0 +1,156 @@
+<?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"
+   width="16"
+   height="16.000002"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="bunker.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="16.818484"
+     inkscape:cy="4.5807355"
+     inkscape:document-units="px"
+     inkscape:current-layer="g3033"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2991"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-0.015255946px"
+       originy="-0.0083663458px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-354.57551,-255.08796)">
+    <g
+       id="g3033"
+       transform="translate(353.12275,167.65883)">
+      <path
+         id="path3035"
+         d="m 4.7439303,87.584796 9.4176517,0 c 1.734537,0 3.13551,1.400973 3.13551,3.135511 l 0,9.417653 c 0,1.73454 -1.400973,3.13551 -3.13551,3.13551 l -9.4176517,0 c -1.7345378,0 -3.1355107,-1.40097 -3.1355107,-3.13551 l 0,-9.417653 c 0,-1.734538 1.4009729,-3.135511 3.1355107,-3.135511 z"
+         style="fill:#2c9e06;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.31132731px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 6.1875,101.40625 c -2.0310146,-3.586912 -2.9025066,-7.40966 0,-12"
+         id="path2993"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
+         transform="translate(1.4375,1.4375)" />
+      <path
+         transform="translate(-1.5625,3.4375)"
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867-7"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" />
+      <path
+         transform="translate(2.4375,5.4375)"
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867-7-6"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" />
+      <path
+         transform="translate(-1.5625,7.4375)"
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867-7-1"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" />
+      <path
+         transform="translate(3.4375,11.4375)"
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867-7-4"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" />
+      <path
+         transform="translate(4.4375,8.4375)"
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867-7-2"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" />
+      <path
+         transform="translate(4.4375,2.4375)"
+         sodipodi:type="arc"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         id="path3867-7-3"
+         sodipodi:cx="11"
+         sodipodi:cy="89"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 12,89 c 0,0.552285 -0.447715,1 -1,1 -0.552285,0 -1,-0.447715 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/fairway.svg b/images/presets/sport/golf/fairway.svg
new file mode 100644
index 0000000..494c0ab
--- /dev/null
+++ b/images/presets/sport/golf/fairway.svg
@@ -0,0 +1,122 @@
+<?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"
+   width="104.88"
+   height="104.88"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="green.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-4">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-0" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="17.365857"
+     inkscape:cy="69.463743"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-382.96625,-296.3725)">
+    <rect
+       style="color:#000000;fill:#a8fa8b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5347-4);enable-background:accumulate"
+       id="rect5846"
+       width="100"
+       height="100"
+       x="385.40948"
+       y="298.81348"
+       ry="20"
+       rx="20"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\fairway.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <path
+       inkscape:export-ydpi="54.919907"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\fairway.png"
+       sodipodi:nodetypes="ssccss"
+       inkscape:connector-curvature="0"
+       id="path5848"
+       d="m 470.14991,314.36019 c 8.07203,14.09444 -28.59157,25.17714 -34.39798,29.99967 -7.16356,5.94972 9.33577,47.81689 -13.05094,46.60168 -28.97168,-10.24546 -10.04074,-31.82955 -11.4931,-57.11122 1.18769,-12.21842 11.56862,-18.10945 18.92119,-19.02394 7.66324,-0.95313 33.34638,-12.12033 40.02083,-0.46619 z"
+       style="color:#000000;fill:#2c9e06;fill-opacity:1;stroke:#037200;stroke-width:1.61988366;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/golf.svg b/images/presets/sport/golf/golf.svg
new file mode 100644
index 0000000..a3f876f
--- /dev/null
+++ b/images/presets/sport/golf/golf.svg
@@ -0,0 +1,164 @@
+<?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"
+   width="104.88"
+   height="104.88"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 1">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-66.84125"
+     inkscape:cy="-81.859683"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="463"
+     inkscape:window-height="453"
+     inkscape:window-x="150"
+     inkscape:window-y="150"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-441.84125,-345.6225)">
+    <rect
+       style="opacity:0.86386617;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.54900002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect5622"
+       width="61.366768"
+       height="38.890873"
+       x="449.42041"
+       y="403.92032"
+       rx="20"
+       ry="20"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\golf.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <rect
+       style="color:#000000;fill:#2c9e06;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5347);enable-background:accumulate"
+       id="rect3007"
+       width="100"
+       height="100"
+       x="444.28571"
+       y="348.07648"
+       ry="20"
+       rx="20"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\golf.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <path
+       sodipodi:type="arc"
+       style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.54068196;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path5351"
+       sodipodi:cx="155.71428"
+       sodipodi:cy="207.71933"
+       sodipodi:rx="30.714285"
+       sodipodi:ry="10.357142"
+       d="m 186.42856,207.71933 c 0,5.72009 -13.75125,10.35714 -30.71428,10.35714 -16.96303,0 -30.71429,-4.63705 -30.71429,-10.35714 0,-5.72009 13.75126,-10.35714 30.71429,-10.35714 16.96303,0 30.71428,4.63705 30.71428,10.35714 z"
+       transform="matrix(0.88250467,0,0,0.84551904,349.48243,252.12946)"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\golf.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.52788104;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.54900002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5685);enable-background:accumulate"
+       id="path5627"
+       sodipodi:cx="66.038719"
+       sodipodi:cy="110.39494"
+       sodipodi:rx="11.995562"
+       sodipodi:ry="3.2829957"
+       d="m 78.034281,110.39494 c 0,1.81315 -5.370596,3.283 -11.995562,3.283 -6.624966,0 -11.995561,-1.46985 -11.995561,-3.283 0,-1.81315 5.370595,-3.28299 11.995561,-3.28299 6.624966,0 11.995562,1.46984 11.995562,3.28299 z"
+       transform="matrix(1.9338771,0,0,1.5693135,358.46983,254.64499)"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\golf.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <path
+       sodipodi:type="arc"
+       style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#555555;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path5353"
+       sodipodi:cx="70.714287"
+       sodipodi:cy="189.50504"
+       sodipodi:rx="13.571428"
+       sodipodi:ry="13.571428"
+       d="m 84.285715,189.50504 c 0,7.49529 -6.076135,13.57142 -13.571428,13.57142 -7.495293,0 -13.571428,-6.07613 -13.571428,-13.57142 0,-7.4953 6.076135,-13.57143 13.571428,-13.57143 7.495293,0 13.571428,6.07613 13.571428,13.57143 z"
+       transform="matrix(0.75728873,0,0,0.75728873,471.07502,266.88949)"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\golf.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <g
+       id="g5456"
+       transform="matrix(1.0720344,0,0,1.0720344,413.11861,307.28044)"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\golf.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907"
+       style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">
+      <path
+         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 58.230403,46.766947 c -0.931851,0 -1.65788,1.006862 -1.65788,2.257538 l 0,61.553155 c 0,1.25068 0.726029,2.25754 1.65788,2.25754 0.93185,0 1.693153,-1.00686 1.693153,-2.25754 l 0,-41.411684 L 91.03525,57.066964 59.817734,48.283731 c -0.227923,-0.883475 -0.849617,-1.516784 -1.587331,-1.516784 z"
+         id="path5454"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5409"
+         d="m 57.802599,46.423856 c -0.931851,0 -1.657879,1.006862 -1.657879,2.257538 l 0,61.553186 c 0,1.25067 0.726028,2.25753 1.657879,2.25753 0.931851,0 1.693154,-1.00686 1.693154,-2.25753 l 0,-41.411715 L 90.607447,56.723873 59.38993,47.940639 c -0.227923,-0.883475 -0.849616,-1.516783 -1.587331,-1.516783 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/green.svg b/images/presets/sport/golf/green.svg
new file mode 100644
index 0000000..5fa2e00
--- /dev/null
+++ b/images/presets/sport/golf/green.svg
@@ -0,0 +1,116 @@
+<?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"
+   width="102"
+   height="102"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="lateral_water_hazard.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="-4.7728035"
+     inkscape:cy="25.105933"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-405.10491,-254.89469)">
+    <g
+       id="g3119"
+       transform="translate(403.66741,253.45719)">
+      <path
+         id="path3121"
+         d="m 22.429134,2.4448819 60.023622,0 c 11.055118,0 19.984254,8.9291341 19.984254,19.9842521 l 0,60.023622 c 0,11.055118 -8.929136,19.984254 -19.984254,19.984254 l -60.023622,0 c -11.055118,0 -19.9842521,-8.929136 -19.9842521,-19.984254 l 0,-60.023622 c 0,-11.055118 8.9291341,-19.9842521 19.9842521,-19.9842521 z"
+         style="fill:#a8fa8b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98425198px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3123"
+         d="M 88.937008,67.429134 C 85.606299,75.57874 74.728346,94.464567 63.637795,95.066929 54.318897,95.562992 21.862205,72.070866 15.377953,61.901575 -0.21259842,37.38189 25.15748,14.846457 36.389764,15.980315 c 26.53937,2.728346 58.677165,36.496063 52.547244,51.448819 z"
+         style="fill:#2c9e06;fill-opacity:1;fill-rule:nonzero;stroke:#037200;stroke-width:1.41732287px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3125"
+         d="m 59.988189,10.771654 c -0.673229,0 -1.240158,0.744094 -1.240158,1.665354 l 0,45.389763 c 0,0.92126 0.566929,1.665355 1.240158,1.665355 0.673228,0 1.240157,-0.744095 1.240157,-1.665355 l 0,-30.543307 22.925197,-8.8937 -22.996063,-6.484252 c -0.177165,-0.637796 -0.637795,-1.133858 -1.169291,-1.133858 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.67322832px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3127"
+         d="m 59.669291,10.523622 c -0.673228,0 -1.204724,0.744094 -1.204724,1.665354 l 0,45.389764 c 0,0.92126 0.531496,1.665354 1.204724,1.665354 0.673228,0 1.240158,-0.744094 1.240158,-1.665354 l 0,-30.543307 22.925196,-8.929134 -22.996063,-6.448819 c -0.177165,-0.673228 -0.637795,-1.133858 -1.169291,-1.133858 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.67322832px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/hole.svg b/images/presets/sport/golf/hole.svg
new file mode 100644
index 0000000..0c48be2
--- /dev/null
+++ b/images/presets/sport/golf/hole.svg
@@ -0,0 +1,136 @@
+<?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"
+   width="102"
+   height="102"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="bunker.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="34.145847"
+     inkscape:cy="-138.9954"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-366.18626,-90.793358)">
+    <g
+       id="g3050"
+       transform="translate(364.74876,89.355858)">
+      <path
+         id="path3052"
+         d="m 22.429134,2.4448819 60.023622,0 c 11.055118,0 19.984254,8.9291341 19.984254,19.9842521 l 0,60.023622 c 0,11.055118 -8.929136,19.984254 -19.984254,19.984254 l -60.023622,0 c -11.055118,0 -19.9842521,-8.929136 -19.9842521,-19.984254 l 0,-60.023622 c 0,-11.055118 8.9291341,-19.9842521 19.9842521,-19.9842521 z"
+         style="fill:#a8fa8b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98425198px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3054"
+         d="m 19.73622,58.96063 c 0,3.259842 -2.65748,5.917322 -5.917322,5.917322 -3.259843,0 -5.9173232,-2.65748 -5.9173232,-5.917322 0,-3.259843 2.6574802,-5.88189 5.9173232,-5.88189 3.259842,0 5.917322,2.622047 5.917322,5.88189 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#555555;stroke-width:0.85039371px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3056"
+         d="m 11.480315,67.818897 4.854331,0 0,16.547244 -2.515748,3.862205 -2.338583,-3.862205 z"
+         style="fill:#c5ad09;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3058"
+         d="m 9.7440944,64.594488 c 1.8779526,2.161417 1.3110236,1.523622 1.6653546,3.330709 0,0 0,0 0,0 l 0,16.511811 2.338582,3.897637 2.515748,-3.897637 0,-16.511811 0,0 c 0.354331,-1.700788 -0.106299,-1.133859 1.629922,-3.330709 l -8.1496066,0 z"
+         style="fill:none;stroke:#000000;stroke-width:0.35433072px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3060"
+         d="m 79.334645,9.6377952 c -0.46063,0 -0.850393,0.4960628 -0.850393,1.1338588 l 0,31.641732 c 0,0.637795 0.389763,1.133858 0.850393,1.133858 0.496063,0 0.885827,-0.496063 0.885827,-1.133858 l 0,-21.295276 15.980315,-6.200787 -16.051181,-4.5 C 80.043307,9.9566929 79.724409,9.6377952 79.334645,9.6377952 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.46062991px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3062"
+         d="m 79.122047,9.4606299 c -0.46063,0 -0.850394,0.496063 -0.850394,1.1338581 l 0,31.641732 c 0,0.637796 0.389764,1.133859 0.850394,1.133859 0.496063,0 0.885827,-0.496063 0.885827,-1.133859 l 0,-21.295275 15.980315,-6.200788 -16.051181,-4.5 C 79.830708,9.7795275 79.511811,9.4606299 79.122047,9.4606299 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.46062991px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3064"
+         d="m 16.476378,87.944882 c 0,0 27.956693,-1.240158 32.88189,-9.56693 3.649606,-6.200787 -18.212599,-31.03937 -13.464567,-36.389763 7.122047,-8.007874 45.850393,5.633858 45.850393,5.633858"
+         style="fill:none;stroke:#000000;stroke-width:4.99606276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:9.9921259, 9.9921259;stroke-dashoffset:0"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3066"
+         d="m 91.240157,74.232283 c -0.708661,3.295276 -7.511811,-0.212598 -11.65748,0.779528 -3.472441,0.81496 -0.637795,9.885826 -5.102362,8.681102 -5.279528,-1.488189 -5.740158,-8.291338 -8.503937,-11.444882 -2.338583,-2.728346 -7.405512,-3.153543 -8.64567,-6.165354 -1.381889,-3.330709 0.92126,-6.732284 4.677166,-6.661417 6.271653,0.141732 7.405512,6.023622 12.437008,6.377952 14.244094,0.992126 18.070866,2.374016 16.795275,8.433071 z"
+         style="fill:#fae675;fill-opacity:1;fill-rule:nonzero;stroke:#037200;stroke-width:0.60236222px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/lateral_water_hazard.svg b/images/presets/sport/golf/lateral_water_hazard.svg
new file mode 100644
index 0000000..65d4619
--- /dev/null
+++ b/images/presets/sport/golf/lateral_water_hazard.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="102"
+   height="102"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="water_hazard.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="-18.400603"
+     inkscape:cy="-65.286567"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-418.73271,-164.50219)">
+    <g
+       id="g3102"
+       transform="translate(417.29521,163.06469)">
+      <path
+         id="path3104"
+         d="m 22.429134,2.4448819 60.023622,0 c 11.055118,0 19.984254,8.9291341 19.984254,19.9842521 l 0,60.023622 c 0,11.055118 -8.929136,19.984254 -19.984254,19.984254 l -60.023622,0 c -11.055118,0 -19.9842521,-8.929136 -19.9842521,-19.984254 l 0,-60.023622 c 0,-11.055118 8.9291341,-19.9842521 19.9842521,-19.9842521 z"
+         style="fill:#f74c42;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98425198px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3106"
+         d="M 82.488189,8.1850393 C 97.405511,9.531496 89.8937,52.830708 88.61811,66.11811 87.661417,76.748031 84.153543,86.881889 77.77559,92.374015 70.653543,98.503937 59.173228,101.23228 56.267716,91.877952 51.448819,76.251968 66.437008,58.818897 66.437008,45.673228 c 0,-11.65748 -0.03543,-38.9409446 16.051181,-37.4881887 z"
+         style="fill:#4c49f8;fill-opacity:1;fill-rule:nonzero;stroke:#037200;stroke-width:1.59448814px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/pin.svg b/images/presets/sport/golf/pin.svg
new file mode 100644
index 0000000..5e1792c
--- /dev/null
+++ b/images/presets/sport/golf/pin.svg
@@ -0,0 +1,126 @@
+<?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"
+   width="104.88"
+   height="104.88"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="golf.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="123.05779"
+     inkscape:cy="-95.52654"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-277.27432,-131.38222)">
+    <rect
+       inkscape:export-ydpi="54.919907"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\pin.png"
+       rx="20"
+       ry="20"
+       y="133.82222"
+       x="279.71432"
+       height="100"
+       width="100"
+       id="rect5790"
+       style="color:#000000;fill:#2c9e06;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5347-1);enable-background:accumulate" />
+    <path
+       sodipodi:type="arc"
+       style="color:#000000;fill:#503700;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path5792"
+       sodipodi:cx="262.89221"
+       sodipodi:cy="97.768028"
+       sodipodi:rx="28.031733"
+       sodipodi:ry="11.111678"
+       d="m 290.92394,97.768028 c 0,6.136812 -12.55023,11.111682 -28.03173,11.111682 -15.4815,0 -28.03173,-4.97487 -28.03173,-11.111682 0,-6.13681 12.55023,-11.111678 28.03173,-11.111678 15.4815,0 28.03173,4.974868 28.03173,11.111678 z"
+       transform="matrix(1.4514077,0,0,1.4514077,-50.247753,42.529045)"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\pin.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <path
+       style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.15252054;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="m 364.793,193.48732 c -2.88887,2.80067 -13.81594,7.22002 -33.72239,7.22002 -19.90645,0 -29.72875,-4.76668 -34.07952,-7.7288 10.17698,-9.78482 20.35376,-13.26892 35.07698,-12.98505 16.51439,0.3184 25.99414,1.7677 32.72493,13.49383 z"
+       id="path5794"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cscsc"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\pin.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/rough.svg b/images/presets/sport/golf/rough.svg
new file mode 100644
index 0000000..13f0b25
--- /dev/null
+++ b/images/presets/sport/golf/rough.svg
@@ -0,0 +1,220 @@
+<?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"
+   width="102"
+   height="102"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="fairway.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-4">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-0" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="105.74495"
+     inkscape:cy="-29.042284"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-294.58716,-200.74647)">
+    <g
+       id="g3155"
+       transform="translate(293.14966,199.30897)">
+      <path
+         id="path3157"
+         d="m 22.429134,2.4448819 60.023622,0 c 11.055118,0 19.984254,8.9291341 19.984254,19.9842521 l 0,60.023622 c 0,11.055118 -8.929136,19.984254 -19.984254,19.984254 l -60.023622,0 c -11.055118,0 -19.9842521,-8.929136 -19.9842521,-19.984254 l 0,-60.023622 c 0,-11.055118 8.9291341,-19.9842521 19.9842521,-19.9842521 z"
+         style="fill:#a8fa8b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98425198px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3159"
+         d="m 50.066929,91.594488 -3.401575,0 0,-54.248031 1.771654,-12.68504 1.629921,12.68504 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3161"
+         d="M 47.303149,91.417322 43.901575,91.629921 40.358268,37.488189 41.31496,24.732283 43.759842,37.27559 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3163"
+         d="m 57.188976,91.346456 -3.401575,-0.177165 2.480315,-54.177165 2.374016,-12.57874 1.062992,12.755905 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3165"
+         d="m 54.602362,90.708661 -3.401575,0 0,-54.248031 1.771654,-12.68504 1.629921,12.68504 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3167"
+         d="m 42.271653,91.098425 -3.401574,0.212598 -3.543307,-54.106299 0.956692,-12.791338 2.444882,12.543307 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3169"
+         d="m 61.405512,90.921259 -3.401575,-0.177165 2.515748,-54.177165 2.338582,-12.57874 1.062993,12.720472 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3171"
+         d="M 64.169291,90.885826 60.767716,90.531496 66.11811,36.566929 69.129921,24.129921 69.484252,36.92126 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3173"
+         d="m 64.842519,73.842519 c 0,7.759843 -6.271653,14.031496 -14.031496,14.031496 -7.759842,0 -14.031496,-6.271653 -14.031496,-14.031496 0,-7.759842 6.271654,-14.031496 14.031496,-14.031496 7.759843,0 14.031496,6.271654 14.031496,14.031496 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#555555;stroke-width:2.05511808px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3175"
+         d="m 75.082677,91.098425 -3.437008,0 0.03543,-54.248031 1.736221,-12.68504 1.665354,12.68504 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3177"
+         d="M 72.318897,90.921259 68.917323,91.133858 65.374015,36.992126 66.295275,24.23622 68.77559,36.779527 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3179"
+         d="m 82.204724,90.850393 -3.437008,-0.177165 2.515748,-54.177165 2.338583,-12.57874 1.062992,12.720472 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3181"
+         d="m 79.582677,90.212598 -3.401575,0 0,-54.248031 1.771654,-12.68504 1.629921,12.68504 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3183"
+         d="M 67.287401,90.602362 63.885827,90.81496 60.342519,36.673228 61.263779,23.917323 63.744094,36.46063 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3185"
+         d="M 86.421259,90.389763 83.019685,90.248031 85.5,36.070866 l 2.374015,-12.57874 1.027559,12.720472 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3187"
+         d="M 89.149606,90.389763 85.748031,90.035433 91.098425,36.070866 94.110236,23.633858 94.5,36.389764 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3189"
+         d="m 24.094488,90.602362 -3.437008,0 0,-54.248031 1.771654,-12.68504 1.665354,12.68504 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3191"
+         d="m 21.295276,90.425196 -3.401575,0.212599 -3.543307,-54.141732 0.956693,-12.755906 2.444881,12.543307 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3193"
+         d="M 31.181102,90.35433 27.779527,90.177165 30.295275,36 32.633858,23.42126 33.69685,36.141732 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3195"
+         d="m 28.594488,89.716535 -3.401575,0 0,-54.248031 1.771654,-12.68504 1.629921,12.68504 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3197"
+         d="M 16.263779,90.106299 12.862205,90.318897 9.3188976,36.177165 10.275591,23.42126 12.720472,35.964567 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3199"
+         d="m 35.433071,89.8937 -3.437008,-0.141732 2.515748,-54.177165 2.338583,-12.57874 1.062992,12.720472 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3201"
+         d="m 38.161417,89.8937 -3.401575,-0.35433 5.350394,-53.964567 3.011811,-12.437008 0.389764,12.755906 z"
+         style="fill:#1f6d04;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/tee.svg b/images/presets/sport/golf/tee.svg
new file mode 100644
index 0000000..299e1b6
--- /dev/null
+++ b/images/presets/sport/golf/tee.svg
@@ -0,0 +1,189 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="104.88"
+   height="104.88"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="rough.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-4">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-0" />
+    </filter>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5732"
+       id="linearGradient5766"
+       gradientUnits="userSpaceOnUse"
+       x1="135.73668"
+       y1="786.59497"
+       x2="135.85074"
+       y2="796.06512"
+       gradientTransform="matrix(1.1811017,0,0,1.1811017,28.593093,-46.764246)" />
+    <linearGradient
+       id="linearGradient5732">
+      <stop
+         style="stop-color:#594f03;stop-opacity:1"
+         offset="0"
+         id="stop5734" />
+      <stop
+         style="stop-color:#c5ad09;stop-opacity:1"
+         offset="1"
+         id="stop5736" />
+    </linearGradient>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-9">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-4" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="-112.54039"
+     inkscape:cy="-161.47375"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-512.8725,-65.435)">
+    <rect
+       style="color:#000000;fill:#a8fa8b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5347-9);enable-background:accumulate"
+       id="rect5718"
+       width="100"
+       height="100"
+       x="515.30804"
+       y="67.888557"
+       ry="20"
+       rx="20"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\tee.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907" />
+    <path
+       inkscape:export-ydpi="54.919907"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\tee.png"
+       transform="matrix(1.0345505,0,0,1.0345505,492.44413,-104.28)"
+       d="m 84.285715,189.50504 c 0,7.49529 -6.076135,13.57142 -13.571428,13.57142 -7.495293,0 -13.571428,-6.07613 -13.571428,-13.57142 0,-7.4953 6.076135,-13.57143 13.571428,-13.57143 7.495293,0 13.571428,6.07613 13.571428,13.57143 z"
+       sodipodi:ry="13.571428"
+       sodipodi:rx="13.571428"
+       sodipodi:cy="189.50504"
+       sodipodi:cx="70.714287"
+       id="path5768"
+       style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#555555;stroke-width:2;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <g
+       id="g5748"
+       transform="matrix(1.1117036,0,0,1.1117036,427.01869,-645.74278)"
+       inkscape:export-filename="C:\Users\cdeiters\Desktop\golf\tee.png"
+       inkscape:export-xdpi="54.919907"
+       inkscape:export-ydpi="54.919907">
+      <g
+         id="g5760"
+         transform="matrix(0.76159434,0,0,0.76159434,-8.9997756,93.980999)">
+        <g
+           transform="translate(39.648487,-23.233509)"
+           id="g5744">
+          <path
+             style="color:#000000;fill:#c5ad09;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             d="m 129.29953,795.78345 13.63706,0 0,46.46702 -7.07107,10.85914 -6.56599,-10.85914 z"
+             id="rect5722"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cccccc" />
+          <path
+             style="color:#000000;fill:url(#linearGradient5766);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             d="m 124.625,786.4375 c 5.37116,6.14247 3.70118,4.28544 4.6875,9.40625 l 13.625,0 c 1.01613,-4.79547 -0.26824,-3.18928 4.65625,-9.40625 z"
+             id="rect5725"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccc" />
+        </g>
+        <path
+           inkscape:connector-curvature="0"
+           id="path5750"
+           d="m 164.01319,763.44177 c 5.35831,6.12778 3.71616,4.29966 4.6875,9.375 0.002,0.0122 -0.002,0.019 0,0.0312 l 0,46.40625 6.5625,10.875 7.0625,-10.875 0,-46.40625 0,-0.0312 c 1.00219,-4.75171 -0.25595,-3.17355 4.65625,-9.375 l -22.96875,0 z"
+           style="color:#000000;fill:none;stroke:#000000;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/golf/water_hazard.svg b/images/presets/sport/golf/water_hazard.svg
new file mode 100644
index 0000000..c90907e
--- /dev/null
+++ b/images/presets/sport/golf/water_hazard.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="102"
+   height="102"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="hole.svg">
+  <defs
+     id="defs4">
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5685"
+       x="-0.22926316"
+       width="1.4585263"
+       y="-0.83769232"
+       height="2.6753848">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="2.2917836"
+         id="feGaussianBlur5687" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       inkscape:collect="always"
+       id="filter5347-1">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.6"
+         id="feGaussianBlur5349-7" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="133.63662"
+     inkscape:cy="-48.602897"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="824"
+     inkscape:window-height="972"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-266.69549,-181.18586)">
+    <g
+       id="g3085"
+       transform="translate(265.25799,179.74836)">
+      <path
+         id="path3087"
+         d="m 22.429134,2.4448819 60.023622,0 c 11.055118,0 19.984254,8.9291341 19.984254,19.9842521 l 0,60.023622 c 0,11.055118 -8.929136,19.984254 -19.984254,19.984254 l -60.023622,0 c -11.055118,0 -19.9842521,-8.929136 -19.9842521,-19.984254 l 0,-60.023622 c 0,-11.055118 8.9291341,-19.9842521 19.9842521,-19.9842521 z"
+         style="fill:#f6ed31;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.98425198px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3089"
+         d="M 93.437007,75.755905 C 87.484252,89.468504 48.720472,68.740157 36.496063,63.35433 26.751968,59.102362 18.177165,52.61811 14.988189,44.822834 c -3.57874,-8.681102 -2.586614,-20.444881 7.228346,-20.232283 16.334646,0.318898 28.169292,19.984252 40.641732,24.129921 11.090552,3.649607 37.027559,12.188977 30.57874,27.035433 z"
+         style="fill:#4c49f8;fill-opacity:1;fill-rule:nonzero;stroke:#037200;stroke-width:1.59448814px;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/gymnastics.svg b/images/presets/sport/gymnastics.svg
new file mode 100644
index 0000000..773dc60
--- /dev/null
+++ b/images/presets/sport/gymnastics.svg
@@ -0,0 +1,91 @@
+<?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"
+   version="1.0"
+   width="300"
+   height="300"
+   viewBox="0 0 240 240"
+   id="svg3045"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="16.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview11"
+     showgrid="true"
+     inkscape:zoom="2.2250293"
+     inkscape:cx="127.68355"
+     inkscape:cy="171.64626"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg3045">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4139" />
+  </sodipodi:namedview>
+  <defs
+     id="defs3065" />
+  <metadata
+     id="metadata3047">
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+<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></dc:title>
+  </cc:Work>
+</rdf:RDF>
+</metadata>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.87678516;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4141"
+     width="239.12321"
+     height="239.12321"
+     x="0.43839258"
+     y="0.43838584" />
+  <g
+     transform="matrix(-0.8,0,0,-0.8,278.4489,251.57613)"
+     id="g3125"
+     style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
+    <circle
+       cx="111.3"
+       cy="86.800003"
+       r="21.6"
+       transform="translate(52.430169,145.41677)"
+       id="circle3127" />
+    <path
+       d="M 184.21456,127.80624 C 174.50639,143.34846 146.99022,118.31729 118.28405,94.640199 91.49953,72.725832 59.288224,48.331528 60.490318,46.24946 c 1.079604,-2.152786 36.343473,16.247222 67.926162,32.113659 32.38822,16.16822 63.99545,36.376221 55.79808,49.443121 z"
+       id="path3135" />
+    <path
+       d="m 193.13742,208.00589 c -9.46109,9.17823 10.81875,24.53657 31.2541,42.00211 18.9505,16.26347 39.10303,33.87042 40.44653,32.80978 1.41422,-0.98997 -14.07142,-22.83954 -29.27424,-43.27495 -15.55632,-20.93034 -31.32482,-42.49712 -42.42639,-31.53694 z"
+       id="path3131-0"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 190.49779,134.56311 c -4.12529,17.85472 33.03129,19.61188 70.07186,23.16798 34.43531,3.4437 74.46152,8.97117 75.08375,6.64891 0.75886,-2.28565 -37.18724,-14.21019 -70.73883,-25.32327 -34.3346,-11.46927 -70.9735,-19.52974 -74.41678,-4.49362 z"
+       id="path3135-2"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 154.39456,195.56197 c 9.46109,9.17823 -10.81875,24.53657 -31.2541,42.00211 -18.9505,16.26347 -39.103029,33.87042 -40.446529,32.80978 -1.41422,-0.98997 14.07142,-22.83954 29.274239,-43.27495 15.55632,-20.93034 31.32482,-42.49712 42.42639,-31.53694 z"
+       id="path3131-0-9"
+       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/sport/handball.svg b/images/presets/sport/handball.svg
new file mode 100644
index 0000000..0e1e928
--- /dev/null
+++ b/images/presets/sport/handball.svg
@@ -0,0 +1,108 @@
+<?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"
+   width="284.39795"
+   height="284.39795"
+   id="svg3339"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="handball.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/josias/osm/fußball.png"
+   inkscape:export-xdpi="90.617371"
+   inkscape:export-ydpi="90.617371"
+   version="1.0">
+  <defs
+     id="defs3341" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="-10.788129"
+     inkscape:cy="35.167697"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1280"
+     inkscape:window-height="963"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     showgrid="false"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata3344">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-50.6582, -318.735)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:rgb(0, 0, 0);stroke-width:15;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3941"
+       width="269.39795"
+       height="269.39795"
+       x="58.158169"
+       y="326.23465"
+       ry="21.770645" />
+    <path
+       sodipodi:nodetypes="czzzcc"
+       style="fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 0pt; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+       d="M 185.45832,465.0883 C 185.45832,465.0883 156.74867,486.9591 150.55137,491.10912 C 144.25452,495.32585 140.8397,497.04873 135.7005,491.95886 C 130.63792,486.94498 134.89339,484.69205 139.62261,480.01985 C 144.25062,475.44754 173.38367,452.33833 173.38367,452.33833 L 185.45832,465.0883 z "
+       id="path8185"
+       inkscape:transform-center-y="11.616754"
+       inkscape:transform-center-x="9.5964492" />
+    <path
+       sodipodi:nodetypes="czzzcc"
+       style="fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 0pt; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+       d="M 193.55946,471.57843 C 193.55946,471.57843 125.78578,554.36915 121.73564,559.68217 C 117.63013,565.06782 119.27164,568.20007 122.5971,570.76794 C 125.84651,573.27716 130.39457,572.66063 133.85232,568.37547 C 137.25066,564.16383 204.3454,480.98059 204.3454,480.98059 L 193.55946,471.57843 z "
+       id="path8187" />
+    <path
+       sodipodi:type="arc"
+       style="fill: rgb(0, 0, 0); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-width: 0.177745; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+       id="path8189"
+       sodipodi:cx="176.35547"
+       sodipodi:cy="238.12976"
+       sodipodi:rx="0.61328125"
+       sodipodi:ry="0.78710938"
+       d="m 176.96875,238.12976 a 0.61328125,0.78710937 0 0 1 -0.61328,0.78711 0.61328125,0.78710937 0 0 1 -0.61328,-0.78711 0.61328125,0.78710937 0 0 1 0.61328,-0.78711 0.61328125,0.78710937 0 0 1 0.61328,0.78711 z"
+       transform="matrix(17.8035, 0, 0, 13.3809, -2958.09, -2825.88)" />
+    <path
+       sodipodi:nodetypes="cczzzzzzczzzzczzzzzz"
+       style="fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(255, 0, 0); stroke-width: 0pt; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+       d="M 253.67202,401.81635 C 265.3946,407.79432 291.97458,433.16294 291.97458,433.16294 C 300.77023,443.87387 300.94444,455.51828 287.67454,462.48072 C 275.02624,469.117 258.13294,475.82009 249.72456,478.47505 C 241.39433,481.10541 237.57804,481.00142 236.4665,475.51062 C 235.3598,470.04374 241.25181,466.66443 246.69517,464.27215 C 252.34701,461.78839 257.84132,460.3623 269.36748,453.06646 C 281.0099,445.69699 277.41335,443.48784 268.84628,436.22495 C 260.21458,428.90726 249.61315,4 [...]
+       id="path8191" />
+    <path
+       sodipodi:type="arc"
+       style="fill: rgb(0, 0, 0); fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-width: 0pt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+       id="path8193"
+       sodipodi:cx="178.39062"
+       sodipodi:cy="229.38562"
+       sodipodi:rx="0.703125"
+       sodipodi:ry="0.6484375"
+       d="m 179.09375,229.38562 a 0.703125,0.6484375 0 0 1 -0.70313,0.64844 0.703125,0.6484375 0 0 1 -0.70312,-0.64844 0.703125,0.6484375 0 0 1 0.70312,-0.64844 0.703125,0.6484375 0 0 1 0.70313,0.64844 z"
+       transform="matrix(25.0177, 0, 0, 27.1277, -4209.89, -5846.56)" />
+  </g>
+</svg>
diff --git a/images/presets/sport/ice_hockey.png b/images/presets/sport/ice_hockey.png
new file mode 100644
index 0000000..163e8fe
Binary files /dev/null and b/images/presets/sport/ice_hockey.png differ
diff --git a/images/presets/sport/karting.png b/images/presets/sport/karting.png
new file mode 100644
index 0000000..f1849bd
Binary files /dev/null and b/images/presets/sport/karting.png differ
diff --git a/images/presets/sport/miniature_golf.svg b/images/presets/sport/miniature_golf.svg
new file mode 100644
index 0000000..69f62ff
--- /dev/null
+++ b/images/presets/sport/miniature_golf.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="518.44159"
+   height="510.47299"
+   viewBox="0 0 518.44158 510.47299"
+   enable-background="new 0 0 580 580"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="miniature_golf.svg"><metadata
+   id="metadata26"><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="defs24">
+	
+
+		
+		
+	
+			
+			
+			
+		
+			
+		</defs><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="678"
+   inkscape:window-height="453"
+   id="namedview22"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="0.28771931"
+   inkscape:cx="78.145868"
+   inkscape:cy="214.81131"
+   inkscape:window-x="662"
+   inkscape:window-y="359"
+   inkscape:window-maximized="0"
+   inkscape:current-layer="svg2" />
+
+<path
+   style="opacity:1;fill:#c87137;fill-opacity:1"
+   id="path12"
+   d="m 57.79865,478.764 35.852,-235.576 28.108,-16.83 27.495,17.278 c 0,0 31.173,237.983 28.246,236.556 -2.927,-1.427 -119.116,0.714 -119.701,-1.428 l 0,0 z"
+   sodipodi:nodetypes="ccccsc"
+   inkscape:connector-curvature="0" /><path
+   style="fill:#502d16"
+   inkscape:connector-curvature="0"
+   id="path16"
+   d="m 243.12865,354.08 c -0.042,-1.88 -0.881,-3.652 -2.31,-4.875 l -96.155,-82.329 96.155,-82.328 c 1.428,-1.223 2.268,-2.996 2.31,-4.875 0.042,-1.879 -0.719,-3.688 -2.092,-4.972 l -32.625,-30.532 c -1.38,-1.292 -3.25,-1.927 -5.129,-1.755 -1.882,0.175 -3.599,1.148 -4.717,2.672 l -77,104.982 -77,-104.982 c -1.118,-1.524 -2.835,-2.497 -4.717,-2.672 -1.878,-0.172 -3.749,0.464 -5.129,1.755 L 2.0936501,174.701 c -1.37299999,1.285 -2.13299999,3.093 -2.09199999,4.972 0.041,1.879 0.881,3.652 2 [...]
+   id="g3020"
+   style="fill:#550000"
+   transform="translate(-27.47535,-34.763)"><path
+     d="m 545.682,194.647 c -1.16,-5.038 -4.064,-9.303 -8.713,-12.793 L 313.705,34.763 293.353,64.412 c -5.039,6.979 -3.873,12.988 3.496,18.027 6.967,4.259 12.971,3.094 18.01,-3.495 L 326.498,61.502 507.889,180.701 359.643,207.44 c -5.43,1.16 -9.791,3.969 -13.086,8.429 -3.295,4.459 -4.166,9.209 -2.617,14.247 l 31.975,125.002 -104.65,156.407 c -1.939,3.478 -2.91,7.156 -2.91,11.036 0,6.198 2.23,11.527 6.689,15.987 4.459,4.459 9.787,6.688 15.986,6.688 8.139,0 14.727,-3.874 19.766,-11.622 l  [...]
+     id="path18"
+     inkscape:connector-curvature="0"
+     style="fill:#550000" /><path
+     d="m 379.693,184.472 c 7.559,-7.174 11.338,-15.989 11.338,-26.446 0,-10.468 -3.779,-19.289 -11.338,-26.464 -7.561,-7.174 -16.572,-10.761 -27.041,-10.761 -10.457,0 -19.371,3.587 -26.74,10.761 -7.369,7.175 -11.053,15.996 -11.053,26.464 0,10.457 3.684,19.272 11.053,26.446 7.369,7.175 16.283,10.762 26.74,10.762 10.469,-0.001 19.481,-3.588 27.041,-10.762 z"
+     id="path20"
+     inkscape:connector-curvature="0"
+     style="fill:#550000" /></g>
+</svg>
\ No newline at end of file
diff --git a/images/presets/sport/motocross.svg b/images/presets/sport/motocross.svg
new file mode 100644
index 0000000..6692e9a
--- /dev/null
+++ b/images/presets/sport/motocross.svg
@@ -0,0 +1,113 @@
+<?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"
+   version="1.0"
+   width="596.53082"
+   height="558.8587"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="motocross.svg">
+  <metadata
+     id="metadata2840">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview2838"
+     showgrid="false"
+     inkscape:zoom="0.6812656"
+     inkscape:cx="80.509572"
+     inkscape:cy="372.53324"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 250 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="680 : 250 : 1"
+       inkscape:persp3d-origin="340 : 166.66667 : 1"
+       id="perspective2842" />
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4140"
+     width="596.53082"
+     height="558.8587"
+     x="0"
+     y="0" />
+  <g
+     id="layer1"
+     transform="matrix(-0.79157777,0.52526625,0.52526625,0.79157777,331.22721,-172.51071)"
+     inkscape:export-xdpi="2.2932594"
+     inkscape:export-ydpi="2.2932594">
+    <path
+       d="m 438.12826,429.16927 c -62.79839,-3.16426 -155.20224,7.89495 -186.20451,-31.3992 -14.20607,-74.76934 -54.80076,-112.40662 -124.50145,-113.18313 -42.795768,-82.64828 34.88862,-95.59972 87.99076,-116.8342 3.3733,38.41563 1.30629,78.34741 62.06817,100.7695 2.43911,-11.88771 7.42309,-21.59411 23.36684,-21.90641 l 89.81629,0.36511 63.52859,-49.65454 c 10.2664,16.32783 30.63852,37.24918 30.66898,48.92432 l 96.38822,0.36511 c 7.01925,5.97861 12.97283,21.84281 -1.09532,37.60601 -57.74 [...]
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path4749"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 281.45311,113.13794 0.25817,-34.043529 38.12235,-5.174139 0,-27.017909 -38.89686,6.464987 c 2.8605,-24.34011 18.51028,-41.939346 52.98479,-47.0361453 21.6463,1.5255947 44.34631,2.6992313 57.25914,43.1895493 3.78428,16.060343 1.42553,32.309362 -8.54869,46.305931 -32.28759,-17.699463 -56.45288,-5.617153 -78.49798,14.239165 l -22.68092,3.07209 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path5636"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 215.04795,186.7383 113.54824,-85.80012 c 15.26233,-8.1407 32.0941,-9.689721 52.21028,2.55575 17.19617,15.62165 46.2444,58.89814 69.37031,88.35586 l -64.62391,48.37667 -62.06818,-86.34778 -98.21375,75.21202 c -7.55995,-13.19498 -9.32895,-28.68129 -10.22299,-42.3524 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path6523"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 241.70075,414.19989 a 83.609474,83.609474 0 1 1 -167.218946,0 83.609474,83.609474 0 1 1 167.218946,0 z"
+       transform="matrix(0.974466,0,0,0.974466,-15.3767,-10.0838)"
+       style="fill:none;stroke:#000000;stroke-width:34.99969864;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 241.70075,414.19989 a 83.609474,83.609474 0 1 1 -167.218946,0 83.609474,83.609474 0 1 1 167.218946,0 z"
+       transform="matrix(0.974466,0,0,0.974466,388.618,-9.97323)"
+       style="fill:none;stroke:#000000;stroke-width:34.99969864;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297"
+       inkscape:connector-curvature="0" />
+  </g>
+  <path
+     style="fill:#d45500;stroke:#000000;stroke-width:0.94999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 596.05585,177.69519 C 351.32752,451.01003 29.206463,558.3837 29.206463,558.3837 l 566.849387,0 0,-380.68851 z"
+     id="path2849"
+     sodipodi:nodetypes="cccc"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.OMM\layer1.png"
+     inkscape:export-xdpi="2.2932594"
+     inkscape:export-ydpi="2.2932594"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/sport/motor.png b/images/presets/sport/motor.png
new file mode 100644
index 0000000..2f34f0b
Binary files /dev/null and b/images/presets/sport/motor.png differ
diff --git a/images/presets/sport/multi.svg b/images/presets/sport/multi.svg
new file mode 100644
index 0000000..9df72ac
--- /dev/null
+++ b/images/presets/sport/multi.svg
@@ -0,0 +1,227 @@
+<?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"
+   width="284.39795"
+   height="284.39795"
+   id="svg3339"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="multi.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/media/home/Bilder/grafik/osm/multi-small.png"
+   inkscape:export-xdpi="12.025403"
+   inkscape:export-ydpi="12.025403"
+   version="1.0">
+  <defs
+     id="defs3341">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 142.19897 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="284.39795 : 142.19897 : 1"
+       inkscape:persp3d-origin="142.19897 : 94.799316 : 1"
+       id="perspective13" />
+    <inkscape:perspective
+       id="perspective3304"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3334"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3364"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3411"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3529"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3612"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="118.39014"
+     inkscape:cy="161.25855"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-maximized="1">
+    <sodipodi:guide
+       orientation="1,0"
+       position="-717.14286,62.857143"
+       id="guide3566" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3344">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-50.6582, -318.735)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:rgb(0, 0, 0);stroke-width:15;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3941"
+       width="269.39795"
+       height="269.39795"
+       x="58.158169"
+       y="326.23465"
+       ry="21.770645" />
+    <g
+       id="g3271"
+       transform="matrix(1.0059105,0,0,0.91621256,5.45151,35.853391)">
+      <ellipse
+         transform="translate(227.269,33.6121)"
+         id="path2481"
+         style="fill:none;fill-opacity:1;stroke:#724500;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         cx="-10.606602"
+         cy="381.37259"
+         rx="17.172594"
+         ry="35.355339" />
+      <path
+         sodipodi:nodetypes="ccczccsc"
+         id="path2487"
+         d="m 220.19643,323.73214 c -2.09526,0.0127 -3.78582,1.71721 -3.78125,3.8125 l -0.58929,55.24107 c -0.0173,2.10559 0.77235,2.68751 3.33483,4.29019 2.56247,1.60268 4.27291,1.89576 4.29017,-0.20983 l 0.58929,-59.22768 c 0.0278,-1.03339 -0.36621,-2.03359 -1.09127,-2.77044 -0.72506,-0.73685 -1.71877,-1.14691 -2.75248,-1.13581 z"
+         style="fill:#dddd89;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       style="opacity: 1; fill: rgb(165, 79, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 7; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+       d="M 180.95481,544.89121 C 148.15849,502.69562 100.84661,458.71025 75.645579,425.33675 C 72.096708,420.6304 87.325486,410.51671 90.005257,413.33401 C 115.05585,439.67028 156.33119,502.27648 187.57073,539.81352 C 196.72868,550.83022 202.84757,558.95238 214.79899,572.12087 C 223.9162,571.91782 218.55,577.60709 216.55496,579.19843 C 214.55989,580.78977 207.07868,586.20125 208.65959,578.19707 C 198.17297,565.38324 190.34569,556.97347 180.95481,544.89121 z"
+       id="path3238"
+       sodipodi:nodetypes="csssczcs" />
+    <g
+       id="g3187">
+      <path
+         transform="matrix(1.43652, -0.432524, 0.217915, 0.868469, 543.475, 170.614)"
+         d="m -207.57811,269.4982 a 35.616119,39.714497 0 0 1 -35.61612,39.7145 35.616119,39.714497 0 0 1 -35.61612,-39.7145 35.616119,39.714497 0 0 1 35.61612,-39.7145 35.616119,39.714497 0 0 1 35.61612,39.7145 z"
+         sodipodi:ry="39.714497"
+         sodipodi:rx="35.616119"
+         sodipodi:cy="269.4982"
+         sodipodi:cx="-243.19423"
+         style="fill: rgb(0, 0, 0); fill-opacity: 0.14377; stroke: rgb(0, 0, 0); stroke-width: 6.04296; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+         sodipodi:type="arc"
+         id="path3540" />
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path3548"
+         d="M 252.81295,546.57068 C 210.85852,552.6683 215.37286,529.22454 173.1223,538.68494 C 199.75372,522.73365 201.43185,496.95657 227.15324,482.67443"
+         style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3559"
+         d="M 175.3271,537.93677 L 125.15492,556.17698"
+         style="fill: none; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 7; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" />
+    </g>
+    <g
+       id="g3706"
+       style="fill: none; fill-opacity: 1;"
+       transform="matrix(0.744933, 0, 0, 0.728604, 16.1045, 104.159)">
+      <path
+         transform="matrix(1.0972, 0, 0, 1.21706, 595.681, -802.555)"
+         d="m -333.60289,985.94891 a 47.855976,44.699249 0 0 1 -47.85597,44.69929 47.855976,44.699249 0 0 1 -47.85598,-44.69929 47.855976,44.699249 0 0 1 47.85598,-44.69925 47.855976,44.699249 0 0 1 47.85597,44.69925 z"
+         sodipodi:ry="44.699249"
+         sodipodi:rx="47.855976"
+         sodipodi:cy="985.94891"
+         sodipodi:cx="-381.45886"
+         id="path3618"
+         style="fill: none; fill-opacity: 1; stroke: rgb(0, 0, 0); stroke-width: 6.05757; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3626"
+         d="M 226.13628,377.58016 C 197.10771,400.74572 162.90913,393.14381 127.89894,383.13599"
+         style="fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 7; stroke-linecap: round; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3630"
+         d="M 229.16674,407.63222 C 194.49711,422.96002 155.35304,420.74072 129.66671,411.92532"
+         style="fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 7; stroke-linecap: round; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3620"
+         d="M 160.7289,345.25527 C 160.60075,361.53065 165.91132,384.13142 170.07281,391.21721"
+         style="fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 7; stroke-linecap: round; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path3632"
+         d="M 191.7911,345.00274 C 195.83243,361.73782 193.43903,377.50212 190.78094,392.22737"
+         style="fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 7; stroke-linecap: round; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" />
+    </g>
+    <g
+       id="g3278"
+       transform="matrix(1.0061126,0,0,0.91342111,55.915321,37.116473)">
+      <ellipse
+         transform="translate(227.269,33.6121)"
+         id="path3280"
+         style="fill:none;fill-opacity:1;stroke:#724500;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         cx="-10.606602"
+         cy="381.37259"
+         rx="17.172594"
+         ry="35.355339" />
+      <path
+         sodipodi:nodetypes="ccczccsc"
+         id="path3282"
+         d="m 220.19643,323.73214 c -2.09526,0.0127 -3.78582,1.71721 -3.78125,3.8125 l -0.58929,55.24107 c -0.0173,2.10559 0.77235,2.68751 3.33483,4.29019 2.56247,1.60268 4.27291,1.89576 4.29017,-0.20983 l 0.58929,-59.22768 c 0.0278,-1.03339 -0.36621,-2.03359 -1.09127,-2.77044 -0.72506,-0.73685 -1.71877,-1.14691 -2.75248,-1.13581 z"
+         style="fill:#dddd89;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/pelota.png b/images/presets/sport/pelota.png
new file mode 100644
index 0000000..7df57a2
Binary files /dev/null and b/images/presets/sport/pelota.png differ
diff --git a/images/presets/sport/pitch.png b/images/presets/sport/pitch.png
new file mode 100644
index 0000000..7c2b618
Binary files /dev/null and b/images/presets/sport/pitch.png differ
diff --git a/images/presets/sport/raceway.svg b/images/presets/sport/raceway.svg
new file mode 100644
index 0000000..01cd413
--- /dev/null
+++ b/images/presets/sport/raceway.svg
@@ -0,0 +1,81 @@
+<?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"
+   width="16"
+   height="12"
+   viewBox="0 0 16 12"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_raceway3.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="6.7895181"
+     inkscape:cy="7.2392689"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1040.3621)">
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 5.9614873,1040.8667 c -4.6182911,0 -8.3085047,10.9954 -2.4085825,10.9954 l 8.0433382,0 c 6.032506,0 4.236777,-7.2875 0.206991,-7.2875 -4.0297858,0 -2.3062128,4.5253 -5.6649702,4.5253 -3.3587572,0 -3.2703685,-4.8523 -0.1767764,-4.8523 2.320194,0 2.5853591,-3.3809 -1e-7,-3.3809 z"
+       id="path4139"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sssssss" />
+  </g>
+</svg>
diff --git a/images/presets/sport/racquetball.svg b/images/presets/sport/racquetball.svg
new file mode 100644
index 0000000..34d6070
--- /dev/null
+++ b/images/presets/sport/racquetball.svg
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   enable-background="new 0 0 455.148 454.788"
+   height="366.95856"
+   i:pageBounds="0 792 612 0"
+   i:rulerOrigin="0 0"
+   i:viewOrigin="78 623"
+   overflow="visible"
+   space="preserve"
+   viewBox="0 0 360.94283 366.95856"
+   width="360.94284"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="racquetball3.svg"
+   version="1.1"
+   style="overflow:visible">
+  <defs
+     id="defs126">
+    <foreignObject
+       id="foreignObject8"
+       y="0"
+       x="0"
+       width="1"
+       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+       height="1">
+      <i:pgfRef
+         xlink:href="#adobe_illustrator_pgf" />
+    </foreignObject>
+    <linearGradient
+       y2="227.73579"
+       y1="227.73579"
+       x2="455.14841"
+       x1="424.36719"
+       id="XMLID_1_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop16"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop18"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop20"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop22"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop24"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop26"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop28"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop30"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop32"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop34"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="227.37601"
+       y1="227.37601"
+       x2="0.0713"
+       x1="30.851601"
+       id="XMLID_2_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop39"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop41"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop43"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop45"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop47"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop49"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="0.071800001"
+       y1="30.8521"
+       x2="227.73579"
+       x1="227.73579"
+       id="XMLID_3_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop54"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop56"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop58"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop60"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop62"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop64"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="454.67969"
+       y1="423.89941"
+       x2="227.37601"
+       x1="227.37601"
+       id="XMLID_4_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop69"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop71"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop73"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop75"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop77"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop79"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop81"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop83"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop85"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop87"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.83115651"
+     inkscape:cx="205.83068"
+     inkscape:cy="270.88257"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>Part of Hotel Icons Collection</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>hotel</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4184"
+     width="360.94284"
+     height="366.95856"
+     x="0"
+     y="0" />
+  <path
+     d="m 236.32143,82.593571 c 0,15.948 -12.025,28.871999 -26.857,28.871999 -14.832,0 -26.855,-12.923999 -26.855,-28.871999 0,-15.948 12.023,-28.872 26.855,-28.872 14.832,0 26.857,12.925 26.857,28.872 z"
+     i:knockout="Off"
+     id="path93"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 46.007432,73.234571 c 0,7.344 -6.253947,13.284 -13.971247,13.284 -7.717301,0 -13.973504,-5.94 -13.973504,-13.284 0,-7.344 6.256203,-13.32 13.973504,-13.32 7.7173,0 13.971247,5.976 13.971247,13.32 z"
+     i:knockout="Off"
+     id="path95"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 146.93243,123.77857 c -10.439,-4.032 -20.664,-4.644 -31.248,-1.872 -10.584,2.808 -23.543,15.228 -31.715,18.468 -8.137,3.132 -14.256,3.204 -16.74,0.468 -2.412,-2.808 -2.809,-10.296 2.195,-17.064 5.076,-6.768 15.769,-17.748 27.756,-23.184 12.024,-5.399999 30.637,-8.747999 43.597,-8.999999 12.96,-0.216 25.812,3.6 33.48,7.56 7.596,3.995999 7.236,12.671999 11.879,16.127999 4.682,3.384 11.557,0.432 15.842,4.248 4.283,3.852 7.092,10.26 9.684,18.468 2.592,8.208 -1.08,19.404 5.723,30.31 [...]
+     i:knockout="Off"
+     id="path97"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 2.7524298,170.29057 0,7.092 91.3320002,0 0,-7.092 -91.3320002,0 z"
+     i:knockout="Off"
+     id="path99"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 87.56943,177.41857 7.092,0 -0.072,-36.504 -7.02,4.14 0,32.364 z"
+     i:knockout="Off"
+     id="path101"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 87.60443,100.45057 7.057,-3.275999 0,-93.564 -7.092,0 0.035,96.839999 z"
+     i:knockout="Off"
+     id="path103"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 107.33243,193.11457 3.6,-5.868 -16.631,-16.632 -5.004,5.04 18.035,17.46 z"
+     i:knockout="Off"
+     id="path105"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 277.75743,338.69857 5.004,-5.004 -62.316,-61.38 -2.555,9.18 59.867,57.204 z"
+     i:knockout="Off"
+     id="path107"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 234.55743,79.930571 c 0,15.948 -12.025,28.871999 -26.857,28.871999 -14.832,0 -26.855,-12.923999 -26.855,-28.871999 0,-15.948 12.023,-28.872 26.855,-28.872 14.832,0 26.857,12.924 26.857,28.872 z"
+     i:knockout="Off"
+     id="path109"
+     style="clip-rule:evenodd;fill:#a02c2c;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 43.977692,70.570571 c 0,7.344 -6.214458,13.284 -13.932887,13.284 -7.7173,0 -13.972375,-5.94 -13.972375,-13.284 0,-7.344 6.255075,-13.32 13.972375,-13.32 7.718429,0 13.932887,5.976 13.932887,13.32 z"
+     i:knockout="Off"
+     id="path111"
+     style="clip-rule:evenodd;fill:#160379;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 145.16843,121.11457 c -10.439,-4.032 -20.664,-4.644 -31.283,-1.872 -10.584,2.808 -23.509,15.228 -31.681,18.468 -8.136,3.132 -14.292,3.24 -16.739,0.468 -2.412,-2.808 -2.809,-10.296 2.195,-17.064 5.076,-6.768 15.768,-17.748 27.756,-23.183999 12.024,-5.4 30.6,-8.748 43.596,-9 12.924,-0.216 25.813,3.6 33.443,7.596 7.596,3.959999 7.274,12.635999 11.917,16.091999 4.645,3.384 11.521,0.468 15.84,4.248 4.285,3.852 7.094,10.26 9.686,18.468 2.592,8.208 -1.117,19.404 5.723,30.312 6.912,10. [...]
+     i:knockout="Off"
+     id="path113"
+     style="clip-rule:evenodd;fill:#a02c2c;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 0.98842984,167.62657 0,7.092 91.33200016,0 0,-7.092 -91.33200016,0 z"
+     i:knockout="Off"
+     id="path115"
+     style="clip-rule:evenodd;fill:#000080;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 85.80543,174.75457 7.092,0 -0.072,-36.504 -7.02,4.14 0,32.364 z"
+     i:knockout="Off"
+     id="path117"
+     style="clip-rule:evenodd;fill:#000080;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 85.80543,97.786571 7.092,-3.276 0,-93.56400002 -7.092,0 0,96.84000002 z"
+     i:knockout="Off"
+     id="path119"
+     style="clip-rule:evenodd;fill:#000080;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 105.53243,190.45057 3.601,-5.868 -16.597,-16.632 -5.04,5.04 18.036,17.46 z"
+     i:knockout="Off"
+     id="path121"
+     style="clip-rule:evenodd;fill:#000080;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 275.99343,336.03457 5.004,-5.004 -62.316,-61.38 -2.557,9.18 59.869,57.204 z"
+     i:knockout="Off"
+     id="path123"
+     style="clip-rule:evenodd;fill:#000080;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/sport/range.svg b/images/presets/sport/range.svg
new file mode 100644
index 0000000..9eb0846
--- /dev/null
+++ b/images/presets/sport/range.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="177.42857"
+   height="177.42857"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="range2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.979899"
+     inkscape:cx="6.0260421"
+     inkscape:cy="88.890325"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="true"
+     showguides="false"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4138" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-268.42857,-449.36219)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2160"
+       sodipodi:cx="357.14285"
+       sodipodi:cy="538.07648"
+       sodipodi:rx="85.714287"
+       sodipodi:ry="85.714287"
+       d="m 442.85714,538.07648 a 85.714287,85.714287 0 0 1 -85.71429,85.71428 85.714287,85.714287 0 0 1 -85.71428,-85.71428 85.714287,85.714287 0 0 1 85.71428,-85.71429 85.714287,85.714287 0 0 1 85.71429,85.71429 z" />
+    <path
+       id="path3140"
+       d="M 357.17975,454.62009 L 357.10596,519.02489"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:9.99407768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       id="path3144"
+       d="M 357.17919,559.23358 L 357.10652,624.64741"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:9.9951992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:9.99786091;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 336.99457,538.11148 L 269.05802,538.04147"
+       id="path3146" />
+    <path
+       id="path3148"
+       d="M 441.54725,538.11337 L 377.14245,538.03958"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:9.99407768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/sport/rc_car.svg b/images/presets/sport/rc_car.svg
new file mode 100644
index 0000000..f65fabc
--- /dev/null
+++ b/images/presets/sport/rc_car.svg
@@ -0,0 +1,107 @@
+<?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"
+   version="1.0"
+   width="518.46906"
+   height="311.08142"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="car.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata11">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="1.0318841"
+     inkscape:cx="204.9649"
+     inkscape:cy="156.32021"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4138"
+     width="518.46906"
+     height="311.08142"
+     x="0"
+     y="0" />
+  <g
+     id="layer1"
+     transform="matrix(-0.6874148,0,0,1,495.69993,23.231568)">
+    <path
+       d="m 640.23853,222.03787 c 0,27.10477 -21.97275,49.07752 -49.07752,49.07752 -27.10477,0 -49.07752,-21.97275 -49.07752,-49.07752 0,-27.10477 21.97275,-49.07752 49.07752,-49.07752 27.10477,0 49.07752,21.97275 49.07752,49.07752 l 0,0 z"
+       transform="matrix(1.079545,0,0,1.079545,-521.3741,-27.12071)"
+       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path25345"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 285.83418,10.247082 c 2.82136,-3.2663359 6.0364,-6.0733784 11.97048,-5.7082016 l 256.30729,0 127.38367,101.1426896 c 1.40564,2.97091 2.11691,5.24745 2.47353,7.16934 l 0.48411,89.62664 c -2.36768,5.13743 -5.15318,9.52279 -10.12099,9.97998 l -29.56544,0 c 0,-87.62676 -129.5449,-87.80573 -129.5449,0 l -332.83376,0 c 0,-87.28688 -130.530777,-87.62179 -130.530777,0 l -36.065656,0 C 12.71653,211.01909 9.9497784,212.35674 5.8866518,202.02701 L 5.492299,137.57457 c 2.0973064,-5.86412 [...]
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path24454"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 640.23853,222.03787 c 0,27.10477 -21.97275,49.07752 -49.07752,49.07752 -27.10477,0 -49.07752,-21.97275 -49.07752,-49.07752 0,-27.10477 21.97275,-49.07752 49.07752,-49.07752 27.10477,0 49.07752,21.97275 49.07752,49.07752 l 0,0 z"
+       transform="matrix(1.079545,0,0,1.079545,-58.73586,-27.14299)"
+       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path25343"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 226.41173,97.07302 63.84346,-62.997849 c 1.43945,-1.223265 2.57157,-2.907517 5.07365,-2.536826 l 113.52297,0 0,77.161795 -177.57783,0 c -6.7601,-2.66645 -7.67484,-6.70827 -4.86225,-11.62712 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path25349"
+       inkscape:connector-curvature="0" />
+    <path
+       d="M 585.23723,89.186408 530.52565,34.0864 c -1.43945,-1.223265 -2.57157,-2.907517 -5.07365,-2.536826 l -95.50602,0 0,77.161786 162.76938,0 c 7.70221,-1.53592 -2.43326,-11.927375 -7.47813,-19.524952 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path26236"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/sport/riding.svg b/images/presets/sport/riding.svg
new file mode 100644
index 0000000..9d8b8ec
--- /dev/null
+++ b/images/presets/sport/riding.svg
@@ -0,0 +1,105 @@
+<?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"
+   height="181.96439"
+   id="svg1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="riding.svg"
+   sodipodi:version="0.32"
+   width="238.97221"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>SVG Road Signs</dc:title>
+        <dc:description>UK roadsigns</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>transport</rdf:li>
+            <rdf:li>roadsign</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org">
+            <dc:title>John Cliff</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>John Cliff</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>John Cliff</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:cx="101.87192"
+     inkscape:cy="66.873256"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="721"
+     inkscape:window-width="1024"
+     inkscape:window-x="253"
+     inkscape:window-y="150"
+     inkscape:zoom="1.7366036"
+     pagecolor="#ffffff"
+     showgrid="false"
+     snaptogrid="false"
+     snaptoguides="false"
+     inkscape:current-layer="svg1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4133"
+     width="238.97221"
+     height="181.96439"
+     x="0"
+     y="0" />
+  <path
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccc"
+     id="path720"
+     d="m 188.67699,7.1161843 c -3.12689,3.0649897 -3.99277,6.4871507 -5.58672,6.8346307 -2.55425,-0.50842 -7.0737,-0.72606 -9.68989,1.01346 -0.57936,1.56239 1.17316,0.16931 4.22905,1.84392 -2.89529,2.26093 -4.13429,-0.88444 -7.75095,3.48509 -1.29361,1.54717 0.55911,-0.05742 3.16663,0.89871 -2.26512,2.62862 -3.13657,-0.67074 -7.13591,1.15834 -4.33145,2.72094 -4.60125,4.1334 -9.17436,4.33797 -0.9488,0.47215 1.35341,1.36034 2.54697,1.26924 -3.81219,1.6669 -10.64101,7.54946 -5.38434,6.44683 [...]
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/sport/roller_skating.svg b/images/presets/sport/roller_skating.svg
new file mode 100644
index 0000000..b29e62d
--- /dev/null
+++ b/images/presets/sport/roller_skating.svg
@@ -0,0 +1,118 @@
+<?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"
+   width="15"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="15.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="4.7761008"
+     inkscape:cy="1.8735611"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-621px"
+       originy="-1102px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-310.5,-485.36218)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#554400;fill-opacity:1;stroke:none"
+       id="path3757"
+       sodipodi:cx="314"
+       sodipodi:cy="499.36218"
+       sodipodi:rx="1"
+       sodipodi:ry="1"
+       d="m 315,499.36218 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+       transform="matrix(1.4,0,0,1.4,-127.6,-199.24488)" />
+    <path
+       style="fill:#800000;fill-opacity:1;stroke:none"
+       d="m 315,497.36218 7,0 c 4,0 4,-4 0,-4 l -1.5,0 c -0.5,0 -3.5,-2 -3.5,-3 l 0,-3 c 0,-2 -1,-2 -3,-2 -2,0 -3,0 -3,2 l 0,3 0,5 c 0,1 1,2 2,2 z"
+       id="path3791"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#554400;fill-opacity:1;stroke:none"
+       id="path3757-0"
+       sodipodi:cx="314"
+       sodipodi:cy="499.36218"
+       sodipodi:rx="1"
+       sodipodi:ry="1"
+       d="m 315,499.36218 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+       transform="matrix(1.4,0,0,1.4,-123.6,-199.24488)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#554400;fill-opacity:1;stroke:none"
+       id="path3757-1"
+       sodipodi:cx="314"
+       sodipodi:cy="499.36218"
+       sodipodi:rx="1"
+       sodipodi:ry="1"
+       d="m 315,499.36218 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+       transform="matrix(1.4,0,0,1.4,-119.6,-199.24489)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#554400;fill-opacity:1;stroke:none"
+       id="path3757-0-7"
+       sodipodi:cx="314"
+       sodipodi:cy="499.36218"
+       sodipodi:rx="1"
+       sodipodi:ry="1"
+       d="m 315,499.36218 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+       transform="matrix(1.4,0,0,1.4,-115.6,-199.24489)" />
+  </g>
+</svg>
diff --git a/images/presets/sport/rowing.svg b/images/presets/sport/rowing.svg
new file mode 100644
index 0000000..15f68ef
--- /dev/null
+++ b/images/presets/sport/rowing.svg
@@ -0,0 +1,109 @@
+<?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"
+   width="343.85715"
+   height="330.98572"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="rowing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\rowing.png"
+   inkscape:export-xdpi="4.1877856"
+   inkscape:export-ydpi="4.1877856">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-158.57143"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-156.64286,-326.86933)">
+    <path
+       id="path2385"
+       d="M 157.14286,489.50504 C 157.14286,489.50504 242.43056,530.91946 280,538.07647 C 317.56944,545.23348 357.72748,545.6099 391.42857,538.07647 C 425.12966,530.54304 500,492.36219 500,492.36219 C 500,492.36219 428.66208,449.30617 391.42857,440.93361 C 354.19506,432.56105 315.88544,434.09741 280,440.93361 C 244.11456,447.76981 157.14286,489.50504 157.14286,489.50504 z"
+       style="fill:#de8787;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       sodipodi:nodetypes="czzzzzc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:11.60000038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3163"
+       sodipodi:cx="372.85715"
+       sodipodi:cy="492.36218"
+       sodipodi:rx="61.42857"
+       sodipodi:ry="31.428572"
+       d="M 434.28572,492.36218 A 61.42857,31.428572 0 1 1 311.42858,492.36218 A 61.42857,31.428572 0 1 1 434.28572,492.36218 z"
+       transform="translate(-37.142857,0)" />
+    <path
+       style="fill:#aa4400;fill-rule:evenodd;stroke:#4a4f4f;stroke-width:16.70000076;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 320,495.21933 L 445.71428,649.50504"
+       id="path3165" />
+    <path
+       id="path3167"
+       d="M 320,489.50504 L 445.71428,335.21933"
+       style="fill:#aa4400;fill-rule:evenodd;stroke:#4a4f4f;stroke-width:16.70000076;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:#4a4f4f;stroke-width:12.61962414;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3169"
+       width="60.019096"
+       height="21.746651"
+       x="-68.327026"
+       y="549.47522"
+       transform="matrix(0.6470835,-0.7624192,0.8014277,0.5980917,0,0)"
+       inkscape:transform-center-x="-38.463961"
+       inkscape:transform-center-y="32.11208" />
+    <rect
+       inkscape:transform-center-y="-32.112067"
+       inkscape:transform-center-x="-38.463971"
+       transform="matrix(0.6470835,0.7624192,0.8014277,-0.5980917,0,0)"
+       y="-89.705688"
+       x="723.31317"
+       height="21.746651"
+       width="60.019104"
+       id="rect3171"
+       style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:#4a4f4f;stroke-width:12.61962414;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/sport/running.svg b/images/presets/sport/running.svg
new file mode 100644
index 0000000..0e4147d
--- /dev/null
+++ b/images/presets/sport/running.svg
@@ -0,0 +1,206 @@
+<?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="svg2"
+   sodipodi:docname="running-pictogram.svg"
+   viewBox="0 0 289.64 289.64"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="100%"
+   height="100%">
+  <defs
+     id="defs19" />
+  <sodipodi:namedview
+     id="base"
+     bordercolor="#666666"
+     inkscape:pageshadow="2"
+     inkscape:window-y="-8"
+     pagecolor="#ffffff"
+     inkscape:window-height="988"
+     inkscape:window-maximized="1"
+     inkscape:zoom="1.979899"
+     inkscape:window-x="-8"
+     showgrid="false"
+     borderopacity="1.0"
+     inkscape:current-layer="layer1"
+     inkscape:cx="109.63379"
+     inkscape:cy="107.5452"
+     inkscape:window-width="1680"
+     inkscape:pageopacity="0.0"
+     inkscape:document-units="px" />
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     transform="translate(-152.32 -338.97)">
+    <rect
+       x="152.31735"
+       y="338.97083"
+       width="289.6449"
+       height="289.6449"
+       ry="15.000028"
+       rx="15.000028"
+       style="fill:#003366"
+       id="rect3708" />
+    <g
+       transform="matrix(0.69430089,0,0,0.74064812,64.470511,207.78538)"
+       style="fill:#eeeeee"
+       id="g3710">
+      <path
+         sodipodi:cx="245.21452"
+         sodipodi:cy="279.84802"
+         transform="translate(1.4286,-1.4286)"
+         d="m 276.27671,279.84802 c 0,17.15518 -13.90701,31.06219 -31.06219,31.06219 -17.15517,0 -31.06219,-13.90701 -31.06219,-31.06219 0,-17.15517 13.90702,-31.06219 31.06219,-31.06219 17.15518,0 31.06219,13.90702 31.06219,31.06219 z"
+         sodipodi:type="arc"
+         style="fill:#eeeeee"
+         sodipodi:ry="31.062191"
+         sodipodi:rx="31.062191"
+         id="path2908" />
+      <rect
+         x="-60.716"
+         y="407.51001"
+         width="59.051998"
+         height="132.33"
+         ry="8.4373999"
+         rx="8.4027004"
+         transform="matrix(0.68411441,-0.72937472,0.72937472,0.68411441,0,0)"
+         style="fill:#eeeeee"
+         id="rect2912" />
+      <rect
+         x="-128.07001"
+         y="363.82001"
+         width="26.429001"
+         height="80"
+         ry="8.4047003"
+         rx="8.4352999"
+         inkscape:transform-center-x="-22.142857"
+         transform="matrix(0.72671856,-0.68693532,0.68693532,0.72671856,0,0)"
+         style="fill:#eeeeee"
+         id="rect2914" />
+      <rect
+         x="-71.902"
+         y="-487.41"
+         width="26.811001"
+         height="81.237"
+         transform="matrix(-0.67101,0.74145,-0.74746,-0.6643,0,0)"
+         rx="8.3912001"
+         style="fill:#eeeeee"
+         ry="8.4502001"
+         id="rect2920" />
+      <rect
+         x="545.58002"
+         y="-22.955"
+         width="36.370998"
+         height="110.11"
+         transform="matrix(0.69576,0.71827,-0.69297,0.72097,0,0)"
+         rx="8.4087"
+         style="fill:#eeeeee"
+         ry="8.4066"
+         id="rect3694" />
+      <rect
+         x="-109.03"
+         y="410.64001"
+         width="57.143002"
+         height="28.570999"
+         ry="8.3058996"
+         rx="8.3058004"
+         transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
+         style="fill:#eeeeee"
+         id="rect3698" />
+      <rect
+         x="0.22562"
+         y="406.76001"
+         width="49.285999"
+         height="30.714001"
+         ry="8.3875999"
+         rx="8.3467999"
+         transform="matrix(0.67947972,-0.73369429,0.73369429,0.67947972,0,0)"
+         style="fill:#eeeeee"
+         id="rect3700" />
+      <rect
+         x="-27.4"
+         y="590.71997"
+         width="35"
+         height="132.86"
+         ry="8.4245996"
+         rx="8.4145002"
+         transform="matrix(0.70049835,-0.71365403,0.71365403,0.70049835,0,0)"
+         style="fill:#eeeeee"
+         id="rect3702" />
+      <rect
+         x="-450.82999"
+         y="413.13"
+         width="30.714001"
+         height="72.857002"
+         ry="8.6969004"
+         rx="8.1672001"
+         transform="matrix(0.11734674,-0.993091,0.993091,0.11734674,0,0)"
+         style="fill:#eeeeee"
+         id="rect3704" />
+    </g>
+  </g>
+  <metadata
+     id="metadata17">
+    <rdf:RDF>
+      <cc:Work>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://openclipart.org/">
+            <dc:title>Openclipart</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:title></dc:title>
+        <dc:date>2010-08-04T12:55:11</dc:date>
+        <dc:description>Separate entries of sport pictogram from my set</dc:description>
+        <dc:source>https://openclipart.org/detail/77317/running-pictogram-by-shokunin</dc:source>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>shokunin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>box</rdf:li>
+            <rdf:li>boxing</rdf:li>
+            <rdf:li>fence</rdf:li>
+            <rdf:li>gym</rdf:li>
+            <rdf:li>gymnastics</rdf:li>
+            <rdf:li>jump</rdf:li>
+            <rdf:li>jumping</rdf:li>
+            <rdf:li>lifting</rdf:li>
+            <rdf:li>man</rdf:li>
+            <rdf:li>pictogram</rdf:li>
+            <rdf:li>run</rdf:li>
+            <rdf:li>running</rdf:li>
+            <rdf:li>silhouette</rdf:li>
+            <rdf:li>sports</rdf:li>
+            <rdf:li>sports2010</rdf:li>
+            <rdf:li>weight</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/images/presets/sport/scuba_diving.svg b/images/presets/sport/scuba_diving.svg
new file mode 100644
index 0000000..ad7c2d6
--- /dev/null
+++ b/images/presets/sport/scuba_diving.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+
+<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"
+   version="1.0"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="100px"
+   height="83.101px"
+   viewBox="0 0 100 83.101"
+   enable-background="new 0 0 100 83.101"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="09.svg"><metadata
+   id="metadata17"><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></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs15" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1680"
+   inkscape:window-height="988"
+   id="namedview13"
+   showgrid="true"
+   inkscape:zoom="5.6798355"
+   inkscape:cx="55.929345"
+   inkscape:cy="36.453152"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Layer_1"><inkscape:grid
+     type="xygrid"
+     id="grid2994" /></sodipodi:namedview>
+<rect
+   style="fill:#556fc3;fill-opacity:1;stroke:none"
+   id="rect2996"
+   width="100"
+   height="82.924934"
+   x="0"
+   y="0.17606139"
+   transform="translate(-1.2485983e-6,0)" /><polygon
+   points="0,0 15.868,16.397 21.961,10.867 16.444,0.05 "
+   id="polygon3" />
+<path
+   d="m 66.831909,44.579594 c 3,0.834 6.223,-0.882 7.079,-3.962 0.822,-3.032 -0.929,-6.218 -3.951,-7.076 l -2.354,-0.662 -3.046,11.019 2.272,0.681 z"
+   id="path5"
+   inkscape:connector-curvature="0" />
+<path
+   d="m 67.977953,33.057901 -18.995,-5.412 c -1.249,-0.329 -2.503,0.429 -2.847,1.692 l -1.785,6.42 c -0.351,1.261 0.329,2.555 1.609,2.934 l 18.996,5.354 3.022,-10.988 z"
+   id="path7"
+   inkscape:connector-curvature="0" />
+<path
+   d="M72.687,51.773c-1.448-1.393-3.249-2.499-5.35-3.083l-23.028-6.515l0,0L30.16,16.802c-0.745-1.311-1.944-2.354-3.496-2.783  c-3.103-0.882-6.327,0.961-7.174,4.098c-0.423,1.489-0.223,3.009,0.448,4.295l17.701,31.38c0,0,1.448,2.353,5.095,3.563l32.178,9.12  l14.922,15.315c0.496,0.524,1.145,0.93,1.92,1.155c2.247,0.63,4.599-0.728,5.256-2.975c0.425-1.594-0.081-3.267-1.201-4.302  L72.687,51.773z"
+   id="path9" />
+<path
+   d="M 89.857,54.11 93.202,58.533 100,51.03 94.259,47.797 c 0.541,-4.067 -1.952,-8.005 -5.951,-9.146 -4.399,-1.236 -8.973,1.342 -10.196,5.79 -1.249,4.471 1.326,9.071 5.728,10.309 2.09,0.605 4.219,0.275 6.017,-0.64 z"
+   id="path11"
+   inkscape:connector-curvature="0" />
+</svg>
\ No newline at end of file
diff --git a/images/presets/sport/skateboard.svg b/images/presets/sport/skateboard.svg
new file mode 100644
index 0000000..c29fffd
--- /dev/null
+++ b/images/presets/sport/skateboard.svg
@@ -0,0 +1,129 @@
+<?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"
+   width="426.57816"
+   height="158.71338"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="skateboard2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\skateboard.png"
+   inkscape:export-xdpi="3.347836"
+   inkscape:export-ydpi="3.347836">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="221.61223"
+     inkscape:cy="175.33625"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1050"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-186.85212,-619.36315)">
+    <rect
+       style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:18.70000076;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect3157"
+       width="22.857143"
+       height="45.714287"
+       x="288.57144"
+       y="732.36224" />
+    <circle
+       style="opacity:1;fill:#aa4400;fill-opacity:1;stroke:none;stroke-width:11.39999962;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3155"
+       transform="matrix(1.8461539,0,0,1.8461539,-256.48351,-748.04272)"
+       cx="301.42856"
+       cy="808.07648"
+       r="18.571428" />
+    <g
+       id="g3163"
+       transform="translate(0,1.6068305e-5)">
+      <rect
+         style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:18.70000076;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3159"
+         width="22.857143"
+         height="45.714287"
+         x="288.57144"
+         y="689.50507" />
+      <circle
+         style="opacity:1;fill:#aa4400;fill-opacity:1;stroke:none;stroke-width:11.39999962;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path3161"
+         transform="matrix(1.8461539,0,0,1.8461539,-256.48351,-748.04274)"
+         cx="301.42856"
+         cy="808.07648"
+         r="18.571428" />
+    </g>
+    <g
+       id="g3167"
+       transform="translate(191.42857,1.6068305e-5)">
+      <rect
+         y="689.50507"
+         x="288.57144"
+         height="45.714287"
+         width="22.857143"
+         id="rect3169"
+         style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:18.70000076;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <circle
+         transform="matrix(1.8461539,0,0,1.8461539,-256.48351,-748.04274)"
+         id="path3171"
+         style="opacity:1;fill:#aa4400;fill-opacity:1;stroke:none;stroke-width:11.39999962;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         cx="301.42856"
+         cy="808.07648"
+         r="18.571428" />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#de0000;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 195.39776,709.62294 46.47665,-32.2179 299.64557,0 63.08329,-45.91408"
+       id="path2383"
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/sport/skating.png b/images/presets/sport/skating.png
new file mode 100644
index 0000000..1dc8090
Binary files /dev/null and b/images/presets/sport/skating.png differ
diff --git a/images/presets/sport/skiing.svg b/images/presets/sport/skiing.svg
new file mode 100644
index 0000000..3897793
--- /dev/null
+++ b/images/presets/sport/skiing.svg
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   enable-background="new 0 0 455.148 454.788"
+   height="378.98999"
+   i:pageBounds="0 792 612 0"
+   i:rulerOrigin="0 0"
+   i:viewOrigin="78 623"
+   overflow="visible"
+   space="preserve"
+   viewBox="0 0 340.4894 378.98999"
+   width="340.48941"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="skiing.svg"
+   version="1.1"
+   style="overflow:visible">
+  <defs
+     id="defs110">
+    <foreignObject
+       id="foreignObject8"
+       y="0"
+       x="0"
+       width="1"
+       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+       height="1">
+      <i:pgfRef
+         xlink:href="#adobe_illustrator_pgf" />
+    </foreignObject>
+    <linearGradient
+       y2="227.73579"
+       y1="227.73579"
+       x2="455.14841"
+       x1="424.36719"
+       id="XMLID_1_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop16"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop18"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop20"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop22"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop24"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop26"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop28"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop30"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop32"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop34"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="227.37601"
+       y1="227.37601"
+       x2="0.0713"
+       x1="30.851601"
+       id="XMLID_2_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop39"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop41"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop43"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop45"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop47"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop49"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="0.071800001"
+       y1="30.8521"
+       x2="227.73579"
+       x1="227.73579"
+       id="XMLID_3_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop54"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop56"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop58"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop60"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop62"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop64"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="454.67969"
+       y1="423.89941"
+       x2="227.37601"
+       x1="227.37601"
+       id="XMLID_4_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop69"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop71"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop73"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop75"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop77"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop79"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop81"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop83"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop85"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop87"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.83115651"
+     inkscape:cx="-34.109558"
+     inkscape:cy="187.69028"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Hotel Icon Ski Area</dc:title>
+        <dc:description>Part of Hotel Icons Collection</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>hotel</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4176"
+     width="340.48941"
+     height="378.98999"
+     x="0"
+     y="0" />
+  <path
+     d="m 113.34619,98.545968 c 3.24672,-2.67789 10.78309,-10.62374 23.12518,-24.36314 12.29758,-13.828425 28.7537,-32.749217 50.06124,-57.596474 13.94439,22.213272 24.20661,38.236681 31.78629,48.772624 7.40525,10.40424 11.51928,14.96981 12.51531,13.69672 7.88041,-7.90196 14.50857,-14.61862 20.22491,-20.501185 5.62972,-5.882566 10.00118,-10.711538 13.46683,-14.662516 17.32223,24.408261 31.69968,44.514341 44.3016,61.503553 12.38419,16.8575 22.21696,29.63233 29.83874,39.02687 l -47.16097,- [...]
+     i:knockout="Off"
+     id="path93"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 115.17729,103.65457 c -5.725,2.7 -10.584,6.192 -14.869,10.62 -4.319004,4.392 -8.459004,7.812 -10.619004,15.696 -2.269,7.812 -3.024,18 -2.557,30.996 l -53.496,0 c 1.836,6.768 5.041,12.06 9.756,16.164 4.645,4.032 10.404,6.768 18.252,8.064 7.776,1.26 20.088,1.116 28.045,-0.864 7.92,-2.16 14.147004,-6.12 19.080004,-11.88 l 25.056,22.068 c -10.368,10.439 -17.82,19.223 -22.896,27.18 -5.148,7.74 -9,11.809 -7.236,19.547 1.764,7.74 7.199,14.328 17.855,26.713 10.62,12.385 25.561,27.684 4 [...]
+     i:knockout="Off"
+     id="path95"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 75.384286,62.970568 c 14.885,0 26.965004,12.08 26.965004,26.964 0,14.884002 -12.080004,26.964002 -26.965004,26.964002 -14.884,0 -26.963,-12.08 -26.963,-26.964002 0,-14.884 12.079,-26.964 26.963,-26.964"
+     i:knockout="Off"
+     id="path97"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 110.24429,101.53057 c -5.724,2.7 -10.584004,6.192 -14.868004,10.62 -4.32,4.356 -8.46,7.884 -10.619,15.732 -2.269,7.812 -3.025,18 -2.557,30.996 l -53.496,0 c 1.836,6.804 5.04,11.988 9.756,16.128 4.645,4.032 10.404,6.768 18.252,8.064 7.776,1.26 20.088,1.116 28.045,-0.864 7.92,-2.16 14.147,-6.12 19.079004,-11.88 l 25.056,22.067 c -10.367,10.441 -17.819,19.225 -22.896,27.18 -5.147,7.777 -9.000004,11.701 -7.235004,19.549 1.799004,7.703 7.092004,14.4 17.819004,26.748 10.656,12.42 25. [...]
+     i:knockout="Off"
+     id="path99"
+     style="clip-rule:evenodd;fill:#782121;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 70.584286,60.810568 c 14.884,0 26.964,12.08 26.964,26.964 0,14.884002 -12.08,26.964002 -26.964,26.964002 -14.884,0 -26.964,-12.08 -26.964,-26.964002 0,-14.884 12.081,-26.964 26.964,-26.964"
+     i:knockout="Off"
+     id="path101"
+     style="clip-rule:evenodd;fill:#782121;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 110.44472,92.707298 c 3.24671,-2.76568 10.78309,-10.62374 23.12517,-24.40826 12.29758,-13.828421 28.7537,-32.749212 50.06125,-57.59647 13.94439,22.169373 24.20661,38.32448 31.78629,48.81652 7.40525,10.44814 11.51928,14.88202 12.51531,13.65282 7.88281,-7.90195 14.50857,-14.618614 20.2249,-20.50118 5.62973,-5.882567 10.00118,-10.755439 13.46683,-14.618617 17.32223,24.408261 31.69968,44.514347 44.3016,61.503547 12.3866,16.857502 22.21697,29.632332 29.83875,39.026882 L 288.60384,94 [...]
+     i:knockout="Off"
+     id="path103"
+     style="clip-rule:evenodd;fill:#17057a;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 159.55204,58.553294 22.12914,-28.315338 38.54076,56.630672 c -9.22409,-0.35119 -17.19111,-2.37058 -24.0779,-5.88256 -7.0155,-3.64368 -11.17404,-11.89683 -17.32223,-15.62831 -6.2348,-3.731482 -12.42749,-6.058168 -19.26977,-6.804464 z"
+     i:knockout="Off"
+     id="path105"
+     style="clip-rule:evenodd;fill:#3d258e;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 232.73845,87.834428 27.9333,-30.246929 21.17643,30.246929 c -6.58365,7.24346 -12.73184,10.93104 -19.27098,11.72123 -6.49584,0.614602 -14.29205,-5.88257 -19.22768,-7.81415 -5.06795,-2.06329 -8.44699,-3.20469 -10.61107,-3.90708 z"
+     i:knockout="Off"
+     id="path107"
+     style="clip-rule:evenodd;fill:#3d258e;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/sport/soccer.svg b/images/presets/sport/soccer.svg
new file mode 100644
index 0000000..e96a537
--- /dev/null
+++ b/images/presets/sport/soccer.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  --><svg enable-background="new 0 0 105.66 100.619" height="100.619" i:pageBounds="0 792 612 0" i:rulerOrigin="0 0" i:viewOrigin="253 446" overflow="visible" space="preserve" viewBox="0 0 105.66 100.619" width="105.66" xmlns="http://www.w3.org/2000/svg" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" xmlns:graph="http://ns.adobe.com/Graphs/1.0/" xmlns:i="http://ns.adobe.com/AdobeIllustra [...]
+  <metadata>
+    <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+      <cc:Work rdf:about="">
+        <dc:title>Soccer Ball</dc:title>
+        <dc:description>Soccer Ball.</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>sports</rdf:li>
+            <rdf:li>toy</rdf:li>
+            <rdf:li>ball</rdf:li>
+            <rdf:li>soccer</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Project</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent rdf:about="http://web.resource.org/cc/PublicDomain">
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent rdf:about="http://web.resource.org/cc/PublicDomain">
+            <dc:title>Public Domain</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>2005-04-22</dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g i:dimmedPercent="50" i:layer="yes" i:rgbTrio="#4F008000FFFF" id="Layer_1">
+    <g>
+      <path clip-rule="evenodd" d="     M52.83,0.018c29.152,0,52.813,22.531,52.813,50.292c0,27.76-23.66,50.292-52.813,50.292S0.018,78.07,0.018,50.31     C0.018,22.549,23.678,0.018,52.83,0.018" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M25.254,11.218c-1.548,0.648-2.664,1.332-3.78,2.196c-1.116,0.756-1.908,1.692-2.664,2.664c-0.864,0.9-1.584,1.872-2.16,2.916     l7.128-1.836h0C24.246,15.178,24.75,13.198,25.254,11.218z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M32.886,8.086L48.87,4.198l11.016,9.108L56.97,24.934l-12.24,5.688l-15.48-4.104l-2.304-9.468L32.886,8.086z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M63.342,14.026l-1.943,11.016L73.53,37.174l12.96-1.944l3.996-14.544L76.302,9.058L63.342,14.026z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M76.05,41.278l12.24-2.196l7.272,12.24L85.518,67.918l-12.6-1.188l-4.607-10.549L76.05,41.278z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M94.482,75.91l-5.832-6.768l10.188-17.209l3.528-1.943c0.036,4.176-0.288,7.703-0.972,11.268     c-0.828,3.527-2.053,6.732-3.276,9.324C96.895,73.029,95.778,74.758,94.482,75.91z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M33.894,63.418L48.33,52.762l16.236,4.248l5.184,12.205l-8.964,11.771l-20.232-4.248L33.894,63.418z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M64.962,97.113c-2.988,0.434-6.012,0.756-9.216,0.828c-3.312,0.072-6.84,0-10.044-0.359c-3.42-0.504-6.588-1.404-9.36-2.305     c-2.772-0.971-4.896-2.051-6.768-3.383l-0.252-4.861l9.576-7.271l21.457,3.781l6.155,9.432L64.962,97.113z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M14.31,43.726l13.212-13.428l14.292,3.996l3.636,15.48L30.546,61.295l-12.96-0.361L14.31,43.726z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+      <path clip-rule="evenodd" d="     M9.45,71.123c-1.152,0.467-2.232-0.758-3.384-3.277c-1.26-2.736-2.952-8.244-3.528-12.348c-0.54-4.141-0.504-8.172,0.252-12.24     l7.524,2.412l3.996,16.705L9.45,71.123z" fill="#FFFFFF" fill-rule="evenodd" i:knockout="Off" stroke="#000000" stroke-miterlimit="10" stroke-width="0.036"/>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/sport/stadium.png b/images/presets/sport/stadium.png
new file mode 100644
index 0000000..e100dcf
Binary files /dev/null and b/images/presets/sport/stadium.png differ
diff --git a/images/presets/sport/swimming.svg b/images/presets/sport/swimming.svg
new file mode 100644
index 0000000..7473332
--- /dev/null
+++ b/images/presets/sport/swimming.svg
@@ -0,0 +1,379 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   enable-background="new 0 0 455.148 454.788"
+   height="191.84421"
+   i:pageBounds="0 792 612 0"
+   i:rulerOrigin="0 0"
+   i:viewOrigin="78 623"
+   overflow="visible"
+   space="preserve"
+   viewBox="0 0 330.55416 250.32263"
+   width="285.42676"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="swimming.svg"
+   version="1.0"
+   style="overflow:visible">
+  <defs
+     id="defs124">
+    <foreignObject
+       id="foreignObject8"
+       y="0"
+       x="0"
+       width="1"
+       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+       height="1">
+      <i:pgfRef
+         xlink:href="#adobe_illustrator_pgf" />
+    </foreignObject>
+    <linearGradient
+       y2="227.73579"
+       y1="227.73579"
+       x2="455.14841"
+       x1="424.36719"
+       id="XMLID_1_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop16"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop18"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop20"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop22"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop24"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop26"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop28"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop30"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop32"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop34"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="227.37601"
+       y1="227.37601"
+       x2="0.0713"
+       x1="30.851601"
+       id="XMLID_2_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop39"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop41"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop43"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop45"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop47"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop49"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="0.071800001"
+       y1="30.8521"
+       x2="227.73579"
+       x1="227.73579"
+       id="XMLID_3_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop54"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop56"
+         style="stop-color:#E2E2E2"
+         offset="0.2675" />
+      <stop
+         id="stop58"
+         style="stop-color:#D8D8D8"
+         offset="0.4824" />
+      <stop
+         id="stop60"
+         style="stop-color:#C7C7C7"
+         offset="0.679" />
+      <stop
+         id="stop62"
+         style="stop-color:#B0B0B0"
+         offset="0.8635" />
+      <stop
+         id="stop64"
+         style="stop-color:#999999"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       y2="454.67969"
+       y1="423.89941"
+       x2="227.37601"
+       x1="227.37601"
+       id="XMLID_4_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         id="stop69"
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <stop
+         id="stop71"
+         style="stop-color:#E2E2E2"
+         offset="0.1696" />
+      <stop
+         id="stop73"
+         style="stop-color:#D8D8D8"
+         offset="0.3059" />
+      <stop
+         id="stop75"
+         style="stop-color:#C7C7C7"
+         offset="0.4306" />
+      <stop
+         id="stop77"
+         style="stop-color:#B0B0B0"
+         offset="0.5484" />
+      <stop
+         id="stop79"
+         style="stop-color:#919191"
+         offset="0.6614" />
+      <stop
+         id="stop81"
+         style="stop-color:#6B6B6B"
+         offset="0.7707" />
+      <stop
+         id="stop83"
+         style="stop-color:#3E3E3E"
+         offset="0.8772" />
+      <stop
+         id="stop85"
+         style="stop-color:#0C0C0C"
+         offset="0.9788" />
+      <stop
+         id="stop87"
+         style="stop-color:#000000"
+         offset="1" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="0.75" />
+      <a:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="1.1754328"
+     inkscape:cx="344.97431"
+     inkscape:cy="37.629402"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Hotel Icon Indoor Pool</dc:title>
+        <dc:description>Part of Hotel Icons Collection</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>hotel</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4183"
+     width="372.43124"
+     height="250.32263"
+     x="-28.83077"
+     y="0" />
+  <path
+     d="m 342.16317,181.25754 c -3.131,0.875 -7.366,0.737 -12.704,-0.415 -5.383,-1.197 -10.456,-7.094 -19.5,-6.678 -9.31,0.321 -22.457,8.66 -35.162,8.66 -12.883,-0.229 -27.354,-9.123 -40.5,-9.076 -13.103,0.045 -25.015,9.261 -37.587,9.49 -12.795,0.046 -25.544,-8.478 -38.075,-8.66 -12.705,-0.322 -24.75,7.554 -36.617,7.463 -11.868,-0.184 -21.97,-8.755 -33.705999,-8.293 -11.912,0.416 -24.971,9.813 -36.617998,10.273 -11.647,0.185 -22.367,-8.568 -32.691,-8.66 -10.3680003,-0.186 -22.2790003,6.4 [...]
+     i:knockout="Off"
+     id="path103"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 342.16317,222.12254 c -3.131,0.877 -7.366,0.737 -12.704,-0.412 -5.383,-1.2 -10.456,-7.097 -19.5,-6.682 -9.31,0.322 -22.457,8.661 -35.162,8.661 -12.883,-0.23 -27.354,-9.121 -40.5,-9.076 -13.103,0.093 -25.015,9.169 -37.587,9.446 -12.795,0.045 -25.544,-8.479 -38.075,-8.663 -12.705,-0.23 -24.75,7.603 -36.617,7.511 -11.868,-0.186 -21.97,-8.754 -33.705999,-8.294 -11.912,0.415 -24.971,9.813 -36.617998,10.273 -11.647,0.229 -22.367,-8.661 -32.691,-8.706 -10.3680003,-0.186 -22.2790003,6. [...]
+     i:knockout="Off"
+     id="path111"
+     style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 337.79717,176.69554 c -3.177,0.97 -7.28,0.784 -12.662,-0.367 -5.47,-1.245 -10.456,-7.049 -19.544,-6.728 -9.309,0.323 -22.457,8.662 -35.161,8.662 -12.884,-0.274 -27.354,-9.031 -40.501,-9.031 -13.103,0.093 -25.015,9.168 -37.588,9.445 -12.794,0.045 -25.544,-8.476 -38.073,-8.66 -12.706,-0.322 -24.75,7.557 -36.618,7.463 -11.691,-0.229 -22.058999,-8.616 -33.661999,-8.248 -11.912,0.463 -24.970998,9.676 -36.617998,10.229 -11.735,0.185 -22.368,-8.568 -32.735,-8.662 -10.4550003,-0.184 -2 [...]
+     i:knockout="Off"
+     id="path113"
+     style="clip-rule:evenodd;fill:#3d258e;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 133.09117,168.26554 100.896,-53.857 c -7.984,-17.414998 -13.456,-30.544998 -16.764,-39.896998 -3.354,-9.307 -4.767,-11.38 -2.869,-15.803 1.94,-4.561 -0.75,-5.252 14.03,-11.288 14.822,-6.219 58.896,-24.325 73.367,-25.155 14.029,-0.691 13.632,14.789 11.25,20.134 -2.56,5.067 -15.706,6.542 -25.677,10.458 -10.06,3.87 -21.309,8.201 -34.103,12.992 l 46.234,101.634998 c -5.956,5.021 -13.853,7.048 -24.528,6.266 -10.809,-1.06 -25.412,-11.381 -38.868,-11.426 -13.589,0.184 -28.765,11.471 - [...]
+     i:knockout="Off"
+     id="path105"
+     style="clip-rule:evenodd;fill:#8f3e3e;fill-opacity:1;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 314.34117,80.366542 c 15.561,0 28.19,13.189 28.19,29.439998 0,16.25 -12.63,29.438 -28.19,29.438 -15.562,0 -28.192,-13.188 -28.192,-29.438 0,-16.250998 12.631,-29.439998 28.192,-29.439998"
+     i:knockout="Off"
+     id="path107"
+     style="clip-rule:evenodd;fill:#8f3e3e;fill-opacity:1;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 64.930171,170.24654 c -11.955998,-2.212 -24.131998,-5.573 -37.367998,-10.273 -13.323,-4.931 -36.0430003,-11.335 -41.426,-17.784 -5.382,-6.451 -1.456,-19.812 9.3969997,-20.363 10.853,-0.691 32.6030003,9.214 55.0150003,17.092 22.322998,7.878 47.910998,17.877 77.954997,30.177 -3.705,2.027 -8.603,2.627 -14.867,1.798 -6.353,-1.061 -14.382999,-6.911 -22.543999,-7.097 -8.207,-0.138 -16.81,2.074 -26.162,6.45 z"
+     i:knockout="Off"
+     id="path109"
+     style="clip-rule:evenodd;fill:#8f3e3e;fill-opacity:1;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 128.72317,163.70554 100.94,-53.858 c -7.939,-17.415998 -13.543,-30.544998 -16.808,-39.897998 -3.354,-9.307 -4.765,-11.38 -2.868,-15.803 1.941,-4.561 -0.75,-5.252 14.03,-11.287 14.778,-6.266 58.984,-24.234 73.41,-25.109 14.118,-0.737 13.545,14.835 11.207,20.088 -2.56,5.113 -15.707,6.403 -25.677,10.458 -10.104,3.87 -21.221,8.2 -34.059,12.992 l 46.19,101.633998 c -5.955,5.113 -13.853,7.096 -24.529,6.311 -10.853,-1.057 -25.324,-11.377 -38.823,-11.426 -13.456,0.049 -28.809,11.566 -4 [...]
+     i:knockout="Off"
+     id="path115"
+     style="clip-rule:evenodd;fill:#8f3e3e;fill-opacity:1;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 310.07617,75.759542 c 15.562,0 28.19,13.188 28.19,29.438998 0,16.251 -12.629,29.439 -28.19,29.439 -15.561,0 -28.191,-13.188 -28.191,-29.439 0,-16.250998 12.629,-29.438998 28.191,-29.438998"
+     i:knockout="Off"
+     id="path117"
+     style="clip-rule:evenodd;fill:#8f3e3e;fill-opacity:1;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 60.606173,165.68554 c -11.956,-2.212 -24.132,-5.618 -37.367,-10.229 -13.3240003,-4.881 -36.044,-11.425 -41.427,-17.829 -5.382,-6.588 -1.456,-19.764 9.3979997,-20.363 10.896,-0.599 32.5140003,9.076 54.9700003,17.093 22.322998,7.926 47.866998,17.831 77.999997,30.224 -3.706,2.027 -8.603,2.672 -14.868,1.75 -6.353,-1.061 -14.381999,-6.912 -22.543999,-7.095 -8.206,-0.139 -16.809,2.073 -26.161998,6.449 z"
+     i:knockout="Off"
+     id="path119"
+     style="clip-rule:evenodd;fill:#8f3e3e;fill-opacity:1;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 337.79717,217.56354 c -3.177,0.874 -7.28,0.737 -12.662,-0.415 -5.47,-1.197 -10.456,-7.097 -19.544,-6.682 -9.309,0.322 -22.457,8.661 -35.161,8.661 -12.884,-0.275 -27.354,-9.029 -40.501,-9.029 -13.103,0.093 -25.015,9.169 -37.588,9.444 -12.794,0.047 -25.544,-8.476 -38.073,-8.661 -12.706,-0.323 -24.75,7.556 -36.618,7.464 -11.691,-0.23 -22.058999,-8.616 -33.661999,-8.247 -11.912,0.46 -24.970998,9.674 -36.617998,10.229 -11.735,0.183 -22.368,-8.571 -32.735,-8.663 -10.4550003,-0.183 -2 [...]
+     i:knockout="Off"
+     id="path121"
+     style="clip-rule:evenodd;fill:#17057a;fill-rule:evenodd"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/sport/table_tennis.svg b/images/presets/sport/table_tennis.svg
new file mode 100644
index 0000000..c7482a8
--- /dev/null
+++ b/images/presets/sport/table_tennis.svg
@@ -0,0 +1,128 @@
+<?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"
+   height="449.90442"
+   id="svg1"
+   version="1.0"
+   width="492.14069"
+   x="0.00000000"
+   y="0.00000000"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="table_tennis.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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="0.52455586"
+     inkscape:cx="246.07034"
+     inkscape:cy="223.04583"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg1" />
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>table tennis</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>sports</rdf:li>
+            <rdf:li>table</rdf:li>
+            <rdf:li>tennis</rdf:li>
+            <rdf:li>ping pong</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Omar Abo-Namous</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Omar Abo-Namous</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4138"
+     width="492.14099"
+     height="449.90442"
+     x="0"
+     y="5.6843419e-014" />
+  <g
+     id="layer1"
+     transform="translate(0.176986,-0.5918139)" />
+  <g
+     id="g1080"
+     transform="translate(0.176986,-0.5918139)">
+    <path
+       d="m 94.375742,101.3253 c -2.150186,3.22528 -16.425023,37.3296 -15.768023,39.42006 0.657001,2.09046 -2.441533,5.8584 3.687525,10.50689 6.291799,4.77192 116.322286,41.72321 123.173396,41.81428 6.59662,0.0911 19.71003,-2.32937 31.17768,-7.16729 11.46765,-4.83791 25.44385,-11.10929 37.62823,-21.86021 12.18438,-10.75093 25.5036,-27.29541 35.47807,-42.64534 9.97448,-15.34993 20.18784,-35.896142 24.36876,-49.454254 4.18092,-13.558112 4.18092,-22.696399 0.71672,-31.894413 -3.4642,-9.1980 [...]
+       id="path2311"
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 185.13907,212.03584 c 5.23697,10.47394 9.2914,22.13042 15.71091,31.42181 6.41951,9.2914 11.86765,16.04878 22.80616,24.32657 10.93851,8.27781 37.03424,28.02696 42.82489,25.3402 5.48062,-2.54289 158.51251,-62.33616 164.45773,-64.36407 5.77217,-1.96889 8.19333,-20.52553 9.12247,-29.9014 0.92914,-9.37587 -0.29564,-17.48472 -3.54762,-26.35378 -3.25198,-8.86907 -9.5448,-17.94929 -15.96432,-26.86059 -6.4195,-8.91129 -14.10603,-18.16046 -22.55276,-26.60718 -8.44673,-8.44673 -19.13181 [...]
+       id="path4175"
+       style="fill:#007fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 146.58156,76.996765 c 0.005,6.433137 -5.6364,11.650581 -12.59685,11.650581 -6.96045,0 -12.60165,-5.217444 -12.59685,-11.650581 -0.005,-6.433137 5.6364,-11.650581 12.59685,-11.650581 6.96045,0 12.60165,5.217444 12.59685,11.650581 l 0,0 z"
+       id="path4797"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.3125;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.5, 2.5;stroke-dashoffset:0pt;stroke-opacity:1"
+       transform="matrix(2.81642,0,0,2.81642,-41.8027,-40.0944)"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 425.76474,447.30576 c -1.56427,-1.93629 -10.63709,-19.1181 -20.16178,-38.18184 -15.07116,-30.16487 -34.42245,-63.14089 -49.4982,-84.34852 -7.35641,-10.34852 -24.27102,-17.07487 -55.29909,-21.99054 -38.14062,-6.04249 -50.84196,-10.57194 -72.01726,-25.68233 -20.12116,-14.35816 -29.00831,-24.16926 -40.76823,-45.0067 -7.87529,-13.95424 -8.87458,-14.71426 -17.30541,-13.16184 -5.67612,1.04518 -14.86847,7.408 -25.14192,17.40289 -17.08447,16.62124 -20.32026,17.41747 -9.91428,2.4396 1 [...]
+       id="path1062"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/sport/tennis.svg b/images/presets/sport/tennis.svg
new file mode 100644
index 0000000..d3415bf
--- /dev/null
+++ b/images/presets/sport/tennis.svg
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77)  -->
+
+<svg
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   enable-background="new 0 0 455.148 454.788"
+   height="342.59891"
+   i:pageBounds="0 792 612 0"
+   i:rulerOrigin="0 0"
+   i:viewOrigin="78 623"
+   overflow="visible"
+   space="preserve"
+   viewBox="0 0 381.20159 342.59891"
+   width="381.2016"
+   id="svg2302"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tennis.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1"
+   style="overflow:visible">
+  <defs
+     id="defs2406">
+    <foreignObject
+       id="foreignObject2308"
+       y="0"
+       x="0"
+       width="1"
+       requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+       height="1">
+      <i:pgfRef
+         xlink:href="#adobe_illustrator_pgf" />
+    </foreignObject>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="XMLID_1_"
+       x1="424.36719"
+       x2="455.14841"
+       y1="227.73579"
+       y2="227.73579">
+      <stop
+         offset="0"
+         style="stop-color:#E5E5E5"
+         id="stop2316" />
+      <stop
+         offset="0.1696"
+         style="stop-color:#E2E2E2"
+         id="stop2318" />
+      <stop
+         offset="0.3059"
+         style="stop-color:#D8D8D8"
+         id="stop2320" />
+      <stop
+         offset="0.4306"
+         style="stop-color:#C7C7C7"
+         id="stop2322" />
+      <stop
+         offset="0.5484"
+         style="stop-color:#B0B0B0"
+         id="stop2324" />
+      <stop
+         offset="0.6614"
+         style="stop-color:#919191"
+         id="stop2326" />
+      <stop
+         offset="0.7707"
+         style="stop-color:#6B6B6B"
+         id="stop2328" />
+      <stop
+         offset="0.8772"
+         style="stop-color:#3E3E3E"
+         id="stop2330" />
+      <stop
+         offset="0.9788"
+         style="stop-color:#0C0C0C"
+         id="stop2332" />
+      <stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop2334" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.75"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="XMLID_2_"
+       x1="30.851601"
+       x2="0.0713"
+       y1="227.37601"
+       y2="227.37601">
+      <stop
+         offset="0"
+         style="stop-color:#E5E5E5"
+         id="stop2339" />
+      <stop
+         offset="0.2675"
+         style="stop-color:#E2E2E2"
+         id="stop2341" />
+      <stop
+         offset="0.4824"
+         style="stop-color:#D8D8D8"
+         id="stop2343" />
+      <stop
+         offset="0.679"
+         style="stop-color:#C7C7C7"
+         id="stop2345" />
+      <stop
+         offset="0.8635"
+         style="stop-color:#B0B0B0"
+         id="stop2347" />
+      <stop
+         offset="1"
+         style="stop-color:#999999"
+         id="stop2349" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.75"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="XMLID_3_"
+       x1="227.73579"
+       x2="227.73579"
+       y1="30.8521"
+       y2="0.071800001">
+      <stop
+         offset="0"
+         style="stop-color:#E5E5E5"
+         id="stop2354" />
+      <stop
+         offset="0.2675"
+         style="stop-color:#E2E2E2"
+         id="stop2356" />
+      <stop
+         offset="0.4824"
+         style="stop-color:#D8D8D8"
+         id="stop2358" />
+      <stop
+         offset="0.679"
+         style="stop-color:#C7C7C7"
+         id="stop2360" />
+      <stop
+         offset="0.8635"
+         style="stop-color:#B0B0B0"
+         id="stop2362" />
+      <stop
+         offset="1"
+         style="stop-color:#999999"
+         id="stop2364" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.75"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="XMLID_4_"
+       x1="227.37601"
+       x2="227.37601"
+       y1="423.89941"
+       y2="454.67969">
+      <stop
+         offset="0"
+         style="stop-color:#E5E5E5"
+         id="stop2369" />
+      <stop
+         offset="0.1696"
+         style="stop-color:#E2E2E2"
+         id="stop2371" />
+      <stop
+         offset="0.3059"
+         style="stop-color:#D8D8D8"
+         id="stop2373" />
+      <stop
+         offset="0.4306"
+         style="stop-color:#C7C7C7"
+         id="stop2375" />
+      <stop
+         offset="0.5484"
+         style="stop-color:#B0B0B0"
+         id="stop2377" />
+      <stop
+         offset="0.6614"
+         style="stop-color:#919191"
+         id="stop2379" />
+      <stop
+         offset="0.7707"
+         style="stop-color:#6B6B6B"
+         id="stop2381" />
+      <stop
+         offset="0.8772"
+         style="stop-color:#3E3E3E"
+         id="stop2383" />
+      <stop
+         offset="0.9788"
+         style="stop-color:#0C0C0C"
+         id="stop2385" />
+      <stop
+         offset="1"
+         style="stop-color:#000000"
+         id="stop2387" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.75"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.82895768"
+     inkscape:cx="225.34952"
+     inkscape:cy="180.56803"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="g2310"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata2304">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>Hotel Icon Tennis</dc:title>
+        <dc:description>Part of Hotel Icons Collection</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>hotel</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Gerald G.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2310"
+     i:extraneous="self"
+     transform="translate(-45.840698,-61.523045)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4176"
+       width="381.2016"
+       height="342.59891"
+       x="45.840698"
+       y="61.523045" />
+    <path
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+       id="path2393"
+       i:knockout="Off"
+       d="m 66.786892,258.02204 c 0,12.36041 10.248489,22.37901 22.889797,22.37901 12.594911,0 22.843401,-10.0186 22.843401,-22.37901 0,-12.3205 -10.24849,-22.33909 -22.843401,-22.33909 -12.641308,0 -22.889797,10.01859 -22.889797,22.33909 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+       id="path2395"
+       i:knockout="Off"
+       d="m 289.016,155.486 c 10.404,-4.104 20.736,-4.644 31.285,-1.908 10.547,2.736 23.471,15.192 31.68,18.468 8.1,3.06 14.148,3.276 16.74,0.504 2.447,-2.844 2.736,-10.332 -2.197,-17.064 -5.219,-6.876 -15.768,-17.748 -27.756,-23.184 -12.059,-5.4 -30.707,-8.82 -43.596,-9 -12.996,-0.252 -25.813,3.564 -33.443,7.56 -7.596,4.032 -7.309,12.492 -11.916,16.092 -4.752,3.348 -11.557,0.468 -15.84,4.284 -4.32,3.852 -7.128,10.188 -9.684,18.468 -2.593,8.172 1.008,19.368 -5.724,30.276 -6.949,10.836 -1 [...]
+    <path
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill:#7f7f7f;fill-rule:evenodd"
+       id="path2397"
+       i:knockout="Off"
+       d="m 199.628,114.302 c 0,15.948 12.024,28.872 26.856,28.872 14.832,0 26.855,-12.924 26.855,-28.872 0,-15.948 -12.023,-28.872 -26.855,-28.872 -14.831,0 -26.856,12.924 -26.856,28.872 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill:#160379;fill-rule:evenodd"
+       id="path2399"
+       i:knockout="Off"
+       d="m 283.328,152.426 c 10.332,-4.104 20.699,-4.644 31.248,-1.908 10.656,2.736 23.4,15.192 31.717,18.468 8.207,3.096 14.111,3.204 16.74,0.468 2.447,-2.844 2.734,-10.332 -2.197,-17.028 -5.219,-6.84 -15.768,-17.82 -27.756,-23.22 -12.061,-5.436 -30.707,-8.748 -43.596,-8.964 -12.961,-0.252 -25.92,3.564 -33.48,7.56 -7.668,4.032 -7.236,12.492 -11.879,16.092 -4.717,3.276 -11.629,0.432 -15.876,4.248 -4.32,3.744 -7.129,10.224 -9.684,18.468 -2.593,8.208 1.008,19.332 -5.725,30.312 -7.02,10.94 [...]
+    <path
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill:#160379;fill-rule:evenodd"
+       id="path2401"
+       i:knockout="Off"
+       d="m 193.905,111.242 c 0,15.948 12.023,28.872 26.892,28.872 14.833,0 26.856,-12.924 26.856,-28.872 0,-15.984 -12.023,-28.908 -26.856,-28.908 -14.869,0 -26.892,12.924 -26.892,28.908 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="clip-rule:evenodd;fill:#160379;fill-rule:evenodd"
+       id="path2403"
+       i:knockout="Off"
+       d="m 62,254.36501 c 0,12.36042 10.248489,22.3813 22.889797,22.3813 12.596161,0 22.844653,-10.02088 22.844653,-22.3813 0,-12.36041 -10.248492,-22.37901 -22.844653,-22.37901 C 72.248489,231.986 62,242.00574 62,254.36501 Z" />
+  </g>
+</svg>
diff --git a/images/presets/sport/track.png b/images/presets/sport/track.png
new file mode 100644
index 0000000..ed6d941
Binary files /dev/null and b/images/presets/sport/track.png differ
diff --git a/images/presets/sport/volleyball.svg b/images/presets/sport/volleyball.svg
new file mode 100644
index 0000000..1a80f33
--- /dev/null
+++ b/images/presets/sport/volleyball.svg
@@ -0,0 +1,264 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   height="62.275997mm"
+   id="svg1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="volleyball2.svg"
+   sodipodi:version="0.32"
+   width="61.547817mm"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>Volley Ball </dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>sports</rdf:li>
+            <rdf:li>ball</rdf:li>
+            <rdf:li>volley</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent
+             rdf:about="http://www.web3king.com">
+            <dc:title>Angelo Gelmi</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent
+             rdf:about="http://www.web3king.com">
+            <dc:title>Angelo Gelmi</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient1879">
+      <stop
+         id="stop1880"
+         offset="0.0000000"
+         style="stop-color:#002723;stop-opacity:1.0000000;" />
+      <stop
+         id="stop1883"
+         offset="1.0000000"
+         style="stop-color:#000000;stop-opacity:0.49803922;" />
+      <stop
+         id="stop1881"
+         offset="1.0000000"
+         style="stop-color:#ffffff;stop-opacity:0.0000000;" />
+    </linearGradient>
+    <radialGradient
+       cx="9.9854059"
+       cy="583.80896"
+       fx="9.9854059"
+       fy="583.80896"
+       gradientTransform="scale(1.056609,0.946424)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3225"
+       inkscape:collect="always"
+       r="84.549843"
+       xlink:href="#linearGradient1879" />
+  </defs>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer2"
+     inkscape:cx="424.04216"
+     inkscape:cy="291.81325"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="761"
+     inkscape:window-width="1270"
+     inkscape:window-x="0"
+     inkscape:window-y="6"
+     inkscape:zoom="0.66505983"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer7"
+     inkscape:groupmode="layer"
+     inkscape:label="Label"
+     transform="translate(-26.284746,-15.895337)" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1"
+     style="display:block"
+     transform="translate(-26.284746,-15.895337)" />
+  <g
+     id="layer6"
+     inkscape:groupmode="layer"
+     inkscape:label="Destra"
+     transform="translate(-26.284746,-15.895337)">
+    <path
+       d="M 226.48338,72.187212 C 272.53187,166.16372 200.63984,213.15197 190.30242,218.79056 206.27843,169.92278 226.48338,72.187212 226.48338,72.187212 Z"
+       id="path3155"
+       sodipodi:nodetypes="ccc"
+       style="fill:#368c00;fill-opacity:1;fill-rule:evenodd;stroke:#e8e9e8;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="layer4"
+     inkscape:groupmode="layer"
+     inkscape:label="Sinistra"
+     style="display:block"
+     transform="translate(-26.284746,-15.895337)">
+    <path
+       d="M 84.721722,154.79587 C 76.077662,69.075612 123.98016,40.622242 123.98016,40.622242 121.45897,17.571422 108.49289,20.812942 108.49289,20.812942 14.488732,75.198482 54.107342,173.1645 54.107342,173.1645 l 1.44068,0.36016 c 27.01268,-13.32625 29.1737,-18.72879 29.1737,-18.72879 z"
+       id="path3141"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#b32000;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 53.387002,175.32551 c -9.72457,4.6822 -15.1271,2.52118 -15.1271,2.52118 C -7.1214178,67.274762 102.49634,22.504082 102.49634,22.504082 c 9.72457,-2.88136 6.35671,-1.33097 6.35671,-1.33097 C 13.768402,74.117972 54.107342,177.84669 53.387002,175.32551 Z"
+       id="path3149"
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 39.700582,179.64754 c 24.85166,-6.8432 45.02114,-24.85167 45.02114,-24.85167 37.817758,15.1271 40.338948,18.72879 48.622838,22.33048 -31.33472,38.17794 -44.660978,36.3771 -58.347408,38.53811 -20.88981,-7.20339 -35.29657,-36.01692 -35.29657,-36.01692 z"
+       id="path3151"
+       sodipodi:nodetypes="ccccc"
+       style="fill:#b32000;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 75.717492,216.3848 c 34.936408,-4.6822 52.944858,-41.05929 57.627058,-39.97878 36.01692,15.48727 30.61438,14.0466 30.61438,14.0466 l 0,0 C 130.10303,244.83816 121.0988,233.31275 121.0988,233.31275 94.446282,230.79156 75.717492,216.3848 75.717492,216.3848 Z"
+       id="path3152"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#ffeeff;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 165.39961,189.73228 c 33.8559,14.76693 28.81353,10.4449 31.69489,13.68643 -4.32203,35.29657 -75.9957,29.53387 -75.9957,29.53387 39.25844,-30.61438 44.30081,-43.2203 44.30081,-43.2203 z"
+       id="path3153"
+       sodipodi:nodetypes="cccc"
+       style="fill:#368c00;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="layer5"
+     inkscape:groupmode="layer"
+     inkscape:label="Sotto"
+     transform="translate(-26.284746,-15.895337)" />
+  <g
+     id="layer3"
+     inkscape:groupmode="layer"
+     inkscape:label="Sopra"
+     transform="translate(-26.284746,-15.895337)">
+    <path
+       d="m 124.02119,40.076292 c -4.34141,-22.7089 -11.30202,-19.24169 -10.30016,-20.24356 40.74243,-3.6735 48.42338,3.00559 48.42338,3.00559 0,0 1.65781,2.8842 1.77463,2.85514 12.69027,22.70889 4.90446,23.86121 4.90446,23.86121 -41.41034,-11.0205 -39.0396,-7.13728 -44.80231,-9.47838 z"
+       id="path2515"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#368c00;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 169.0013,49.266302 c 9.00423,-6.66312 -7.92372,-27.19277 -7.92372,-27.19277 38.71819,9.54448 40.69911,22.87074 40.69911,22.87074 -0.36016,18.90889 -1.44067,18.36863 -1.44067,18.36863 -26.65252,-13.68643 -31.33472,-14.0466 -31.33472,-14.0466 z"
+       id="path2516"
+       sodipodi:nodetypes="ccccc"
+       style="fill:#fffbff;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 200.69619,63.492992 c 1.26059,-24.49151 1.26059,-21.97032 1.26059,-19.44914 23.23091,11.88559 28.81353,40.69912 28.09319,44.30081 -27.55294,-22.51058 -29.35378,-24.85167 -29.35378,-24.85167 z"
+       id="path2517"
+       sodipodi:nodetypes="cccc"
+       style="fill:#b40000;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="layer2"
+     inkscape:groupmode="layer"
+     inkscape:label="Ricalco"
+     style="display:block"
+     transform="translate(-26.284746,-15.895337)">
+    <path
+       d="m 85.507402,155.03068 c -2.66612,-22.94676 -0.69232,-46.15502 0.46156,-47.53967 107.464768,43.37467 132.434938,61.27747 134.772618,64.61701 l 0.77108,-0.20636 c -15.23115,34.15471 -28.46409,29.28402 -28.46409,29.28402 l -2.07698,-0.92311 C 106.04638,165.41554 90.815232,158.95385 85.507402,155.03068 Z"
+       id="path1888"
+       sodipodi:nodetypes="ccccccc"
+       style="fill:#fdffff;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 85.839562,106.49455 c 1.93023,-15.811428 10.22915,-30.158168 10.22915,-30.158168 110.772018,13.38496 138.152768,59.617558 137.784898,60.555068 1.38131,7.99842 -0.57315,13.00609 -2.73985,20.00268 -2.1667,6.99659 -5.00819,11.97346 -9.70967,15.50609 -4.75189,3.57051 -132.564448,-63.13637 -135.564528,-65.90567 z"
+       id="path2510"
+       sodipodi:nodetypes="ccczzc"
+       style="fill:#fdffff;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 95.864272,76.752582 c 15.657248,-26.84315 27.745428,-35.18447 27.745428,-35.18447 87.69451,10.15411 106.36288,47.69168 106.36288,47.69168 l -0.23077,-0.23078 c 9.92332,34.154698 5.02102,51.260068 3.86714,47.336898 C 195.98026,86.837162 104.09393,77.658212 95.864272,76.752582 Z"
+       id="path2511"
+       sodipodi:nodetypes="cccccc"
+       style="fill:#fdffff;fill-opacity:1;fill-rule:evenodd;stroke:#b8b8b8;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       d="M 151.31393,525.9871 A 101.38071,90.646278 0 0 1 154.28805,654.10819 101.38071,90.646278 0 0 1 10.996815,656.85635 101.38071,90.646278 0 0 1 7.8237284,528.73908 101.38071,90.646278 0 0 1 151.11055,525.81302"
+       id="path1245"
+       sodipodi:cx="81.104561"
+       sodipodi:cy="591.37817"
+       sodipodi:end="5.4746047"
+       sodipodi:open="true"
+       sodipodi:rx="101.38071"
+       sodipodi:ry="90.646278"
+       sodipodi:start="5.4773818"
+       sodipodi:type="arc"
+       style="display:block;opacity:0.13419908;fill:url(#radialGradient3225);fill-opacity:1;stroke:#000000;stroke-width:3.0625;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0"
+       transform="matrix(1.06008,0,0,1.196668,49.34885,-581.4565)" />
+    <text
+       id="text3158"
+       sodipodi:linespacing="100%"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:100%;font-family:'Arial Black';letter-spacing:0;writing-mode:lr-tb;text-anchor:start;display:block;visibility:visible;opacity:0.76623374;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;mar [...]
+       xml:space="preserve"><textPath
+         id="textPath3175"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;font-family:'Arial Black';writing-mode:lr-tb;text-anchor:start;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none"
+         xlink:href="#path3168"><tspan
+   id="tspan3159"
+   style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;font-family:'Arial Black';writing-mode:lr-tb;text-anchor:start;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none">Volley-Ball</tspan></textPath></text>
+    <path
+       d="m 105.25369,104.13923 c 92.09697,31.95201 116.53087,58.26543 116.53087,58.26543"
+       id="path3168"
+       sodipodi:nodetypes="cc"
+       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/stadium.png b/images/presets/stadium.png
deleted file mode 100644
index a5b94ef..0000000
Binary files a/images/presets/stadium.png and /dev/null differ
diff --git a/images/presets/station.png b/images/presets/station.png
deleted file mode 100644
index 85d4514..0000000
Binary files a/images/presets/station.png and /dev/null differ
diff --git a/images/presets/station16.png b/images/presets/station16.png
deleted file mode 100644
index cef6770..0000000
Binary files a/images/presets/station16.png and /dev/null differ
diff --git a/images/presets/storage_tank.png b/images/presets/storage_tank.png
deleted file mode 100644
index ab4f43b..0000000
Binary files a/images/presets/storage_tank.png and /dev/null differ
diff --git a/images/presets/studio.png b/images/presets/studio.png
deleted file mode 100644
index 1cb591e..0000000
Binary files a/images/presets/studio.png and /dev/null differ
diff --git a/images/presets/swing_gate.png b/images/presets/swing_gate.png
deleted file mode 100644
index 39a6f6e..0000000
Binary files a/images/presets/swing_gate.png and /dev/null differ
diff --git a/images/presets/table_tennis.png b/images/presets/table_tennis.png
deleted file mode 100644
index 6420f74..0000000
Binary files a/images/presets/table_tennis.png and /dev/null differ
diff --git a/images/presets/taxi.png b/images/presets/taxi.png
deleted file mode 100644
index 3f3fe7e..0000000
Binary files a/images/presets/taxi.png and /dev/null differ
diff --git a/images/presets/telephone.png b/images/presets/telephone.png
deleted file mode 100644
index a6a8e46..0000000
Binary files a/images/presets/telephone.png and /dev/null differ
diff --git a/images/presets/theme_park.png b/images/presets/theme_park.png
deleted file mode 100644
index 1ac3179..0000000
Binary files a/images/presets/theme_park.png and /dev/null differ
diff --git a/images/presets/toilet.png b/images/presets/toilet.png
deleted file mode 100644
index 667d439..0000000
Binary files a/images/presets/toilet.png and /dev/null differ
diff --git a/images/presets/tram.png b/images/presets/tram.png
deleted file mode 100644
index 3e99350..0000000
Binary files a/images/presets/tram.png and /dev/null differ
diff --git a/images/presets/transport/aerialway/cable_car.svg b/images/presets/transport/aerialway/cable_car.svg
new file mode 100644
index 0000000..9aa4a29
--- /dev/null
+++ b/images/presets/transport/aerialway/cable_car.svg
@@ -0,0 +1,120 @@
+<?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"
+   width="261.78574"
+   height="300.53571"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.0 r9654"
+   version="1.0"
+   sodipodi:docname="cable_car.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\cable_car20.png"
+   inkscape:export-xdpi="6.1462359"
+   inkscape:export-ydpi="6.1462359">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="-286.23304"
+     inkscape:cy="283.63827"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="0"
+     inkscape:window-y="29"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.24999,-305.75504)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 239.27376,430.23127 L 495.01195,308.77881"
+       id="path2383" />
+    <path
+       id="path3161"
+       d="M 391.42857,358.07647 L 391.42857,503.79075"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="fill:#000000;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect3195"
+       width="204.28572"
+       height="160"
+       x="287.67859"
+       y="434.86218"
+       ry="43.333332" />
+    <rect
+       ry="32.85714"
+       y="449.86215"
+       x="431.96426"
+       height="91.428566"
+       width="51.428566"
+       id="rect2989"
+       style="fill:#ffffff;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none" />
+    <rect
+       style="fill:#ffffff;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect2991"
+       width="68.571419"
+       height="131.42856"
+       x="356.25003"
+       y="449.86215"
+       ry="47.23214" />
+    <rect
+       style="fill:#ffffff;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect2993"
+       width="51.428566"
+       height="91.428566"
+       x="296.24997"
+       y="449.86215"
+       ry="32.85714" />
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/chair_lift.svg b/images/presets/transport/aerialway/chair_lift.svg
new file mode 100644
index 0000000..d08fc26
--- /dev/null
+++ b/images/presets/transport/aerialway/chair_lift.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="262.17303"
+   height="283.27737"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="chair_lift2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\chair_lift.png"
+   inkscape:export-xdpi="5.3187914"
+   inkscape:export-ydpi="5.3187914">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="16.648997"
+     inkscape:cy="128.35555"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.05633,-302.00399)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 239.27376,430.23127 495.01195,308.77881"
+       id="path2383"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3161"
+       d="m 374.28571,367.36557 0,104.27894"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.22977495;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#d40000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 409.10714,403.4336 0,68.57143 -62.85714,104.28572 0,-58.57144 62.85714,-114.28571 z"
+       id="path3275"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#d40000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 409.56325,470.57211 52.40537,-1.42855 -63.36064,108.58011 -52.36234,0 63.31761,-107.15156 z"
+       id="path3277"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/drag_lift.svg b/images/presets/transport/aerialway/drag_lift.svg
new file mode 100644
index 0000000..d63d5cd
--- /dev/null
+++ b/images/presets/transport/aerialway/drag_lift.svg
@@ -0,0 +1,97 @@
+<?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"
+   width="261.78574"
+   height="300.53571"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="drag_lift.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\drag_lift.png"
+   inkscape:export-xdpi="4.771409"
+   inkscape:export-ydpi="4.771409">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="-402.14281"
+     inkscape:cy="283.63827"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="0"
+     inkscape:window-y="29" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.24999,-305.75504)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 239.27376,430.23127 L 495.01195,308.77881"
+       id="path2383" />
+    <path
+       id="path3161"
+       d="M 430,340.93361 L 430,486.64789"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.22645569;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 465.63677,424.04683 C 463.34431,430.94948 396.86322,541.3918 396.86322,541.3918"
+       id="path3247" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 304.28572,399.50504 L 304.28572,545.21932"
+       id="path3249" />
+    <path
+       id="path3251"
+       d="M 339.92249,482.61826 C 337.63003,489.52091 271.14894,599.96323 271.14894,599.96323"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:6.22645569;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/gondola.svg b/images/presets/transport/aerialway/gondola.svg
new file mode 100644
index 0000000..847eba3
--- /dev/null
+++ b/images/presets/transport/aerialway/gondola.svg
@@ -0,0 +1,104 @@
+<?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"
+   width="261.78574"
+   height="300.53571"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.0 r9654"
+   version="1.0"
+   sodipodi:docname="cable_car.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\cable_car.png"
+   inkscape:export-xdpi="4.9049101"
+   inkscape:export-ydpi="4.9049101">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="-402.14281"
+     inkscape:cy="283.63827"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="0"
+     inkscape:window-y="29"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.24999,-305.75504)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 239.27376,430.23127 L 495.01195,308.77881"
+       id="path2383" />
+    <path
+       id="path3161"
+       d="M 391.42857,358.07647 L 391.42857,503.79075"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="fill:#000000;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect3195"
+       width="134.28572"
+       height="160"
+       x="324.82144"
+       y="434.86218"
+       ry="43.333332" />
+    <rect
+       style="fill:#ffffff;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect3199"
+       width="114.28571"
+       height="91.428566"
+       x="334.82141"
+       y="446.29074"
+       ry="32.85714" />
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/goods.svg b/images/presets/transport/aerialway/goods.svg
new file mode 100644
index 0000000..8754ef7
--- /dev/null
+++ b/images/presets/transport/aerialway/goods.svg
@@ -0,0 +1,96 @@
+<?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"
+   width="261.78574"
+   height="300.53571"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.0 r9654"
+   version="1.0"
+   sodipodi:docname="goods.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\goods20.png"
+   inkscape:export-xdpi="6.8661346"
+   inkscape:export-ydpi="6.8661346">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="-402.14281"
+     inkscape:cy="283.63827"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="0"
+     inkscape:window-y="29"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.24999,-305.75504)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 239.27376,430.23127 L 495.01195,308.77881"
+       id="path2383" />
+    <path
+       id="path3161"
+       d="M 391.42857,358.07647 L 391.42857,503.79075"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="fill:#000000;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect3195"
+       width="134.28572"
+       height="68.571426"
+       x="323.39288"
+       y="462.00504"
+       ry="18.571428" />
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/magic_carpet.png b/images/presets/transport/aerialway/magic_carpet.png
new file mode 100644
index 0000000..0f2f8aa
Binary files /dev/null and b/images/presets/transport/aerialway/magic_carpet.png differ
diff --git a/images/presets/transport/aerialway/mixed_lift.svg b/images/presets/transport/aerialway/mixed_lift.svg
new file mode 100644
index 0000000..feda4ed
--- /dev/null
+++ b/images/presets/transport/aerialway/mixed_lift.svg
@@ -0,0 +1,131 @@
+<?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"
+   width="262.17303"
+   height="283.27737"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="mixed_lift2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\chair_lift.png"
+   inkscape:export-xdpi="5.3187914"
+   inkscape:export-ydpi="5.3187914">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.979899"
+     inkscape:cx="-23.92341"
+     inkscape:cy="113.68746"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.05633,-302.00399)">
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 239.27376,430.23127 495.01195,308.77881"
+       id="path2383"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path3161"
+       d="m 270.65901,414.87932 0,63.71655"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.18858266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#d40000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.73582315;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 303.0446,412.79986 0,66.14377 -58.46013,100.59366 0,-56.49781 58.46013,-110.23962 z"
+       id="path3275"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#d40000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.73582315;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 303.4688,477.56144 48.73949,-1.37797 -58.92841,104.73601 -48.69946,0 58.88838,-103.35804 z"
+       id="path3277"
+       sodipodi:nodetypes="ccccc"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g4148"
+       transform="translate(297.64794,-33.780638)">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 131.94917,381.17422 0,145.71428"
+         id="path3161-1"
+         inkscape:connector-curvature="0" />
+      <rect
+         ry="43.333332"
+         y="457.95993"
+         x="65.342041"
+         height="160"
+         width="134.28572"
+         id="rect3195"
+         style="fill:#000000;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         ry="32.85714"
+         y="469.38849"
+         x="75.34201"
+         height="91.428566"
+         width="114.28571"
+         id="rect3199"
+         style="fill:#ffffff;stroke-width:15;stroke-miterlimit:4;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/pylon.svg b/images/presets/transport/aerialway/pylon.svg
new file mode 100644
index 0000000..9253546
--- /dev/null
+++ b/images/presets/transport/aerialway/pylon.svg
@@ -0,0 +1,128 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="01.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="11.904794"
+     inkscape:cy="9.3808906"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-350px"
+       originy="-520px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-350,-516.36218)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect2987"
+       width="16"
+       height="16"
+       x="350"
+       y="516.36218" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect2989"
+       width="2"
+       height="16"
+       x="357"
+       y="516.36218" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect2991"
+       width="16"
+       height="2"
+       x="350"
+       y="521.36218" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 355,521.36218 c -2,-3 -2,-3 -2,-3"
+       id="path2997"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect2999"
+       width="14"
+       height="1"
+       x="351"
+       y="517.36218" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 361,521.36218 c 2,-3 2,-3 2,-3"
+       id="path3769"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="path3827"
+       sodipodi:cx="363"
+       sodipodi:cy="523.36218"
+       sodipodi:rx="1"
+       sodipodi:ry="1"
+       d="m 364,523.36218 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+       transform="translate(0,1)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="path3829"
+       sodipodi:cx="353"
+       sodipodi:cy="523.36218"
+       sodipodi:rx="1"
+       sodipodi:ry="1"
+       d="m 354,523.36218 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+       transform="translate(0,1)" />
+  </g>
+</svg>
diff --git a/images/presets/transport/aerialway/station.svg b/images/presets/transport/aerialway/station.svg
new file mode 100644
index 0000000..7643c9c
--- /dev/null
+++ b/images/presets/transport/aerialway/station.svg
@@ -0,0 +1,116 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   version="1.0"
+   sodipodi:docname="station2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\station.png"
+   inkscape:export-xdpi="4.0582428"
+   inkscape:export-ydpi="4.0582428">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.4"
+     inkscape:cx="9.8525902"
+     inkscape:cy="9.0292025"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4138"
+       originx="5.2587891e-006"
+       originy="-2.5634766e-005" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-236.24998,-590.29071)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4137"
+       width="16"
+       height="16"
+       x="236.24998"
+       y="590.29071" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 238.72394,599.87756 15.06494,-7.67446"
+       id="path2383"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#d45500;fill-opacity:1;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect3299"
+       width="5"
+       height="13"
+       x="236.24998"
+       y="593.29071" />
+    <rect
+       style="fill:#552200;fill-opacity:1;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect3301"
+       width="8"
+       height="2"
+       x="236.24998"
+       y="591.29077" />
+  </g>
+</svg>
diff --git a/images/presets/transport/airport.svg b/images/presets/transport/airport.svg
new file mode 100644
index 0000000..ff351be
--- /dev/null
+++ b/images/presets/transport/airport.svg
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="541.27716"
+   id="svg1960"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="airport.svg"
+   sodipodi:version="0.32"
+   width="515.9408"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>AIGA_Symbol_Signs</dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg1960"
+     inkscape:cx="339.80914"
+     inkscape:cy="457.0057"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.43415836"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs1962">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path1965"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path1968"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4151"
+     width="515.9408"
+     height="541.27716"
+     x="0"
+     y="0" />
+  <g
+     id="g1970"
+     transform="translate(34.549606,39.150631)">
+    <path
+       d="m 196.91,25.3815 c 0.06,-34 51.309,-34 51.275,0.958 l 0,142.6915 199.764,120.064 0,52.717 -198.805,-65.43 0,106.647 46.008,35.944 0,41.694 -70.927,-22.046 -70.927,22.046 0,-41.694 45.529,-35.944 0,-106.647 L 0,341.812 0,289.095 196.91,169.031 l 0,-143.6495 z"
+       id="path1972"
+       style="fill:#000000;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/airport/airfield.svg b/images/presets/transport/airport/airfield.svg
new file mode 100644
index 0000000..6f55e6c
--- /dev/null
+++ b/images/presets/transport/airport/airfield.svg
@@ -0,0 +1,112 @@
+<?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"
+   height="1052.3622"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="airfield.svg"
+   sodipodi:version="0.32"
+   width="744.09448"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>military airplane</dc:title>
+        <dc:description />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>army</rdf:li>
+            <rdf:li>military</rdf:li>
+            <rdf:li>mig</rdf:li>
+            <rdf:li>vehicles</rdf:li>
+            <rdf:li>fly</rdf:li>
+            <rdf:li>air force</rdf:li>
+            <rdf:li>fighter</rdf:li>
+            <rdf:li>airplane</rdf:li>
+            <rdf:li>bomber</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>mo</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>mo</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>20 09 2005</dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="layer1"
+     inkscape:cx="-112.14286"
+     inkscape:cy="517.14286"
+     inkscape:document-units="px"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="1050"
+     inkscape:window-width="1600"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:zoom="0.35"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:window-maximized="0" />
+  <g
+     id="layer1"
+     inkscape:groupmode="layer"
+     inkscape:label="Layer 1">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4135"
+       width="744.09399"
+       height="1052.3622"
+       x="0"
+       y="0"
+       ry="65.41317" />
+    <path
+       d="m 372.74513,979.43631 c -1.08984,-13.51272 -2.78734,-30.87447 -3.77226,-38.58164 l -1.79075,-14.01302 -17.98929,-0.87709 -17.98927,-0.8771 -3.32407,-11.88843 c -1.91618,-6.85311 -5.40547,-12.28922 -8.23827,-12.83475 -3.81186,-0.73412 -70.79354,15.37954 -104.35058,25.1034 -4.62894,1.34134 -5.20636,-0.92586 -5.16504,-20.28119 l 0.0465,-21.79134 52.06889,-83.26457 52.06891,-83.26461 -0.11813,-25.4332 -0.11817,-25.43324 -82.52195,84.23983 c -45.38707,46.33189 -83.89528,84.18999 -85 [...]
+       id="path1368"
+       style="fill:#000000"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/airport/apron.svg b/images/presets/transport/airport/apron.svg
new file mode 100644
index 0000000..444d1f4
--- /dev/null
+++ b/images/presets/transport/airport/apron.svg
@@ -0,0 +1,175 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="apron.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.2929687"
+     inkscape:cx="-24.79013"
+     inkscape:cy="34.46836"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4149"
+       width="64"
+       height="64"
+       x="0"
+       y="988.36218" />
+    <g
+       id="g4903"
+       style="fill:#666666"
+       transform="matrix(0.81915204,-0.57357644,0.57357644,0.81915204,-573.35193,215.96837)">
+      <rect
+         y="1016.9554"
+         x="37.969063"
+         height="22.828026"
+         width="4.1929026"
+         id="rect4897"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <rect
+         transform="matrix(0,-1,1,0,0,0)"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4899"
+         width="4.1929026"
+         height="22.828026"
+         x="-1025.8071"
+         y="28.651501" />
+      <rect
+         y="33.543221"
+         x="-1040.0164"
+         height="13.044586"
+         width="4.1929026"
+         id="rect4901"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         transform="matrix(0,-1,1,0,0,0)" />
+    </g>
+    <g
+       style="fill:#666666"
+       id="g4908"
+       transform="matrix(0.93969262,0.34202014,-0.34202014,0.93969262,331.3511,52.747916)">
+      <rect
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4910"
+         width="4.1929026"
+         height="22.828026"
+         x="37.969063"
+         y="1016.9554" />
+      <rect
+         y="28.651501"
+         x="-1025.8071"
+         height="22.828026"
+         width="4.1929026"
+         id="rect4912"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         transform="matrix(0,-1,1,0,0,0)" />
+      <rect
+         transform="matrix(0,-1,1,0,0,0)"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4914"
+         width="4.1929026"
+         height="13.044586"
+         x="-1040.0164"
+         y="33.543221" />
+    </g>
+    <g
+       transform="translate(7.9199279,-24.458599)"
+       id="g4916"
+       style="fill:#666666">
+      <rect
+         y="1016.9554"
+         x="37.969063"
+         height="22.828026"
+         width="4.1929026"
+         id="rect4918"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <rect
+         transform="matrix(0,-1,1,0,0,0)"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4920"
+         width="4.1929026"
+         height="22.828026"
+         x="-1025.8071"
+         y="28.651501" />
+      <rect
+         y="33.543221"
+         x="-1040.0164"
+         height="13.044586"
+         width="4.1929026"
+         id="rect4922"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         transform="matrix(0,-1,1,0,0,0)" />
+    </g>
+    <g
+       style="fill:#666666"
+       id="g4924"
+       transform="matrix(0.76604444,0.64278761,-0.64278761,0.76604444,646.24586,190.17483)">
+      <rect
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4926"
+         width="4.1929026"
+         height="22.828026"
+         x="37.969063"
+         y="1016.9554" />
+      <rect
+         y="28.651501"
+         x="-1025.8071"
+         height="22.828026"
+         width="4.1929026"
+         id="rect4928"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         transform="matrix(0,-1,1,0,0,0)" />
+      <rect
+         transform="matrix(0,-1,1,0,0,0)"
+         style="opacity:0.98999999;color:#000000;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="rect4930"
+         width="4.1929026"
+         height="13.044586"
+         x="-1040.0164"
+         y="33.543221" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/airport/gate.svg b/images/presets/transport/airport/gate.svg
new file mode 100644
index 0000000..2c818bf
--- /dev/null
+++ b/images/presets/transport/airport/gate.svg
@@ -0,0 +1,83 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4146"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="gate4.svg">
+  <defs
+     id="defs4148" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.839192"
+     inkscape:cx="-11.892529"
+     inkscape:cy="8.1694263"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     units="px"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4151">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-703.42859,-372.93363)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;stroke:#0000c6;stroke-width:1.35708892;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3742"
+       sodipodi:cx="711.42859"
+       sodipodi:cy="380.93362"
+       sodipodi:rx="7.3210855"
+       sodipodi:ry="7.3210855"
+       d="m 704.14158,381.6392 a 7.3210855,7.3210855 0 0 1 6.5785,-7.9923 7.3210855,7.3210855 0 0 1 7.99495,6.57529 7.3210855,7.3210855 0 0 1 -6.57208,7.99758 7.3210855,7.3210855 0 0 1 -8.00022,-6.56886"
+       sodipodi:start="3.0450664"
+       sodipodi:end="3.0434599"
+       sodipodi:open="true" />
+    <g
+       id="text3738">
+      <path
+         d="m 709.88966,382.88859 -2.05452,0 -0.28269,0.96355 -1.8435,0 2.19388,-5.83707 1.96693,0 2.19388,5.83707 -1.8873,0 -0.28668,-0.96355 z m -0.37825,-1.26218 -0.64502,-2.09832 -0.64105,2.09832 1.28607,0 z"
+         id="path4137" />
+      <path
+         d="m 713.94695,379.70328 -1.53293,-0.27473 q 0.19112,-0.73262 0.73262,-1.12282 0.54548,-0.3902 1.54089,-0.3902 1.14273,0 1.65238,0.42603 0.50965,0.42604 0.50965,1.07106 0,0.37826 -0.20705,0.68484 -0.20704,0.30659 -0.62511,0.53752 0.33843,0.0836 0.51761,0.1951 0.29066,0.17918 0.44992,0.47382 0.16325,0.29066 0.16325,0.69678 0,0.50965 -0.26677,0.97949 -0.26677,0.46585 -0.76846,0.72067 -0.50168,0.25084 -1.31792,0.25084 -0.79632,0 -1.25819,-0.18713 -0.45789,-0.18714 -0.75651,-0.54549 [...]
+         id="path4139" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/airport/hangar.svg b/images/presets/transport/airport/hangar.svg
new file mode 100644
index 0000000..b4f17ac
--- /dev/null
+++ b/images/presets/transport/airport/hangar.svg
@@ -0,0 +1,76 @@
+<?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"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   sodipodi:docname="hangar.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.2929687"
+     inkscape:cx="14.925976"
+     inkscape:cy="34.701299"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1400"
+     inkscape:window-height="964"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.98999999;color:#000000;fill:#626262;fill-opacity:1;stroke:#8e8e8e;stroke-width:1.82966781;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path4887"
+       sodipodi:cx="52.993629"
+       sodipodi:cy="67.959961"
+       sodipodi:rx="25.506824"
+       sodipodi:ry="21.896269"
+       d="M 78.500454,67.959961 A 25.506824,21.896269 0 0 1 27.488007,68.172578"
+       transform="matrix(1.1675387,0,0,-1.726019,-29.83365,1156.5122)"
+       sodipodi:start="0"
+       sodipodi:end="3.1318823"
+       sodipodi:open="true" />
+    <rect
+       style="opacity:0.98999999;color:#000000;fill:#333333;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect4889"
+       width="28.114752"
+       height="26.013279"
+       x="18.095459"
+       y="1012.8772" />
+  </g>
+</svg>
diff --git a/images/presets/transport/airport/helipad.svg b/images/presets/transport/airport/helipad.svg
new file mode 100644
index 0000000..e793a17
--- /dev/null
+++ b/images/presets/transport/airport/helipad.svg
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="11"
+   id="svg1985"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="helipad6.svg"
+   sodipodi:version="0.32"
+   width="16.000122"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg1985"
+     inkscape:cx="10.211695"
+     inkscape:cy="3.7197449"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="39.295529"
+     pagecolor="#ffffff"
+     showgrid="true"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4188"
+       originx="0"
+       originy="3.0517578e-005" />
+  </sodipodi:namedview>
+  <defs
+     id="defs1987">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path1990"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path1993"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4176"
+     width="16.000122"
+     height="11"
+     x="0"
+     y="0"
+     ry="0" />
+  <g
+     id="g1997"
+     transform="matrix(0.03014857,0,0,0.02989701,0.73653678,0.99359484)">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#000000;stroke:none"
+       id="path1999"
+       d="m 52.188,134.743 c 28.821,0 52.187,-23.366 52.187,-52.187 0,-28.823 -23.366,-52.189 -52.187,-52.189 C 23.367,30.367 0,53.733 0,82.556 c 0,28.821 23.367,52.187 52.188,52.187 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#000000;stroke:none"
+       id="path2001"
+       d="M 52.188,82.556" />
+  </g>
+  <g
+     id="g2003"
+     transform="matrix(0.03014857,0,0,0.02989701,0.73653678,0.99359484)">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;stroke:none"
+       id="path2005"
+       d="m 52.188,115.765 c 18.341,0 33.211,-14.869 33.211,-33.209 0,-18.343 -14.87,-33.211 -33.211,-33.211 -18.342,0 -33.211,14.868 -33.211,33.211 0,18.34 14.869,33.209 33.211,33.209 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;stroke:none"
+       id="path2007"
+       d="M 52.188,82.556" />
+  </g>
+  <path
+     d="m 6.8241434,8.9966685 c -1.2882572,0 -1.2882572,1.0703405 0,1.0703405 l 7.4465326,0 c 1.249325,0 1.249325,-1.0703405 0,-1.0703405 l -7.4465326,0 z"
+     id="path2011"
+     style="fill:#000000;stroke:none"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 9.4287614,2.9441057 0,-1.4614855 -0.6213017,0 0,1.4614855 0.6213017,0 z"
+     id="path2017"
+     style="fill:#000000;stroke:none"
+     inkscape:connector-curvature="0" />
+  <path
+     d="M 9.1180804,2.213363"
+     id="path2019"
+     style="fill:#000000;stroke:none"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 10.382331,1.5237585 0,-0.3152341 -2.5140294,0 0,0.3152341 2.5140294,0 z"
+     id="path2023"
+     style="fill:#000000;stroke:none"
+     inkscape:connector-curvature="0" />
+  <path
+     d="M 9.1253462,1.3661415"
+     id="path2025"
+     style="fill:#000000;stroke:none"
+     inkscape:connector-curvature="0" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000000;stroke:none"
+     id="path2027"
+     d="m 10.599038,0.99359484 4.012986,0 c 0.534595,0 0.534595,0.75941396 0,0.75941396 l -4.012986,0 c -0.520153,0 -0.520153,-0.75941396 0,-0.75941396 z" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000000;stroke:none"
+     id="path2029"
+     d="m 3.640447,0.99359484 3.967793,0 c 0.5345945,0 0.5345945,0.75941396 0,0.75941396 l -3.967793,0 c -0.5651048,0 -0.5731243,-0.75941396 0,-0.75941396 z" />
+  <path
+     d="m 7.9939006,7.9904905 c -0.51542,0 -0.77313,-0.4186133 -0.8590233,-0.7727934 L 6.7339918,6.0906899 2.1509871,4.0621575 C 1.5941129,3.8209871 1.7297814,2.9029674 2.3629014,2.9029674 l 9.9547866,0 c 1.109739,0 1.727784,0.7416519 2.014196,1.5311079 L 15.130821,6.60088 c 0.286411,0.7390652 -0.198197,1.3857472 -0.911994,1.3896105 l -6.2249264,0 z"
+     id="path2031"
+     style="fill:#000000;stroke:none"
+     inkscape:connector-curvature="0" />
+  <g
+     id="g2033"
+     transform="matrix(0.03246113,0,0,0.03167459,-0.36356456,1.2502462)">
+    <g
+       id="g2035">
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff;stroke:none"
+         id="path2037"
+         d="m 324.249,141.706 0,-57.029 -35.615,0 0,57.029 35.615,0 z" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff;stroke:none"
+         id="path2039"
+         d="M 306.441,113.192" />
+    </g>
+    <g
+       id="g2041">
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff;stroke:none"
+         id="path2043"
+         d="m 380.536,84.677 0,57.029 -35.142,0 0,-57.029 35.142,0 z" />
+      <path
+         inkscape:connector-curvature="0"
+         style="fill:#ffffff;stroke:none"
+         id="path2045"
+         d="M 362.965,113.192" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;stroke:none"
+       id="path2047"
+       d="m 402.182,86.942 c 11.013,2.656 22.013,12.5 29.263,28.75 l 11.25,26.25 -40.513,0 0,-55 z" />
+  </g>
+  <rect
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4239"
+     width="1"
+     height="1"
+     x="9"
+     y="7.9999695" />
+  <rect
+     style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4241"
+     width="1"
+     height="1"
+     x="12"
+     y="7.9999695" />
+</svg>
diff --git a/images/presets/transport/airport/parking_position.png b/images/presets/transport/airport/parking_position.png
new file mode 100644
index 0000000..95f6944
Binary files /dev/null and b/images/presets/transport/airport/parking_position.png differ
diff --git a/images/presets/runway.png b/images/presets/transport/airport/runway.png
similarity index 100%
rename from images/presets/runway.png
rename to images/presets/transport/airport/runway.png
diff --git a/images/presets/taxiway.png b/images/presets/transport/airport/taxiway.png
similarity index 100%
rename from images/presets/taxiway.png
rename to images/presets/transport/airport/taxiway.png
diff --git a/images/presets/transport/airport/terminal.svg b/images/presets/transport/airport/terminal.svg
new file mode 100644
index 0000000..30ff15c
--- /dev/null
+++ b/images/presets/transport/airport/terminal.svg
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="436.59698"
+   id="svg2905"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="terminal.svg"
+   sodipodi:version="0.32"
+   width="440.47501"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>AIGA_Symbol_Signs</dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2905"
+     inkscape:cx="-87.454318"
+     inkscape:cy="415.54616"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.43415836"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs2907">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path2910"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path2913"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       viewBox="0 0 10 10"
+       refY="5"
+       refX="10"
+       orient="auto"
+       markerWidth="4"
+       markerUnits="strokeWidth"
+       markerHeight="3"
+       id="marker2234">
+      <path
+         id="path2938"
+         d="M 10,0 0,5 10,10 Z"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       viewBox="0 0 10 10"
+       refY="5"
+       refX="0"
+       orient="auto"
+       markerWidth="4"
+       markerUnits="strokeWidth"
+       markerHeight="3"
+       id="marker2231">
+      <path
+         id="path2935"
+         d="M 0,0 10,5 0,10 Z"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4173"
+     width="440.47501"
+     height="436.59698"
+     x="0"
+     y="-2.7661133e-006"
+     ry="0" />
+  <g
+     id="g2915"
+     style="fill:#999999"
+     transform="matrix(0.4814943,0.07640888,-0.07640888,0.4814943,15.697612,-17.925842)">
+    <path
+       d="m 430.366,48.7113 c 29.155,-29.153 -11.17,-67.267 -39.954,-38.479 L 284.111,116.529 40.595,52.1583 0,92.7533 200.708,198.458 l -81.175,81.173 -63.107,-7.749 -32.106,32.105 71.595,37.644 37.643,71.595 32.105,-32.107 -7.38,-62.738 81.175,-81.174 103.435,199.39 40.595,-40.595 L 321.861,157.418 430.366,48.7113 Z"
+       id="path2917"
+       style="fill:#999999;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="g2940"
+     transform="matrix(0.676989,0,0,0.7039546,189.65269,77.070257)">
+    <g
+       id="g2942">
+      <path
+         style="fill:#000000;stroke:none"
+         id="path2944"
+         d="m 170.455,84.5914 c 22.772,0 41.233,-18.461 41.233,-41.235 0,-22.772 -18.461,-41.235 -41.233,-41.235 -22.774,0 -41.237,18.463 -41.237,41.235 0,22.774 18.463,41.235 41.237,41.235 z"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g2946">
+        <path
+           style="fill:#000000;stroke:none"
+           id="path2948"
+           d="m 322.785,426.065 17.897,0 c 12.781,0 19.306,-10.035 19.306,-19.224 0,0 0,-101 0,-101.5 0,-9.189 -7.191,-19.342 -19.306,-19.342 l -17.897,0 0,140.066 z"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:#000000;stroke:none"
+           id="path2950"
+           d="M 121.249,95.2924 34.3891,6.43341 C 15.2191,-12.7366 -12.7369,15.2174 6.43314,34.3874 L 117.459,147.415 l 0,326.671 c 0,32.261 47.073,31.313 47.073,0 l 0,-188.092 7.891,0.019 0,188.09 c 0,31.313 47.425,32.244 47.425,-0.017 l 0,-314.272 8.334,0 0,107.015 0,0.181 0,18.989 -26.141,0 0,140.066 111.159,0 0,-140.066 -26.296,0 0,-19.17 c 0,-7.189 -4.313,-11.023 -11.981,-11.023 0,0 -4.495,0 -12.163,0 l -0.03,0 0,-108.802 c 0,-25.163 -21.548,-51.7136 -50.048,-51.7136 l -91.429,0 -0. [...]
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+    <path
+       style="fill:#ffffff;stroke:none"
+       id="path2952"
+       d="m 275.161,285.999 0,-18.929 -35.9,0 0,18.929 35.9,0 z"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/airport/windsock.svg b/images/presets/transport/airport/windsock.svg
new file mode 100644
index 0000000..43d1de4
--- /dev/null
+++ b/images/presets/transport/airport/windsock.svg
@@ -0,0 +1,92 @@
+<?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"
+   width="366.21448"
+   height="424.28574"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="windsock.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="D:\windsock.png"
+   inkscape:export-xdpi="3.3939393"
+   inkscape:export-ydpi="3.3939393">
+  <defs
+     id="defs4">
+    <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="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="1504.176"
+     inkscape:cy="520"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1600"
+     inkscape:window-height="1110"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-259.49982,-396.64789)">
+    <path
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.0565511;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 260.0281,455.20005 L 607.79541,403.81887 L 608.26841,540.90552 L 260.0281,509.48577"
+       id="path2385"
+       sodipodi:nodetypes="cccc" />
+    <rect
+       y="413.79074"
+       x="471.42853"
+       height="122.85716"
+       width="57.142857"
+       id="rect4712"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.45600009;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.45600009;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4716"
+       width="57.142857"
+       height="88.571434"
+       x="331.42856"
+       y="436.64789" />
+    <rect
+       style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:2.45600009;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4718"
+       width="28.571428"
+       height="420"
+       x="597.14288"
+       y="400.93362" />
+  </g>
+</svg>
diff --git a/images/presets/transport/bridge/bridge.svg b/images/presets/transport/bridge/bridge.svg
new file mode 100644
index 0000000..d474443
--- /dev/null
+++ b/images/presets/transport/bridge/bridge.svg
@@ -0,0 +1,98 @@
+<?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"
+   width="16"
+   height="10"
+   viewBox="0 0 16 10"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="bridge.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="3.4117672"
+     inkscape:cy="6.5882769"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1042.3621)">
+    <path
+       style="fill:#1a1a1a"
+       d="M 2.8610235e-6,-1 0,2.0000004 c 2.0000004,0 3.0000012,0.726562 3.0253922,3.0000003 l -6e-7,4.0000005 0.3300781,0 1.09375,0 0.5507812,0 6e-7,-4.0000005 c 4e-7,-2.2734383 0.9999996,-3.0000003 2.9999999,-3.0000003 2.0000006,0 3.0273456,0.726562 3.0273446,3.0000003 l 0,4.0000005 1.972656,0 0,-4.0000005 c 10e-7,-2.2734383 1.000001,-3.0000003 3.000001,-3.0000003 l 0,-3.0000004 z"
+       transform="translate(-4.7683724e-7,1043.3621)"
+       id="path3444-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccssscccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/bridge/bridge_movable.svg b/images/presets/transport/bridge/bridge_movable.svg
new file mode 100644
index 0000000..cfb9f96
--- /dev/null
+++ b/images/presets/transport/bridge/bridge_movable.svg
@@ -0,0 +1,109 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="bridge_movable.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="10.409927"
+     inkscape:cy="7.5038767"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-opacity:1"
+       id="rect4202-1"
+       width="6.1549902"
+       height="2.3634679"
+       x="-733.52594"
+       y="738.26666"
+       transform="matrix(0.70710695,-0.70710662,0.70710695,0.70710662,0,0)" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#1a1a1a"
+       d="m -4.7683724e-7,1042.3621 0,3 C 2.0000005,1045.3621 3.0000005,1046.0887 3.0253915,1048.3621 l 0,4 0.330078,0 1.09375,0 0.550781,0 0,-4 0,-6 -5.00000097683724,0 z"
+       id="path3444-5-9" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#1a1a1a"
+       d="m 11.000003,1042.3621 0,5.5625 c 0.01005,0.1443 0.02734,0.2784 0.02734,0.4375 l 0,4 1.972662,0 0,-4 c 1e-6,-2.2734 1,-3 3,-3 l 0,-3 -5.000002,0 z"
+       id="path3444-5-1-4" />
+  </g>
+</svg>
diff --git a/images/presets/transport/bridge/bridge_outline.svg b/images/presets/transport/bridge/bridge_outline.svg
new file mode 100644
index 0000000..f76a9d8
--- /dev/null
+++ b/images/presets/transport/bridge/bridge_outline.svg
@@ -0,0 +1,97 @@
+<?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"
+   width="16"
+   height="10"
+   viewBox="0 0 16 10"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="bridge_outline.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="6.4280196"
+     inkscape:cy="6.5882769"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1042.3621)">
+    <path
+       style="fill:none;stroke:#1a1a1a;stroke-width:0.92470521000000006;stroke-opacity:1"
+       d="m 0.46235529,1042.8244 -2.73e-6,2.7226 c 1.88441214,0 2.82661874,0.6595 2.85054234,2.7226 l -6e-7,3.6302 0.3110015,0 1.0305377,0 0.5189493,0 5e-7,-3.6302 c 5e-7,-2.0631 0.9422056,-2.7226 2.826618,-2.7226 1.8844119,0 2.8523817,0.6595 2.8523807,2.7226 l 0,3.6302 1.858649,0 0,-3.6302 c 10e-7,-2.0631 0.942207,-2.7226 2.826619,-2.7226 l 0,-2.7226 z"
+       id="path3444-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccssscccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/bridge/bridge_support.svg b/images/presets/transport/bridge/bridge_support.svg
new file mode 100644
index 0000000..8ca35a4
--- /dev/null
+++ b/images/presets/transport/bridge/bridge_support.svg
@@ -0,0 +1,102 @@
+<?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"
+   width="16"
+   height="10"
+   viewBox="0 0 16 10"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="bridge_support.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="0.4897073"
+     inkscape:cy="3.1150344"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="false"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="false"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1042.3621)">
+    <path
+       style="fill:#ffffff;stroke:#1a1a1a;stroke-width:0.92470521000000006;stroke-opacity:1"
+       d="m 0.46235529,1042.8244 -2.73e-6,2.7226 c 1.88441214,0 2.82661874,0.6595 2.85054234,2.7226 l -6e-7,3.6302 0.3110015,0 1.0305377,0 0.5189493,0 5e-7,-3.6302 c 5e-7,-2.0631 0.9422056,-2.7226 2.826618,-2.7226 1.8844119,0 2.8523817,0.6595 2.8523807,2.7226 l 0,3.6302 1.858649,0 0,-3.6302 c 10e-7,-2.0631 0.942207,-2.7226 2.826619,-2.7226 l 0,-2.7226 z"
+       id="path3444-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccssscccccc" />
+    <path
+       style="fill:#1a1a1a;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="M -4.7683724e-7,1042.3621 16,1042.3621 l -0.0017,3.0173 -16.02038857,0 z"
+       id="path4135"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/bus.svg b/images/presets/transport/bus.svg
new file mode 100644
index 0000000..9688a61
--- /dev/null
+++ b/images/presets/transport/bus.svg
@@ -0,0 +1,137 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="32.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="3.3771185"
+     inkscape:cy="7.9507669"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 3.3636355,1037.3621 C 2.019072,1037.3621 1,1038.3665 1,1039.6954 l 0,8.1667 c 0,0.707 0.6047586,1.1667 1.1818178,1.1667 l 0,2.3333 c 4.8181822,0 5.8181822,0 10.6363652,0 l 0,-2.3333 c 0.561592,0 1.181817,-0.5156 1.181817,-1.1667 l 0,-8.1667 c 0,-1.3289 -1.019072,-2.3333 -2.363636,-2.3333 z"
+       id="rect4152-0-5"
+       sodipodi:nodetypes="sssccccssss" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 3.9999977,1038.3625 c -1.137708,0 -2,0.8609 -2,2 l 0,7 c 0,0.606 0.511719,1 1,1 l 0,2 2.000001,0 1e-6,-2 5.0000013,0 0,2 2.000001,0 0,-2 c 0.475194,0 1,-0.4419 1,-1 l 0,-7 c 0,-1.1391 -0.862292,-2 -2.000001,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccccccccssss" />
+    <rect
+       rx="1.0000002"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.0000019"
+       height="4.0000224"
+       x="2.9999976"
+       y="-1043.3621"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="3.9999995"
+       cy="-1046.3621"
+       rx="1.0000002"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11.000001"
+       cy="-1046.3621"
+       rx="1"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+  </g>
+</svg>
diff --git a/images/presets/transport/bus_old.svg b/images/presets/transport/bus_old.svg
new file mode 100644
index 0000000..8cd3513
--- /dev/null
+++ b/images/presets/transport/bus_old.svg
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="480"
+   id="svg2103"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="bus_old2.svg"
+   sodipodi:version="0.32"
+   width="395.39337"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2103"
+     inkscape:cx="233.70271"
+     inkscape:cy="305.95955"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.86831672"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4161"
+       originx="20"
+       originy="20" />
+  </sodipodi:namedview>
+  <defs
+     id="defs2105">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path2108"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path2111"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4163"
+     width="395.39337"
+     height="480"
+     x="0"
+     y="0" />
+  <g
+     id="g2113"
+     transform="translate(20,24.940002)">
+    <path
+       d="M 179.237,0 C 138.982,0 83.388,11.502 60.384,21.087 37.38,30.672 22.044,40.257 17.252,64.219 L 0,197.06 l 0,183.045 29.712,0 0,28.705 c 0,35 51.218,35 51.218,0 l 0,-28.705 94.557,0 0.3,0 98.307,0 0,28.705 c 0,35 51.218,35 51.218,0 l 0,-28.705 29.712,0 0,-183.045 L 337.772,64.219 C 332.98,40.257 317.644,30.672 294.64,21.087 271.636,11.502 216.042,0 175.787,0"
+       id="path2115"
+       style="fill:#000000;stroke:none"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g2117">
+      <g
+         id="g2119">
+        <g
+           id="g2121">
+          <path
+             d="m 299.682,322.723 c 13.568,0 24.568,-11.002 24.568,-24.57 0,-13.568 -11,-24.57 -24.568,-24.57 -13.568,0 -24.569,11.002 -24.569,24.57 0,13.568 11.001,24.57 24.569,24.57 z"
+             id="path2123"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 299.682,298.153"
+             id="path2125"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g2127">
+          <path
+             d="m 55.342,322.723 c -13.568,0 -24.568,-11.002 -24.568,-24.57 0,-13.568 11,-24.57 24.568,-24.57 13.568,0 24.569,11.002 24.569,24.57 0,13.568 -11.001,24.57 -24.569,24.57 z"
+             id="path2129"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 55.342,298.153"
+             id="path2131"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+      <path
+         d="m 175.612,55.113 -71.136,0 c -14.378,0 -14.378,-21.566 0,-21.566 l 71.311,0 74.761,0 c 14.378,0 14.378,21.566 0,21.566 l -74.936,0 z"
+         id="path2133"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 175.612,76.887 -109.897,0 c -15.188,0 -19.156,7.717 -21,19.423 l -13.428,96.348 c -1.252,9.235 1.419,18.402 14.178,18.402 l 130.322,0 133.772,0 c 12.759,0 15.43,-9.167 14.178,-18.402 L 310.309,96.31 c -1.844,-11.706 -5.812,-19.423 -21,-19.423 l -113.697,0 z"
+         id="path2135"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/bus_small.png b/images/presets/transport/bus_small.png
new file mode 100644
index 0000000..d2674eb
Binary files /dev/null and b/images/presets/transport/bus_small.png differ
diff --git a/images/presets/transport/passage/arcade.svg b/images/presets/transport/passage/arcade.svg
new file mode 100644
index 0000000..339c264
--- /dev/null
+++ b/images/presets/transport/passage/arcade.svg
@@ -0,0 +1,81 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="arcade.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="9.045637"
+     inkscape:cy="6.9125874"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       class="st8"
+       d="m 0,1036.3621 0,16.0039 1.6438348,0 0,-3.7261 c 0,-1.6438 0.9863009,-2.9589 2.7397278,-2.9589 1.6438348,0 2.7397247,1.3151 2.7397247,2.9589 l 0,3.7261 0,0 1.972605,0 0,0 0,-3.7261 c 0,-1.6438 0.9862977,-2.9589 2.7397217,-2.9589 1.753427,0 2.739727,1.3151 2.739727,2.9589 l 0,3.7261 0,0 1.424661,0 0,-16.0039 z"
+       id="path3444"
+       inkscape:connector-curvature="0"
+       style="fill:#666666"
+       sodipodi:nodetypes="cccsssccccsssccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/passage/colonnade.svg b/images/presets/transport/passage/colonnade.svg
new file mode 100644
index 0000000..0452943
--- /dev/null
+++ b/images/presets/transport/passage/colonnade.svg
@@ -0,0 +1,80 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="colonnade.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="7.991866"
+     inkscape:cy="4.2183244"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <polygon
+       id="XMLID_161_"
+       class="st0"
+       points="247.3,396.1 247.3,509.6 267.4,509.6 267.4,396.1 344.8,396.1 344.8,509.6 365.4,509.6 365.4,396.1 365.4,293.5 257.3,293.5 149.3,293.5 149.3,396.1 149.3,509.6 169.9,509.6 169.9,396.1 "
+       transform="matrix(0.0740398,0,0,0.07403981,-11.054141,1014.6314)"
+       style="fill:#666666" />
+  </g>
+</svg>
diff --git a/images/presets/transport/passage/tunnel.svg b/images/presets/transport/passage/tunnel.svg
new file mode 100644
index 0000000..afebac4
--- /dev/null
+++ b/images/presets/transport/passage/tunnel.svg
@@ -0,0 +1,90 @@
+<?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"
+   width="16"
+   height="14"
+   viewBox="0 0 16 14"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tunnel.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="0.83719035"
+     inkscape:cy="8.2111891"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1038.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       d="m 15.996354,1046.6221 c 0,4.62 0,5.74 0,5.74 l -15.99635447683724,0 c 0,0 0,-3.64 0,-5.74 0,-4.62 3.52462037683724,-8.26 7.99817477683724,-8.26 4.4735567,0 8.1337397,3.64 7.9981797,8.26 z"
+       id="path3448" />
+  </g>
+</svg>
diff --git a/images/presets/transport/passage/tunnel_avalanche_protector.svg b/images/presets/transport/passage/tunnel_avalanche_protector.svg
new file mode 100644
index 0000000..028b71c
--- /dev/null
+++ b/images/presets/transport/passage/tunnel_avalanche_protector.svg
@@ -0,0 +1,93 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tunnel_avalanche_protector.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.7369706"
+     inkscape:cy="10.014283"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="false"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3452"
+       transform="matrix(1.4159294,0,0,1.4814815,-537.48678,315.32507)">
+      <polygon
+         points="381.1,497.5 379.6,497.5 379.6,486.7 390.9,491.5 390.9,497.5 389.5,497.5 "
+         id="polygon3454" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/passage/tunnel_building_passage.svg b/images/presets/transport/passage/tunnel_building_passage.svg
new file mode 100644
index 0000000..02b8f3b
--- /dev/null
+++ b/images/presets/transport/passage/tunnel_building_passage.svg
@@ -0,0 +1,92 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tunnel_building_passage.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="3.2705552"
+     inkscape:cy="7.8593061"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       class="st8"
+       d="m -1.321186e-6,1036.3621 0,16 5.371426221186,0 c 0,0 0,-3.6571 0,-4.3429 0,-1.4857 1.142858,-2.6285 2.6285701,-2.6285 1.4857124,0 2.62857,1.1428 2.62857,2.6285 0,1.4858 0,4.3429 0,4.3429 l 5.371437,0 0,-16 -16.000003321186,0 z"
+       id="path3450"
+       inkscape:connector-curvature="0"
+       style="fill:#666666" />
+  </g>
+</svg>
diff --git a/images/presets/transport/passage/tunnel_culvert.svg b/images/presets/transport/passage/tunnel_culvert.svg
new file mode 100644
index 0000000..3b9ed9b
--- /dev/null
+++ b/images/presets/transport/passage/tunnel_culvert.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="16"
+   height="10"
+   viewBox="0 0 16 10"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tunnel_culvert2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="5.5275207"
+     inkscape:cy="3.8462229"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1042.3621)">
+    <path
+       style="fill:#2090cf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 8.977904,1044.1026 c 0,0 3.908012,-0.2715 5.269671,3.1837 1.325117,3.3624 1.752427,5.0758 1.752427,5.0758 l -3.6,0 c 0,0 -0.425476,-5.0588 -2.4430689,-5.0367 -1.199928,0.013 -0.9790291,-3.2228 -0.9790291,-3.2228 z"
+       id="path4141"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccsc" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4139"
+       width="10.000002"
+       height="5.9999599"
+       x="-4.7683727e-007"
+       y="1042.3621" />
+  </g>
+</svg>
diff --git a/images/presets/transport/platform.svg b/images/presets/transport/platform.svg
new file mode 100644
index 0000000..a1995fe
--- /dev/null
+++ b/images/presets/transport/platform.svg
@@ -0,0 +1,101 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4163"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="24.svg">
+  <defs
+     id="defs4165" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="0.64342836"
+     inkscape:cy="7.857738"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     units="px">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4711"
+       originx="-364.99999"
+       originy="-370.00002" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4168">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-365,-666.36218)">
+    <rect
+       style="opacity:1;fill:#242424;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4725"
+       width="7.0000005"
+       height="2"
+       x="365"
+       y="680.36218" />
+    <rect
+       style="opacity:1;fill:#242424;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4727"
+       width="9.000001"
+       height="4"
+       x="372"
+       y="678.36218" />
+    <rect
+       style="opacity:1;fill:#734a08;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4729"
+       width="1.0000002"
+       height="12"
+       x="380"
+       y="666.36218" />
+    <rect
+       style="opacity:1;fill:#734a08;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4731"
+       width="6.0000005"
+       height="1"
+       x="374"
+       y="666.36218" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#734a08;fill-opacity:1"
+       d="m 375.27309,678.34987 c -0.16434,-0.0525 -0.29449,-0.1707 -0.33166,-0.30112 -0.0148,-0.052 -0.0219,-1.11512 -0.022,-3.30608 l -1.2e-4,-3.22947 -0.0832,0 -0.0832,0 0,1.21906 c 0,1.19507 -8.5e-4,1.22052 -0.043,1.29281 -0.0546,0.0936 -0.11603,0.1375 -0.23614,0.1688 -0.17758,0.0463 -0.37178,-0.0421 -0.44152,-0.20088 -0.0449,-0.10217 -0.042,-2.82715 0.003,-2.99607 0.10182,-0.38077 0.43146,-0.69271 0.81595,-0.77209 0.20254,-0.0418 2.07512,-0.0423 2.27705,-6.2e-4 0.2057,0.0425 0.38237 [...]
+       id="path2558" />
+  </g>
+</svg>
diff --git a/images/presets/platform_bus.png b/images/presets/transport/platform_bus.png
similarity index 100%
rename from images/presets/platform_bus.png
rename to images/presets/transport/platform_bus.png
diff --git a/images/presets/platform_rail.png b/images/presets/transport/platform_rail.png
similarity index 100%
rename from images/presets/platform_rail.png
rename to images/presets/transport/platform_rail.png
diff --git a/images/presets/transport/railway/abandoned_rail.svg b/images/presets/transport/railway/abandoned_rail.svg
new file mode 100644
index 0000000..cd854f7
--- /dev/null
+++ b/images/presets/transport/railway/abandoned_rail.svg
@@ -0,0 +1,133 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_abandoned_rail.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="4.5472704"
+     inkscape:cy="5.4108116"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4142"
+       width="16"
+       height="16"
+       x="-4.7683722e-007"
+       y="1036.3621" />
+    <path
+       style="fill:#808080;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 2.9999998,1036.3621 -3.0000010248382,0 0,16 3.0000010248382,0 0,-1 -2.00000092,0 0,-2 2.00000092,0 0,-2 -2.00000092,0 0,-2 2.00000092,0 0,-2 -2.00000092,0 0,-2 2.00000092,0 0,-2 -2.00000092,0 0,-2 2.00000092,0 0,-1 z"
+       id="path4714"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#808080;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="m 13.000016,1036.3621 3,0 0,16 -3,0 0,-1 2,0 0,-2 -2,0 0,-2 2,0 0,-2 -2,0 0,-2 2,0 0,-2 -2,0 0,-2 2,0 0,-2 -2,0 0,-1 z"
+       id="path4714-4"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4731"
+       width="8.0000019"
+       height="1.0000002"
+       x="4.0000005"
+       y="1036.3621" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4733"
+       width="8.0000019"
+       height="2.0000005"
+       x="4.0000005"
+       y="1039.3621" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4735"
+       width="8.0000019"
+       height="2.0000005"
+       x="4.0000005"
+       y="1043.3621" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4737"
+       width="8.0000019"
+       height="2.0000005"
+       x="4.0000005"
+       y="1047.3621" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4739"
+       width="8.0000019"
+       height="1.0000002"
+       x="4.0000005"
+       y="1051.3621" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/buffer_stop.svg b/images/presets/transport/railway/buffer_stop.svg
new file mode 100644
index 0000000..93b4cf8
--- /dev/null
+++ b/images/presets/transport/railway/buffer_stop.svg
@@ -0,0 +1,113 @@
+<?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"
+   width="16"
+   height="14"
+   viewBox="0 0 16 14"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_buffer_stop5.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="7.5984475"
+     inkscape:cy="6.3320926"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="false"
+     inkscape:snap-page="true"
+     inkscape:snap-others="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1038.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 6.5039062,0.25 -6.21484365,12.425781 0,1.070313 15.42773445,0.0039 0,-3.5 -5.966797,0 -0.015625,-4.5 4.015625,0 0,-5.5 z"
+       transform="translate(-4.7683724e-7,1038.3621)"
+       id="path4137"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#666666;fill-opacity:1"
+       d="m 7.0000024,1039.3621 -6.0000027,12 14.0000023,0 0,-2 -5.9999996,0 0,-10 z"
+       id="path3387-0-99-9-7-8-7-9-1-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccc" />
+    <path
+       style="fill:#ff0000;fill-opacity:1"
+       d="m 11.000002,1039.3621 0,1 -1.9999996,0 0,2 1.9999996,0 0,1 2,0 0,-4 -2,0 z"
+       id="path3387-0-99-9-7-8-7-9-6-5-5-8"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/bus_guideway.svg b/images/presets/transport/railway/bus_guideway.svg
new file mode 100644
index 0000000..e6254ad
--- /dev/null
+++ b/images/presets/transport/railway/bus_guideway.svg
@@ -0,0 +1,159 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_bus_guideway2.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="12.323558"
+     inkscape:cy="5.8860741"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 4.3769482,1036.3625 c -0.78527,0 -1.544061,0.1469 -2.154297,0.6055 -0.610236,0.4585 -0.972656,1.2418 -0.972656,2.1406 l 0,8.4414 -1.2499999683717,0 0,3.8125 14.9999997683717,0 0,-3.8125 -1.25,0 0,-8.4414 c 0,-0.864 -0.37599,-1.6288 -0.974609,-2.0937 -0.59862,-0.4649 -1.359988,-0.6524 -2.152344,-0.6524 l -6.2460938,0 z"
+       id="path4146"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 3.9999977,1037.3625 c -1.137708,0 -2,0.8609 -2,2 l 0,7 c 0,0.606 0.511719,1 1,1 l 0,2 2.000001,0 1e-6,-2 5.0000013,0 0,2 2.000001,0 0,-2 c 0.475194,0 1,-0.4419 1,-1 l 0,-7 c 0,-1.1391 -0.862292,-2 -2.000001,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccccccccssss" />
+    <rect
+       rx="1.0000002"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.0000019"
+       height="4.0000224"
+       x="2.9999976"
+       y="-1042.3621"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="3.9999995"
+       cy="-1045.3621"
+       rx="1.0000002"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11.000001"
+       cy="-1045.3621"
+       rx="1"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+    <rect
+       rx="7.8667814e-005"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4227"
+       width="15.000003"
+       height="2.0000002"
+       x="-4.7683727e-007"
+       y="-1052.3621"
+       ry="7.8667807e-005"
+       transform="scale(1,-1)" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rend [...]
+       id="rect4189"
+       width="2"
+       height="2"
+       x="-4.2915344e-006"
+       y="1048.3624"
+       rx="7.8667799e-005"
+       ry="7.8667799e-005" />
+    <rect
+       ry="7.8667799e-005"
+       rx="7.8667799e-005"
+       y="1048.3624"
+       x="12.999999"
+       height="2"
+       width="2"
+       id="rect4191"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rend [...]
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/crossing.svg b/images/presets/transport/railway/crossing.svg
new file mode 100644
index 0000000..54f9ebc
--- /dev/null
+++ b/images/presets/transport/railway/crossing.svg
@@ -0,0 +1,84 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2997"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="23.svg">
+  <defs
+     id="defs2999" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.8807857"
+     inkscape:cy="6.3600165"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3016"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-660px"
+       originy="-320px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3002">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-660,-716.36218)">
+    <path
+       style="fill:none;stroke:#ff0000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 3,5 10,6"
+       id="path3018"
+       inkscape:connector-curvature="0"
+       transform="translate(660,716.36218)"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#ff0000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 3,11 13,5"
+       id="path3020"
+       inkscape:connector-curvature="0"
+       transform="translate(660,716.36218)"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/disused_rail.svg b/images/presets/transport/railway/disused_rail.svg
new file mode 100644
index 0000000..e63cd5d
--- /dev/null
+++ b/images/presets/transport/railway/disused_rail.svg
@@ -0,0 +1,124 @@
+<?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"
+   width="14"
+   height="16"
+   viewBox="0 0 14 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="rail_disused_rail4.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-10.624333"
+     inkscape:cy="10.208074"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-8-6"
+       d="M 0.11355783,1039.7608 -4.7683722e-7,1037.7641 13.876363,1036.9634 l 0.113558,1.9967 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-2-0-3"
+       d="M 0.22894344,1044.1643 -4.7683722e-7,1042.1777 13.775578,1040.5599 l 0.228943,1.9866 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-1-0-0"
+       d="M -4.7683722e-7,1047.078 0.08052553,1045.0797 l 13.91864147,0.5665 -0.08052,1.9983 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-5-0-3"
+       d="M -4.7683722e-7,1050.5158 0.23736271,1048.5302 l 13.76082629,1.6782 -0.237363,1.9856 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-9-7-8-7-9"
+       d="m 2.9999964,1052.3621 -1.000011,0 0,-16 1.000011,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-0-0-9-9-7-1"
+       d="m 12.000012,1052.3621 -1.000013,0 0,-16 1.000013,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/funicular.svg b/images/presets/transport/railway/funicular.svg
new file mode 100644
index 0000000..b42d458
--- /dev/null
+++ b/images/presets/transport/railway/funicular.svg
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.0"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   preserveAspectRatio="none"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="30.svg">
+  <metadata
+     id="metadata21">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs19" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview17"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="32"
+     inkscape:cx="16.276277"
+     inkscape:cy="9.4799627"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4154"
+       originx="7.924903e-010"
+       originy="1" />
+  </sodipodi:namedview>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.653;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="rect4170"
+     width="16"
+     height="16"
+     x="7.924903e-010"
+     y="0"
+     rx="0" />
+  <path
+     d="M 1,7.905 15,15 1,15"
+     id="slope"
+     inkscape:connector-curvature="0"
+     style="fill:#000000;stroke:none"
+     sodipodi:nodetypes="ccc" />
+  <circle
+     cx="6.3389673"
+     cy="8.4400024"
+     id="wheel"
+     r="1.9988337"
+     style="fill:#000000" />
+  <circle
+     cx="11.002911"
+     cy="10.772004"
+     id="circle6"
+     r="1.9988337"
+     style="fill:#000000" />
+  <rect
+     style="fill:#000000"
+     id="cab"
+     rx="0.37246045"
+     y="-0.95547646"
+     x="3.3541002"
+     height="7.2254004"
+     width="12.299652"
+     transform="matrix(0.89442763,0.44721272,0,1,0,0)" />
+  <rect
+     style="fill:#ffffff;fill-opacity:1"
+     id="window"
+     rx="0.18623023"
+     y="0.42817301"
+     x="4.4721336"
+     height="2.8435221"
+     width="2.6150281"
+     transform="matrix(0.89442763,0.44721272,0,1,0,0)" />
+  <rect
+     style="fill:#ffffff;fill-opacity:1"
+     id="rect12"
+     rx="0.18623023"
+     y="0.42468071"
+     x="8.2220221"
+     height="2.8470144"
+     width="2.5897598"
+     transform="matrix(0.89442763,0.44721272,0,1,0,0)" />
+  <rect
+     style="fill:#ffffff;fill-opacity:1"
+     id="rect14"
+     rx="0.18623023"
+     y="0.45028329"
+     x="11.964101"
+     height="2.8214118"
+     width="2.5723002"
+     transform="matrix(0.89442763,0.44721272,0,1,0,0)" />
+  <path
+     inkscape:connector-curvature="0"
+     id="rope"
+     style="stroke:#000000;stroke-width:1.26600003;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+     d="M 0.2830851,5.2241778 7.2789999,8.722118" />
+</svg>
diff --git a/images/presets/transport/railway/level_crossing.svg b/images/presets/transport/railway/level_crossing.svg
new file mode 100644
index 0000000..102f63f
--- /dev/null
+++ b/images/presets/transport/railway/level_crossing.svg
@@ -0,0 +1,98 @@
+<?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"
+   version="1.0"
+   width="739.41339"
+   height="489.5358"
+   id="svg2"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="10.svg">
+  <metadata
+     id="metadata12">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     inkscape:window-height="976"
+     id="namedview10"
+     showgrid="false"
+     inkscape:zoom="0.59193281"
+     inkscape:cx="325.63184"
+     inkscape:cy="62.349857"
+     inkscape:window-x="-9"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="g3026"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       id="perspective13124"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g3026"
+     transform="translate(119.70668,-129.88811)">
+    <g
+       id="layer1"
+       transform="matrix(0,1,-1,0,624.65603,124.65599)">
+      <path
+         id="path1890"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         d="m 94.296621,210.11445 94.615669,164.77919 -94.15567,163.986 89.626,53.63626 64.82856,-111.17112 66.57569,111.26142 90.31697,-52.53732 -95.97746,-165.29774 96.18785,-166.13881 -90.40646,-52.16115 -65.75735,113.34204 -64.94244,-111.82073 z"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccccccc" />
+      <path
+         id="path1882"
+         style="fill:#c1121c;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="M 94.311338,211.92538 187.08494,159.21453 98.120108,4.9493054 5.7746385,58.534605 94.311338,211.92538 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path1884"
+         style="fill:#c1121c;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 401.99432,744.3627 92.7736,-52.71085 -88.96483,-154.26522 -92.34547,53.5853 88.5367,153.39077 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path1886"
+         style="fill:#c1121c;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 98.00572,744.36271 -92.7736,-52.71085 88.96483,-154.26522 92.34547,53.5853 -88.5367,153.39077 z"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path1888"
+         style="fill:#c1121c;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="M 405.4739,212.22565 312.7003,159.5148 401.66513,5.249578 494.0106,58.83488 405.4739,212.22565 z"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/light_rail.svg b/images/presets/transport/railway/light_rail.svg
new file mode 100644
index 0000000..a2cd555
--- /dev/null
+++ b/images/presets/transport/railway/light_rail.svg
@@ -0,0 +1,144 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_light_rail3.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="-1.4399174"
+     inkscape:cy="16.152512"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:snap-page="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-paths="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4146"
+       d="m 4.376685,1037.1121 c -1.372083,0 -2.376687,0.5446 -2.376687,1.9962 l 2e-6,12.2538 11.000001,0 1e-6,-12.2538 c 0,-1.3422 -1.035853,-1.9962 -2.376687,-1.9962 z"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       sodipodi:nodetypes="ssccsss" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 3.999999,1037.3621 c -1.137708,0 -2.0000013,0.8609 -2.000001,2 l 1.8e-6,8 c 2e-7,1.232 0.7790292,2 2.0000002,2 l 7.000001,0 c 1.254116,0 2,-0.7238 2,-2 l 1e-6,-8 c 0,-1.1391 -0.862292,-2 -2.000001,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccssss" />
+    <rect
+       rx="1.0000002"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.0000019"
+       height="4.0000224"
+       x="2.9999995"
+       y="-1042.3618"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="4"
+       cy="-1046.3621"
+       rx="1.0000002"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11"
+       cy="-1046.3621"
+       rx="1"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4249-2"
+       width="15.000002"
+       height="2.0000422"
+       x="-6.2488175e-007"
+       y="1050.3622"
+       ry="5.5070162e-005"
+       rx="5.5070162e-005" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/milestone.svg b/images/presets/transport/railway/milestone.svg
new file mode 100644
index 0000000..6297d03
--- /dev/null
+++ b/images/presets/transport/railway/milestone.svg
@@ -0,0 +1,144 @@
+<?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"
+   width="12"
+   height="16"
+   viewBox="0 0 12 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_millestone2.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.5852558"
+     inkscape:cy="9.3498488"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-page="false"
+     inkscape:snap-global="false"
+     inkscape:snap-others="false"
+     inkscape:snap-nodes="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+    <sodipodi:guide
+       position="11.000001,15.000001"
+       orientation="0,1"
+       id="guide4138" />
+    <sodipodi:guide
+       position="11.000001,15.000001"
+       orientation="1,0"
+       id="guide4140" />
+    <sodipodi:guide
+       position="1.0000001,4.0000003"
+       orientation="1,0"
+       id="guide4142" />
+    <sodipodi:guide
+       position="0,5.0000003"
+       orientation="0,1"
+       id="guide4144" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       y="1046.3621"
+       x="4.257813"
+       height="5.9999194"
+       width="3.484375"
+       id="rect4148"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+    <rect
+       y="1037.8621"
+       x="1.5000001"
+       height="9.000041"
+       width="9.000001"
+       id="rect4146"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.5000003;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shap [...]
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffdd55;fill-opacity:1;fill-rule:nonzero;stroke:#666666;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto; [...]
+       id="rect4209"
+       width="9.000001"
+       height="9.000041"
+       x="1.5000001"
+       y="1037.8621" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="rect4197"
+       width="2"
+       height="5.9999194"
+       x="5.0000005"
+       y="1046.3621" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 4.5071215,1039.8646 2.9940272,-0 -2.000115,4.9952"
+       id="path4199"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/monorail.svg b/images/presets/transport/railway/monorail.svg
new file mode 100644
index 0000000..c10f15c
--- /dev/null
+++ b/images/presets/transport/railway/monorail.svg
@@ -0,0 +1,147 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_monorail6.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="4.0837872"
+     inkscape:cy="4.9117397"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-page="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4146"
+       d="m 4.3766856,1037.1121 c -1.3720829,0 -2.3766858,0.5446 -2.3766858,1.9962 l 0,12.2538 11.0000012,0 0,-12.2538 c 0,-1.3422 -1.035853,-1.9962 -2.376686,-1.9962 z"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       sodipodi:nodetypes="ssccsss" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 4,1037.3621 c -1.1377079,0 -2.0000002,0.8609 -2.0000002,2 l 0,10 3.0000003,0 0,-1 -1.0000001,0 0,-1 7.000001,0 0,1 -1,0 0,1 3,0 0,-10 c 0,-1.1391 -0.862292,-2 -2,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="ssccccccccccsss" />
+    <rect
+       rx="1.0000001"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.000001"
+       height="4.0000224"
+       x="2.9999998"
+       y="-1042.3621"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="4"
+       cy="-1045.3621"
+       rx="1.0000001"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11.000001"
+       cy="-1045.3621"
+       rx="0.99999994"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4227"
+       width="15.000002"
+       height="0.99995834"
+       x="4.7683722e-007"
+       y="-1052.3621"
+       ry="7.8667807e-005"
+       transform="scale(1,-1)"
+       rx="7.8667807e-005" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4229"
+       width="3.0000002"
+       height="3.0000858"
+       x="6.0000005"
+       y="-1051.3621"
+       ry="1.9666182e-005"
+       transform="scale(1,-1)"
+       rx="1.9666182e-005" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/narrow_gauge_rail.svg b/images/presets/transport/railway/narrow_gauge_rail.svg
new file mode 100644
index 0000000..7c8d398
--- /dev/null
+++ b/images/presets/transport/railway/narrow_gauge_rail.svg
@@ -0,0 +1,123 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="rail_narrow_gauge_rail.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-5.9661994"
+     inkscape:cy="3.2276789"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-8-6"
+       d="m -1.1644349e-5,1039.3621 0,-2 9.000005644349,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-2-0-3"
+       d="m -5.2134385e-6,1043.3621 0,-2 8.9999992134385,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-1-0-0"
+       d="m -5.2134385e-6,1047.3621 0,-2 9.0000057134385,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-5-0-3"
+       d="m -5.2134385e-6,1051.3621 0,-2 9.0000057134385,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-9-7-8-7-9"
+       d="m 2.9999995,1052.3621 -1.0000104,0 0,-16 1.0000104,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-0-0-9-9-7-1"
+       d="m 7.0000004,1052.3621 -1.0000129,0 0,-16 1.0000129,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/preserved.svg b/images/presets/transport/railway/preserved.svg
new file mode 100644
index 0000000..2123989
--- /dev/null
+++ b/images/presets/transport/railway/preserved.svg
@@ -0,0 +1,224 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_preserved5.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="8.9071542"
+     inkscape:cy="6.8211658"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="false"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+    <sodipodi:guide
+       position="15.499999,10.498802"
+       orientation="1,0"
+       id="guide4190" />
+    <sodipodi:guide
+       position="1.4970777,12.169972"
+       orientation="1,0"
+       id="guide4192" />
+    <sodipodi:guide
+       position="0.20439807,13.843827"
+       orientation="1,0"
+       id="guide4194" />
+    <sodipodi:guide
+       position="0.21875001,12.748002"
+       orientation="0,1"
+       id="guide4151" />
+    <sodipodi:guide
+       position="5.7421879,10.109376"
+       orientation="1,0"
+       id="guide4153" />
+    <sodipodi:guide
+       position="6.8593754,8.7500011"
+       orientation="0,1"
+       id="guide4155" />
+    <sodipodi:guide
+       position="11.242188,9.8203137"
+       orientation="1,0"
+       id="guide4157" />
+    <sodipodi:guide
+       position="15.734376,10.257814"
+       orientation="1,0"
+       id="guide4159" />
+    <sodipodi:guide
+       position="15.273438,10.757814"
+       orientation="0,1"
+       id="guide4161" />
+    <sodipodi:guide
+       position="14.820313,3.2500018"
+       orientation="0,1"
+       id="guide4163" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 0.20439762,1039.6141 0,9.498 15.52997938,0 -2e-6,-7.5078 -4.492188,0 0,2.0078 -5.5000009,0 0,-3.998 z"
+       id="path4147"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <g
+       id="g4156"
+       transform="translate(0.03314564,0)">
+      <ellipse
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="ellipse4143"
+         cx="-12.478067"
+         cy="1049.8617"
+         rx="1.4996274"
+         ry="1.4996264"
+         transform="scale(-1,1)" />
+      <ellipse
+         transform="scale(-1,1)"
+         ry="1.4996264"
+         rx="1.4996274"
+         cy="1049.8617"
+         cx="-12.478067"
+         id="path4158-5-4-8-4-1-8"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       transform="translate(-3.9664278,0)"
+       id="g4160">
+      <ellipse
+         transform="scale(-1,1)"
+         ry="1.4996264"
+         rx="1.4996274"
+         cy="1049.8617"
+         cx="-12.478067"
+         id="ellipse4162"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <ellipse
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="ellipse4164"
+         cx="-12.478067"
+         cy="1049.8617"
+         rx="1.4996274"
+         ry="1.4996264"
+         transform="scale(-1,1)" />
+    </g>
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 3.0955463,1036.3621 c 0.5125623,0.999 0.97181,1.8717 1.4610941,2.6379 0.3986952,0.6188 0.8550782,1.2542 1.3476563,1.7754 0.492578,0.5212 1.0129603,0.9506 1.6445312,1.0762 1.1305518,0.2247 2.1390799,0.091 2.9648441,-0.022 0.812643,-0.1109 1.362494,-0.4119 1.814453,-0.01 0.310345,0.276 0.138014,0.7906 0.138673,1.2382 l 2.281247,0.1645 c 0,0 0.04233,-0.5266 -0.01758,-1.1699 -0.05991,-0.6433 -0.194441,-1.4328 -0.707031,-2.0215 -0.805313,-0.9248 -1.987932,-1.3027 -2.814454,-1.7637 [...]
+       id="path4168"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccaccsccccc" />
+    <ellipse
+       transform="scale(-1,1)"
+       ry="1.9996098"
+       rx="2.0042806"
+       cy="1049.3617"
+       cx="-3.9876006"
+       id="ellipse4145"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4156-7-0-0-3-6"
+       width="16.000027"
+       height="0.99991846"
+       x="-16.000027"
+       y="1051.3621"
+       transform="scale(-1,1)" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-rule:nonzero;stroke:none"
+       d="m 0.9999997,1048.3621 14.0000023,0 2.4e-5,-4.0001 0,-1.9978 -3,0 0,2 -7.0000013,-10e-5 0,-4 -4.000025,0 z"
+       id="path15-2-6-8-8-2-1"
+       sodipodi:nodetypes="cccccccccc" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.40000007;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 14.249067,1043.1847 c 0,0 0.158276,-1.9488 -0.602595,-2.8226 -1.269906,-1.4584 -4.0495184,-1.5188 -4.0455229,-3.5343 l -5.6893134,-0.01 c 0,0 1.949201,4.1866 3.7348356,4.5415 2.0741968,0.4123 3.7537347,-0.4865 4.9062557,0 0.666404,0.3649 0.374995,1.8282 0.374995,1.8282 z"
+       id="path4206-1-9-2-8-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csccsccc" />
+    <ellipse
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4158-3-1-4-1-4-6-3"
+       cx="-3.9876006"
+       cy="1049.3617"
+       rx="2.0042806"
+       ry="1.9996098"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4140"
+       width="2.0000241"
+       height="3.0001624"
+       x="-4.0000238"
+       y="1041.3619"
+       transform="scale(-1,1)" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/rail.svg b/images/presets/transport/railway/rail.svg
new file mode 100644
index 0000000..7c6b0b9
--- /dev/null
+++ b/images/presets/transport/railway/rail.svg
@@ -0,0 +1,123 @@
+<?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"
+   width="14"
+   height="16"
+   viewBox="0 0 14 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="rail_rail.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-5.4137722"
+     inkscape:cy="3.2276789"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-8-6"
+       d="m -1.3273442e-5,1039.3621 0,-2 14.000015273442,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-2-0-3"
+       d="m -3.2734417e-6,1043.3621 0,-2 14.0000052734417,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-1-0-0"
+       d="m -3.2734417e-6,1047.3621 0,-2 14.0000152734417,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-5-0-3"
+       d="m -3.2734417e-6,1051.3621 0,-2 14.0000152734417,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-9-7-8-7-9"
+       d="m 2.9999978,1052.3621 -1.0000104,0 0,-16 1.0000104,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-0-0-9-9-7-1"
+       d="m 12.000013,1052.3621 -1.000013,0 0,-16 1.000013,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/signal.svg b/images/presets/transport/railway/signal.svg
new file mode 100644
index 0000000..e8f88f8
--- /dev/null
+++ b/images/presets/transport/railway/signal.svg
@@ -0,0 +1,143 @@
+<?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"
+   width="12"
+   height="16"
+   viewBox="0 0 12 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_signal2.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="8.7307477"
+     inkscape:cy="6.2317852"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-page="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       y="1049.3621"
+       x="4.2500005"
+       height="2.9999998"
+       width="3.5"
+       id="rect4148"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+    <rect
+       rx="0.99991709"
+       ry="0.99991709"
+       y="1037.3621"
+       x="0.9999997"
+       height="13.000003"
+       width="10.000001"
+       id="rect4146"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000018;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="rect4197"
+       width="2"
+       height="2.9999998"
+       x="5.0000005"
+       y="1049.3621" />
+    <rect
+       style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4158"
+       width="10.000001"
+       height="13.000003"
+       x="0.9999997"
+       y="1037.3621"
+       ry="0.99991709"
+       rx="0.99991709" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4160"
+       cx="6.0000005"
+       cy="1040.0652"
+       rx="1.7031251"
+       ry="1.7031109" />
+    <ellipse
+       ry="1.7031109"
+       rx="1.7031251"
+       cy="1043.8621"
+       cx="6.0000005"
+       id="ellipse4142"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <ellipse
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="ellipse4144"
+       cx="6.0000005"
+       cy="1047.6589"
+       rx="1.7031251"
+       ry="1.7031109" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/subway.svg b/images/presets/transport/railway/subway.svg
new file mode 100644
index 0000000..6e5dcb0
--- /dev/null
+++ b/images/presets/transport/railway/subway.svg
@@ -0,0 +1,140 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_subway6.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-7" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="1.2546538"
+     inkscape:cy="10.827817"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-text-baseline="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4142"
+       width="13"
+       height="14"
+       x="0.99999952"
+       y="1037.3621" />
+    <path
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -4.7683722e-7,1036.3621 0,16 1.00000011683722,0 0,-8 c 0,-3.96 2.86770086,-7 6.50195386,-7 3.6342575,0 6.6081755,3.04 6.4980475,7 l 0,8 1.000002,0 0,-16 z"
+       id="rect4270-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccssccccc" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4141"
+       width="13.000002"
+       height="1.000039"
+       x="0.99999964"
+       y="1051.3621" />
+    <path
+       sodipodi:nodetypes="sssssssss"
+       inkscape:connector-curvature="0"
+       id="path4149"
+       d="m 4.478082,1040.3621 c -1.0398063,0 -1.7546725,0.7148 -1.7546725,1.7547 l 0,6.4906 c 0,1.105 0.649877,1.7547 1.7546725,1.7547 l 6.043851,0 c 1.104774,0 1.754657,-0.6497 1.754657,-1.7547 l 0,-6.4906 c 0,-1.0399 -0.779858,-1.7547 -1.754657,-1.7547 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4151"
+       d="m 4.478082,1044.8715 6.043851,0 c 0.454919,0 0.844848,-0.3899 0.844848,-0.9101 l 0,-1.6895 c 0,-0.5198 -0.389929,-0.9098 -0.844848,-0.9098 l -6.043851,0 c -0.5199047,0 -0.9098309,0.39 -0.9098309,0.9098 l 0,1.6895 c 0,0.5202 0.3899262,0.9101 0.9098309,0.9101 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4153"
+       d="m 5.3229205,1047.8722 c 0,-0.455 -0.3899292,-0.845 -0.8448385,-0.845 -0.5199047,0 -0.9098309,0.39 -0.9098309,0.845 0,0.4547 0.3899262,0.8446 0.9098309,0.8446 0.4549093,0 0.8448385,-0.3899 0.8448385,-0.8446 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4155"
+       d="m 11.366781,1047.8722 c 0,-0.455 -0.389929,-0.845 -0.844848,-0.845 -0.454906,0 -0.8448352,0.39 -0.8448352,0.845 0,0.4547 0.3899292,0.8446 0.8448352,0.8446 0.454919,0 0.844848,-0.3899 0.844848,-0.8446 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/switch.svg b/images/presets/transport/railway/switch.svg
new file mode 100644
index 0000000..121df59
--- /dev/null
+++ b/images/presets/transport/railway/switch.svg
@@ -0,0 +1,133 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="rail_railway_switch.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-11.517092"
+     inkscape:cy="4.0015607"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-8-3-7-6-5"
+       d="m -1.0476837e-5,1039.3621 0,-2 15.000015476837,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-2-0-9-3-7-8"
+       d="m -4.7683722e-7,1043.3621 0,-2 14.00000147683722,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-1-0-8-5-3-6"
+       d="m -4.7683722e-7,1047.3621 0,-2 13.00000147683722,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#c87137;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-7-4-2-9-2-5-0-5-8-3-4"
+       d="m -4.7683722e-7,1051.3621 0,-2 12.00000147683722,0 0,2 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-99-9-7-8-7-2-8-3-9"
+       d="m 3.0000019,1052.3621 -1.000011,0 0,-16 1.000011,0 z"
+       class="st5" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 5.9868759,1036.3621 c -3.703746,7.0026 -3.986328,15.2305 -3.986328,15.2305 l 1,0.035 c 0,0 0.323914,-8.4499 4.117188,-15.2656 l -1.13086,0 z"
+       id="path4812-4"
+       inkscape:connector-curvature="0" />
+    <path
+       class="st5"
+       d="m 10.000001,1052.3621 -1.0000113,0 0,-16 1.0000113,0 z"
+       id="path4143"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4145"
+       d="m 12.986875,1036.3621 c -3.7037463,7.0026 -3.9863283,15.2305 -3.9863283,15.2305 l 1.0000003,0.035 c 0,0 0.323914,-8.4499 4.117188,-15.2656 l -1.13086,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/tram.svg b/images/presets/transport/railway/tram.svg
new file mode 100644
index 0000000..063d4fe
--- /dev/null
+++ b/images/presets/transport/railway/tram.svg
@@ -0,0 +1,186 @@
+<?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"
+   width="16"
+   height="14"
+   viewBox="0 0 16 14"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_tram6.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="8.4551803"
+     inkscape:cy="9.3674229"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:snap-nodes="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1038.3621)">
+    <rect
+       y="1039.3621"
+       x="0"
+       height="0.74999994"
+       width="16.000002"
+       id="rect4151"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonze [...]
+       d="m 7.385014,1038.3621 -4.135014,2.55 0,1.5078 1.6835938,1.1914 -4.6835938,0 0,6.5 15.5,0 0,-6.5 -4.658203,0 1.685547,-1.1894 0,-1.5117 -4.1435845,-2.5481 z"
+       id="path4150"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccccccc" />
+    <g
+       id="g4158"
+       transform="translate(1.0000002,4.0526009e-5)">
+      <circle
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="circle4142"
+         cx="2"
+         cy="1050.3621"
+         r="1" />
+      <circle
+         r="1"
+         cy="1050.3621"
+         cx="2"
+         id="path4139"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4170"
+       transform="translate(-1.0000004,4.0526009e-5)">
+      <circle
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="circle4144"
+         cx="14.000002"
+         cy="1050.3621"
+         r="1.0000001" />
+      <circle
+         r="1.0000001"
+         cy="1050.3621"
+         cx="14.000002"
+         id="path4139-6"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4162">
+      <circle
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="circle4146"
+         cx="6.000001"
+         cy="1050.3621"
+         r="1.0000001" />
+      <circle
+         r="1.0000001"
+         cy="1050.3621"
+         cx="6.000001"
+         id="path4139-67"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4166">
+      <circle
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="circle4148"
+         cx="10.000001"
+         cy="1050.3621"
+         r="1.0000001" />
+      <circle
+         r="1.0000001"
+         cy="1050.3621"
+         cx="10.000001"
+         id="path4139-4"
+         style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       id="path12"
+       d="m 7.9999765,1038.8578 -3.9990404,2.4716 0,0.7032 3.2943677,2.3295 -6.29530391,0 2.1e-7,5 14.0000019,0 0,-5 -6.2720885,0 3.3003035,-2.3295 0,-0.7032 -4.0282162,-2.4716 z m 0,0.9769 3.1212235,1.8482 -3.1066352,2.1858 -3.0984311,-2.1858 z m -5.9999763,5.5274 2.0000003,0 0,3 -2.0000003,0 z m 3.0000001,0 2.5000003,0 0,1.624 -2.5000003,0 z m 3.507813,0 2.5179447,0 0,1.62 -2.5179447,0 z m 3.4921877,0 2.000001,0 0,3 -2.000001,0 z"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccc" />
+    <rect
+       style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4179"
+       width="16.000002"
+       height="1"
+       x="1.5543122e-015"
+       y="1038.3621" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway/turntable.svg b/images/presets/transport/railway/turntable.svg
new file mode 100644
index 0000000..5cf5400
--- /dev/null
+++ b/images/presets/transport/railway/turntable.svg
@@ -0,0 +1,129 @@
+<?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"
+   width="15"
+   height="15"
+   viewBox="0 0 15 15"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_turntable.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="10.029539"
+     inkscape:cy="5.9031046"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1037.3621)">
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#4d4d4d;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145-1"
+       cx="7.5000005"
+       cy="1044.8621"
+       rx="7"
+       ry="7.0000043" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4179-6-2"
+       width="9.0000029"
+       height="2.000001"
+       x="3"
+       y="1042.3621"
+       ry="7.776283e-005" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4179-0-6"
+       width="9.0000029"
+       height="2.000001"
+       x="3"
+       y="1045.3621"
+       ry="7.776283e-005" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4179-1-1"
+       width="9.0000029"
+       height="2.000001"
+       x="3"
+       y="1048.3621"
+       ry="7.776283e-005" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4179-7"
+       width="9.0000029"
+       height="2.0000005"
+       x="3"
+       y="1039.3621"
+       ry="7.7762816e-005" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4162-7"
+       width="1.0000013"
+       height="13.000041"
+       x="4.000001"
+       y="1038.3621"
+       ry="7.2208291e-005" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4162-3-8"
+       width="1.0000015"
+       height="13.000041"
+       x="10.000001"
+       y="1038.3621"
+       ry="7.2208291e-005" />
+  </g>
+</svg>
diff --git a/images/presets/transport/railway_small.png b/images/presets/transport/railway_small.png
new file mode 100644
index 0000000..5a5efff
Binary files /dev/null and b/images/presets/transport/railway_small.png differ
diff --git a/images/presets/transport/railway_station.svg b/images/presets/transport/railway_station.svg
new file mode 100644
index 0000000..7e5c913
--- /dev/null
+++ b/images/presets/transport/railway_station.svg
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="512.48578"
+   id="svg2217"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="railway_station2.svg"
+   sodipodi:version="0.32"
+   width="390.41052"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2217"
+     inkscape:cx="220.66739"
+     inkscape:cy="309.31856"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.86831672"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4158"
+       originx="18.426456"
+       originy="21.881382" />
+  </sodipodi:namedview>
+  <defs
+     id="defs2219">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path2222"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path2225"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4160"
+     width="390.41052"
+     height="512.48578"
+     x="0"
+     y="0" />
+  <g
+     id="g2227"
+     transform="matrix(1.1188119,0,0,1,20.615738,18.940395)">
+    <path
+       d="m 156.811,399.297 0.06,0 67.572,0 49.363,72.367 39.816,0 -69.012,-103.518 c 23.012,-3.708 45.919,-27.708 45.919,-56.958 l 0,-213.858 c 0,-30.192 -25.4,-57.906 -59.907,-57.906 l -73.53,-0.048 0.003,0 L 83,39.424 c -34.507,0 -59.907,27.714 -59.907,57.906 l 0,213.858 c 0,29.25 22.907,53.25 45.919,56.958 L 0,471.664 l 39.816,0 49.363,-72.367 67.572,0 0.06,0 z"
+       id="path2229"
+       style="fill:#000000;stroke:none"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g2231">
+      <path
+         d="m 134.768,33.184 c -9.165,0 -16.591,-7.428 -16.591,-16.593 0,-9.163 7.426,-16.591 16.591,-16.591 9.163,0 16.591,7.428 16.591,16.591 0,9.165 -7.428,16.593 -16.591,16.593 z"
+         id="path2233"
+         style="fill:#000000;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 178.854,33.184 c 9.165,0 16.591,-7.428 16.591,-16.593 C 195.445,7.428 188.019,0 178.854,0 c -9.163,0 -16.591,7.428 -16.591,16.591 0,9.165 7.428,16.593 16.591,16.593 z"
+         id="path2235"
+         style="fill:#000000;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 231.263,336.951 c 14.505,0 26.263,-11.759 26.263,-26.263 0,-14.505 -11.758,-26.263 -26.263,-26.263 -14.505,0 -26.263,11.758 -26.263,26.263 0,14.504 11.758,26.263 26.263,26.263 z"
+         id="path2237"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 156.811,198.014 0.06,0 71.751,0 c 16.5,0 30,-11.326 29.848,-29.826 l 0,-38.5 c 0,-16 -10.348,-29.962 -29.848,-29.962 l -71.751,0 -0.12,0 -71.751,0 c -19.5,0 -29.848,13.962 -29.848,29.962 l 0,38.5 C 55,186.688 68.5,198.014 85,198.014 l 71.751,0 0.06,0 z"
+         id="path2239"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 156.811,88.201 0.06,0 29.001,0 c 5.5,0 9.816,-4.513 9.816,-9.763 l 0,-17 c 0,-5.25 -4.566,-9.66 -9.816,-9.66 l -29.001,0 -0.06,0 -0.06,0 -29.001,0 c -5.25,0 -9.816,4.41 -9.816,9.66 l 0,17 c 0,5.25 4.316,9.763 9.816,9.763 l 29.001,0 0.06,0 z"
+         id="path2241"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 81.75,336.951 c -14.505,0 -26.263,-11.759 -26.263,-26.263 0,-14.505 11.758,-26.263 26.263,-26.263 14.505,0 26.263,11.758 26.263,26.263 0,14.504 -11.758,26.263 -26.263,26.263 z"
+         id="path2243"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/share_taxi.svg b/images/presets/transport/share_taxi.svg
new file mode 100644
index 0000000..6f22e2d
--- /dev/null
+++ b/images/presets/transport/share_taxi.svg
@@ -0,0 +1,162 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="40.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.4399436"
+     inkscape:cy="5.9839554"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 3.3636355,1038.3621 C 2.019072,1038.3621 1,1039.3665 1,1040.6954 l 0,8.1667 c 0,0.707 0.6047586,1.1667 1.1818178,1.1667 l 0,2.3333 c 4.8181822,0 5.8181822,0 10.6363652,0 l 0,-2.3333 c 0.561592,0 1.181817,-0.5156 1.181817,-1.1667 l 0,-8.1667 c 0,-1.3289 -1.019072,-2.3333 -2.363636,-2.3333 z"
+       id="rect4152-0-5"
+       sodipodi:nodetypes="sssccccssss" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 3.9999977,1039.3625 c -1.137708,0 -2,0.8609 -2,2 l 0,7 c 0,0.606 0.511719,1 1,1 l 0,2 2.000001,0 1e-6,-2 5.0000013,0 0,2 2.000001,0 0,-2 c 0.475194,0 1,-0.4419 1,-1 l 0,-7 c 0,-1.1391 -0.862292,-2 -2.000001,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccccccccssss" />
+    <rect
+       rx="1.0000002"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.0000019"
+       height="4.0000224"
+       x="2.9999976"
+       y="-1044.3621"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="3.9999995"
+       cy="-1047.3621"
+       rx="1.0000002"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11.000001"
+       cy="-1047.3621"
+       rx="1"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4145"
+       width="9"
+       height="2"
+       x="3"
+       y="1036.3623"
+       ry="7.8891375e-005" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4143"
+       width="7"
+       height="2.0000393"
+       x="4"
+       y="1037.3621"
+       ry="3.9453123e-005" />
+    <rect
+       style="opacity:1;fill:#ffe100;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4141"
+       width="5"
+       height="2.0000393"
+       x="5"
+       y="1038.3621"
+       rx="0"
+       ry="3.9453123e-005" />
+  </g>
+</svg>
diff --git a/images/presets/transport/station.png b/images/presets/transport/station.png
new file mode 100644
index 0000000..f266594
Binary files /dev/null and b/images/presets/transport/station.png differ
diff --git a/images/presets/transport/station.svg b/images/presets/transport/station.svg
new file mode 100644
index 0000000..3c2336a
--- /dev/null
+++ b/images/presets/transport/station.svg
@@ -0,0 +1,161 @@
+<?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"
+   width="16"
+   height="13"
+   viewBox="0 0 16 13"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="35.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="1.918858"
+     inkscape:cy="8.0581049"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     units="px">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4136"
+       originx="-420"
+       originy="-469.99999" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-420,-569.3622)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4145"
+       width="14"
+       height="7"
+       x="421"
+       y="575.36218" />
+    <path
+       style="opacity:1;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="path4140-6"
+       sodipodi:type="arc"
+       sodipodi:cx="-428"
+       sodipodi:cy="-575.36218"
+       sodipodi:rx="8"
+       sodipodi:ry="5.9999995"
+       sodipodi:start="0"
+       sodipodi:end="3.1415927"
+       d="m -420,-575.36218 a 8,5.9999995 0 0 1 -4,5.19615 8,5.9999995 0 0 1 -8,0 8,5.9999995 0 0 1 -4,-5.19615 l 8,0 z"
+       transform="scale(-1,-1)" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4142-0"
+       width="1"
+       height="7"
+       x="420"
+       y="575.36218" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4144-4"
+       width="1"
+       height="7"
+       x="435"
+       y="575.36218" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 422.90909,576.3622 c -0.51714,0 -0.90909,0.43045 -0.90909,1 l 0,4 c 0,0.616 0.3541,1 0.90909,1 l 3.18182,0 c 0.57005,0 0.90909,-0.3619 0.90909,-1 l 0,-4 c 0,-0.56955 -0.39195,-1 -0.90909,-1 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccssss" />
+    <rect
+       rx="0.45454556"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="4.09091"
+       height="2.0000112"
+       x="422.45453"
+       y="-578.86206"
+       ry="0.50000006"
+       transform="scale(1,-1)" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="423.15454"
+       cy="-580.66217"
+       transform="scale(1,-1)"
+       r="0.69999999" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="425.89886"
+       cy="-580.66217"
+       transform="scale(1,-1)"
+       r="0.69999999" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 429.90909,576.3622 c -0.51714,0 -0.90909,0.43045 -0.90909,1 l 0,4 c 0,0.616 0.3541,1 0.90909,1 l 3.18182,0 c 0.57005,0 0.90909,-0.3619 0.90909,-1 l 0,-4 c 0,-0.56955 -0.39195,-1 -0.90909,-1 z"
+       id="rect4152-0-3"
+       sodipodi:nodetypes="sssccssss" />
+    <rect
+       rx="0.45454556"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3-4"
+       width="4.09091"
+       height="2.0000112"
+       x="429.45453"
+       y="-578.86206"
+       ry="0.50000006"
+       transform="scale(1,-1)" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4-6"
+       cx="430.15454"
+       cy="-580.66217"
+       transform="scale(1,-1)"
+       r="0.69999999" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5-6"
+       cx="432.89886"
+       cy="-580.66217"
+       transform="scale(1,-1)"
+       r="0.69999999" />
+  </g>
+</svg>
diff --git a/images/presets/transport/station16.png b/images/presets/transport/station16.png
new file mode 100644
index 0000000..4fe1678
Binary files /dev/null and b/images/presets/transport/station16.png differ
diff --git a/images/presets/transport/taxi.svg b/images/presets/transport/taxi.svg
new file mode 100644
index 0000000..d2f63c4
--- /dev/null
+++ b/images/presets/transport/taxi.svg
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="16"
+   id="svg2060"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="taxi4.svg"
+   sodipodi:version="0.32"
+   width="13.752067"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2060"
+     inkscape:cx="-0.13485797"
+     inkscape:cy="9.5157694"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="19.647764"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4183"
+       originx="-1.0690308e-008"
+       originy="2.7218628e-007" />
+  </sodipodi:namedview>
+  <defs
+     id="defs2062">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 0,0 Z"
+         id="path2065"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 10,0 Z"
+         id="path2068"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4167"
+     width="13.752067"
+     height="16"
+     x="0"
+     y="0" />
+  <g
+     id="g2070"
+     transform="matrix(0.03216656,0,0,0.02870469,0.65650753,1.0078511)">
+    <path
+       d="m 194.026,291.861 -0.058,0 -104.733,0 0,33.069 c 0,40.257 -58.238,40.736 -58.238,0 l 0,-33.069 -30.997,0 0,-103.56 C 0,160.505 22.358,145.816 34.984,144.213 L 66.858,62.816 c 6,-15.5 19,-28.748 43.5,-28.748 l 45.539,0 0,-21.252 c 0,-8.5 4.61,-12.816 12.11,-12.816 l 25.961,0 0.058,0 -0.062,0 0.059,0 26.461,0 c 7.5,0 12.11,4.316 12.11,12.816 l 0,21.252 45.016,0 c 24.5,0 37.5,13.248 43.5,28.748 l 31.874,81.397 c 12.626,1.603 35.007,16.292 35.007,44.088 l 0,103.56 -30.997,0 0,33.06 [...]
+       id="path2072"
+       style="fill:#000000;stroke:none"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g2074">
+      <path
+         d="m 193.964,142.296 -0.059,0 -125.921,0 23.998,-62.98 c 3,-9 7.502,-15.5 18.002,-15.597 l 83.921,0 0.059,0 0.059,0 83.963,0 c 10.5,0.097 15,6.597 18,15.597 l 23.998,62.98 -125.961,0 -0.059,0 z"
+         id="path2076"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g2078">
+        <g
+           id="g2080">
+          <path
+             d="m 61.043,228.552 c -14.856,0 -26.901,-12.291 -26.901,-27.45 0,-15.159 12.045,-27.449 26.901,-27.449 14.856,0 26.9,12.29 26.9,27.449 0,15.159 -12.044,27.45 -26.9,27.45 z"
+             id="path2082"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             id="path2084"
+             style="fill:#ffffff;stroke:none"
+             d=""
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g2086">
+          <path
+             d="m 326.926,228.552 c 14.856,0 26.9,-12.291 26.9,-27.45 0,-15.159 -12.044,-27.449 -26.9,-27.449 -14.856,0 -26.901,12.29 -26.901,27.449 0,15.159 12.045,27.45 26.901,27.45 z"
+             id="path2088"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             id="path2090"
+             style="fill:#ffffff;stroke:none"
+             d=""
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+    </g>
+  </g>
+  <g
+     id="g2232"
+     transform="matrix(0.03718028,0,0,0.02929435,7.1527179,-15.851009)">
+    <g
+       transform="translate(-223.58119,501.2411)"
+       id="g2241">
+      <path
+         d="m 83.23651,579.26282 0,-105.5746 -33.405445,0 0,-16.40969 85.313655,0 0,16.40969 -33.40545,0 0,105.5746 -18.50276,0 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:171.46453857px;line-height:100%;font-family:'DIN 1451 Mittelschrift';text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:non [...]
+         id="path2243"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 128.57229,579.26283 44.5406,-122.06802 15.23757,0 44.54059,122.06802 -19.42372,0 -9.37696,-27.54484 -46.29878,0 -9.71185,27.54484 -19.50745,0 z m 34.66129,-43.87081 35.33108,0 c -2.56758,-7.53501 -4.59088,-13.43747 -6.06992,-17.7074 -1.47916,-4.2698 -2.76291,-8.05128 -3.85125,-11.34446 -1.08846,-3.29302 -2.19081,-6.64193 -3.30706,-10.04675 -1.11636,-3.40464 -2.59546,-8.0094 -4.43731,-13.81428 -1.95359,6.02814 -3.51641,10.84221 -4.68848,14.44221 -1.17217,3.60016 -2.30243,7.0 [...]
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:171.46453857px;line-height:100%;font-family:'DIN 1451 Mittelschrift';text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:non [...]
+         id="path2245"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 319.20817,579.26282 -26.70761,-45.37782 -26.79133,45.37782 -20.84701,0 37.34042,-62.54102 -34.99618,-59.44327 20.93073,0 24.36337,42.28008 24.27965,-42.28008 20.93073,0 -34.99618,59.44327 37.42414,62.54102 -20.93073,0 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:171.46453857px;line-height:100%;font-family:'DIN 1451 Mittelschrift';text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:non [...]
+         id="path2247"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 357.49438,579.26282 0,-121.98429 18.50277,0 0,121.98429 -18.50277,0 z"
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:171.46453857px;line-height:100%;font-family:'DIN 1451 Mittelschrift';text-indent:0;text-align:center;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:middle;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:non [...]
+         id="path2249"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/ticket-machine.svg b/images/presets/transport/ticket-machine.svg
new file mode 100644
index 0000000..e350fe9
--- /dev/null
+++ b/images/presets/transport/ticket-machine.svg
@@ -0,0 +1,116 @@
+<?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"
+   width="12.679727"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="ticket-machine.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="20.48"
+     inkscape:cx="0.78506038"
+     inkscape:cy="8.9487721"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4167"
+       originx="1.6538029e-006"
+       originy="9.5031071e-006" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-74.582036,-257.46378)">
+    <rect
+       style="fill:#344fdd;fill-opacity:1;stroke:#000000;stroke-width:0.51048785;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect4297"
+       width="10.462644"
+       height="15.489512"
+       x="74.83728"
+       y="257.71902"
+       rx="0"
+       ry="0" />
+    <rect
+       style="fill:#344fdd;fill-opacity:1;stroke:#fff6f6;stroke-width:0.7690177;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect5292"
+       width="5.5239263"
+       height="2.0571218"
+       x="75.876587"
+       y="269.67877"
+       ry="0"
+       rx="0" />
+    <rect
+       style="fill:#344fdd;fill-opacity:1;stroke:#fff6f6;stroke-width:0.72632074;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="rect5322"
+       width="1.3066424"
+       height="7.7577415"
+       x="79.822014"
+       y="259.40555"
+       ry="0"
+       rx="0" />
+    <ellipse
+       ry="3.1626818"
+       rx="3.4277656"
+       cy="261.22189"
+       cx="83.833992"
+       style="fill:#dfb43a;fill-opacity:1;stroke:#fff6f6;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:18;stroke-opacity:1"
+       id="path5296" />
+  </g>
+</svg>
diff --git a/images/presets/transport/train.svg b/images/presets/transport/train.svg
new file mode 100644
index 0000000..4757f94
--- /dev/null
+++ b/images/presets/transport/train.svg
@@ -0,0 +1,167 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="28.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.0000001"
+     inkscape:cx="-100.00134"
+     inkscape:cy="108.84549"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:snap-page="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-paths="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4146"
+       d="m 4.376685,1037.1121 c -1.372083,0 -2.376687,0.5446 -2.376687,1.9962 l 2e-6,12.2538 11.000001,0 1e-6,-12.2538 c 0,-1.3422 -1.035853,-1.9962 -2.376687,-1.9962 z"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.50000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       sodipodi:nodetypes="ssccsss" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 3.999999,1037.3621 c -1.137708,0 -2.0000013,0.8609 -2.000001,2 l 1.8e-6,8 c 2e-7,1.232 0.7790292,2 2.0000002,2 l 7.000001,0 c 1.254116,0 2,-0.7238 2,-2 l 1e-6,-8 c 0,-1.1391 -0.862292,-2 -2.000001,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccssss" />
+    <rect
+       rx="1.0000002"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.0000019"
+       height="4.0000224"
+       x="2.9999995"
+       y="-1042.3618"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="4"
+       cy="-1046.3621"
+       rx="1.0000002"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11"
+       cy="-1046.3621"
+       rx="1"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+    <rect
+       style="opacity:1;fill:#c87137;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4249-2"
+       width="15.000002"
+       height="2.0000422"
+       x="-6.2488175e-007"
+       y="1050.3622"
+       ry="5.5070162e-005"
+       rx="5.5070162e-005" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4144"
+       width="2"
+       height="2.0000393"
+       x="4"
+       y="1049.3621"
+       rx="5.5070199e-005"
+       ry="0.00011014257" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4146"
+       width="2"
+       height="2.0000393"
+       x="9"
+       y="1049.3621"
+       rx="5.5070199e-005"
+       ry="0.00011014257" />
+  </g>
+</svg>
diff --git a/images/presets/transport/tram.svg b/images/presets/transport/tram.svg
new file mode 100644
index 0000000..e568e27
--- /dev/null
+++ b/images/presets/transport/tram.svg
@@ -0,0 +1,170 @@
+<?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"
+   version="1.0"
+   width="811.34546"
+   height="411.55203"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tram.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata24">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.68035139"
+     inkscape:cx="323.2489"
+     inkscape:cy="212.63926"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4151"
+     width="811.34546"
+     height="411.55203"
+     x="0"
+     y="0" />
+  <g
+     id="layer1"
+     transform="translate(33.806061,26.564951)">
+    <path
+       d="M 141.29386,64.772007 226.621,8.5678385 310.09117,64.726728 226.67891,120.91089 141.29386,64.772007 Z"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path30859"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 545.76835,224.85743 c -1.21781,6.90104 -6.26847,7.75147 -10.08845,11.57145 7.84407,-0.0145 20.60217,-0.10126 20.6304,-0.82639 l 0.41325,-10.61305 -10.9552,-0.13201 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30855"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 68.158738,321.23081 c 0.296957,46.35986 66.699682,46.36071 66.699682,0.41687"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path29926"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 205.72683,321.21721 c 0.29696,46.35986 66.69968,46.36071 66.69968,0.41687"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30815"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 467.10621,321.21721 c 0.29695,46.35986 66.69968,46.36071 66.69968,0.41687"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30817"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 605.09118,321.21721 c 0.29696,46.35986 66.69968,46.36071 66.69968,0.41687"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30819"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 142.04948,342.38712 55.86098,0 c -2.84312,-4.92443 -4.14019,-10.14485 -3.96029,-20.84366 l -47.00243,0 c -0.33274,10.84794 -2.0335,15.88174 -4.89826,20.84366 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30821"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 541.10118,342.49133 55.86098,0 c -2.84312,-4.92443 -4.14019,-10.14485 -3.96029,-20.84366 l -47.00243,0 c -0.33274,10.84794 -2.0335,15.88174 -4.89826,20.84366 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30825"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 570.24997,144.88875 c -5.20266,3.67303 -10.00337,6.78009 -10.00337,9.94023 l 0.0608,129.10199 c 1.21781,6.90104 6.12263,8.04315 9.94261,11.86313 l -23.73481,-0.18153 -0.29606,-141.05182 c 0,-2.79133 -4.94253,-6.05933 -10.0435,-9.66108 l 34.07437,-0.0109 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30841"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 34.77654,124.52695 669.26028,0 0,21.11153 -669.082695,0 -0.177585,-21.11153 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30827"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 405.02462,144.77233 c 5.20266,3.67303 10.00337,6.78009 10.00337,9.94023 l -0.0608,70.25496 c -1.21781,6.90104 -6.12263,8.04315 -9.94261,11.86313 l 34.07437,0 c -3.82864,-3.82864 -8.89453,-4.73619 -10.02759,-11.69317 l -0.0159,-70.69315 c 0,-2.79133 4.94253,-6.05933 10.0435,-9.66108 l -34.07437,-0.0109 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30829"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 273.9892,144.66674 c 5.20266,3.67303 10.00337,6.78009 10.00337,9.94023 l -0.0608,70.25496 c -1.21781,6.90104 -6.12263,8.04315 -9.94261,11.86313 l 34.07437,0 c -3.82864,-3.82864 -8.89453,-4.73619 -10.02759,-11.69317 l -0.0159,-70.69315 c 0,-2.79133 4.94253,-6.05933 10.0435,-9.66108 l -34.07437,-0.0109 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30833"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 143.85545,144.88875 c 5.20266,3.67303 10.00337,6.78009 10.00337,9.94023 l -0.0608,129.10199 c -1.21781,6.90104 -6.12263,8.04315 -9.94261,11.86313 l 23.73481,-0.18153 0.29606,-141.05182 c 0,-2.79133 4.94253,-6.05933 10.0435,-9.66108 l -34.07437,-0.0109 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30839"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 628.05988,144.88875 c 5.20266,3.67303 10.00337,6.78009 10.00337,9.94023 l -0.0608,129.10199 c -1.21781,6.90104 -6.12263,8.04315 -9.94261,11.86313 l 23.73481,-0.18153 -0.14581,-150.6429 -23.589,-0.0809 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30845"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 112.14105,144.77017 c -5.20266,3.67303 -10.00337,6.78009 -10.00337,9.94023 l 0.0608,129.10199 c 1.21781,6.90104 6.12263,8.04315 9.94261,11.86313 l -23.734811,-0.004 0.14581,-150.82069 23.589001,-0.0809 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30849"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 48.471006,144.5257 -45.2526605,90.04234 0,54.62836 c 0,9.86566 11.6353775,20.14236 20.5169525,20.11466 l 692.748862,0 c 8.70568,0 20.51695,-12.1808 20.51695,-20.11466 l 0,-55.51646 -45.93352,-89.50491 -13.15196,0 30.92496,60.94209 c 5.27567,19.88899 -11.03294,28.47569 -19.31007,31.38323 l -38.94111,-0.16048 0.32096,59.2954 -103.79382,0 0,-59.29758 -380.16488,0 0,59.21625 -77.886574,0 0,-59.13709 -39.180741,0 c -8.884597,0 -23.886408,-10.66321 -18.507665,-30.73695 l 30.102063, [...]
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30853"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 168.36959,224.926 c 1.21781,6.90104 6.26847,7.75147 10.08845,11.57145 -7.84407,-0.0145 -20.60217,-0.10126 -20.6304,-0.82639 l -0.41325,-10.61305 10.9552,-0.13201 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path30857"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 298.81034,124.9591 -7.14357,-7.49204 -132.24318,0 -6.09816,7.3178 145.48491,0.17424 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path31750"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/trolleybus.svg b/images/presets/transport/trolleybus.svg
new file mode 100644
index 0000000..482f442
--- /dev/null
+++ b/images/presets/transport/trolleybus.svg
@@ -0,0 +1,169 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="31.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="1.667308"
+     inkscape:cy="9.9665688"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4151"
+       width="9"
+       height="2.9999213"
+       x="3"
+       y="1036.3617" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 3.3636355,1039.3617 C 2.019072,1039.3617 1,1040.3661 1,1041.695 l 0,8.1667 c 0,0.707 0.6047586,1.1667 1.1818178,1.1667 l 0,1.3335 c 4.8181822,2e-4 5.8181822,2e-4 10.6363652,0 l 0,-1.3335 c 0.561592,0 1.181817,-0.5156 1.181817,-1.1667 l 0,-8.1667 c 0,-1.3289 -1.019072,-2.3333 -2.363636,-2.3333 z"
+       id="rect4152-0-5"
+       sodipodi:nodetypes="sssccccssss" />
+    <path
+       inkscape:connector-curvature="0"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 3.9999977,1040.3621 c -1.137708,0 -2,0.8609 -2,2 l 0,7 c 0,0.606 0.511719,1 1,1 l 0,2 2.000001,0 1e-6,-2 5.0000013,0 0,2 2.000001,0 0,-2 c 0.475194,0 1,-0.4419 1,-1 l 0,-7 c 0,-1.1391 -0.862292,-2 -2.000001,-2 z"
+       id="rect4152-0"
+       sodipodi:nodetypes="sssccccccccssss" />
+    <rect
+       rx="1.0000002"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4152-9-3"
+       width="9.0000019"
+       height="4.0000224"
+       x="2.9999976"
+       y="-1045.3617"
+       ry="1.0000001"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-4"
+       cx="3.9999995"
+       cy="-1048.3617"
+       rx="1.0000002"
+       ry="1.0000035"
+       transform="scale(1,-1)" />
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4177-6-5"
+       cx="11.000001"
+       cy="-1048.3617"
+       rx="1"
+       ry="1.0000036"
+       transform="scale(1,-1)" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4141"
+       width="7"
+       height="1"
+       x="4"
+       y="1037.3617"
+       rx="0"
+       ry="1" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4147"
+       width="1"
+       height="2"
+       x="6"
+       y="1038.3617"
+       ry="0" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4149"
+       width="1"
+       height="2"
+       x="8"
+       y="1038.3617"
+       ry="0" />
+  </g>
+</svg>
diff --git a/images/presets/transport/underground.png b/images/presets/transport/underground.png
new file mode 100644
index 0000000..f869032
Binary files /dev/null and b/images/presets/transport/underground.png differ
diff --git a/images/presets/transport/way/combined_foot_cycleway.svg b/images/presets/transport/way/combined_foot_cycleway.svg
new file mode 100644
index 0000000..e141f3e
--- /dev/null
+++ b/images/presets/transport/way/combined_foot_cycleway.svg
@@ -0,0 +1,159 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="foot_cycleway_combined.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="8.2172205"
+     inkscape:cy="7.1801297"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="path4183"
+       cx="7.9999995"
+       cy="1044.3621"
+       r="7.75" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16.000002,1044.3622 c 0,4.4183 -3.581722,8 -8.0000007,8 -4.4182788,0 -8.00000180882801,-3.5817 -8.00000180882801,-8 0,-4.4183 3.58172300882801,-8.0001 8.00000180882801,-8.0001 4.4182787,0 8.0000007,3.5818 8.0000007,8.0001 z"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1883" />
+    <g
+       id="g4206"
+       transform="matrix(1.1965954,0,0,1.1965954,-1.5540266,-206.53432)">
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="5.3428707"
+         cy="1049.2119"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="FrontWheel" />
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="10.625476"
+         cy="1049.1843"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="RearWheel" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4174"
+         d="m 10.640625,1049.1434 -1.2173079,-1.5887 -3.3920677,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4176"
+         d="m 5.3437495,1049.1434 1.2343749,-3.0157 0.7500014,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4178"
+         d="m 6.8721935,1047.567 0.9305068,1.6117 2.8039017,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4180"
+         d="m 9.324589,1047.5652 0,-0.8906 0.671875,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4199"
+       transform="matrix(1.1301004,0,0,1.1301004,-0.85300497,-135.47293)">
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 6.7578125 1.7851562 C 6.4310617 1.78267 5.8754088 1.9308083 5.8730469 3.1171875 C 5.8722798 3.5019866 5.9284594 3.8359523 6.1777344 4.1269531 C 6.2421651 4.0556438 6.373659 3.9174154 6.4414062 3.8496094 C 6.2079247 3.3768885 6.3356982 2.9943604 6.3730469 2.5585938 L 6.5195312 2.5976562 L 6.5195312 3.7753906 C 5.6938842 4.5534646 5.6083536 5.0746022 5.4863281 5.6640625 L 5.4863281 5.6679688 L 6.4277344 5.6738281 L 6.4414062 7.8710938 C 6.4414063 8.111014 6.8554688 8.1192638  [...]
+         transform="matrix(0.88487729,0,0,0.88487729,0.75480417,1036.93)"
+         id="path1916" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 7.4395552,1037.8394 c 1.087e-4,0.2804 -0.2271666,0.5078 -0.507558,0.5078 -0.2803918,0 -0.5076642,-0.2274 -0.5075584,-0.5078 -1.087e-4,-0.2804 0.2271666,-0.5078 0.5075584,-0.5078 0.2803914,0 0.5076638,0.2274 0.507558,0.5078 l 0,0 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1922" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 9.7691448,1040.4593 c 9.42e-5,0.2505 -0.2029354,0.4536 -0.4534184,0.4536 -0.2504832,0 -0.4535132,-0.2031 -0.4534187,-0.4536 -9.42e-5,-0.2504 0.2029355,-0.4535 0.4534187,-0.4535 0.250483,0 0.4535129,0.2031 0.4534184,0.4535 l 0,0 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1924" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/way/cycle_lane_track.svg b/images/presets/transport/way/cycle_lane_track.svg
new file mode 100644
index 0000000..e89d799
--- /dev/null
+++ b/images/presets/transport/way/cycle_lane_track.svg
@@ -0,0 +1,156 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="cycle_lane2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-458.48264"
+     inkscape:cy="-95.460413"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="path4183"
+       cx="7.9999995"
+       cy="1044.3621"
+       r="7.75" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16.000002,1044.3622 c 0,4.4183 -3.581722,8 -8.0000007,8 -4.4182788,0 -8.00000180882801,-3.5817 -8.00000180882801,-8 0,-4.4183 3.58172300882801,-8.0001 8.00000180882801,-8.0001 4.4182787,0 8.0000007,3.5818 8.0000007,8.0001 z"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1883" />
+    <g
+       id="g4206"
+       transform="matrix(1.6304228,0,0,1.6304228,-5.0175772,-664.98842)">
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="5.3428707"
+         cy="1049.2119"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="FrontWheel" />
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="10.625476"
+         cy="1049.1843"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="RearWheel" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4174"
+         d="m 10.640625,1049.1434 -1.2173079,-1.5887 -3.3920677,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4176"
+         d="m 5.3437495,1049.1434 1.2343749,-3.0157 0.7500014,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4178"
+         d="m 6.8721935,1047.567 0.9305068,1.6117 2.8039017,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4180"
+         d="m 9.324589,1047.5652 0,-0.8906 0.671875,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+       id="rect4312"
+       width="10.000002"
+       height="1"
+       x="3"
+       y="1038.3621"
+       ry="3.9333914e-005" />
+    <rect
+       ry="3.9333914e-005"
+       y="1049.3621"
+       x="3"
+       height="1"
+       width="10.000002"
+       id="rect4359"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-render [...]
+  </g>
+</svg>
diff --git a/images/presets/transport/way/dedicated_bridleway.svg b/images/presets/transport/way/dedicated_bridleway.svg
new file mode 100644
index 0000000..5195095
--- /dev/null
+++ b/images/presets/transport/way/dedicated_bridleway.svg
@@ -0,0 +1,98 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="dedicated_bridleway.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627418"
+     inkscape:cx="3.4120892"
+     inkscape:cy="4.8862001"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 7.9997952,1052.3625 c 4.4172818,0 8.0002068,-3.5825 8.0002068,-8.0002 0,-4.4173 -3.582925,-7.9998 -8.0002068,-7.9998 -4.4172709,0 -7.99979587683724,3.5825 -7.99979587683724,7.9998 0,4.4177 3.58252497683724,8.0002 7.99979587683724,8.0002"
+       id="path3022"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 6.7191961,1042.3192 0.9066367,-0.4749 0.1296414,0.6192 -0.460794,0.2734 c 0,0 -0.1146901,0 -0.5754841,-0.4177"
+       id="path4139"
+       inkscape:connector-curvature="0" />
+    <g
+       id="g4138"
+       transform="matrix(1.0578344,0,0,1.0903479,-0.45739441,-94.305852)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4141"
+         d="m 12.431647,1046.894 0.287942,1.3529 c 0.02866,0.1001 0.02866,0.2156 0.02866,0.302 0,0.4027 -0.359833,0.7626 -0.777006,0.7626 l -0.345282,0 0.403033,-0.7484 -0.345693,-1.5535 -1.136428,-1.1369 0.215662,0.8053 c 0.02866,0.058 0.07186,0.2451 -0.0864,0.3743 l -1.2087191,0.9927 0.05774,0.2738 c 0.028659,0.2011 -0.071859,0.5463 -0.5609436,0.6902 l -0.2160515,-1.0072 c -0.029081,-0.1293 -0.0432,-0.2589 0.1296309,-0.4026 l 1.1077473,-0.9067 -0.4026323,-1.1078 c -0.5613441,0 -1.25192 [...]
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4137"
+         d="m 7.6831831,1038.3046 c 0.3452925,0 0.6332348,0.288 0.6332348,0.6623 0,0.3594 -0.2879423,0.6619 -0.6332348,0.6619 -0.3739625,0 -0.6619047,-0.3025 -0.6619047,-0.6619 0,-0.3743 0.2879422,-0.6623 0.6619047,-0.6623"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/way/dedicated_cycleway.svg b/images/presets/transport/way/dedicated_cycleway.svg
new file mode 100644
index 0000000..342b173
--- /dev/null
+++ b/images/presets/transport/way/dedicated_cycleway.svg
@@ -0,0 +1,140 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="dedicated_cycleway.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-0.76177369"
+     inkscape:cy="3.9974697"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="path4183"
+       cx="7.9999995"
+       cy="1044.3621"
+       r="7.75" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16.000002,1044.3622 c 0,4.4183 -3.581722,8 -8.0000007,8 -4.4182788,0 -8.00000180882801,-3.5817 -8.00000180882801,-8 0,-4.4183 3.58172300882801,-8.0001 8.00000180882801,-8.0001 4.4182787,0 8.0000007,3.5818 8.0000007,8.0001 z"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1883" />
+    <g
+       id="g4206"
+       transform="matrix(1.6304228,0,0,1.6304228,-5.0175772,-664.98842)">
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="5.3428707"
+         cy="1049.2119"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="FrontWheel" />
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="10.625476"
+         cy="1049.1843"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="RearWheel" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4174"
+         d="m 10.640625,1049.1434 -1.2173079,-1.5887 -3.3920677,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4176"
+         d="m 5.3437495,1049.1434 1.2343749,-3.0157 0.7500014,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4178"
+         d="m 6.8721935,1047.567 0.9305068,1.6117 2.8039017,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4180"
+         d="m 9.324589,1047.5652 0,-0.8906 0.671875,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/way/dedicated_footway.svg b/images/presets/transport/way/dedicated_footway.svg
new file mode 100644
index 0000000..e31ec71
--- /dev/null
+++ b/images/presets/transport/way/dedicated_footway.svg
@@ -0,0 +1,118 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="dedicated_footway.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="12.70637"
+     inkscape:cy="2.7418827"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="path4183"
+       cx="7.9999995"
+       cy="1044.3621"
+       r="7.75" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16.000002,1044.3622 c 0,4.4183 -3.581722,8 -8.0000007,8 -4.4182788,0 -8.00000180882801,-3.5817 -8.00000180882801,-8 0,-4.4183 3.58172300882801,-8.0001 8.00000180882801,-8.0001 4.4182787,0 8.0000007,3.5818 8.0000007,8.0001 z"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1883" />
+    <g
+       id="g4199"
+       transform="matrix(2.0369074,0,0,2.0369074,-8.0490796,-1075.6128)">
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 5.6679688 3.3730469 C 5.0790289 3.3685657 4.0765228 3.6370456 4.0722656 5.7753906 C 4.070883 6.4689575 4.1757035 7.0711996 4.625 7.5957031 C 4.6417898 7.5771208 4.6723236 7.5463275 4.6933594 7.5234375 C 4.7580699 7.4506864 4.8339714 7.3741453 4.90625 7.2988281 C 4.9773387 7.2239307 5.0481241 7.1452783 5.0976562 7.0957031 C 4.6768262 6.2436649 4.9072916 5.5530095 4.9746094 4.7675781 L 5.2382812 4.8378906 L 5.2382812 6.9609375 C 5.1141466 7.0779196 5.0126261 7.1879801 4.90625 [...]
+         transform="matrix(0.49094042,0,0,0.49094042,3.9516176,1036.8537)"
+         id="path1916" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 7.4395552,1037.8394 c 1.087e-4,0.2804 -0.2271666,0.5078 -0.507558,0.5078 -0.2803918,0 -0.5076642,-0.2274 -0.5075584,-0.5078 -1.087e-4,-0.2804 0.2271666,-0.5078 0.5075584,-0.5078 0.2803914,0 0.5076638,0.2274 0.507558,0.5078 l 0,0 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1922" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 9.7691448,1040.4593 c 9.42e-5,0.2505 -0.2029354,0.4536 -0.4534184,0.4536 -0.2504832,0 -0.4535132,-0.2031 -0.4534187,-0.4536 -9.42e-5,-0.2504 0.2029355,-0.4535 0.4534187,-0.4535 0.250483,0 0.4535129,0.2031 0.4534184,0.4535 l 0,0 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1924" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/way/path.svg b/images/presets/transport/way/path.svg
new file mode 100644
index 0000000..ede746e
--- /dev/null
+++ b/images/presets/transport/way/path.svg
@@ -0,0 +1,82 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="path2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="1.7538291"
+     inkscape:cy="7.7235299"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       id="XMLID_164_"
+       class="st0"
+       d="M 4.4008639e-5,1048.734 C 1.9933876,1048.5426 10.335253,1046.9632 13.82955,1044.5055 c -3.270239,-1.7867 -7.8460909,-1.3191 -11.158955,-2.3481 -0.732418,-0.2338 -1.92431899,-1.0063 -0.791149,-1.7567 2.2628503,-1.0859 6.120555,-1.0386 7.2723277,-1.7347 1.4084223,-0.8512 -2.4742121,-1.9985 -3.7795367,-2.3039 0.8291485,0.1288 5.650922,0.7645 4.815971,2.2113 -0.8503911,1.4735 -4.9613089,1.7863 -6.992489,2.388 3.9192208,0.3495 14.684712,0.046 12.527055,4.5682 -1.505951,3.1563 -10.94 [...]
+       inkscape:connector-curvature="0"
+       style="fill:#c87137"
+       sodipodi:nodetypes="ccccscscscc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/segregated_foot_cycleway.svg b/images/presets/transport/way/segregated_foot_cycleway.svg
new file mode 100644
index 0000000..ec4e161
--- /dev/null
+++ b/images/presets/transport/way/segregated_foot_cycleway.svg
@@ -0,0 +1,168 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="foot_cycleway_segregated.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="90.509668"
+     inkscape:cx="0.17403485"
+     inkscape:cy="8.2070321"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <circle
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10.43299961;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;sha [...]
+       id="path4183"
+       cx="7.9999995"
+       cy="1044.3621"
+       r="7.75" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16.000002,1044.3622 c 0,4.4183 -3.581722,8 -8.0000007,8 -4.4182788,0 -8.00000180882801,-3.5817 -8.00000180882801,-8 0,-4.4183 3.58172300882801,-8.0001 8.00000180882801,-8.0001 4.4182787,0 8.0000007,3.5818 8.0000007,8.0001 z"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path1883" />
+    <g
+       id="g4206"
+       transform="matrix(0.8390792,0,0,0.8390792,5.3702027,164.66361)">
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="5.3428707"
+         cy="1049.2119"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="FrontWheel" />
+      <ellipse
+         ry="1.4791328"
+         rx="1.4791296"
+         cx="10.625476"
+         cy="1049.1843"
+         style="fill:none;stroke:#ffffff;stroke-width:0.50000012;stroke-miterlimit:4;stroke-dasharray:none"
+         id="RearWheel" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4174"
+         d="m 10.640625,1049.1434 -1.2173079,-1.5887 -3.3920677,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path4176"
+         d="m 5.3437495,1049.1434 1.2343749,-3.0157 0.7500014,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4178"
+         d="m 6.8721935,1047.567 0.9305068,1.6117 2.8039017,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4180"
+         d="m 9.324589,1047.5652 0,-0.8906 0.671875,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <g
+       id="g4199"
+       transform="matrix(1.2697888,0,0,1.2697888,-6.3140121,-277.37088)">
+      <path
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 2.2363281 4.9550781 C 1.8691886 4.9522846 1.2448414 5.120101 1.2421875 6.453125 C 1.2413256 6.885488 1.3058503 7.2609201 1.5859375 7.5878906 C 1.6583323 7.507767 1.8047381 7.3515779 1.8808594 7.2753906 C 1.6185179 6.7442381 1.7627223 6.3138492 1.8046875 5.8242188 L 1.96875 5.8671875 L 1.96875 7.1914062 C 1.0410472 8.0656557 0.94570247 8.6501783 0.80859375 9.3125 L 0.80859375 9.3164062 L 1.8671875 9.3222656 L 1.8828125 11.792969 C 1.8828125 12.062545 2.3457031 12.071814 2.34 [...]
+         transform="matrix(0.78753268,0,0,0.78753268,4.9724896,1034.6075)"
+         id="path1916" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 7.4395552,1037.8394 c 1.087e-4,0.2804 -0.2271666,0.5078 -0.507558,0.5078 -0.2803918,0 -0.5076642,-0.2274 -0.5075584,-0.5078 -1.087e-4,-0.2804 0.2271666,-0.5078 0.5075584,-0.5078 0.2803914,0 0.5076638,0.2274 0.507558,0.5078 l 0,0 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1922" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 9.7691448,1040.4593 c 9.42e-5,0.2505 -0.2029354,0.4536 -0.4534184,0.4536 -0.2504832,0 -0.4535132,-0.2031 -0.4534187,-0.4536 -9.42e-5,-0.2504 0.2029355,-0.4535 0.4534187,-0.4535 0.250483,0 0.4535129,0.2031 0.4534184,0.4535 l 0,0 z"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path1924" />
+    </g>
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rend [...]
+       id="rect4214"
+       width="14.46875"
+       height="0.68750006"
+       x="-1051.5964"
+       y="7.4352798"
+       ry="0.34375003"
+       transform="matrix(0,-1,1,0,0,0)" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/steps.svg b/images/presets/transport/way/steps.svg
new file mode 100644
index 0000000..b84e63f
--- /dev/null
+++ b/images/presets/transport/way/steps.svg
@@ -0,0 +1,120 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_steps.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-0.096159945"
+     inkscape:cy="4.7918823"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-text-baseline="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.50000024;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 10.134575,1039.558 2.104004,2.0626 c 0.45853,0.4108 -0.149351,0.9707 -0.520359,0.5993 l -1.583645,-1.5852 c 0,0 -0.0048,4.9292 -0.0094,6.8612 -0.0014,0.5918 -0.8840495,0.631 -0.8840495,-0.019 0,-0.5897 0.00187,-3.9202 0.00187,-3.9202 l -0.3133288,1.3193 -1.0985332,1.0692 c -0.4826779,0.4809 -1.1167814,-0.1368 -0.5744453,-0.6295 l 0.9008346,-0.8906 0.2704369,-1.6971 -0.00746,-1.4734 -0.8057155,1.3436 c -0.3019068,0.504 -0.9434561,0.047 -0.6248024,-0.4678 l 1.6897644,-2.7324 c  [...]
+       id="path4173"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccsccscccccccccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m -4.7683724e-7,1044.8646 3.50088317683724,0 0,2 4,0 0,2 3.9999993,0 0,2 3.99912,0 0,1.4975"
+       id="path4179"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccccccc" />
+    <ellipse
+       style="opacity:1;fill:#0031ff;fill-opacity:1;stroke:#ffffff;stroke-width:0.75000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.98823529"
+       id="path4137"
+       cx="9.3905363"
+       cy="1037.8567"
+       rx="1.1111565"
+       ry="1.1195636" />
+    <path
+       sodipodi:nodetypes="cccccscccccccccccc"
+       inkscape:connector-curvature="0"
+       id="path4140"
+       d="m 10.134575,1039.558 2.104004,2.0626 c 0.45853,0.4108 -0.132466,0.953 -0.520359,0.5993 l -1.583645,-1.5852 c 0,0 -0.0048,4.9292 -0.0094,6.8612 -0.0014,0.5918 -0.8840495,0.631 -0.8840495,-0.019 0,-0.5897 0.00187,-3.9202 0.00187,-3.9202 l -0.3133288,1.3193 -1.0985332,1.0692 c -0.4826779,0.4809 -1.1167814,-0.1368 -0.5744453,-0.6295 l 0.9008346,-0.8906 0.2704369,-1.6971 -0.00746,-1.4734 -0.8057155,1.3436 c -0.3019068,0.504 -0.9434561,0.047 -0.6248024,-0.4678 l 1.6897644,-2.7324 c 0 [...]
+       style="fill:#0031ff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+    <path
+       sodipodi:nodetypes="cccccccc"
+       inkscape:connector-curvature="0"
+       id="path4145"
+       d="m -4.7683724e-7,1045.8621 2.50147647683724,0 0,2 4.0000001,0 0,2 4.0000009,0 0,2 4.498525,0"
+       style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/track.svg b/images/presets/transport/way/track.svg
new file mode 100644
index 0000000..38efd6a
--- /dev/null
+++ b/images/presets/transport/way/track.svg
@@ -0,0 +1,117 @@
+<?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"
+   width="16"
+   height="14"
+   viewBox="0 0 16 14"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_track5.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.3283712"
+     inkscape:cy="4.8721828"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1038.3621)">
+    <g
+       id="g4187"
+       transform="matrix(0.97816647,0,0,0.97787626,0.17462164,23.127124)">
+      <path
+         style="fill:none;stroke:#ffffff;stroke-width:1.53370905;stroke-miterlimit:4;stroke-dasharray:none"
+         d="m 7.8643285,1038.9709 -4.685811,0 0,5.4508 c -1.4220966,0.4947 -2.481982,1.88 -2.481982,3.5589 0,2.0986 1.6839725,3.7693 3.6284723,3.7693 1.8429237,0 3.4382913,-1.4835 3.612425,-3.4323 1.6579709,0 1.3542269,0 2.4427552,0.011 -0.184078,0.3388 -0.280898,0.718 -0.281719,1.1036 4.05e-4,1.282 1.039543,2.3211 2.321509,2.3215 1.282663,6e-4 2.322888,-1.0387 2.323293,-2.3215 -1.39e-4,-0.3806 -0.09382,-0.7553 -0.272804,-1.0912 0.06088,4e-4 0.832676,0 0.832676,0 l -0.0019,-3.4787 -6.144 [...]
+         id="path4153"
+         inkscape:connector-curvature="0" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4141"
+         d="m 7.8643285,1038.9709 -4.685811,0 0,5.4508 c -1.4220966,0.4947 -2.481982,1.88 -2.481982,3.5589 0,2.0986 1.6839725,3.7693 3.6284723,3.7693 1.8429237,0 3.4382913,-1.4835 3.612425,-3.4323 1.6579709,0 1.3542269,0 2.4427552,0.011 -0.184078,0.3388 -0.280898,0.718 -0.281719,1.1036 4.05e-4,1.282 1.039543,2.3211 2.321509,2.3215 1.282663,6e-4 2.322888,-1.0387 2.323293,-2.3215 -1.39e-4,-0.3806 -0.09382,-0.7553 -0.272804,-1.0912 0.06088,4e-4 0.832676,0 0.832676,0 l -0.0019,-3.4787 -6.144 [...]
+         style="fill:#000000;stroke:none;stroke-width:1.00000024;stroke-miterlimit:4;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4139"
+         d="m 4.1787991,1039.9017 2.9455706,0 0.9878004,4.3827 -3.933371,-0.028 z"
+         style="fill:#ffffff" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4137"
+         d="m 4.3392722,1046.5044 c 0.9287187,0 1.4799173,0.7049 1.4799173,1.4994 0,0.7943 -0.5511986,1.4994 -1.4799173,1.4994 -0.928717,0 -1.4799176,-0.7051 -1.4799176,-1.4994 0,-0.7945 0.5512006,-1.4994 1.4799176,-1.4994 z"
+         style="fill:#ffffff" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4140"
+         d="m 12.378968,1048.3337 c 0.701936,8e-4 1.153715,0.5173 1.153623,1.0967 -9.2e-5,0.5792 -0.49896,1.1112 -1.112613,1.1108 -0.613651,-7e-4 -1.11633,-0.5293 -1.110829,-1.1108 0.0055,-0.5818 0.367884,-1.0974 1.069819,-1.0967 z"
+         style="fill:#ffffff" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_bicycle_road.svg b/images/presets/transport/way/way_bicycle_road.svg
new file mode 100644
index 0000000..6d00212
--- /dev/null
+++ b/images/presets/transport/way/way_bicycle_road.svg
@@ -0,0 +1,145 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_bicycle_road.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="10.606902"
+     inkscape:cy="2.6828405"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43253)"
+       style="fill:#ffffff;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffffff;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4150"
+       d="m 9.0000011,1052.3621 -1.0000035,0 0,-16 1.0000035,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000014,1039.3637 -1.0000035,0 0,-2 1.0000035,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000044,1043.3637 -1.0000036,0 0,-2 1.0000036,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 0.9999997,1052.3621 -1.0000034980233,0 0,-16 1.0000034980233,0 z"
+       id="path4148"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4144"
+       cx="12.500001"
+       cy="1048.8621"
+       r="2.5000017" />
+    <g
+       id="g4216"
+       transform="translate(-0.49999974,-0.49999774)">
+      <path
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:non [...]
+         d="m 6.9355488,1043.6628 c -0.1797699,0 -0.2077347,0.1051 -0.28125,0.2325 l -1.4140625,2.7109 c -0.3603853,-0.1453 -0.7545796,-0.2266 -1.1699219,-0.2266 -1.6356291,0 -3.0703125,1.3415 -3.0703124,2.9903 -1e-7,1.7176 1.4480151,2.9922 3.0703124,2.9922 1.6922901,0 3.0722657,-1.2871 3.0722657,-2.9922 0,-1.0437 -0.5602465,-1.97 -1.40625,-2.5059 l 0.4121093,-0.789 2.3985754,3.4113 c 0.041154,0.058 0.1426096,0.159 0.2713465,0.159 l 1.1445309,0 c 0.1440218,1.5615 1.4483258,2.7129 3.04492 [...]
+         id="path4214"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccsssscccccsssccccccccccccccsccccsssssssccccs" />
+      <path
+         sodipodi:nodetypes="cccsssscccccsssccccccccccccccsccccsssssssccccs"
+         inkscape:connector-curvature="0"
+         id="path4166"
+         d="m 6.9355488,1043.6628 c -0.1797699,0 -0.2077347,0.1051 -0.28125,0.2325 l -1.4140625,2.7109 c -0.3603853,-0.1453 -0.7545796,-0.2266 -1.1699219,-0.2266 -1.6356291,0 -3.0703125,1.3415 -3.0703124,2.9903 -1e-7,1.7176 1.4480151,2.9922 3.0703124,2.9922 1.6922901,0 3.0722657,-1.2871 3.0722657,-2.9922 0,-1.0437 -0.5602465,-1.97 -1.40625,-2.5059 l 0.4121093,-0.789 2.3985754,3.4113 c 0.041154,0.058 0.1426096,0.159 0.2713465,0.159 l 1.1445309,0 c 0.1440218,1.5615 1.4483258,2.7129 3.04492 [...]
+         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:non [...]
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_construction.svg b/images/presets/transport/way/way_construction.svg
new file mode 100644
index 0000000..88ab611
--- /dev/null
+++ b/images/presets/transport/way/way_construction.svg
@@ -0,0 +1,154 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_construction.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="11.816249"
+     inkscape:cy="8.3197995"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ffda00;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffda00;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4144"
+       d="m 9.0000011,1052.3621 -1.0000032,0 0,-16 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 1.0000026,1052.3621 -1.00000307683724,0 0,-16 1.00000307683724,0 z"
+       id="path4142"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccsccccsccccccccccccccccccccccccccccccccccc"
+       inkscape:connector-curvature="0"
+       id="path4148"
+       d="m 10.720476,1041.2659 -1.5781251,1.961 c -0.1548457,0.1404 -0.1806967,0.3677 -0.076172,0.5488 0.517885,0.897 1.5410151,2.5351 1.5410151,2.5351 l -3.1191411,3.0567 c -0.2574782,-0.3929 -0.552496,-0.7643 -1.1269521,-0.7559 -0.462131,0.01 -0.7366883,0.1639 -1.2636719,0.7227 0,0 -1.3733516,0.079 -1.3965222,1.3725 -0.016223,0.9059 -0.7386567,-0.055 -1.1659778,1.1548 l 8.0976571,0 c -1.2813647,-0.5416 -1.0600741,-1.6258 -2.0683602,-1.5898 -0.4108704,0.016 -0.647114,-0.2616 -0.8671875 [...]
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-linejoin:round;stroke-linecap:round" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:0.0616979px"
+       d="m 11.09743,1041.0022 c -0.165896,0.01 -0.304686,0.17 -0.376954,0.2637 l -1.5781251,1.961 c -0.1548457,0.1404 -0.1847852,0.3701 -0.076172,0.5488 l 1.5410151,2.5351 -3.1191411,3.0567 c -0.2574782,-0.3929 -0.552496,-0.7643 -1.1269521,-0.7559 -0.462131,0.01 -0.7366883,0.1639 -1.2636719,0.7227 0,0 -1.3733516,0.079 -1.3965222,1.3725 -0.016223,0.9059 -0.7386567,-0.055 -1.1659778,1.1548 l 8.0976571,0 c -1.2813647,-0.5416 -1.0600741,-1.6258 -2.0683602,-1.5898 -0.4108704,0.016 -0.647114, [...]
+       id="path2224"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccsccccscccccccccccccccccccccccccccccccccc" />
+    <circle
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4146"
+       cx="8.4802437"
+       cy="1040.3616"
+       r="1.5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_escape.svg b/images/presets/transport/way/way_escape.svg
new file mode 100644
index 0000000..1f2fa61
--- /dev/null
+++ b/images/presets/transport/way/way_escape.svg
@@ -0,0 +1,257 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_escape.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.7365774"
+     inkscape:cy="7.827016"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ffffff;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffffff;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4158"
+       d="m 9.0000011,1052.3621 -1.0000029,0 0,-16 1.0000029,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="964.44409"
+       x="379.53418"
+       id="XMLID_308_-8" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="964.43304"
+       x="381.49033"
+       id="XMLID_307_-3"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="966.39923"
+       x="379.53415"
+       id="XMLID_306_-4" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="966.38818"
+       x="381.49026"
+       id="XMLID_305_-0" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="968.35437"
+       x="379.53409"
+       id="XMLID_304_-9" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="968.34326"
+       x="381.49023"
+       id="XMLID_303_-4" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="970.30945"
+       x="379.53406"
+       id="XMLID_302_-4" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="970.2984"
+       x="381.4902"
+       id="XMLID_301_-4" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="972.26459"
+       x="379.53403"
+       id="XMLID_300_-8" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="972.25354"
+       x="381.49014"
+       id="XMLID_299_-9" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="974.21973"
+       x="379.53397"
+       id="XMLID_298_-0" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="974.20862"
+       x="381.49011"
+       id="XMLID_297_-5" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="976.17487"
+       x="379.53394"
+       id="XMLID_296_-7" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="976.16376"
+       x="381.49008"
+       id="XMLID_295_-6" />
+    <rect
+       height="1.9550747"
+       width="1.9550747"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="978.12994"
+       x="379.53387"
+       id="XMLID_294_-7" />
+    <rect
+       style="fill:#ffff00"
+       height="1.9550747"
+       width="1.9550747"
+       class="st11"
+       transform="matrix(0.9348333,0.35508688,-0.35508688,0.9348333,0,0)"
+       y="978.1189"
+       x="381.49002"
+       id="XMLID_293_-0" />
+    <path
+       class="st5"
+       d="m 1.0000025,1052.3621 -1.00000297683724,0 0,-16 1.00000297683724,0 z"
+       id="path4156"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_living_street.svg b/images/presets/transport/way/way_living_street.svg
new file mode 100644
index 0000000..3ff99a1
--- /dev/null
+++ b/images/presets/transport/way/way_living_street.svg
@@ -0,0 +1,156 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_living_street10.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <clipPath
+       id="clipPath19">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 0.496094,0.0351562 5952.500006,0 0,7934.6400438 -5952.500006,0 0,-7934.6400438 z"
+         id="path21" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="14.148732"
+     inkscape:cy="3.6412854"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994"
+       height="16.000042"
+       width="9.0000019"
+       class="st4"
+       y="1036.3621"
+       x="-4.7683727e-007"
+       id="XMLID_61_" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994"
+       height="16.000042"
+       width="1.0000002"
+       class="st4"
+       y="1036.3621"
+       x="8.000001"
+       id="rect4151" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 4.9999557,1039.3655 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 4.9999587,1043.3655 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 4.9999587,1047.3655 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 7.3492603,1049.6462 c 0,-0.9478 -0.7682665,-1.7164 -1.7161141,-1.7164 -0.947775,0 -1.7161169,0.7686 -1.7161169,1.7164 0,0.9478 0.7683419,1.7159 1.7161169,1.7159 0.9478476,0 1.7161141,-0.7681 1.7161141,-1.7159"
+       id="path35"
+       style="fill:#0031ff;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+    <path
+       sodipodi:nodetypes="ccccccssccccccccsssscccccc"
+       style="fill:#0031ff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff"
+       id="path4144"
+       d="m 10.140966,1046.7542 -0.9944619,-1.8507 -1.1156893,2.2312 c -0.138165,0.2764 -0.4743006,0.3906 -0.7507955,0.2513 -0.2764418,-0.1396 -0.3884647,-0.474 -0.2501991,-0.7507 l 1.5057313,-3.0115 c 0.303321,-0.6064 0.923453,-0.9897 1.6018125,-0.9897 l 1.997355,0 c 0.329737,0 0.63265,0.1787 0.788747,0.4713 l 1.156119,2.1521 c 0.09721,0.1759 0.09224,0.3906 -0.01312,0.5631 -0.105417,0.1703 -0.294717,0.2764 -0.495912,0.2681 -0.201287,0 -0.383325,-0.1229 -0.476788,-0.2988 l -1.052813,-1.9 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 10.140966,1046.7542 -0.9944619,-1.8507 -1.1156893,2.2312 c -0.138165,0.2764 -0.4743006,0.3906 -0.7507955,0.2513 -0.2764418,-0.1396 -0.3884647,-0.474 -0.2501991,-0.7507 l 1.5057313,-3.0115 c 0.303321,-0.6064 0.923453,-0.9897 1.6018125,-0.9897 l 1.997355,0 c 0.329737,0 0.63265,0.1787 0.788747,0.4713 l 1.156119,2.1521 c 0.09721,0.1759 0.09224,0.3906 -0.01312,0.5631 -0.105417,0.1703 -0.294717,0.2764 -0.495912,0.2681 -0.201287,0 -0.383325,-0.1229 -0.476788,-0.2988 l -1.052813,-1.9 [...]
+       id="path39"
+       style="fill:#0031ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       sodipodi:nodetypes="ccccccssccccccccsssscccccc" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 10.01789,1040.8625 c 0,-0.917 -0.7435855,-1.661 -1.6606726,-1.661 -0.9172669,0 -1.6608557,0.744 -1.6608557,1.661 0,0.917 0.7435888,1.6607 1.6608557,1.6607 0.9170871,0 1.6606726,-0.7437 1.6606726,-1.6607"
+       id="path43"
+       style="fill:#0031ff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.50000006;stroke-miterlimit:4;stroke-dasharray:none" />
+    <rect
+       id="rect4149"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       class="st4"
+       width="1.0000002"
+       height="16.000042"
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_motorway.svg b/images/presets/transport/way/way_motorway.svg
new file mode 100644
index 0000000..ed06813
--- /dev/null
+++ b/images/presets/transport/way/way_motorway.svg
@@ -0,0 +1,152 @@
+<?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"
+   width="15"
+   height="16"
+   viewBox="0 0 15 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_motorway.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-17.965411"
+     inkscape:cy="8.1794399"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path243"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m -4.7683724e-7,1052.3621 7.00000127683724,0 0,-16 -7.00000127683724,0 0,16 z" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 4.0000027,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 4.0000057,1043.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-8"
+       d="m 4.0000033,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-6"
+       d="m 4.0000033,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path243-1"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 7.9999949,1052.3621 7.0000031,0 0,-16 -7.0000031,0 0,16 z" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-6"
+       d="m 11.999999,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 12.000002,1043.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-8-5"
+       d="m 11.999999,1047.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-6-9"
+       d="m 11.999999,1051.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_motorway_link.svg b/images/presets/transport/way/way_motorway_link.svg
new file mode 100644
index 0000000..d23bbf1
--- /dev/null
+++ b/images/presets/transport/way/way_motorway_link.svg
@@ -0,0 +1,165 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_motorway_link.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="2.2222667"
+     inkscape:cy="4.3455837"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path243"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m -4.7683724e-7,1052.3621 7.00000127683724,0 0,-16 -7.00000127683724,0 0,16 z" />
+    <path
+       style="fill:#0000ff;fill-opacity:1"
+       d="m 7.9999995,1036.3621 0,16 7.0000005,0 0,-3 1,0 0,-9 -1,0 0,-4 -7.0000005,0 z"
+       id="XMLID_61_" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 4.0000027,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 4.0000057,1043.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-8"
+       d="m 4.0000033,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-6"
+       d="m 4.0000033,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-6"
+       d="m 11.999999,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 12.000002,1043.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-8-5"
+       d="m 11.999999,1047.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-6-9"
+       d="m 11.999999,1051.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7-0"
+       d="m 12.000002,1045.3621 0,-1 2,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7-0-6"
+       d="m 15.000002,1045.3621 0,-1 1,0 0,1 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_pedestrian.svg b/images/presets/transport/way/way_pedestrian.svg
new file mode 100644
index 0000000..eae1c0f
--- /dev/null
+++ b/images/presets/transport/way/way_pedestrian.svg
@@ -0,0 +1,148 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_pedestrian.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.000001"
+     inkscape:cx="-11.842439"
+     inkscape:cy="9.1066944"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78328,616.43253)"
+       style="fill:#ffffff;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffffff;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 4.9999404,1039.3637 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 4.9999434,1043.3637 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 4.9999434,1047.3637 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 4.9999404,1051.3637 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 1.0000025,1052.3605 -1.00000297683724,0 0,-15.9984 1.00000297683724,0 z"
+       id="path4144"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4146"
+       d="m 9.0000011,1052.3605 -1.0000029,0 0,-15.9984 1.0000029,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="cccccccccccccccccsscc"
+       inkscape:connector-curvature="0"
+       id="path4150"
+       d="m 8.9658564,1040.0181 c -0.7445917,0 -1.3435512,0.5365 -1.3435512,1.2025 l 0,4.5869 c -0.011891,0.7514 1.2544814,0.7514 1.2425902,0 l 0,-3.7485 0.6403454,0 0,9.1285 c -0.01528,0.9661 1.6128972,0.9661 1.5976172,0 l 0,-5.3819 0.790862,0 0,5.3819 c 0,0.966 1.612758,0.9659 1.597619,0 l 0,-9.1285 0.705526,0 0,3.7485 c -0.01195,0.7514 1.254538,0.7514 1.242589,0 l 0,-3.8636 0,-0.7235 c 0,-0.6658 -0.60007,-1.2024 -1.344661,-1.2024 l -5.1289366,0 z"
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:none;fill-opacity:1;stroke:#ffffff;stroke- [...]
+    <ellipse
+       style="opacity:1;fill:#0031ff;fill-opacity:1;stroke:#ffffff;stroke-width:0.50000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4145"
+       cx="11.53088"
+       cy="1038.2709"
+       rx="1.6588078"
+       ry="1.6587859" />
+    <path
+       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#0031ff;fill-opacity:1;stroke:none;stroke- [...]
+       d="m 8.9658564,1040.0181 c -0.7445917,0 -1.3435512,0.5365 -1.3435512,1.2025 l 0,4.5869 c -0.011891,0.7514 1.2544814,0.7514 1.2425902,0 l 0,-3.7485 0.6403454,0 0,9.1285 c -0.01528,0.9661 1.6128972,0.9661 1.5976172,0 l 0,-5.3819 0.790862,0 0,5.3819 c 0,0.966 1.612758,0.9659 1.597619,0 l 0,-9.1285 0.705526,0 0,3.7485 c -0.01195,0.7514 1.254538,0.7514 1.242589,0 l 0,-4.5871 c 0,-0.6658 -0.60007,-1.2024 -1.344661,-1.2024 l -5.1289366,0 z"
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccccccccccscc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_primary.svg b/images/presets/transport/way/way_primary.svg
new file mode 100644
index 0000000..e6c45da
--- /dev/null
+++ b/images/presets/transport/way/way_primary.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_primary2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-5.9316545"
+     inkscape:cy="9.4113212"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78328,616.43414)"
+       style="fill:#ff2a2a;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ff2a2a;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_primary_link.svg b/images/presets/transport/way/way_primary_link.svg
new file mode 100644
index 0000000..61cf8bb
--- /dev/null
+++ b/images/presets/transport/way/way_primary_link.svg
@@ -0,0 +1,131 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_primary_link.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-7.4105752"
+     inkscape:cy="3.671305"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16,1040.3621 0,8.9999 -6.999998,0 0,-8.9999 z m -15.999949545768,-4.0016 8.999941545768,0 0,15.9984 -8.999941545768,0 z"
+       style="fill:#ff2a2a;fill-opacity:1"
+       id="XMLID_61_-5" />
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ff0f06;fill-opacity:0.89302326" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3"
+       d="m 13.000002,1045.3621 0,-1 2,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-0"
+       d="m 9.0000011,1045.3621 0,-1 1.9999999,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-2"
+       d="m 5.0000004,1045.3621 0,-1 2.0000009,0 0,1 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_residential.svg b/images/presets/transport/way/way_residential.svg
new file mode 100644
index 0000000..30ed298
--- /dev/null
+++ b/images/presets/transport/way/way_residential.svg
@@ -0,0 +1,141 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_residential3.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <clipPath
+       id="clipPath19">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 0.496094,0.0351562 5952.500006,0 0,7934.6400438 -5952.500006,0 0,-7934.6400438 z"
+         id="path21" />
+    </clipPath>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="7.6308379"
+     inkscape:cy="6.7768599"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.99999994"
+       height="16.000042"
+       width="9.0000019"
+       class="st4"
+       y="1036.3621"
+       x="-4.7683727e-007"
+       id="XMLID_61_" />
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994"
+       height="16.000042"
+       width="1.0000002"
+       class="st4"
+       y="1036.3621"
+       x="8.000001"
+       id="rect4151" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 4.9999557,1039.3655 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 4.9999587,1043.3655 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 4.9999587,1047.3655 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <rect
+       id="rect4149"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       class="st4"
+       width="1.0000002"
+       height="16.000042"
+       style="fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.99999994" />
+    <path
+       class="st5"
+       d="m 5.0000004,1051.3621 -1.000004,0 0,-2 1.000004,0 z"
+       id="path4153"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_road.svg b/images/presets/transport/way/way_road.svg
new file mode 100644
index 0000000..7028959
--- /dev/null
+++ b/images/presets/transport/way/way_road.svg
@@ -0,0 +1,153 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_road.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="9.1132973"
+     inkscape:cy="7.7363408"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382-2"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78324,616.43072)"
+       style="fill:#ffffff;fill-opacity:1">
+      <rect
+         id="XMLID_61_-9"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffffff;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4144"
+       d="m 9.000005,1052.3621 -1.000004,0 0,-16 1.000004,0 z"
+       class="st5" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:1.00000024;stroke-miterlimit:4;stroke-dasharray:none"
+       inkscape:connector-curvature="0"
+       d="m 11.736234,1039.8188 c -0.77002,0.017 -1.567111,0.7072 -1.489779,2.2195 l -1.7457337,-0.017 c -0.032221,-2.2242 1.025931,-3.0492 1.5484917,-3.2969 0.49942,-0.2368 1.133572,-0.3622 1.751006,-0.3622 0.738027,0 1.340991,0.094 1.80889,0.2787 0.4679,0.1843 0.848973,0.4225 1.133571,0.7101 0.284599,0.2877 0.482371,0.6113 0.593316,0.9664 0.110946,0.3551 0.164006,0.6967 0.164006,1.0203 0,0.409 -0.082,0.7731 -0.250832,1.0922 -0.16883,0.3191 -0.37625,0.6158 -0.622259,0.8944 -0.246009,0.2 [...]
+       class="st1"
+       id="path4148"
+       sodipodi:nodetypes="sccsssssssscssssccssscccscsssssscscs" />
+    <g
+       id="XMLID_135_"
+       transform="matrix(0.04823707,0,0,0.04494684,-1.1321391,1026.5321)"
+       style="fill:#000000">
+      <path
+         style="fill:#000000"
+         inkscape:connector-curvature="0"
+         d="m 266.77352,295.60834 c -15.96324,0.36944 -32.48768,15.73538 -30.88452,49.38093 l -36.19071,-0.38025 C 199.03031,295.12395 220.9668,276.76971 231.8,271.25733 242.15344,265.98907 255.3,263.2 268.1,263.2 c 15.3,0 27.8,2.1 37.5,6.2 9.7,4.1 17.6,9.4 23.5,15.8 5.9,6.4 10,13.6 12.3,21.5 2.3,7.9 3.4,15.5 3.4,22.7 0,9.1 -1.7,17.2 -5.2,24.3 -3.5,7.1 -7.8,13.7 -12.9,19.9 -5.1,6.2 -10.7,12 -16.9,17.7 -6.2,5.6 -11.8,11.4 -16.9,17.4 -5.1,6 -9.4,12.6 -12.9,19.7 -3.5,7.1 -5.2,15 -5.2,23.9 l [...]
+         class="st1"
+         id="XMLID_140_"
+         sodipodi:nodetypes="sccsssssssscssssccssscccscsssssscscs" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000012,1039.3621 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000042,1043.3621 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000042,1047.3621 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000012,1051.3621 -1.000004,0 0,-2 1.000004,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 1.0000035,1052.3621 -1.00000397683724,0 0,-16 1.00000397683724,0 z"
+       id="path4142"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_secondary.svg b/images/presets/transport/way/way_secondary.svg
new file mode 100644
index 0000000..7bbb260
--- /dev/null
+++ b/images/presets/transport/way/way_secondary.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_secondary.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-6.3222795"
+     inkscape:cy="9.4113212"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ffa506;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffa506;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_secondary_link.svg b/images/presets/transport/way/way_secondary_link.svg
new file mode 100644
index 0000000..0f5a6e5
--- /dev/null
+++ b/images/presets/transport/way/way_secondary_link.svg
@@ -0,0 +1,135 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_secondary_link.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="1.4706492"
+     inkscape:cy="6.8026677"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382-7"
+       transform="matrix(0,1.3846064,-0.49634025,0,199.69553,835.57882)"
+       style="fill:#ffa506;fill-opacity:1">
+      <path
+         id="XMLID_61_-5"
+         style="fill:#ffa506;fill-opacity:1"
+         d="m 147.89999,370.10001 6.5,0 0,14.1 -6.5,0 z m -2.89006,32.23584 0,-18.1326 11.55447,0 0,18.1326 z" />
+    </g>
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ffa506;fill-opacity:1" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-5"
+       d="m 5.0000004,1045.3621 0,-1 1.9999999,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-5-5"
+       d="m 9.0000011,1045.3621 0,-1 1.9999999,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-5-7"
+       d="m 13.000002,1045.3621 0,-1 2,0 0,1 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_service.svg b/images/presets/transport/way/way_service.svg
new file mode 100644
index 0000000..c57897c
--- /dev/null
+++ b/images/presets/transport/way/way_service.svg
@@ -0,0 +1,100 @@
+<?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"
+   width="7"
+   height="16"
+   viewBox="0 0 7 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_service.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="2.891509"
+     inkscape:cy="9.0539547"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.0769141,0,0,1.1346381,-159.27553,616.43092)"
+       style="fill:#ffffff;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffffff;fill-opacity:1" />
+    </g>
+    <path
+       class="st5"
+       d="m 1.000003,1052.3605 -1.00000323841862,0 0,-15.9984 1.00000323841862,0 z"
+       id="path4144"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       class="st5"
+       d="m 7.0000006,1052.3621 -1.0000032,0 0,-15.9984 1.0000032,0 z"
+       id="path4144-2"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_service_parking_aisle.svg b/images/presets/transport/way/way_service_parking_aisle.svg
new file mode 100644
index 0000000..7664529
--- /dev/null
+++ b/images/presets/transport/way/way_service_parking_aisle.svg
@@ -0,0 +1,100 @@
+<?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"
+   width="4"
+   height="16"
+   viewBox="0 0 4 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_service_parking_aisle.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="-0.75848883"
+     inkscape:cy="6.6411186"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(0.6153756,0,0,1.1346381,-91.013989,616.43092)"
+       style="fill:#ffffff;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffffff;fill-opacity:1" />
+    </g>
+    <path
+       class="st5"
+       d="m 1.0000031,1052.3621 -1.000003159604648,0 0,-15.9984 1.000003159604648,0 z"
+       id="path4144-2"
+       inkscape:connector-curvature="0"
+       style="fill:#808080;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#808080;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4142"
+       d="m 4.0000001,1052.3605 -1.0000031,0 0,-15.9984 1.0000031,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_tertiary.svg b/images/presets/transport/way/way_tertiary.svg
new file mode 100644
index 0000000..56985c4
--- /dev/null
+++ b/images/presets/transport/way/way_tertiary.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_tertiary2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-0.6035295"
+     inkscape:cy="9.4113212"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ffd42a">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#ffd42a" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_tertiary_link.svg b/images/presets/transport/way/way_tertiary_link.svg
new file mode 100644
index 0000000..5a80d51
--- /dev/null
+++ b/images/presets/transport/way/way_tertiary_link.svg
@@ -0,0 +1,130 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_tertiary_link.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="2.3495955"
+     inkscape:cy="7.7550712"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       d="m 16,1040.3622 0,8.9999 -6.999998,0 0,-8.9999 z m -15.999949545768,-4.0017 8.999941545768,0 0,15.9984 -8.999941545768,0 z"
+       style="fill:#ffd42a;fill-opacity:1"
+       id="XMLID_61_-0" />
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-2"
+       d="m 5.0000004,1045.3621 0,-1 2,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-5"
+       d="m 9.0000011,1045.3621 0,-1 2.0000009,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#606060;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-5-0"
+       d="m 13.000002,1045.3621 0,-1 2.000001,0 0,1 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_trunk.svg b/images/presets/transport/way/way_trunk.svg
new file mode 100644
index 0000000..8d9c7ba
--- /dev/null
+++ b/images/presets/transport/way/way_trunk.svg
@@ -0,0 +1,111 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_trunk.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="2.4525276"
+     inkscape:cy="7.8737159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       d="m 5.0454232e-5,1036.3605 8.999941545768,0 0,15.9984 -8.999941545768,0 z"
+       style="fill:#0000ff;fill-opacity:1"
+       id="XMLID_61_-5"
+       sodipodi:nodetypes="ccccc" />
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ff0f06;fill-opacity:0.89302326" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_trunk_link.svg b/images/presets/transport/way/way_trunk_link.svg
new file mode 100644
index 0000000..515c6d1
--- /dev/null
+++ b/images/presets/transport/way/way_trunk_link.svg
@@ -0,0 +1,194 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_trunk_link.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="22.22596"
+     inkscape:cy="11.12509"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382-3"
+       transform="matrix(0,1.3846064,-0.49645373,0,199.73753,835.57882)"
+       style="fill:#0000ff;fill-opacity:1">
+      <path
+         id="XMLID_61_-5"
+         style="fill:#0000ff;fill-opacity:1"
+         d="m 147.89999,370.10001 6.5,0 0,14.1 -6.5,0 z m -2.89006,32.22848 0,-18.12846 11.55447,0 0,18.12846 z" />
+    </g>
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#ff0f06;fill-opacity:0.89302326" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3"
+       d="m 13.000002,1045.3621 0,-1 2,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-0"
+       d="m 9.0000011,1045.3621 0,-1 1.9999999,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-2"
+       d="m 5.0000004,1045.3621 0,-1 2.0000009,0 0,1 z"
+       class="st5" />
+    <g
+       id="g3382-3-9"
+       transform="matrix(0,1.3846064,-0.49645373,0,199.73753,835.57882)"
+       style="fill:#0000ff;fill-opacity:1">
+      <path
+         inkscape:connector-curvature="0"
+         id="XMLID_61_-5-4"
+         style="fill:#0000ff;fill-opacity:1"
+         d="m 147.89999,370.10001 6.5,0 0,14.1 -6.5,0 z m -2.89006,32.22848 0,-18.12846 11.55447,0 0,18.12846 z" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-3"
+       d="m 5.0000048,1039.3623 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-2"
+       d="m 5.0000078,1043.3623 -1.0000033,0 0,-2 1.0000033,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7-9"
+       d="m 5.0000079,1047.3623 -1.0000034,0 0,-2 1.0000034,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4-8"
+       d="m 5.0000048,1051.3623 -1.0000034,0 0,-2 1.0000034,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-6"
+       d="m 13.000008,1045.3623 0,-1 2,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-0-7"
+       d="m 9.000006,1045.3623 0,-1 2,0 0,1 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-3-2-6"
+       d="m 5.0000046,1045.3623 0,-1 2.0000013,0 0,1 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/transport/way/way_unclassified.svg b/images/presets/transport/way/way_unclassified.svg
new file mode 100644
index 0000000..64bfaca
--- /dev/null
+++ b/images/presets/transport/way/way_unclassified.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="way_unclassified.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-1.7588147"
+     inkscape:cy="6.7477773"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5.0000006,1039.3621 -1.000003,0 0,-2 1.000003,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5.0000036,1043.3621 -1.0000031,0 0,-2 1.0000031,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5.0000037,1047.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5.0000006,1051.3621 -1.0000032,0 0,-2 1.0000032,0 z"
+       class="st5" />
+  </g>
+</svg>
diff --git a/images/presets/tunnel.png b/images/presets/tunnel.png
deleted file mode 100644
index 7d1640b..0000000
Binary files a/images/presets/tunnel.png and /dev/null differ
diff --git a/images/presets/turning.png b/images/presets/turning.png
deleted file mode 100644
index 23f6e97..0000000
Binary files a/images/presets/turning.png and /dev/null differ
diff --git a/images/presets/tyres.png b/images/presets/tyres.png
deleted file mode 100644
index d2da765..0000000
Binary files a/images/presets/tyres.png and /dev/null differ
diff --git a/images/presets/underground.png b/images/presets/underground.png
deleted file mode 100644
index 2cee5cc..0000000
Binary files a/images/presets/underground.png and /dev/null differ
diff --git a/images/presets/vehicle/bicycle_rental.svg b/images/presets/vehicle/bicycle_rental.svg
new file mode 100644
index 0000000..897241c
--- /dev/null
+++ b/images/presets/vehicle/bicycle_rental.svg
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="394.8786"
+   id="svg2287"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="bicycle_rental.svg"
+   sodipodi:version="0.32"
+   width="411.93304"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>AIGA_Symbol_Signs</dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="g2297"
+     inkscape:cx="-87.454318"
+     inkscape:cy="415.54616"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.43415836"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs2289">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 0,0 Z"
+         id="path2292"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 10,0 Z"
+         id="path2295"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <g
+     id="g2297"
+     transform="translate(-612.85914,202.69102)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+       id="rect4166"
+       width="411.93304"
+       height="394.8786"
+       x="612.85913"
+       y="-202.69101" />
+    <g
+       id="g2303"
+       transform="translate(628.80282,-202.69102)">
+      <g
+         id="g2305">
+        <path
+           style="fill:#000000;stroke:none"
+           id="path2307"
+           d="m 101.99,148.102 c 40.486,0 73.305,-33.154 73.305,-74.049 C 175.295,33.154 142.476,0 101.99,0 61.506,0 28.684,33.154 28.684,74.053 c 0,40.895 32.822,74.049 73.306,74.049 z"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:#000000;stroke:none"
+           id="path2309"
+           d=""
+           inkscape:connector-curvature="0" />
+      </g>
+      <path
+         style="fill:#000000;stroke:none"
+         id="path2311"
+         d="m 156.681,37.263 156.553,0 25.144,25.4 c 4.626,4.673 4.508,7.909 0,12.461 l -30.599,30.908 -18.027,-18.207 -18.028,18.207 -17.792,-17.969 -17.314,17.49 -18.028,-18.207 -23.485,23.72 -38.424,0 0,-73.803 z"
+         inkscape:connector-curvature="0" />
+    </g>
+    <g
+       transform="matrix(-2.3580476,0,0,2.3580476,1298.8426,-348.60879)"
+       id="g2873">
+      <circle
+         id="path596"
+         style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:26;stroke-opacity:1"
+         transform="matrix(0.336803,0,0,0.336803,192.5945,42.97304)"
+         cx="200.53224"
+         cy="461.96271"
+         r="78.380615" />
+      <circle
+         id="path595"
+         style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:26;stroke-opacity:1"
+         transform="matrix(0.336803,0,0,0.336803,79.45661,42.45877)"
+         cx="200.53224"
+         cy="461.96271"
+         r="78.380615" />
+      <path
+         d="m 167.90982,153.1369 67.88271,0.34285 23.99893,44.56945 -45.94082,0 -47.99787,-32.56998"
+         id="path594"
+         sodipodi:nodetypes="ccccc"
+         style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.03076267;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 170.5183,126.42646 c -3.68727,0 -6.47436,-0.0823 -9.3311,4.28198 -0.8223,1.45485 -1.19826,3.23121 -0.89463,4.99942 0.36424,2.01063 1.55461,3.98605 2.9579,5.15545 1.8582,1.54851 3.62168,1.42905 3.33668,2.82107 -0.36568,1.78612 -1.48168,4.26817 -2.68771,8.29852 -1.22421,4.09107 -2.67788,9.09815 -4.10479,14.02995 -1.42691,4.93179 -2.82762,9.79096 -3.93638,13.57737 -0.55439,1.8932 -1.03856,3.51883 -1.41037,4.73629 -0.36225,1.18617 -0.68208,2.10756 -0.65255,2.04187 -1.15517,2.03 [...]
+         id="path593"
+         sodipodi:nodetypes="ccccscccccsscsccccccccccccssccc"
+         style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke-width:25;stroke-linecap:round"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 214.73026,196.65372 23.27289,-56.97008"
+         id="path599"
+         style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:8.42007542;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 204.30595,178.47178 18.90921,40.00027"
+         id="path600"
+         style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.0733273;stroke-linecap:round;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <circle
+         id="path597"
+         style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:31.30500031;stroke-opacity:1"
+         transform="matrix(0.132315,0,0,0.136689,187.5743,134.9894)"
+         cx="200.53224"
+         cy="461.96271"
+         r="78.380615" />
+      <path
+         d="m 199.25786,179.69861 12.42128,0.11386"
+         id="path601"
+         sodipodi:nodetypes="cc"
+         style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.29423809;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 216.88312,216.79001 12.42128,0.11386"
+         id="path602"
+         sodipodi:nodetypes="cc"
+         style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.29423809;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 249.39728,134.59251 -29.21234,0 c -1.09092,0 -2.49896,1.92976 -1.09092,3.21215 1.52286,1.44934 15.21224,4.42427 15.21224,4.42427 0,0 3.7576,1.03031 5.75762,0.78789 2.00001,-0.24243 8.90915,-0.84849 9.3334,-8.42431 z"
+         id="path603"
+         sodipodi:nodetypes="cssccc"
+         style="font-size:12px;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.33680301pt;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+    <circle
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path2352"
+       transform="translate(594.43268,-211.90425)"
+       cx="101.34551"
+       cy="83.932152"
+       r="18.426456" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/bicycle_repair_station.svg b/images/presets/vehicle/bicycle_repair_station.svg
new file mode 100644
index 0000000..ef99d9d
--- /dev/null
+++ b/images/presets/vehicle/bicycle_repair_station.svg
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.1"
+   height="575"
+   width="575"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="16.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:modified="TRUE"
+   inkscape:export-filename="/home/uwe/Desktop/Zeichen_237.png"
+   inkscape:export-xdpi="4.2362185"
+   inkscape:export-ydpi="4.2362185">
+  <title
+     id="title68846">Bicycle repair station</title>
+  <metadata
+     id="metadata13">
+    <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>Bicycle repair station</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Bryce Nesbitt</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Unrestricted</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:description>Wrench plus bicycle symbol</dc:description>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>BeaOriginal</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs11" />
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="1.1172287"
+     inkscape:cx="457.44214"
+     inkscape:cy="226.1412"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2988"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="-8.609891e-005px" />
+  </sodipodi:namedview>
+  <rect
+     style="fill:#ffffff;fill-opacity:1;stroke:#0078ff;stroke-width:0.98967296;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+     id="rect2990"
+     width="574.01031"
+     height="574.01031"
+     x="0.49483648"
+     y="0.49483648" />
+  <g
+     id="g3138"
+     transform="matrix(0.98757845,0,0,1,-171.61601,7.0110373)"
+     inkscape:export-xdpi="4.2362185"
+     inkscape:export-ydpi="4.2362185">
+    <circle
+       transform="matrix(0.612193,0,0,0.612193,156.40859,178.29391)"
+       r="161"
+       cy="409"
+       cx="215"
+       style="fill:none;stroke:#000000;stroke-width:40px;stroke-opacity:1"
+       id="FrontWheel"
+       sodipodi:cx="215"
+       sodipodi:cy="409"
+       sodipodi:rx="161"
+       sodipodi:ry="161"
+       d="m 376,409 c 0,88.91784 -72.08216,161 -161,161 -88.91784,0 -161,-72.08216 -161,-161 0,-88.91784 72.08216,-161 161,-161 88.91784,0 161,72.08216 161,161 z" />
+    <circle
+       transform="matrix(0.612193,0,0,0.612193,156.40859,178.29391)"
+       r="161"
+       cy="406"
+       cx="790"
+       style="fill:none;stroke:#000000;stroke-width:40px;stroke-opacity:1"
+       id="RearWheel"
+       sodipodi:cx="790"
+       sodipodi:cy="406"
+       sodipodi:rx="161"
+       sodipodi:ry="161"
+       d="m 951,406 c 0,88.91784 -72.08216,161 -161,161 -88.91784,0 -161,-72.08216 -161,-161 0,-88.91784 72.08216,-161 161,-161 88.91784,0 161,72.08216 161,161 z" />
+    <path
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61219299;stroke-opacity:1"
+       id="Frame"
+       d="m 419.33591,187.76277 c -81.15626,0.791 -67.39292,-8.38456 -111.05594,131.93826 -35.56995,112.11783 -31.69552,99.89097 -31.88155,107.75543 -0.13037,6.10982 4.80163,10.95404 10.99923,11.36869 12.88887,-1.30322 7.46752,1.39395 52.15306,-137.36977 163.27931,172.24394 102.021,144.31296 189.89195,147.81092 115.48553,-1.10739 124.87203,6.01158 126.24309,-10.91575 -0.1582,-5.74792 -2.84759,-9.17557 -82.10546,-185.56784 l 7.59356,-20.88232 26.1029,-0.4746 -0.9492,-21.83151 -97.2926,0 c [...]
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="Layer_2"
+     transform="matrix(0,-1.6091568,1.6672138,0,-129.48538,524.0285)">
+    <path
+       d="m 230.667,88 5,42 20,6.333 18,-11 -6.333,-43 c 0,0 36.667,11 39.667,37.333 0,0 3.999,23 -10.334,34 l -10.999,10 c 0,0 -14,10.667 -10.667,34 v 204 l -0.333,7.667 c 0,0 1,9 -9,9.333 h -19 c 0,0 -10,1.667 -11.667,-12.333 V 185.999 c 0,0 1.333,-12.333 -8.333,-18.333 l -12.333,-10 c 0,0 -21.333,-16.334 -7.333,-45.667 -0.001,0 4.999,-13.999 23.665,-23.999 z"
+       id="path68800"
+       inkscape:connector-curvature="0"
+       style="fill:#1e1916" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/bump.svg b/images/presets/vehicle/bump.svg
new file mode 100644
index 0000000..45f0c93
--- /dev/null
+++ b/images/presets/vehicle/bump.svg
@@ -0,0 +1,122 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__bump_2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="1.8121138"
+     inkscape:cy="7.2926704"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846053,0,0,1.1346381,-204.78305,616.43414)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3653 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5,1042.3653 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5,1048.3653 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3653 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <rect
+       style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4154"
+       width="9"
+       height="2"
+       x="2.3607492e-006"
+       y="1043.3652" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/car_parts.svg b/images/presets/vehicle/car_parts.svg
new file mode 100644
index 0000000..d9f3ef8
--- /dev/null
+++ b/images/presets/vehicle/car_parts.svg
@@ -0,0 +1,152 @@
+<?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"
+   width="149.28694"
+   height="139.99617"
+   id="svg3009"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Neues Dokument 2">
+  <defs
+     id="defs3011" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8"
+     inkscape:cx="107.5065"
+     inkscape:cy="66.142335"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3014">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-305.35701,-413.79721)">
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:12.4419775;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path2985"
+       sodipodi:cx="268.57144"
+       sodipodi:cy="469.50504"
+       sodipodi:rx="157.14285"
+       sodipodi:ry="157.14285"
+       d="m 425.71429,469.50504 c 0,86.7876 -70.35525,157.14285 -157.14285,157.14285 -86.7876,0 -157.14285,-70.35525 -157.14285,-157.14285 0,-86.78761 70.35525,-157.14286 157.14285,-157.14286 86.7876,0 157.14285,70.35525 157.14285,157.14286 z"
+       transform="matrix(0.42849139,0,0,0.42849139,269.56245,282.61189)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       style="fill:#ff0000;stroke:none;display:inline"
+       d="m 343.92899,423.79074 0,120.00003 -15.00015,0 c -31.81806,-40.28928 -31.03773,-80.28218 0,-120.00003 z"
+       id="path4019"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:14.46901035;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path2991"
+       sodipodi:cx="-100"
+       sodipodi:cy="432.36218"
+       sodipodi:rx="140"
+       sodipodi:ry="140"
+       d="m 40,432.36218 c 0,77.31987 -62.680135,140 -140,140 -77.31986,0 -140,-62.68013 -140,-140 0,-77.31986 62.68014,-140 140,-140 77.319865,0 140,62.68014 140,140 z"
+       transform="matrix(0.3395943,0,0,0.33959431,418.60243,336.96302)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+       id="path3944"
+       sodipodi:cx="60"
+       sodipodi:cy="472.36218"
+       sodipodi:rx="20"
+       sodipodi:ry="20"
+       d="m 80,472.36218 c 0,11.0457 -8.954305,20 -20,20 -11.045695,0 -20,-8.9543 -20,-20 0,-11.04569 8.954305,-20 20,-20 11.045695,0 20,8.95431 20,20 z"
+       transform="matrix(0.75,0,0,0.75,339.643,129.51912)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+       id="path4021-4"
+       sodipodi:cx="130"
+       sodipodi:cy="642.36218"
+       sodipodi:rx="30"
+       sodipodi:ry="30"
+       d="m 160,642.36218 c 0,16.56855 -13.43146,30 -30,30 -16.56854,0 -30,-13.43145 -30,-30 0,-16.56854 13.43146,-30 30,-30 16.56854,0 30,13.43146 30,30 z"
+       transform="matrix(0.16666667,0,0,0.16666667,362.97633,346.73039)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+       id="path4021-4-9"
+       sodipodi:cx="130"
+       sodipodi:cy="642.36218"
+       sodipodi:rx="30"
+       sodipodi:ry="30"
+       d="m 160,642.36218 c 0,16.56855 -13.43146,30 -30,30 -16.56854,0 -30,-13.43145 -30,-30 0,-16.56854 13.43146,-30 30,-30 16.56854,0 30,13.43146 30,30 z"
+       transform="matrix(0.16666667,0,0,0.16666667,392.97633,376.73039)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+       id="path4021-4-4"
+       sodipodi:cx="130"
+       sodipodi:cy="642.36218"
+       sodipodi:rx="30"
+       sodipodi:ry="30"
+       d="m 160,642.36218 c 0,16.56855 -13.43146,30 -30,30 -16.56854,0 -30,-13.43145 -30,-30 0,-16.56854 13.43146,-30 30,-30 16.56854,0 30,13.43146 30,30 z"
+       transform="matrix(0.16666667,0,0,0.16666667,332.97633,376.73039)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+       id="path4021-4-7"
+       sodipodi:cx="130"
+       sodipodi:cy="642.36218"
+       sodipodi:rx="30"
+       sodipodi:ry="30"
+       d="m 160,642.36218 c 0,16.56855 -13.43146,30 -30,30 -16.56854,0 -30,-13.43145 -30,-30 0,-16.56854 13.43146,-30 30,-30 16.56854,0 30,13.43146 30,30 z"
+       transform="matrix(0.16666667,0,0,0.16666667,362.97633,406.73039)"
+       inkscape:export-xdpi="9.645854"
+       inkscape:export-ydpi="9.645854" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/car_rental.svg b/images/presets/vehicle/car_rental.svg
new file mode 100644
index 0000000..05de010
--- /dev/null
+++ b/images/presets/vehicle/car_rental.svg
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   height="527.45728"
+   id="svg2287"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="car_rental.svg"
+   sodipodi:version="0.32"
+   width="403.07874"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>AIGA_Symbol_Signs</dc:title>
+        <dc:description>EPS converted from  http://aiga.org</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>symbol</rdf:li>
+            <rdf:li>mapsym</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/">
+            <dc:title>Open Clip Art Library</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Jean-Victor Balin</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date />
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2287"
+     inkscape:cx="330.59591"
+     inkscape:cy="436.27589"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:zoom="0.43415836"
+     pagecolor="#ffffff"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs2289">
+    <marker
+       id="ArrowEnd"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="0"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 0,0 10,5 0,10 Z"
+         id="path2292"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       id="ArrowStart"
+       markerHeight="3"
+       markerUnits="strokeWidth"
+       markerWidth="4"
+       orient="auto"
+       refX="10"
+       refY="5"
+       viewBox="0 0 10 10">
+      <path
+         d="M 10,0 0,5 10,10 Z"
+         id="path2295"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4169"
+     width="403.07874"
+     height="527.45728"
+     x="0"
+     y="0" />
+  <g
+     id="g2297"
+     transform="translate(25.336378,31.27854)">
+    <g
+       id="g2299">
+      <path
+         d="m 214.064,176.821 41.43,0 c 22.548,0 34.512,12.316 40.034,26.725 l 29.335,75.669 c 11.62,1.49 32.218,15.146 32.218,40.985 l 0,96.245 -28.527,0 0,30.769 c 0,37.87 -53.599,37.424 -53.599,0 l 0,-30.769 -96.389,0 -0.054,0 0.056,0 -0.052,0 -96.389,0 0,30.769 c 0,37.424 -53.599,37.87 -53.599,0 l 0,-30.769 -28.528,0 0,-96.245 c 0,-25.839 20.577,-39.495 32.197,-40.985 l 29.335,-75.669 c 5.522,-14.409 17.487,-26.725 40.035,-26.725 l 41.911,0 70.586,0 z"
+         id="path2301"
+         style="fill:#000000;stroke:none"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g2303">
+        <g
+           id="g2305">
+          <path
+             d="m 101.99,148.102 c 40.486,0 73.305,-33.154 73.305,-74.049 C 175.295,33.154 142.476,0 101.99,0 61.506,0 28.684,33.154 28.684,74.053 c 0,40.895 32.822,74.049 73.306,74.049 z"
+             id="path2307"
+             style="fill:#000000;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 101.99,74.053"
+             id="path2309"
+             style="fill:#000000;stroke:none"
+             inkscape:connector-curvature="0" />
+        </g>
+        <path
+           d="m 156.681,37.263 156.553,0 25.144,25.4 c 4.626,4.673 4.508,7.909 0,12.461 l -30.599,30.908 -18.027,-18.207 -18.028,18.207 -17.792,-17.969 -17.314,17.49 -18.028,-18.207 -23.485,23.72 -38.424,0 0,-73.803 z"
+           id="path2311"
+           style="fill:#000000;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+    <g
+       id="g2313">
+      <path
+         d="m 178.512,278.445 -0.054,0 -115.89,0 22.087,-59.56 c 2.761,-8.367 6.904,-14.409 16.568,-14.499 l 77.235,0 0.054,0 0.054,0 77.274,0 c 9.663,0.09 13.805,6.132 16.566,14.499 l 22.086,59.56 -115.926,0 -0.054,0 z"
+         id="path2315"
+         style="fill:#ffffff;stroke:none"
+         inkscape:connector-curvature="0" />
+      <g
+         id="g2317">
+        <g
+           id="g2319">
+          <path
+             d="m 56.18,358.445 c -13.672,0 -24.758,-11.426 -24.758,-25.519 0,-14.092 11.086,-25.517 24.758,-25.517 13.673,0 24.757,11.425 24.757,25.517 0,14.093 -11.084,25.519 -24.757,25.519 z"
+             id="path2321"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 56.18,332.926"
+             id="path2323"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g2325">
+          <path
+             d="m 300.881,358.445 c 13.673,0 24.757,-11.426 24.757,-25.519 0,-14.092 -11.084,-25.517 -24.757,-25.517 -13.672,0 -24.758,11.425 -24.758,25.517 0,14.093 11.086,25.519 24.758,25.519 z"
+             id="path2327"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+          <path
+             d="M 300.881,332.926"
+             id="path2329"
+             style="fill:#ffffff;stroke:none"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+      <g
+         id="g2331">
+        <path
+           d="m 69.789,93.342 c 10.745,0 19.457,-8.802 19.457,-19.656 0,-10.855 -8.712,-19.656 -19.457,-19.656 -10.745,0 -19.457,8.801 -19.457,19.656 0,10.854 8.712,19.656 19.457,19.656 z"
+           id="path2333"
+           style="fill:#ffffff;stroke:none"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M 69.789,73.686"
+           id="path2335"
+           style="fill:#ffffff;stroke:none"
+           inkscape:connector-curvature="0" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/car_sharing.svg b/images/presets/vehicle/car_sharing.svg
new file mode 100644
index 0000000..6f0089f
--- /dev/null
+++ b/images/presets/vehicle/car_sharing.svg
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.0"
+   height="1146.3757"
+   width="1044.3423"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="car_sharing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8">
+    <marker
+       viewBox="0 0 10 10"
+       refY="5"
+       refX="10"
+       orient="auto"
+       markerWidth="4"
+       markerUnits="strokeWidth"
+       markerHeight="3"
+       id="ArrowStart">
+      <path
+         id="path1515"
+         d="M 10,0 0,5 10,10 10,0 Z"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       viewBox="0 0 10 10"
+       refY="5"
+       refX="0"
+       orient="auto"
+       markerWidth="4"
+       markerUnits="strokeWidth"
+       markerHeight="3"
+       id="ArrowEnd">
+      <path
+         id="path1512"
+         d="M 0,0 10,5 0,10 0,0 Z"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.16661204"
+     inkscape:cx="-388.88029"
+     inkscape:cy="752.57784"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4166"
+     width="1044.3423"
+     height="1146.3757"
+     x="0"
+     y="0" />
+  <g
+     id="g3246"
+     transform="matrix(1.2267738,0,0,1.4682744,-2592.3064,-1266.1296)">
+    <g
+       transform="matrix(1.0380952,0,0,1.1492407,2194.3289,891.24668)"
+       id="g2248"
+       style="fill:#000000;fill-opacity:1">
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         id="path2250"
+         d="m 95.872,81.671 c 22.55,0 40.834,-18.284 40.834,-40.836 C 136.706,18.284 118.422,0 95.872,0 73.319,0 55.038,18.284 55.038,40.835 c 0,22.552 18.281,40.836 40.834,40.836 z"
+         inkscape:connector-curvature="0" />
+      <path
+         d=""
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         id="path2252"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       id="path2254"
+       d="m 2248.5,995.46875 c -30.0187,10e-6 -54.1562,27.10025 -54.1562,60.90625 l 0,14.3125 37.0312,0 0,-1.9687 8.75,0 0,1.9687 107.4063,0 0,-1.9687 8.5625,0 0,1.9687 36.75,0 0,-13.4375 c 0,-31.1732 -21.8531,-61.71875 -54.8125,-61.71875 l -89.5313,-0.0625 z"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+  <path
+     style="fill:#000000;fill-rule:evenodd;stroke:none"
+     id="Car"
+     d="M 55.335442,781.58875 C 52.942279,605.17849 43.369629,756.97336 149.69442,495.4349 226.61749,317.65712 148.66878,365.52037 546.61749,359.02464 c 354.18803,7.17949 282.73504,-44.10256 364.10256,144.61539 101.88035,241.7094 94.01715,115.21367 93.33335,272.82051 -3.7607,172.99145 60.171,128.54701 -475.89745,134.35898 C -3.809859,903.64004 59.096121,948.76823 55.335442,781.58875 Z M 163.02774,611.33234 235.84826,443.12721 c 13.58658,-29.87865 9.25188,-25.46798 41.02564,-25.64103 l 50 [...]
+     inkscape:connector-curvature="0" />
+  <circle
+     style="fill:#ffffff;fill-opacity:1;stroke:none"
+     r="66.5"
+     cy="737.17847"
+     cx="178.66878"
+     id="LeftLamp" />
+  <circle
+     style="fill:#ffffff;fill-opacity:1;stroke:none"
+     r="66.5"
+     cy="737.17847"
+     cx="878.66876"
+     id="RightLamp" />
+  <g
+     transform="matrix(1.2267738,0,0,1.4682744,-2289.207,-1266.1296)"
+     id="g3262">
+    <g
+       style="fill:#000000;fill-opacity:1"
+       id="g3264"
+       transform="matrix(1.0380952,0,0,1.1492407,2194.3289,891.24668)">
+      <path
+         d="m 95.872,81.671 c 22.55,0 40.834,-18.284 40.834,-40.836 C 136.706,18.284 118.422,0 95.872,0 73.319,0 55.038,18.284 55.038,40.835 c 0,22.552 18.281,40.836 40.834,40.836 z"
+         id="path3266"
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="path3268"
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         d=""
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       d="m 2248.5,995.46875 c -30.0187,10e-6 -54.1562,27.10025 -54.1562,60.90625 l 0,14.3125 37.0312,0 0,-1.9687 8.75,0 0,1.9687 107.4063,0 0,-1.9687 8.5625,0 0,1.9687 36.75,0 0,-13.4375 c 0,-31.1732 -21.8531,-61.71875 -54.8125,-61.71875 l -89.5313,-0.0625 z"
+       id="path3270"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="g3272"
+     transform="matrix(1.2267738,0,0,1.4682744,-1986.1077,-1266.1296)">
+    <g
+       transform="matrix(1.0380952,0,0,1.1492407,2194.3289,891.24668)"
+       id="g3274"
+       style="fill:#000000;fill-opacity:1">
+      <path
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         id="path3276"
+         d="m 95.872,81.671 c 22.55,0 40.834,-18.284 40.834,-40.836 C 136.706,18.284 118.422,0 95.872,0 73.319,0 55.038,18.284 55.038,40.835 c 0,22.552 18.281,40.836 40.834,40.836 z"
+         inkscape:connector-curvature="0" />
+      <path
+         d=""
+         style="fill:#000000;fill-opacity:1;stroke:none"
+         id="path3278"
+         inkscape:connector-curvature="0" />
+    </g>
+    <path
+       id="path3280"
+       d="m 2248.5,995.46875 c -30.0187,10e-6 -54.1562,27.10025 -54.1562,60.90625 l 0,14.3125 37.0312,0 0,-1.9687 8.75,0 0,1.9687 107.4063,0 0,-1.9687 8.5625,0 0,1.9687 36.75,0 0,-13.4375 c 0,-31.1732 -21.8531,-61.71875 -54.8125,-61.71875 l -89.5313,-0.0625 z"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/car_wash.svg b/images/presets/vehicle/car_wash.svg
new file mode 100644
index 0000000..e5f3ad0
--- /dev/null
+++ b/images/presets/vehicle/car_wash.svg
@@ -0,0 +1,167 @@
+<?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"
+   version="1.0"
+   width="505.72037"
+   height="408.41373"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="car_wash.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\vehicle\car_wash.png"
+   inkscape:export-xdpi="3.08531"
+   inkscape:export-ydpi="3.08531">
+  <metadata
+     id="metadata11">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="964"
+     inkscape:window-width="1400"
+     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"
+     inkscape:zoom="0.72965224"
+     inkscape:cx="189.59686"
+     inkscape:cy="290.95509"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="0" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 130.52687 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="466.72781 : 130.52687 : 1"
+       inkscape:persp3d-origin="233.36391 : 87.017914 : 1"
+       id="perspective12" />
+  </defs>
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4146"
+     width="505.72037"
+     height="408.41373"
+     x="0"
+     y="0" />
+  <g
+     id="layer1"
+     transform="matrix(-0.6874148,0,0,1,492.43156,129.14804)">
+    <path
+       d="m 640.23853,222.03787 c 0,27.10477 -21.97275,49.07752 -49.07752,49.07752 -27.10477,0 -49.07752,-21.97275 -49.07752,-49.07752 0,-27.10477 21.97275,-49.07752 49.07752,-49.07752 27.10477,0 49.07752,21.97275 49.07752,49.07752 l 0,0 z"
+       transform="matrix(1.079545,0,0,1.079545,-521.3741,-27.12071)"
+       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path25345"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 285.83418,10.247082 c 2.82136,-3.2663359 6.0364,-6.0733784 11.97048,-5.7082016 l 256.30729,0 127.38367,101.1426896 c 1.40564,2.97091 2.11691,5.24745 2.47353,7.16934 l 0.48411,89.62664 c -2.36768,5.13743 -5.15318,9.52279 -10.12099,9.97998 l -29.56544,0 c 0,-87.62676 -129.5449,-87.80573 -129.5449,0 l -332.83376,0 c 0,-87.28688 -130.530777,-87.62179 -130.530777,0 l -36.065656,0 C 12.71653,211.01909 9.9497784,212.35674 5.8866518,202.02701 L 5.492299,137.57457 c 2.0973064,-5.86412 [...]
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path24454"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 640.23853,222.03787 c 0,27.10477 -21.97275,49.07752 -49.07752,49.07752 -27.10477,0 -49.07752,-21.97275 -49.07752,-49.07752 0,-27.10477 21.97275,-49.07752 49.07752,-49.07752 27.10477,0 49.07752,21.97275 49.07752,49.07752 l 0,0 z"
+       transform="matrix(1.079545,0,0,1.079545,-58.73586,-27.14299)"
+       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:30;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path25343"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 226.41173,97.07302 63.84346,-62.997849 c 1.43945,-1.223265 2.57157,-2.907517 5.07365,-2.536826 l 113.52297,0 0,77.161795 -177.57783,0 c -6.7601,-2.66645 -7.67484,-6.70827 -4.86225,-11.62712 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path25349"
+       inkscape:connector-curvature="0" />
+    <path
+       d="M 585.23723,89.186408 530.52565,34.0864 c -1.43945,-1.223265 -2.57157,-2.907517 -5.07365,-2.536826 l -95.50602,0 0,77.161786 162.76938,0 c 7.70221,-1.53592 -2.43326,-11.927375 -7.47813,-19.524952 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path26236"
+       inkscape:connector-curvature="0" />
+  </g>
+  <ellipse
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3169"
+     cx="439.12631"
+     cy="92.833603"
+     rx="19.866571"
+     ry="34.403088" />
+  <ellipse
+     id="path3171"
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     cx="374.1965"
+     cy="145.16507"
+     rx="19.866571"
+     ry="34.403088" />
+  <ellipse
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3173"
+     cx="309.26675"
+     cy="69.575195"
+     rx="19.866571"
+     ry="34.403088" />
+  <ellipse
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3177"
+     cx="169.7162"
+     cy="84.111694"
+     rx="19.866571"
+     ry="34.403088" />
+  <ellipse
+     id="path3179"
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     cx="101.87912"
+     cy="48.254955"
+     rx="19.866571"
+     ry="34.403088" />
+  <ellipse
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3181"
+     cx="51.485863"
+     cy="101.55551"
+     rx="19.866571"
+     ry="34.403088" />
+  <ellipse
+     id="path3183"
+     style="fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     cx="238.52237"
+     cy="41.47126"
+     rx="19.866571"
+     ry="34.403088" />
+</svg>
diff --git a/images/presets/vehicle/charging_station.png b/images/presets/vehicle/charging_station.png
new file mode 100644
index 0000000..eba4caf
Binary files /dev/null and b/images/presets/vehicle/charging_station.png differ
diff --git a/images/presets/vehicle/chicane.svg b/images/presets/vehicle/chicane.svg
new file mode 100644
index 0000000..27bf0a4
--- /dev/null
+++ b/images/presets/vehicle/chicane.svg
@@ -0,0 +1,124 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__chicane.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-6.7882962"
+     inkscape:cy="6.7186021"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846066,0,0,1.1346381,-204.78331,616.43253)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 5,1047.3621 -1,0 0,-2 1,0 z"
+       id="path4187"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4189"
+       d="m 5,1043.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9,1036.3621 c 0,0 -2,2 -2,4 0,2 2,4 2,4 z"
+       id="path4195"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4197"
+       d="m 3.0792093e-6,1044.3621 c 0,0 2,2 2,4 0,2 -2,4 -2,4 z"
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/choker.svg b/images/presets/vehicle/choker.svg
new file mode 100644
index 0000000..ebe2bc3
--- /dev/null
+++ b/images/presets/vehicle/choker.svg
@@ -0,0 +1,124 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__choker.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-20.613562"
+     inkscape:cy="6.7595663"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846066,0,0,1.1346381,-204.78331,616.43253)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 5,1047.3621 -1,0 0,-2 1,0 z"
+       id="path4187"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4189"
+       d="m 5,1043.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9,1040.3621 c 0,0 -2,2 -2,4 0,2 2,4 2,4 z"
+       id="path4195"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4197"
+       d="m 0,1040.3621 c 0,0 2,2 2,4 0,2 -2,4 -2,4 z"
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/compressed_air.svg b/images/presets/vehicle/compressed_air.svg
new file mode 100644
index 0000000..5ab848c
--- /dev/null
+++ b/images/presets/vehicle/compressed_air.svg
@@ -0,0 +1,119 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="01.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="31.999999"
+     inkscape:cx="7.4935932"
+     inkscape:cy="10.49724"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-349.99999px"
+       originy="-429px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-349.99999,-607.36218)">
+    <rect
+       style="fill:#0000b3;fill-opacity:1;stroke:none"
+       id="rect2989-6"
+       width="7"
+       height="7.0000005"
+       x="350"
+       y="616.36218" />
+    <rect
+       style="fill:#00b9ff;fill-opacity:1;stroke:none"
+       id="rect3769-27"
+       width="5"
+       height="1"
+       x="360"
+       y="610.36218" />
+    <path
+       style="fill:#666666;fill-opacity:1;stroke:none"
+       d="m 357,612.36218 2,-1 0,-1 -2,-1 z"
+       id="path3771-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#666666;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 353.5,614.36218 0,-2.5 c -0.006,-0.43612 0.37464,-0.9872 1,-1 0.83333,0 1.66667,0 2.5,0"
+       id="path3852"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;stroke:#00b9ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 360,612.36218 5,1.5"
+       id="path3879"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;stroke:#00b9ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 360,609.36218 5,-1.5"
+       id="path3879-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#0000b3;fill-opacity:1;stroke:none"
+       id="path2991-8"
+       sodipodi:cx="325"
+       sodipodi:cy="616.36218"
+       sodipodi:rx="3"
+       sodipodi:ry="3"
+       d="m 328,616.36218 c 0,1.65686 -1.34315,3 -3,3 -1.65685,0 -3,-1.34314 -3,-3 0,-1.65685 1.34315,-3 3,-3 1.65685,0 3,1.34315 3,3 z"
+       transform="matrix(1.1666667,0,0,1.1666667,-25.666689,-102.22702)" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/crossing.svg b/images/presets/vehicle/crossing.svg
new file mode 100644
index 0000000..30ed595
--- /dev/null
+++ b/images/presets/vehicle/crossing.svg
@@ -0,0 +1,137 @@
+<?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"
+   width="16"
+   height="7"
+   id="svg3044"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="01.svg">
+  <defs
+     id="defs3046" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="8.3073656"
+     inkscape:cy="-4.3213805"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3049">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-492,-423.14789)">
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect2998"
+       width="16"
+       height="7"
+       x="492"
+       y="423.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3772"
+       width="1.0000887"
+       height="0.9997701"
+       x="497"
+       y="423.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3774"
+       width="1"
+       height="1"
+       x="502"
+       y="423.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3776"
+       width="1"
+       height="2"
+       x="502"
+       y="425.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3778"
+       width="1"
+       height="2"
+       x="502"
+       y="428.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3780"
+       width="1"
+       height="2"
+       x="497"
+       y="428.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3782"
+       width="1"
+       height="2"
+       x="497"
+       y="425.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3861"
+       width="2"
+       height="1"
+       x="494"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3863"
+       width="2"
+       height="1"
+       x="504"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3865"
+       width="1"
+       height="1"
+       x="492"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3867"
+       width="1"
+       height="1"
+       x="507"
+       y="426.14789" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/crossing_island.svg b/images/presets/vehicle/crossing_island.svg
new file mode 100644
index 0000000..4ee196d
--- /dev/null
+++ b/images/presets/vehicle/crossing_island.svg
@@ -0,0 +1,115 @@
+<?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"
+   width="16"
+   height="7"
+   id="svg3044"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="03.svg">
+  <defs
+     id="defs3046" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="8.3073656"
+     inkscape:cy="-4.3213805"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3049">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-492,-423.14789)">
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect3817"
+       width="16"
+       height="7"
+       x="492"
+       y="423.14789" />
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect3819"
+       width="2"
+       height="1"
+       x="492"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3823"
+       width="2"
+       height="1"
+       x="493"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3825"
+       width="2"
+       height="1"
+       x="505"
+       y="426.14789" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="path3827"
+       sodipodi:cx="654.5"
+       sodipodi:cy="731.86218"
+       sodipodi:rx="2.5"
+       sodipodi:ry="2.5"
+       d="m 657,731.86218 a 2.5,2.5 0 1 1 -5,0 2.5,2.5 0 1 1 5,0 z"
+       transform="translate(-156,-305.21428)" />
+    <path
+       transform="translate(-153,-305.21428)"
+       sodipodi:type="arc"
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="path3827-1"
+       sodipodi:cx="654.5"
+       sodipodi:cy="731.86218"
+       sodipodi:rx="2.5"
+       sodipodi:ry="2.5"
+       d="m 657,731.86218 a 2.5,2.5 0 1 1 -5,0 2.5,2.5 0 1 1 5,0 z" />
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect3847"
+       width="4"
+       height="7"
+       x="498"
+       y="423.14789" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/crossing_ref_zebra.svg b/images/presets/vehicle/crossing_ref_zebra.svg
new file mode 100644
index 0000000..df88fc4
--- /dev/null
+++ b/images/presets/vehicle/crossing_ref_zebra.svg
@@ -0,0 +1,116 @@
+<?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"
+   width="16"
+   height="7"
+   id="svg3044"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="02.svg">
+  <defs
+     id="defs3046" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="8.3073656"
+     inkscape:cy="-4.3213805"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3049">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-492,-423.14789)">
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect3784"
+       width="16"
+       height="7"
+       x="492"
+       y="423.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3786"
+       width="6"
+       height="1"
+       x="497"
+       y="424.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3788"
+       width="6"
+       height="1"
+       x="497"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3790"
+       width="6"
+       height="1"
+       x="497"
+       y="428.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3853"
+       width="2"
+       height="1"
+       x="494"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3855"
+       width="1"
+       height="1"
+       x="492"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3857"
+       width="2"
+       height="1"
+       x="504"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3859"
+       width="1"
+       height="1"
+       x="507"
+       y="426.14789" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/crossing_traffic_signals.svg b/images/presets/vehicle/crossing_traffic_signals.svg
new file mode 100644
index 0000000..ce443f9
--- /dev/null
+++ b/images/presets/vehicle/crossing_traffic_signals.svg
@@ -0,0 +1,99 @@
+<?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"
+   width="6"
+   height="11"
+   id="svg3850"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="traffic_signal.svg">
+  <defs
+     id="defs3852" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="14.621652"
+     inkscape:cy="3.4019405"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3877"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="-1.7382813e-005px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3855">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1041.3622)">
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect3804-1"
+       width="6"
+       height="11"
+       x="0"
+       y="1041.3622"
+       ry="2" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3024-7"
+       sodipodi:cx="638"
+       sodipodi:cy="709.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,709.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-695.76191,267.44175)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3798-0"
+       sodipodi:cx="638"
+       sodipodi:cy="719.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,719.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-695.7619,261.48938)" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/crossing_unmarked.svg b/images/presets/vehicle/crossing_unmarked.svg
new file mode 100644
index 0000000..4263bca
--- /dev/null
+++ b/images/presets/vehicle/crossing_unmarked.svg
@@ -0,0 +1,102 @@
+<?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"
+   width="16"
+   height="7"
+   id="svg3044"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs3046" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.9195959"
+     inkscape:cx="0.21642479"
+     inkscape:cy="-4.9879976"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="463"
+     inkscape:window-height="453"
+     inkscape:window-x="150"
+     inkscape:window-y="150"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata3049">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-492,-423.14789)">
+    <rect
+       style="fill:#999999;fill-opacity:1;stroke:none"
+       id="rect3016"
+       width="16"
+       height="7"
+       x="492"
+       y="423.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3018"
+       width="2"
+       height="1"
+       x="493"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3020"
+       width="2"
+       height="1"
+       x="496"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3022"
+       width="2"
+       height="1"
+       x="499"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3024"
+       width="2"
+       height="1"
+       x="502"
+       y="426.14789" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3026"
+       width="2"
+       height="1"
+       x="505"
+       y="426.14789" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/cushion.svg b/images/presets/vehicle/cushion.svg
new file mode 100644
index 0000000..4766000
--- /dev/null
+++ b/images/presets/vehicle/cushion.svg
@@ -0,0 +1,128 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__cushion.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="-25.425035"
+     inkscape:cy="8.1568954"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846066,0,0,1.1346381,-204.78331,616.43253)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <rect
+       style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4156"
+       width="2"
+       height="4"
+       x="6"
+       y="1042.3621" />
+    <path
+       class="st5"
+       d="m 5,1047.3621 -1,0 0,-2 1,0 z"
+       id="path4187"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4189"
+       d="m 5,1043.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <rect
+       y="1042.3621"
+       x="1"
+       height="4"
+       width="2"
+       id="rect4191"
+       style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/emergency_phone.svg b/images/presets/vehicle/emergency_phone.svg
new file mode 100644
index 0000000..e37323f
--- /dev/null
+++ b/images/presets/vehicle/emergency_phone.svg
@@ -0,0 +1,76 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="emergency_phone.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="G:\Documents\map-icons\svg\vehicle">
+  <metadata
+     id="metadata2359">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 393.71875,16.71875 L 393.71875,16.75 L 84.75,16.75 L 84.75,16.78125 L 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 84.15625,462.84375 L 393.71875,462.78125 L 393.71875,462.8125 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 393.71875,16.71875 z M 393.71875,83.218 [...]
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:#039;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3661" />
+  <path
+     d="M 209.10368,104.93151 L 230.07396,115.41665 L 230.07396,171.13769 L 209.40326,180.42453 L 209.10368,104.93151 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3663" />
+  <path
+     d="M 268.48726,308.28724 L 289.9647,298.88456 L 332.77956,334.54577 L 326.68622,356.37222 L 268.48726,308.28724 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3665" />
+  <path
+     d="M 264.22557,318.22924 L 316.05213,361.66769 C 279.18783,387.1465 216.44219,382.39164 161.17161,277.1874 C 115.8358,180.53186 157.73742,112.445 198.01939,109.42514 L 198.01939,178.02792 C 183.23554,182.2095 178.36501,192.52789 180.34444,207.08674 L 233.96845,319.42755 C 245.36196,325.56714 255.22428,324.05076 264.22557,318.22924 z "
+     style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3667" />
+</svg>
diff --git a/images/presets/vehicle/ford.svg b/images/presets/vehicle/ford.svg
new file mode 100644
index 0000000..5dfee0f
--- /dev/null
+++ b/images/presets/vehicle/ford.svg
@@ -0,0 +1,125 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="ford12.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-3.9697886"
+     inkscape:cy="2.3971322"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1"
+       id="rect4148"
+       width="16.000004"
+       height="16.000004"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       ry="2.3864501" />
+    <path
+       style="fill:#000000"
+       d="m 8.1107127,1037.3621 -1.0610248,3.8423 -5.048498,0.5092 -0.00119,2.8581 c 0,0 1.9439315,-0.017 6.0511112,-0.017 0.1430592,1.601 1.4544383,2.7956 2.9684849,2.7956 1.597498,0 2.980406,-1.3547 2.980406,-3.0788 0,-1.3793 -0.870279,-2.5123 -2.038598,-2.9187 l 0,-3.9779 -3.8506843,0 z"
+       id="path4153"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccsscccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0070ff;stroke-width:1.73526525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 0.62451997,1051.114 1.84387033,-1.9325 1.8438702,1.9325 1.8438701,-1.9325 1.8438703,1.9325 1.8438707,-1.9325 1.8438704,1.9325 1.843869,-1.9325 1.843871,1.9325"
+       id="path4181"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff"
+       d="m 8.718716,1038.1256 2.420089,0 0,3.0666 -3.23076,0.024 0.810671,-3.0787 z"
+       id="path4151" />
+    <path
+       style="fill:#ffffff"
+       d="m 11.007668,1043.0395 c 0.762984,0 1.216005,0.5788 1.216005,1.2315 0,0.6527 -0.453021,1.2315 -1.216005,1.2315 -0.762985,0 -1.2160071,-0.5788 -1.2160071,-1.2315 0,-0.6527 0.4530221,-1.2315 1.2160071,-1.2315 z"
+       id="path4149" />
+    <circle
+       r="1.7789224"
+       cy="1045.5714"
+       cx="4.4972916"
+       id="circle4145"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.745;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.745;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4143"
+       cx="4.4972916"
+       cy="1045.5714"
+       r="0.91713595" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/fuel.svg b/images/presets/vehicle/fuel.svg
new file mode 100644
index 0000000..2b2f1cb
--- /dev/null
+++ b/images/presets/vehicle/fuel.svg
@@ -0,0 +1,91 @@
+<?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"
+   version="1.0"
+   width="224.8421"
+   height="258.6857"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="fuel2.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata13">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.7875"
+     inkscape:cx="-180.31746"
+     inkscape:cy="161.75238"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4135"
+     width="224.8421"
+     height="258.6857"
+     x="0"
+     y="0" />
+  <path
+     d="m 96.722164,245.98729 104.307056,-0.0664 0.0665,-16.17865 9.77818,0.0665 0,-207.584932 c -4e-5,-4.42786 -2.56575,-8.25555 -7.39162,-8.25555 l -107.076166,0 c -5.52644,0 -11.03631,3.98245 -11.03631,10.37179 l -0.11953,205.402142 11.35519,0 0.1167,16.2451 z"
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1897"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 85.876604,84.559648 -10.43835,-0.06182 c -0.06768,42.474392 0.24187,126.299802 0.41877,127.734072 0.37762,3.06168 0.14928,6.23358 -0.63683,9.12325 -16.36381,41.22353 -69.3136398,22.28952 -61.79545,-17.82336 16.51257,-39.7885 39.66654,-66.71211 51.19026,-113.641132 l 1.02585,34.885372 c -10.37097,20.18119 -28.66742,55.62424 -42.85675,85.2509 -1.19545,27.35321 31.34375,36.36524 41.5347,7.00526 4.54142,-51.39277 -0.17075,-107.41233 -0.25612,-161.118502 6.62236,-19.68707 13.92944,- [...]
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1899"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 107.00321,43.248708 -0.36109,53.08018 c 0,4.272082 3.42921,7.221792 7.40234,7.221792 l 68.78758,0.18055 c 4.17321,0 6.13852,-2.66164 6.13852,-6.319072 l 0,-53.9829 c 0,-5.21832 -2.98624,-6.77043 -6.77043,-6.77043 l -68.33621,0 c -3.91657,0 -6.86071,2.33958 -6.86071,6.58988 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1901"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/vehicle/hump.svg b/images/presets/vehicle/hump.svg
new file mode 100644
index 0000000..da833bc
--- /dev/null
+++ b/images/presets/vehicle/hump.svg
@@ -0,0 +1,122 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__hump_9.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="1.8121138"
+     inkscape:cy="7.2926704"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846053,0,0,1.1346381,-204.78305,616.43414)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1038.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5,1041.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5,1049.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1052.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <rect
+       style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4154"
+       width="9"
+       height="6.0000396"
+       x="2.3607492e-006"
+       y="1041.3621" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/island.svg b/images/presets/vehicle/island.svg
new file mode 100644
index 0000000..f860aea
--- /dev/null
+++ b/images/presets/vehicle/island.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="11"
+   height="16"
+   viewBox="0 0 11 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__island.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="1.6363787"
+     inkscape:cy="9.3284457"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4225"
+       d="m 9,1036.3621 c 0,0 1.999935,4 1.999935,8 0,4 -1.999935,8 -1.999935,8 l -9,0 0,-16 z"
+       style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       sodipodi:nodetypes="cscccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 4,1040.3621 c 0,0 2,2 2,4 0,2 -2,4 -2,4 z"
+       id="path4195"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/junction.svg b/images/presets/vehicle/junction.svg
new file mode 100644
index 0000000..b59785d
--- /dev/null
+++ b/images/presets/vehicle/junction.svg
@@ -0,0 +1,144 @@
+<?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"
+   width="15"
+   height="15"
+   viewBox="0 0 15 15"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="named_junction.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="-113.62735"
+     inkscape:cy="127.1975"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1037.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4149"
+       d="M 4.9999994e-7,1044.8621 15,1044.8621"
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#808080;stroke-width:7;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 7.5,1037.3621 0,15"
+       id="path4147"
+       inkscape:connector-curvature="0" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4155"
+       cx="7.5"
+       cy="1044.8621"
+       r="2.5" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 7.5,1037.3621 0,2"
+       id="path4151"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4153"
+       d="m 7.5,1040.3621 0,2"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4156"
+       d="m 7.5,1047.3621 0,2"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 7.5,1050.3621 0,2"
+       id="path4158"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4160"
+       d="m 15,1044.8621 -2,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 12,1044.8621 -2,0"
+       id="path4162"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 5,1044.8621 -2,0"
+       id="path4164"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4166"
+       d="m 2,1044.8621 -2,0"
+       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/milestone.svg b/images/presets/vehicle/milestone.svg
new file mode 100644
index 0000000..3bba0ee
--- /dev/null
+++ b/images/presets/vehicle/milestone.svg
@@ -0,0 +1,160 @@
+<?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"
+   width="10"
+   height="16"
+   viewBox="0 0 10 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__milestone2.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="90.509668"
+     inkscape:cx="2.2900263"
+     inkscape:cy="4.8427719"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:snap-page="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-paths="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+    <sodipodi:guide
+       position="662.00004,-146.00001"
+       orientation="1,0"
+       id="guide4273" />
+    <sodipodi:guide
+       position="652.00004,-148.00001"
+       orientation="1,0"
+       id="guide4275" />
+    <sodipodi:guide
+       position="650.00004,-142.00001"
+       orientation="0,1"
+       id="guide4277" />
+    <sodipodi:guide
+       position="656.00004,-174.00001"
+       orientation="0,1"
+       id="guide4279" />
+    <sodipodi:guide
+       position="657.48606,-176.99998"
+       orientation="1,0"
+       id="guide4283" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 5,1 A 4,4 0 0 0 1,5 L 1,15 9,15 9,5 A 4,4 0 0 0 5,1 Z"
+       transform="translate(-4.7683724e-7,1036.3621)"
+       id="circle4377"
+       inkscape:connector-curvature="0" />
+    <circle
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4348"
+       cx="5"
+       cy="1041.3621"
+       r="4" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none"
+       d="m 657.32083,1187.3629 c -0.46092,0 -0.92605,0.034 -1.39423,0.09 -16.366,3.2398 -9.73707,20.3533 -11.05691,32.2739 0.007,7.7011 6.59052,13.4062 14.19453,12.5508 16.36601,-3.37 9.74065,-20.1946 11.05675,-32.2737 0.0455,-7.1342 -5.88632,-12.7075 -12.80014,-12.6408 z m 0.24197,6.313 c 3.4452,0.026 6.21492,2.7762 6.20804,6.3285 l 0,20.0962 -0.0747,0.8222 -0.22416,0.7469 -0.29889,0.747 -0.37344,0.6709 c -0.94381,1.6214 -2.72557,2.6584 -4.55716,2.914 -1.83782,0.1898 -3.76286,-0.3932 - [...]
+       id="path4264"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 667,1199.3621 0,22 c 0,5 -4.51387,8 -9.51398,8 -5,0 -9.48614,-3 -9.48614,-8 0,-5 -1.2e-4,-16.8236 0,-22 1.2e-4,-5 4.48602,-9 9.48614,-9 5,0 9.51398,4 9.51398,9 z"
+       id="path4271"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sszsszs" />
+    <rect
+       style="opacity:1;fill:#999999;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4346"
+       width="8"
+       height="10"
+       x="1"
+       y="1041.3621"
+       rx="3.9512728e-005"
+       ry="3.9512728e-005" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 3.5071212,1043.8555 2.9929026,0 -1.9952684,5"
+       id="path4199"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/motorbike.svg b/images/presets/vehicle/motorbike.svg
new file mode 100644
index 0000000..3ad5afc
--- /dev/null
+++ b/images/presets/vehicle/motorbike.svg
@@ -0,0 +1,107 @@
+<?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"
+   version="1.0"
+   width="647.21484"
+   height="526.52521"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="motorbike.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata2443">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="0.754"
+     inkscape:cx="99.283819"
+     inkscape:cy="257.95757"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4138"
+     width="647.21484"
+     height="526.52521"
+     x="0"
+     y="0" />
+  <g
+     id="layer1"
+     transform="matrix(-1,0,0,1,666.76142,17.241379)">
+    <path
+       d="m 438.12826,429.16927 c -62.79839,-3.16426 -155.20224,7.89495 -186.20451,-31.3992 -14.20607,-74.76934 -54.80076,-112.40662 -124.50145,-113.18313 -42.795768,-82.64828 34.88862,-95.59972 87.99076,-116.8342 3.3733,38.41563 1.30629,78.34741 62.06817,100.7695 2.43911,-11.88771 7.42309,-21.59411 23.36684,-21.90641 l 89.81629,0.36511 63.52859,-49.65454 c 10.2664,16.32783 30.63852,37.24918 30.66898,48.92432 l 96.38822,0.36511 c 7.01925,5.97861 12.97283,21.84281 -1.09532,37.60601 -57.74 [...]
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path4749"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 281.45311,113.13794 0.25817,-34.043529 38.12235,-5.174139 0,-27.017909 -38.89686,6.464987 c 2.8605,-24.34011 18.51028,-41.939346 52.98479,-47.0361453 21.6463,1.5255947 44.34631,2.6992313 57.25914,43.1895493 3.78428,16.060343 1.42553,32.309362 -8.54869,46.305931 -32.28759,-17.699463 -56.45288,-5.617153 -78.49798,14.239165 l -22.68092,3.07209 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5636"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 215.04795,186.7383 113.54824,-85.80012 c 15.26233,-8.1407 32.0941,-9.689721 52.21028,2.55575 17.19617,15.62165 46.2444,58.89814 69.37031,88.35586 l -64.62391,48.37667 -62.06818,-86.34778 -98.21375,75.21202 c -7.55995,-13.19498 -9.32895,-28.68129 -10.22299,-42.3524 z"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6523"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 241.70075,414.19989 c 0.007,46.18129 -37.42819,83.62241 -83.60947,83.62241 -46.18129,0 -83.616619,-37.44112 -83.609476,-83.62241 -0.0071,-46.18129 37.428186,-83.62241 83.609476,-83.62241 46.18128,0 83.61661,37.44112 83.60947,83.62241 l 0,0 z"
+       transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 241.70075,414.19989 c 0.007,46.18129 -37.42819,83.62241 -83.60947,83.62241 -46.18129,0 -83.616619,-37.44112 -83.609476,-83.62241 -0.0071,-46.18129 37.428186,-83.62241 83.609476,-83.62241 46.18128,0 83.61661,37.44112 83.60947,83.62241 l 0,0 z"
+       transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/motorway_junction.svg b/images/presets/vehicle/motorway_junction.svg
new file mode 100644
index 0000000..9086365
--- /dev/null
+++ b/images/presets/vehicle/motorway_junction.svg
@@ -0,0 +1,246 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__motorway_junction2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="9.7451896"
+     inkscape:cy="9.6258065"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254-5"
+       width="16"
+       height="16"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2"
+       ry="2" />
+    <rect
+       rx="1.8715348"
+       y="1036.876"
+       x="0.51386845"
+       height="15"
+       width="15"
+       id="rect4217"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.51417869;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       d="m 4,1039.3621 1,0 0,10 -4,0 z"
+       style="fill:#ffffff;fill-opacity:1"
+       id="path4828"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       id="path4224"
+       style="fill:#ffffff;fill-opacity:1"
+       d="m 7,1039.3621 -1,0 0,10 4,0 z"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 9,1039.3621 5,0 c 0,0 0.635471,-0.048 0.878906,0.332 0.257216,0.4017 -0.132812,0.9532 -0.132812,0.9532 l -2.652344,4.0117 c -1.064693,1.4403 -0.333208,-3.0618 -0.605347,-3.3829 -0.470721,-0.5555 -4.3876174,-1.914 -2.4884039,-1.914 z"
+       id="path4226"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="scscccs" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 7.1093761,1042.8152 c 0,0 2.4710873,-1.9092 4.4687509,-1.8125 l 0.734375,0.8125 c -2.7561583,0.657 -4.5781258,3.9688 -4.5781258,3.9688 z"
+       id="path4228"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/parking/bicycle.svg b/images/presets/vehicle/parking/bicycle.svg
new file mode 100644
index 0000000..603bcc8
--- /dev/null
+++ b/images/presets/vehicle/parking/bicycle.svg
@@ -0,0 +1,168 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="bike.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\parking">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="573"
+     inkscape:window-width="797"
+     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"
+     inkscape:zoom="0.78541667"
+     inkscape:cx="240"
+     inkscape:cy="240"
+     inkscape:window-x="154"
+     inkscape:window-y="203"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4">
+    <marker
+       viewBox="0 0 10 10"
+       refY="5"
+       refX="10"
+       orient="auto"
+       markerWidth="4"
+       markerUnits="strokeWidth"
+       markerHeight="3"
+       id="ArrowStart">
+      <path
+         id="path2295"
+         d="M 10,0 L 0,5 L 10,10 L 10,0 z " />
+    </marker>
+    <marker
+       viewBox="0 0 10 10"
+       refY="5"
+       refX="0"
+       orient="auto"
+       markerWidth="4"
+       markerUnits="strokeWidth"
+       markerHeight="3"
+       id="ArrowEnd">
+      <path
+         id="path2292"
+         d="M 0,0 L 10,5 L 0,10 L 0,0 z " />
+    </marker>
+  </defs>
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 35.1875,16.78125 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 100.82515,91.817251 L 100.82515,197.08323 L 174.28737,197.08323 C 192.65275,197.0834 206.35224,191.55881 215.3859,180.50943 C 224.41915,169.46044 228.93588,157.44072 228.93609,144.45024 C 228.93588,124.74111 221.8435,110.25772 207.65893,101.00002 C 198.55062,94.878451 186.82953,91.817521 172.49561,91.817251 L 100.82515,91.817251 z M 51.327737,371.33202 L 51.327737,45.00748 L 169.80797,45.00748 C 182.49944,45.007806 194.70581,46.351626 206.42709,49.038943 C 218.148,51.726905 230 [...]
+     style="font-size:458.69091797px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text5426" />
+  <g
+     transform="matrix(0.7929425,0,0,0.7755778,-372.35858,292.1436)"
+     id="g2297">
+    <path
+       d="M 278.91286 461.96271 A 78.380615 78.380615 0 1 1  122.15163,461.96271 A 78.380615 78.380615 0 1 1  278.91286 461.96271 z"
+       id="path596"
+       sodipodi:cx="200.53224"
+       sodipodi:cy="461.96271"
+       sodipodi:rx="78.380615"
+       sodipodi:ry="78.380615"
+       sodipodi:type="arc"
+       style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:26;stroke-opacity:1"
+       transform="matrix(-0.7941975,0,0,0.7941975,844.6956,-247.27632)" />
+    <path
+       d="M 278.91286 461.96271 A 78.380615 78.380615 0 1 1  122.15163,461.96271 A 78.380615 78.380615 0 1 1  278.91286 461.96271 z"
+       id="path595"
+       sodipodi:cx="200.53224"
+       sodipodi:cy="461.96271"
+       sodipodi:rx="78.380615"
+       sodipodi:ry="78.380615"
+       sodipodi:type="arc"
+       style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#feffff;stroke-width:25.99983025;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="matrix(-0.7941975,0,0,0.7941975,1111.4801,-248.48899)" />
+    <path
+       d="M 902.90325,12.49531 L 742.83259,13.303766 L 686.24197,118.40065 L 794.57261,118.40065 L 907.75387,41.599088"
+       id="path594"
+       sodipodi:nodetypes="ccccc"
+       style="font-size:12px;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:16.57887268;stroke-linejoin:round;stroke-opacity:1" />
+    <path
+       d="M 896.75233,-50.489179 C 905.44709,-50.489179 912.01918,-50.683176 918.75551,-40.392067 C 920.69453,-36.961461 921.58106,-32.77272 920.86509,-28.603196 C 920.00619,-23.862035 917.19925,-19.203901 913.89022,-16.4464 C 909.5085,-12.79494 905.35013,-13.076632 906.02217,-9.7941826 C 906.88446,-5.5824266 909.51604,0.27036544 912.35992,9.7741226 C 915.24666,19.42106 918.67449,31.227993 922.03921,42.857413 C 925.40393,54.486808 928.70687,65.944962 931.32138,74.873497 C 932.62866,79.33 [...]
+       id="path593"
+       sodipodi:nodetypes="ccccscccccsscsccccccccccccssccc"
+       style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:25;stroke-linecap:round" />
+    <path
+       d="M 792.49843,115.11004 L 737.61984,-19.228118"
+       id="path599"
+       style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:19.85493851;stroke-opacity:1" />
+    <path
+       d="M 817.07944,72.236162 L 772.49063,166.5587"
+       id="path600"
+       style="font-size:12px;fill:#fffffd;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.24705219;stroke-linecap:round;stroke-opacity:1" />
+    <path
+       d="M 278.91286 461.96271 A 78.380615 78.380615 0 1 1  122.15163,461.96271 A 78.380615 78.380615 0 1 1  278.91286 461.96271 z"
+       id="path597"
+       sodipodi:cx="200.53224"
+       sodipodi:cy="461.96271"
+       sodipodi:rx="78.380615"
+       sodipodi:ry="78.380615"
+       sodipodi:type="arc"
+       style="font-size:12px;fill:#fffeff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:31.30500031;stroke-opacity:1"
+       transform="matrix(-0.3120051,0,0,0.3223192,856.53347,-30.297359)" />
+    <path
+       d="M 828.98308,75.129086 L 799.69311,75.397573"
+       id="path601"
+       sodipodi:nodetypes="cc"
+       style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:10.12601757;stroke-opacity:1" />
+    <path
+       d="M 787.42188,162.59237 L 758.13191,162.86086"
+       id="path602"
+       sodipodi:nodetypes="cc"
+       style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:10.12601757;stroke-opacity:1" />
+    <path
+       d="M 710.75194,-31.233245 L 779.63603,-31.233245 C 782.20847,-31.233245 785.5287,-26.682779 782.20847,-23.658842 C 778.6175,-20.24123 746.33729,-13.226203 746.33729,-13.226203 C 746.33729,-13.226203 737.47669,-10.796683 732.76054,-11.368321 C 728.04443,-11.939982 711.75234,-13.369101 710.75194,-31.233245 z "
+       id="path603"
+       sodipodi:nodetypes="cssccc"
+       style="font-size:12px;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.79419751pt;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/parking/handicapped.svg b/images/presets/vehicle/parking/handicapped.svg
new file mode 100644
index 0000000..8b027fb
--- /dev/null
+++ b/images/presets/vehicle/parking/handicapped.svg
@@ -0,0 +1,85 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="handicapped.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\parking">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="573"
+     inkscape:window-width="797"
+     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"
+     inkscape:zoom="0.78541667"
+     inkscape:cx="240"
+     inkscape:cy="240"
+     inkscape:window-x="154"
+     inkscape:window-y="203"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 35.1875,16.78125 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 89.366261,85.451204 L 89.366261,190.71718 L 162.82848,190.71718 C 181.19386,190.71735 194.89335,185.19276 203.92701,174.14338 C 212.96026,163.09439 217.47699,151.07467 217.4772,138.08419 C 217.47699,118.37506 210.38461,103.89167 196.20004,94.633974 C 187.09173,88.512404 175.37064,85.451474 161.03672,85.451204 L 89.366261,85.451204 z M 39.868851,364.96597 L 39.868851,38.641433 L 158.34908,38.641433 C 171.04055,38.641759 183.24692,39.985579 194.9682,42.672896 C 206.68911,45.36085 [...]
+     style="font-size:458.69091797px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text5426" />
+  <g
+     transform="matrix(0.6211784,0,0,0.6211784,65.912181,20.126619)"
+     inkscape:label="Ebene 1"
+     id="layer1"
+     style="fill:#ffffff">
+    <path
+       style="fill:#ffffff"
+       sodipodi:nodetypes="cccccccccccccccccccccccccccc"
+       id="path1631"
+       d="M 475.14239,512.18475 C 455.98022,507.82608 355.63011,511.46176 326.61273,511.45765 C 325.71817,448.40152 325.49175,385.33666 324.95769,322.27616 C 306.90185,303.3047 316.35912,268.99957 341.47238,261.63101 C 366.33467,251.38896 397.00821,274.41644 392.9612,301.45924 C 394.05008,322.82207 369.20964,328.02258 360.82849,339.80159 C 360.22642,364.7506 359.67445,389.78618 361.1968,414.70072 C 394.99835,417.41822 429.25883,415.41662 463.26461,415.88181 C 463.26461,426.84659 463.2646 [...]
+  </g>
+</svg>
diff --git a/images/presets/vehicle/parking/motorbike.svg b/images/presets/vehicle/parking/motorbike.svg
new file mode 100644
index 0000000..aaa57e7
--- /dev/null
+++ b/images/presets/vehicle/parking/motorbike.svg
@@ -0,0 +1,98 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="motorbike.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\parking">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="960"
+     inkscape:window-width="1400"
+     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"
+     inkscape:zoom="0.78541667"
+     inkscape:cx="240"
+     inkscape:cy="244.39003"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 35.1875,16.78125 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 83.000213,80.358365 L 83.000213,185.62434 L 156.46243,185.62434 C 174.82781,185.62451 188.5273,180.09992 197.56096,169.05054 C 206.59421,158.00155 211.11094,145.98183 211.11115,132.99135 C 211.11094,113.28222 204.01856,98.798831 189.83399,89.541135 C 180.72568,83.419565 169.00459,80.358635 154.67067,80.358365 L 83.000213,80.358365 z M 33.502803,359.87313 L 33.502803,33.548594 L 151.98303,33.548594 C 164.6745,33.54892 176.88087,34.89274 188.60215,37.580057 C 200.32306,40.268019  [...]
+     style="font-size:458.69091797px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text5426" />
+  <g
+     id="g2231"
+     transform="matrix(0.5572732,0,0,0.5572732,95.986428,176.24762)">
+    <path
+       d="M 243.22202,429.16927 C 306.02041,426.00501 398.42426,437.06422 429.42653,397.77007 C 443.6326,323.00073 484.22729,285.36345 553.92798,284.58694 C 596.72375,201.93866 519.03936,188.98722 465.93722,167.75274 C 462.56392,206.16837 464.63093,246.10015 403.86905,268.52224 C 401.42994,256.63453 396.44596,246.92813 380.50221,246.61583 L 290.68592,246.98094 L 227.15733,197.3264 C 216.89093,213.65423 196.51881,234.57558 196.48835,246.25072 L 100.10013,246.61583 C 93.08088,252.59444 87. [...]
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path4749" />
+    <path
+       d="M 399.89717,113.13794 L 399.639,79.094411 L 361.51665,73.920272 L 361.51665,46.902363 L 400.41351,53.36735 C 397.55301,29.02724 381.90323,11.428004 347.42872,6.3312047 C 325.78242,7.8567994 303.08241,9.030436 290.16958,49.520754 C 286.3853,65.581097 288.74405,81.830116 298.71827,95.826685 C 331.00586,78.127222 355.17115,90.209532 377.21625,110.06585 L 399.89717,113.13794 z "
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5636" />
+    <path
+       d="M 466.30233,186.7383 L 352.75409,100.93818 C 337.49176,92.79748 320.65999,91.248459 300.54381,103.49393 C 283.34764,119.11558 254.29941,162.39207 231.1735,191.84979 L 295.79741,240.22646 L 357.86559,153.87868 L 456.07934,229.0907 C 463.63929,215.89572 465.40829,200.40941 466.30233,186.7383 z "
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6523" />
+    <path
+       d="M 461.19779,393.53989 C 461.19083,438.54199 497.67029,475.02709 542.67237,475.02709 C 587.67447,475.02709 624.15392,438.54199 624.14696,393.53989 C 624.15392,348.53779 587.67447,312.05269 542.67237,312.05269 C 497.67029,312.05269 461.19083,348.53779 461.19779,393.53989 L 461.19779,393.53989 z "
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:34.10600281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410" />
+    <path
+       d="M 57.203317,393.65048 C 57.196359,438.65258 93.675816,475.13768 138.6779,475.13768 C 183.68,475.13768 220.15945,438.65258 220.15249,393.65048 C 220.15945,348.64838 183.68,312.16328 138.6779,312.16328 C 93.675816,312.16328 57.196359,348.64838 57.203317,393.65048 L 57.203317,393.65048 z "
+       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:34.10600281;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/parking/multi-storey.svg b/images/presets/vehicle/parking/multi-storey.svg
new file mode 100644
index 0000000..7c64cd7
--- /dev/null
+++ b/images/presets/vehicle/parking/multi-storey.svg
@@ -0,0 +1,78 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="garage.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\parking">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="573"
+     inkscape:window-width="797"
+     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"
+     inkscape:zoom="0.39270833"
+     inkscape:cx="58.606682"
+     inkscape:cy="308.45936"
+     inkscape:window-x="154"
+     inkscape:window-y="203"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 34.91962,16.78125 C 23.159007,16.266334 16.446451,24.30046 16.88837,37.15625 L 16.88837,443.5625 C 16.934923,452.2297 20.616541,462.63293 32.57587,462.84375 L 447.01337,462.8125 C 458.9727,462.6017 462.68557,452.19845 462.73212,443.53125 L 462.73212,37.09375 C 463.17403,24.237959 456.46149,16.20383 444.70087,16.71875 L 34.91962,16.78125 z "
+     style="fill:#003399;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 199.58664,207.89278 L 199.58664,290.7332 L 257.39868,290.7332 C 271.85155,290.73333 282.63254,286.38568 289.7417,277.69023 C 296.85053,268.99509 300.40503,259.53601 300.40519,249.31299 C 300.40503,233.80263 294.82359,222.40474 283.66086,215.11928 C 276.49296,210.30183 267.2689,207.89299 255.98863,207.89278 L 199.58664,207.89278 z M 160.63402,427.86052 L 160.63402,171.05523 L 253.87356,171.05523 C 263.86128,171.05548 273.46724,172.11302 282.69145,174.22784 C 291.91537,176.34316  [...]
+     style="font-size:458.69091797px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text5426" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+     d="M 104.40318,146.4191 L 247.00265,64.933687 L 376.87003,141.32626"
+     id="path3129" />
+</svg>
diff --git a/images/presets/vehicle/parking/park_ride.svg b/images/presets/vehicle/parking/park_ride.svg
new file mode 100644
index 0000000..6ca98fe
--- /dev/null
+++ b/images/presets/vehicle/parking/park_ride.svg
@@ -0,0 +1,97 @@
+<?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"
+   version="1.0"
+   width="15.981307"
+   height="14.98562"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="05.svg">
+  <metadata
+     id="metadata13">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview11"
+     showgrid="false"
+     inkscape:zoom="31.466667"
+     inkscape:cx="13.718139"
+     inkscape:cy="3.6026643"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3756"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="3.6328964e-009px"
+       originy="0.0009137265px" />
+  </sodipodi:namedview>
+  <defs
+     id="defs4" />
+  <path
+     d="m 13.497407,3.6698769e-4 0,0.001013002 -11.0739908,0 0,0.001013 -1.77640764,0 C 0.22548703,-0.01492762 -0.0151026,0.2549564 7.3595251e-4,0.68677083 l 0,13.65077317 C 0.0024069,14.629104 0.13436079,14.97854 0.56300431,14.98562 l 1.83913139,0 0.081764,0 11.0135073,-0.002 0,10e-4 1.919775,0 c 0.428644,-0.0071 0.56172,-0.356516 0.563389,-0.647641 l 0,-13.65181579 c 0.01584,-0.43181443 -0.22475,-0.70167819 -0.646272,-0.68437807231 z"
+     style="fill:#154889;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path3661"
+     inkscape:connector-curvature="0"
+     sodipodi:nodetypes="ccccccccccccccccc" />
+  <path
+     d="m 0.0456923,3.0207901 15.8632777,0 c 0,-0.97095 -0.521106,-1.83136 -1.327292,-2.02616998 l -13.2086937,0 C 0.53530805,1.1767701 0.0456923,2.0522001 0.0456923,3.0207901 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path19064"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 6.027495,6.9400901 1.0058994,0 8e-7,-0.97756 1.0100146,0.005 0.00162,0.97215 1.0045944,0 0,1.05293 -1.0045944,0 -0.00284,0.96903 -1.0101067,-0.005 0.0013,-0.96417 -1.0058994,0 0,-1.05293 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path19965"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 0.04117773,12.00261 15.86327827,0 c 0,0.96017 -0.521106,1.81105 -1.327292,2.0037 l -13.2086943,0 C 0.53079347,13.82619 0.04117773,12.96046 0.04117773,12.00261 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path19953"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 1.0505725,3.9237801 0,7.0839299 0.9054965,0 0,-2.7497199 1.6194746,0 c 2.4261575,-0.60821 1.9527779,-4.05181 0.050557,-4.33603 l -2.5755315,0.002 z m 0.9054965,1.04907 1.5275459,0 c 0.9797811,0.41444 1.1206673,1.6721 0.078136,2.22155 l -1.6056852,0 0,-2.22155 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path20852"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 10.019035,3.9275801 0,7.0914699 1.081935,0.002 0,-3.0493099 1.359262,0 1.4961,3.0456899 1.266213,0 -1.589151,-3.1146699 c 1.733734,-0.67529 1.952403,-3.35625 -0.403217,-3.96773 l -3.211142,-0.008 z m 1.081935,0.9874 1.904792,0 c 1.311898,0.39391 1.101513,1.65265 0.05839,2.10003 l -1.963176,0 0,-2.10003 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+     id="path22626"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/images/presets/vehicle/parking/parking.svg b/images/presets/vehicle/parking/parking.svg
new file mode 100644
index 0000000..1241f60
--- /dev/null
+++ b/images/presets/vehicle/parking/parking.svg
@@ -0,0 +1,74 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="parking.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="573"
+     inkscape:window-width="797"
+     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"
+     inkscape:zoom="0.78541667"
+     inkscape:cx="240"
+     inkscape:cy="240"
+     inkscape:window-x="154"
+     inkscape:window-y="203"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 35.1875,16.78125 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 175.94451,123.64749 L 175.94451,228.91347 L 249.40673,228.91347 C 267.77211,228.91364 281.4716,223.38905 290.50526,212.33967 C 299.53851,201.29068 304.05524,189.27096 304.05545,176.28048 C 304.05524,156.57135 296.96286,142.08796 282.77829,132.83026 C 273.66998,126.70869 261.94889,123.64776 247.61497,123.64749 L 175.94451,123.64749 z M 126.4471,403.16226 L 126.4471,76.837719 L 244.92733,76.837719 C 257.6188,76.838045 269.82517,78.181865 281.54645,80.869182 C 293.26736,83.557144  [...]
+     style="font-size:458.69091797px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:white;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text5426" />
+</svg>
diff --git a/images/presets/vehicle/parking/parking_space.svg b/images/presets/vehicle/parking/parking_space.svg
new file mode 100644
index 0000000..cf9354e
--- /dev/null
+++ b/images/presets/vehicle/parking/parking_space.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="16"
+   height="16.000114"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="02.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.839192"
+     inkscape:cx="8.3312618"
+     inkscape:cy="5.4156202"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="-390px"
+       originy="-484.99989px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-390,-551.36218)">
+    <rect
+       style="fill:#808080;fill-opacity:1;stroke:none"
+       id="rect2987"
+       width="16"
+       height="16"
+       x="390"
+       y="551.36218" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect2989"
+       width="2"
+       height="12"
+       x="392"
+       y="555.36218"
+       ry="0" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect2991"
+       width="1.9999964"
+       height="12.000114"
+       x="402"
+       y="555.36218" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect2993"
+       width="4"
+       height="2"
+       x="391"
+       y="555.36218" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect2995"
+       width="4"
+       height="2"
+       x="401"
+       y="555.36218" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/parking/underground.svg b/images/presets/vehicle/parking/underground.svg
new file mode 100644
index 0000000..5f21975
--- /dev/null
+++ b/images/presets/vehicle/parking/underground.svg
@@ -0,0 +1,91 @@
+<?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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="underground.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\parking"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\vehicle\parking\underground.png"
+   inkscape:export-xdpi="3"
+   inkscape:export-ydpi="3">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="667"
+     inkscape:window-width="797"
+     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"
+     inkscape:zoom="0.39270833"
+     inkscape:cx="210.69591"
+     inkscape:cy="308.45936"
+     inkscape:window-x="154"
+     inkscape:window-y="203"
+     inkscape:current-layer="svg2"
+     showgrid="false" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 240 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="480 : 240 : 1"
+       inkscape:persp3d-origin="240 : 160 : 1"
+       id="perspective10" />
+  </defs>
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 34.91962,16.78125 C 23.159007,16.266334 16.446451,24.30046 16.88837,37.15625 L 16.88837,443.5625 C 16.934923,452.2297 20.616541,462.63293 32.57587,462.84375 L 447.01337,462.8125 C 458.9727,462.6017 462.68557,452.19845 462.73212,443.53125 L 462.73212,37.09375 C 463.17403,24.237959 456.46149,16.20383 444.70087,16.71875 L 34.91962,16.78125 z"
+     style="fill:#003399;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 189.40096,85.664662 L 189.40096,168.50508 L 247.213,168.50508 C 261.66587,168.50521 272.44686,164.15756 279.55602,155.46211 C 286.66485,146.76697 290.21935,137.30789 290.21951,127.08487 C 290.21935,111.57451 284.63791,100.17662 273.47518,92.891162 C 266.30728,88.073712 257.08322,85.664872 245.80295,85.664662 L 189.40096,85.664662 z M 150.44834,305.6324 L 150.44834,48.827112 L 243.68788,48.827112 C 253.6756,48.827362 263.28156,49.884902 272.50577,51.999722 C 281.72969,54.115042  [...]
+     style="font-size:458.69091797px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DIN 1451 Mittelschrift"
+     id="text5426" />
+  <path
+     style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:36.63752747;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 82.981344,340.99604 L 396.63914,410.1976"
+     id="path3129"
+     sodipodi:nodetypes="cc" />
+</svg>
diff --git a/images/presets/vehicle/passing_place.svg b/images/presets/vehicle/passing_place.svg
new file mode 100644
index 0000000..e6b40bc
--- /dev/null
+++ b/images/presets/vehicle/passing_place.svg
@@ -0,0 +1,233 @@
+<?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"
+   width="16"
+   height="11"
+   viewBox="0 0 16 11"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__passing_place2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254835"
+     inkscape:cx="6.9728921"
+     inkscape:cy="3.1745323"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1041.3621)">
+    <g
+       id="g3382"
+       transform="matrix(0,-0.85169118,-1.1348835,0,436.02225,1173.8632)"
+       style="fill:#ffffff;fill-opacity:1">
+      <path
+         style="fill:#ffffff;fill-opacity:1"
+         d="m 147.89999,370.10001 6.5,0 0,14.1 -6.5,0 0,-2.64803 -4.41064,-1.71343 0.0264,-5.26615 4.38421,-1.82122 z"
+         id="XMLID_61_"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccc" />
+    </g>
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 16,1047.8621 -2.999998,0 -2.984376,4 -4.0468754,0 -2.9687505,-4 -3.00000057683724,0"
+       id="path4351"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M -4.7683724e-7,1041.8621 16,1041.8621"
+       id="path4208"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/repair_shop.svg b/images/presets/vehicle/repair_shop.svg
new file mode 100644
index 0000000..12c5537
--- /dev/null
+++ b/images/presets/vehicle/repair_shop.svg
@@ -0,0 +1,82 @@
+<?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"
+   version="1.0"
+   width="244.45622"
+   height="388.64725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="repair_shop3.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+        <dc:title></dc:title>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="988"
+     inkscape:window-width="1680"
+     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"
+     inkscape:zoom="1.0472222"
+     inkscape:cx="-201.47215"
+     inkscape:cy="187.63927"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:current-layer="svg2"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-maximized="1" />
+  <defs
+     id="defs4" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4134"
+     width="244.45622"
+     height="388.64725"
+     x="0"
+     y="0" />
+  <path
+     inkscape:connector-curvature="0"
+     id="path29027"
+     style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 147.25287,210.0689 0,-67.91345 55.93887,-22.0924 -0.0401,-23.934094 c 0,0 -55.91335,0.08074 -55.92641,0 -0.0123,-0.07635 -0.0401,-26.033771 -0.0401,-26.033771 l 56.00659,0 0,-23.199903 -55.63324,-23.174955 -47.800456,0.400951 -54.646027,23.372757 0,22.60115 56.006583,0 0,26.058719 -56.044006,0 0,23.801336 56.124196,22.42563 0,67.74059 -5.988418,0 -5.043962,163.93541 68.07876,0.0401 -5.05375,-164.02807 z"
+     sodipodi:nodetypes="ccccccccccccccccccccccc" />
+</svg>
diff --git a/images/presets/vehicle/rest_area.svg b/images/presets/vehicle/rest_area.svg
new file mode 100644
index 0000000..dab02bf
--- /dev/null
+++ b/images/presets/vehicle/rest_area.svg
@@ -0,0 +1,247 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__rest_area3.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="10.860798"
+     inkscape:cy="7.7809326"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="false"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254-5"
+       width="16"
+       height="16"
+       x="-5.2452083e-006"
+       y="1036.3621"
+       rx="2"
+       ry="2" />
+    <rect
+       style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4322"
+       width="15"
+       height="15"
+       x="0.49176642"
+       y="1036.8539"
+       rx="1.6237757"
+       ry="1.6237757" />
+    <g
+       id="g4330">
+      <path
+         style="fill:#ffffff;fill-opacity:1"
+         id="polyline3053"
+         d="m 6,1049.3621 2,0 0,1.4864 1,0 -1e-7,-1.4864 2,0 0,-1 -5,0 z"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccc" />
+      <path
+         style="fill:#ffffff;fill-opacity:1"
+         id="path3055"
+         d="m 12,1047.3621 -2,0 1.500001,-2 -1,0 1.5,-2 -1,0 1.5,-2 1.5,2 -1,0 1.5,2 -1,0 1.5,2 -2,0 0,3.4864 -1,0 z"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccccccccccccccc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="text5426"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:458.69091797px;line-height:100%;font-family:'DIN 1451 Mittelschrift';text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 3.5321082,1039.7267 0,3.9634 2.7658333,0 c 0.6914515,0 1.2072343,-0.2081 1.5473488,-0.6243 0.3400995,-0.4159 0.5101528,-0.8683 0.5101609,-1.3575 -8.1e-6,-0.742 -0.2670341,-1.2873 -0.8010792,-1.6358 -0.3429254,-0.2305 -0.7842216,-0.3458 -1.3238898,-0.3458 z m -1.8635646,11.1218 0,-12.8841 4.4607497,0 c 0.4778305,0 0.9373973,0.05 1.3787005,0.1517 0.4412888,0.102 0.9008549,0.3373 1.3786994,0.7082 0.3710183,0.287 0.6858284,0.6818 0.9444307,1.185 0.2585851,0.5031 0.3878821,1.086 [...]
+         sodipodi:nodetypes="ccscccscccscccccsccc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/bicycle-designated.svg b/images/presets/vehicle/restriction/bicycle-designated.svg
new file mode 100644
index 0000000..63ed233
--- /dev/null
+++ b/images/presets/vehicle/restriction/bicycle-designated.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.1"
+   height="725"
+   width="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="bicycle-designated.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\bicycle-designated.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata13">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs11">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective15" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <path
+     style="fill: white; fill-rule: evenodd; stroke: black; stroke-width: 2.5px;"
+     id="OuterCircle"
+     d="M 712.50000,362.50000 C 712.50000,555.79966 555.79966,712.50000 362.50000,712.50000 C 169.20034,712.50000 12.500000,555.79966 12.500000,362.50000 C 12.500000,169.20034 169.20034,12.500000 362.50000,12.500000 C 555.79966,12.500000 712.50000,169.20034 712.50000,362.50000 L 712.50000,362.50000 z " />
+  <path
+     style="fill: rgb(0, 51, 153); fill-opacity: 1; fill-rule: evenodd;"
+     id="BlueCircle"
+     d="M 361.44830,27.362500 C 176.66244,27.362500 25.948300,178.07664 25.948300,362.86250 C 25.948300,547.64836 176.66244,698.36250 361.44830,698.36250 C 546.23416,698.36250 696.94830,547.64836 696.94830,362.86250 C 696.94830,178.07664 546.23416,27.362500 361.44830,27.362500 z " />
+  <g
+     transform="matrix(0.612193, 0, 0, 0.612193, 54.873, 171.169)"
+     id="BikeSymbol">
+    <circle
+       r="161"
+       cy="409"
+       cx="215"
+       style="fill: none; stroke: white; stroke-width: 40px;"
+       id="FrontWheel" />
+    <circle
+       r="161"
+       cy="406"
+       cx="790"
+       style="fill: none; stroke: white; stroke-width: 40px;"
+       id="RearWheel" />
+    <path
+       style="fill: rgb(255, 255, 255); fill-rule: evenodd; stroke: none;"
+       id="Frame"
+       d="M 429.48437,15.467118 C 296.91790,16.759190 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196.00000,407.00000 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.53640 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.44550 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.43820,121.67535 L 693.84208,87.564675 L 73 [...]
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/bicycle.svg b/images/presets/vehicle/restriction/bicycle.svg
new file mode 100644
index 0000000..a6da38d
--- /dev/null
+++ b/images/presets/vehicle/restriction/bicycle.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   width="725"
+   height="725"
+   version="1.1"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="bicycle.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\bicycle.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata13">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs11">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective15" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <circle
+     style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 2.5px;"
+     r="350"
+     cx="362.5"
+     cy="362.5"
+     id="OuterCircle" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     style="stroke: rgb(204, 0, 0); stroke-width: 93.75; fill: none;"
+     id="RedCircle" />
+  <g
+     id="BikeSymbol"
+     transform="matrix(0.446708, 0, 0, 0.446708, 138.029, 227.267)">
+    <circle
+       cx="215"
+       cy="409"
+       r="161"
+       style="fill: none; stroke: black; stroke-width: 40px;"
+       id="FrontWheel" />
+    <circle
+       cx="790"
+       cy="406"
+       r="161"
+       style="fill: none; stroke: black; stroke-width: 40px;"
+       id="RearWheel" />
+    <path
+       style="fill: black; fill-rule: evenodd; stroke: none;"
+       id="Frame"
+       d="M 429.48437,15.467118 C 296.91790,16.759190 319.39993,1.7711686 248.07762,230.98455 C 189.97511,414.12586 196.30387,394.15363 196.00000,407.00000 C 195.78704,416.98022 203.84333,424.89312 213.96694,425.57043 C 235.02054,423.44166 226.16492,427.84741 299.15748,201.18078 C 565.86963,482.53640 465.80592,436.91194 609.34064,442.62576 C 797.98299,440.81686 813.31557,452.44550 815.55516,424.79518 C 815.29674,415.40613 810.90371,409.80716 681.43820,121.67535 L 693.84208,87.564675 L 73 [...]
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/city_limit.svg b/images/presets/vehicle/restriction/city_limit.svg
new file mode 100644
index 0000000..b0d5707
--- /dev/null
+++ b/images/presets/vehicle/restriction/city_limit.svg
@@ -0,0 +1,247 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_sign__city_limit3.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="-0.87664197"
+     inkscape:cy="10.598224"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#f0c900;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4360"
+       width="15.5"
+       height="10.5"
+       x="0.25"
+       y="1036.6121"
+       ry="1.6572816" />
+    <g
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="text4362"
+       transform="matrix(0.86368746,0,0,0.86368746,1.0902142,137.09815)">
+      <path
+         d="m 6.8139168,1047.7859 q 0,0.9 -0.28,1.57 -0.2800001,0.66 -0.7900002,1.1 -0.5100001,0.43 -1.2200002,0.65 -0.7100002,0.21 -1.5600003,0.21 -0.4200001,0 -0.9300002,-0.04 -0.5000001,-0.03 -0.9100002,-0.13 l 0,-6.72 q 0.4100001,-0.1 0.9100002,-0.13 0.5100001,-0.04 0.9300002,-0.04 0.8500001,0 1.5600003,0.22 0.7100001,0.21 1.2200002,0.65 0.5100001,0.43 0.7900002,1.1 0.28,0.66 0.28,1.56 z m -3.7700007,2.68 q 1.3800003,0 2.0600004,-0.7 0.6800001,-0.71 0.6800001,-1.98 0,-1.27 -0.6800001 [...]
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.00000191px;font-family:Ubuntu"
+         id="path4423"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 9.1228236,1051.2559 -0.93,0 0,-5.2 0.93,0 0,5.2 z m -0.47,-6.14 q -0.25,0 -0.43,-0.16 -0.17,-0.17 -0.17,-0.45 0,-0.28 0.17,-0.44 0.18,-0.17 0.43,-0.17 0.25,0 0.42,0.17 0.18,0.16 0.18,0.44 0,0.28 -0.18,0.45 -0.17,0.16 -0.42,0.16 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.00000191px;font-family:Ubuntu"
+         id="path4425"
+         inkscape:connector-curvature="0" />
+      <path
+         d="m 14.871887,1051.1059 q -0.32,0.08 -0.85,0.17 -0.52,0.09 -1.21,0.09 -0.6,0 -1.01,-0.17 -0.41,-0.18 -0.66,-0.5 -0.25,-0.32 -0.36,-0.75 -0.11,-0.44 -0.11,-0.97 l 0,-2.92 0.93,0 0,2.72 q 0,0.95 0.3,1.36 0.3,0.41 1.01,0.41 0.15,0 0.31,-0.01 0.16,-0.01 0.3,-0.02 0.14,-0.02 0.25,-0.03 0.12,-0.02 0.17,-0.04 l 0,-4.39 0.93,0 0,5.05 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.00000191px;font-family:Ubuntu"
+         id="path4427"
+         inkscape:connector-curvature="0" />
+    </g>
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4263"
+       width="2"
+       height="5"
+       x="7"
+       y="1047.3621"
+       ry="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/dead_end.svg b/images/presets/vehicle/restriction/dead_end.svg
new file mode 100644
index 0000000..8475fe1
--- /dev/null
+++ b/images/presets/vehicle/restriction/dead_end.svg
@@ -0,0 +1,72 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="480"
+   height="480"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="dead_end.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="G:\Documents\map-icons\svg\vehicle\restrictions">
+  <metadata
+     id="metadata2625">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs4" />
+  <path
+     d="M 30.856274,5.7720243 L 450.86109,5.7720243 C 461.67691,6.5627045 473.93298,17.615789 474.52755,30.636789 L 474.52755,449.4433 C 474.57722,459.76184 462.73404,473.63554 449.36321,474.30807 L 29.957547,474.30807 C 20.433732,473.72489 5.5262338,458.92955 5.0927831,449.14373 L 5.691934,30.936364 C 4.6103723,24.633922 19.978002,5.6381226 30.856274,5.7720243 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path3669" />
+  <path
+     d="M 35.1875,16.78125 C 23.426887,16.266334 16.714331,24.30046 17.15625,37.15625 L 17.15625,443.5625 C 17.202803,452.2297 20.884421,462.63293 32.84375,462.84375 L 447.28125,462.8125 C 459.24058,462.6017 462.95345,452.19845 463,443.53125 L 463,37.09375 C 463.44191,24.237959 456.72937,16.20383 444.96875,16.71875 L 35.1875,16.78125 z "
+     style="fill:#039;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.94117647"
+     id="path3661" />
+  <path
+     d="M 209.01102,465.74274 L 209.01102,204.1964 L 129.70283,204.15164 L 129.65808,129.65808 L 350.34572,129.65808 L 350.39047,204.1964 L 271.13083,204.15164 L 271.17559,465.73894 L 209.01102,465.74274 z "
+     style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 136.5311,136.49742 L 343.54167,136.49742 L 343.46164,196.65367 L 136.51063,196.65367 L 136.5311,136.49742 z "
+     style="fill:#c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1885" />
+</svg>
diff --git a/images/presets/vehicle/restriction/foot-designated.svg b/images/presets/vehicle/restriction/foot-designated.svg
new file mode 100644
index 0000000..e07f1e2
--- /dev/null
+++ b/images/presets/vehicle/restriction/foot-designated.svg
@@ -0,0 +1,103 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="foot-designated.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\foot-designated.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata13">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective15" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill: white; stroke: black; stroke-width: 2.5px;"
+     id="circle4" />
+  <path
+     d="M -176.30905,369.66949 C -176.30905,540.44638 -314.75107,678.88839 -485.52795,678.88839 C -656.30484,678.8884 -794.74686,540.44638 -794.74686,369.66949 C -794.74686,198.8926 -656.30484,60.450585 -485.52795,60.450585 C -314.75107,60.450585 -176.30905,198.8926 -176.30905,369.66949 z "
+     transform="matrix(1.06121, 0, 0, 1.06121, 877.745, -29.7955)"
+     style="opacity: 1; fill: rgb(0, 51, 153); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+     id="path1883" />
+  <g
+     transform="matrix(2.71584, 0, 0, 2.71584, 681.428, -1419.77)"
+     style="fill: white;"
+     id="g1953">
+    <path
+       d="M -162.2598,695.78989 L -151.80022,695.78989 L -151.80022,736.88109 C -151.80022,740.95037 -161.88625,740.37837 -161.88625,736.88109 L -162.2598,695.78989 z "
+       style="fill: white; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1914" />
+    <path
+       d="M -147.81755,695.78989 L -137.35797,695.78989 L -137.35797,745.84644 C -137.35797,751.90761 -147.444,751.70751 -147.444,745.84644 L -147.81755,695.78989 z "
+       style="fill: white; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1916" />
+    <path
+       d="M -185.87304,691.92858 C -182.89291,677.53426 -180.81137,664.83758 -160.64726,645.8354 L -160.64726,617.04368 L -164.21321,616.11917 C -167.51865,627.64359 -167.35037,638.24779 -164.18142,649.27418 C -165.83595,650.93571 -167.39427,652.69346 -168.96781,654.43599 C -172.345,652.75791 -172.69172,647.5109 -174.38276,642.79774 L -176.44766,629.77699 L -174.51484,618.89269 C -170.93552,610.87214 -168.6994,602.51101 -154.83609,597.23286 L -146.51555,597.10078 C -130.49677,599.87618 - [...]
+       style="fill: white; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1918" />
+    <path
+       d="M -135.36376,575.69151 C -135.36084,583.43019 -141.63345,589.70517 -149.37212,589.70517 C -157.1108,589.70517 -163.38341,583.43019 -163.38049,575.69151 C -163.38341,567.95284 -157.1108,561.67785 -149.37212,561.67785 C -141.63345,561.67785 -135.36084,567.95284 -135.36376,575.69151 L -135.36376,575.69151 z "
+       style="fill: white; fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+       id="path1922" />
+    <path
+       d="M -72.793169,650.58949 C -72.790561,657.5027 -78.39409,663.10836 -85.3073,663.10836 C -92.220518,663.10836 -97.824047,657.5027 -97.821439,650.58949 C -97.824047,643.67628 -92.220518,638.07063 -85.3073,638.07063 C -78.39409,638.07063 -72.790561,643.67628 -72.793169,650.58949 L -72.793169,650.58949 z "
+       style="fill: white; fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+       id="path1924" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/foot.svg b/images/presets/vehicle/restriction/foot.svg
new file mode 100644
index 0000000..3fb2279
--- /dev/null
+++ b/images/presets/vehicle/restriction/foot.svg
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   width="725"
+   height="725"
+   version="1.1"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="foot.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\foot.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs14">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective18" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <circle
+     style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 2.5px;"
+     r="350"
+     cx="362.5"
+     cy="362.5"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     style="stroke: rgb(204, 0, 0); stroke-width: 93.75; fill: none;"
+     id="circle6" />
+  <g
+     id="PedestrianSymbol"
+     transform="matrix(0.594656, 0, 0, 0.594656, 244.082, 120.638)">
+    <circle
+       r="56"
+       cx="188"
+       cy="105"
+       style="fill: black; stroke: none;"
+       id="circle9" />
+    <path
+       style="fill: black; stroke: none;"
+       d="M 22.000000,427.00000 C 173.66667,190.33333 159.33333,183.66667 216.00000,182.00000 C 249.00000,183.00000 250.00000,192.00000 306.00000,236.00000 C 375.00000,286.66667 370.00000,287.33333 369.00000,343.00000 C 368.66667,410.00000 373.33333,405.00000 320.00000,430.00000 L 320.00000,317.00000 L 273.00000,275.00000 L 273.00000,434.00000 L 161.00000,433.00000 L 160.00000,307.00000 C 68.000000,449.00000 74.000000,441.00000 22.000000,427.00000 z     M 163.00000,450.00000 L 272.00000, [...]
+       id="path11" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/give_way.svg b/images/presets/vehicle/restriction/give_way.svg
new file mode 100644
index 0000000..ccb6d7f
--- /dev/null
+++ b/images/presets/vehicle/restriction/give_way.svg
@@ -0,0 +1,220 @@
+<?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"
+   width="16"
+   height="15"
+   viewBox="0 0 16 15"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__give_way2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="10.7423"
+     inkscape:cy="6.8371201"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true"
+     inkscape:snap-grids="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1037.3621)">
+    <path
+       sodipodi:nodetypes="cccc"
+       inkscape:connector-curvature="0"
+       id="path4210"
+       d="m 0.99993,1038.9 14,0 -7,12.2976 z"
+       style="fill:#ffffff;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ee1c23;stroke-width:1.7;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 1.7127388,1039.3097 12.5745242,0 -6.287262,11.1049 z"
+       id="path4208"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/goods.svg b/images/presets/vehicle/restriction/goods.svg
new file mode 100644
index 0000000..7e44c0f
--- /dev/null
+++ b/images/presets/vehicle/restriction/goods.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   width="725"
+   height="725"
+   version="1.1"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="goods.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\goods.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata20">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs18">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective22" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <circle
+     style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 2.5px;"
+     r="350"
+     cx="362.5"
+     cy="362.5"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     style="stroke: rgb(204, 0, 0); stroke-width: 93.75; fill: none;"
+     id="circle6" />
+  <g
+     id="TruckSymbol"
+     transform="matrix(0.436865, 0, 0, 0.436865, 143.872, 253.031)">
+    <path
+       style="fill: black; stroke: none; fill-rule: evenodd;"
+       d="M 295.78419,86.816926 L 295.78419,335.08252 L 687.71625,335.40310 C 664.71649,354.19396 650.35734,380.09418 650.54503,414.08813 L 261.47933,413.85667 C 257.75238,281.97351 70.642616,282.42223 66.576854,413.09434 C 38.473995,412.88466 34.575813,406.50199 34.304870,380.61469 L 34.304868,281.61469 C 33.952015,237.37253 28.426810,266.57731 61.177014,182.67997 C 94.875059,93.246445 85.585107,101.51291 116.06480,99.204795 L 295.78419,86.816926 z M 217.93865,233.19966 L 219.48981,127. [...]
+       id="path9" />
+    <rect
+       x="335.82718"
+       y="12.158683"
+       height="301.70154"
+       width="631.32404"
+       style="fill: black; stroke: none;"
+       id="rect11" />
+    <circle
+       r="77"
+       cx="164"
+       cy="412"
+       style="fill: black; stroke: none;"
+       id="circle13" />
+    <circle
+       r="77"
+       cx="748"
+       cy="412"
+       style="fill: black; stroke: none;"
+       id="circle15" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/horse-designated.svg b/images/presets/vehicle/restriction/horse-designated.svg
new file mode 100644
index 0000000..1ab5fa7
--- /dev/null
+++ b/images/presets/vehicle/restriction/horse-designated.svg
@@ -0,0 +1,104 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="horse-designated.svg"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\Internet\Desktop\Wiki\SVG"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\horse-designated.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="749"
+     inkscape:window-width="1024"
+     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"
+     inkscape:zoom="0.52137931"
+     inkscape:cx="362.5"
+     inkscape:cy="369.21296"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:current-layer="svg2"
+     showgrid="false" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective12" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill: white; stroke: black; stroke-width: 2.5px;"
+     id="circle4" />
+  <path
+     d="M -176.30905 369.66949 A 309.2189 309.2189 0 1 1  -794.74686,369.66949 A 309.2189 309.2189 0 1 1  -176.30905 369.66949 z"
+     transform="matrix(1.06121, 0, 0, 1.06121, 877.745, -29.7955)"
+     style="opacity: 1; fill: rgb(0, 51, 153); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+     id="path1883" />
+  <g
+     id="layer1"
+     transform="matrix(1.2755, 0, 0, 1.2755, 106.644, 128.909)"
+     style="fill: white;">
+    <g
+       id="g1892"
+       transform="translate(2.93016, -2.25117)"
+       style="fill: white;">
+      <path
+         id="path1882"
+         style="fill: white; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+         d="M 52.413594,38.866939 L 52.913594,62.616939 L 6.4448442,115.14819 L 18.069844,127.27319 L 71.101094,116.14819 L 94.319844,156.05444 C 84.123594,180.44952 92.866694,191.61419 98.382344,208.08569 L 40.788594,244.42944 L 40.788594,324.74194 L 61.507344,313.61694 L 61.007344,259.08569 L 108.97609,232.80444 L 153.91359,334.83569 L 149.97609,355.21072 L 170.60109,355.55442 L 173.63234,335.33569 L 137.75734,231.30444 C 171.91348,240.9542 206.38281,242.73849 241.31984,231.30444 L 275 [...]
+      <path
+         id="path1884"
+         style="opacity: 1; fill: white; fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+         transform="translate(-40.4436, -589.044)"
+         d="M 241.42858,621.29077 C 241.42858,634.21029 230.95524,644.68363 218.03572,644.68363 C 205.1162,644.68363 194.64286,634.21029 194.64286,621.29077 C 194.64286,608.37125 205.1162,597.89791 218.03572,597.89791 C 230.95524,597.89791 241.42858,608.37125 241.42858,621.29077 L 241.42858,621.29077 z " />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/horse.svg b/images/presets/vehicle/restriction/horse.svg
new file mode 100644
index 0000000..cba7179
--- /dev/null
+++ b/images/presets/vehicle/restriction/horse.svg
@@ -0,0 +1,99 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="horse.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\horse.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective14" />
+  </defs>
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill: white; stroke: black; stroke-width: 2.5px;"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+       id="circle6" />
+  </g>
+  <g
+     transform="matrix(0.9761, 0, 0, 0.9761, 166.15, 173.684)"
+     id="layer1">
+    <g
+       transform="translate(2.93016, -2.25117)"
+       id="g1892">
+      <path
+         d="M 52.413594,38.866939 L 52.913594,62.616939 L 6.4448442,115.14819 L 18.069844,127.27319 L 71.101094,116.14819 L 94.319844,156.05444 C 84.123594,180.44952 92.866694,191.61419 98.382344,208.08569 L 40.788594,244.42944 L 40.788594,324.74194 L 61.507344,313.61694 L 61.007344,259.08569 L 108.97609,232.80444 L 153.91359,334.83569 L 149.97609,355.21072 L 170.60109,355.55442 L 173.63234,335.33569 L 137.75734,231.30444 C 171.91348,240.9542 206.38281,242.73849 241.31984,231.30444 L 275 [...]
+         style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+         id="path1882" />
+      <path
+         d="M 241.42858,621.29077 C 241.42858,634.21029 230.95524,644.68363 218.03572,644.68363 C 205.1162,644.68363 194.64286,634.21029 194.64286,621.29077 C 194.64286,608.37125 205.1162,597.89791 218.03572,597.89791 C 230.95524,597.89791 241.42858,608.37125 241.42858,621.29077 L 241.42858,621.29077 z "
+         transform="translate(-40.4436, -589.044)"
+         style="opacity: 1; fill: black; fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+         id="path1884" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/maxheight.svg b/images/presets/vehicle/restriction/maxheight.svg
new file mode 100644
index 0000000..5115412
--- /dev/null
+++ b/images/presets/vehicle/restriction/maxheight.svg
@@ -0,0 +1,110 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="maxheight.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\maxheight.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata15">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective17" />
+  </defs>
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill: white; stroke: black; stroke-width: 2.5px;"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+       id="circle6" />
+  </g>
+  <path
+     d="M 269.3845,421.14832 L 269.3845,425.55264 C 269.38439,427.25927 269.3229,429.15029 269.20006,431.22572 C 269.07698,433.30123 268.65033,436.17223 267.92012,439.83873 C 264.4994,451.56124 258.02707,461.08529 248.50312,468.4109 C 238.97898,475.73652 228.11352,479.39933 215.9067,479.39933 C 206.13666,479.39933 196.97778,476.46871 188.43002,470.60747 C 179.88219,464.74623 174.26688,458.70241 171.58407,452.47599 C 168.90122,446.24961 167.1313,441.24352 166.2743,437.45771 C 165.41726,43 [...]
+     style="font-size: 366.296px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text2010" />
+  <g
+     transform="matrix(0, -1, 1, 0, -0.607365, 724.393)"
+     id="g1994">
+    <path
+       d="M 186.83434,361.43995 L 136.72791,275.35796 C 113.58632,331.82472 116.27723,403.3499 136.72791,449.64204 L 186.83434,361.43995 z "
+       style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1983" />
+    <path
+       d="M 536.95093,361.43995 L 587.05736,275.35796 C 610.19895,331.82472 607.50804,403.3499 587.05736,449.64204 L 536.95093,361.43995 z "
+       style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+       id="path1985" />
+  </g>
+  <path
+     d="M 432.43464,477.15265 L 432.5417,353.5195 L 458.03137,353.41244 L 457.9243,364.5368 C 472.6622,344.18105 490.4793,351.59073 502.43147,362.23991 C 514.75394,352.79901 541.93237,338.82206 556.45711,379.27195 L 556.45711,477.32785 L 529.96498,477.32785 L 529.96498,386.10423 C 529.64303,383.78764 526.56442,378.85346 523.71676,378.75849 C 523.71676,378.75849 513.26756,379.23284 513.26756,379.23284 C 510.0012,379.14309 507.36334,382.76385 507.2783,386.2113 L 507.17124,477.30838 L 480.6 [...]
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1991" />
+  <path
+     d="M 282.55272,450.95142 L 307.68201,450.95142 L 307.68201,476.75703 L 282.6813,495.41113 L 282.55272,450.95142 z "
+     style="fill: black; fill-opacity: 0.75; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path2008" />
+  <path
+     d="M 403.66371,442.05384 C 403.66363,447.27661 402.35795,452.76101 399.74666,458.50706 C 397.13521,464.25315 392.86883,469.17172 386.94749,473.26277 C 381.02602,477.35383 374.58527,479.39935 367.62521,479.39936 C 360.13906,479.39935 353.26131,477.484 346.99193,473.65328 C 340.72249,469.82257 336.45611,465.51368 334.19276,460.7266 C 331.92938,455.93955 330.53736,451.97866 330.01669,448.84393 C 329.496,445.70926 329.23566,442.48689 329.23567,439.17681 L 329.23567,408.62139 C 329.23566 [...]
+     style="font-size: 261.148px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text2014" />
+</svg>
diff --git a/images/presets/vehicle/restriction/maxlength.svg b/images/presets/vehicle/restriction/maxlength.svg
new file mode 100644
index 0000000..6e88291
--- /dev/null
+++ b/images/presets/vehicle/restriction/maxlength.svg
@@ -0,0 +1,130 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="maxlength.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\maxlength.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata18">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective20" />
+  </defs>
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill: white; stroke: black; stroke-width: 2.5px;"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+       id="circle6" />
+  </g>
+  <path
+     d="M 213.03125,432.5 L 170.84375,474.6875 L 213.0625,517.0625 L 238.15625,516.75 L 206.65625,484.59375 L 267.09375,484.59375 L 267.0625,464.9375 L 206.625,464.9375 L 238.125,432.8125 L 213.03125,432.5 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1881" />
+  <path
+     d="M 511.47267,432.54183 L 553.66017,474.72933 L 511.44142,517.10433 L 486.34767,516.79183 L 517.84767,484.63558 L 457.41017,484.63558 L 457.44142,464.97933 L 517.87892,464.97933 L 486.37892,432.85433 L 511.47267,432.54183 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1892" />
+  <path
+     d="M 292.74349,507.09531 L 292.74349,445.60548 L 282.44543,453.11758 L 282.44543,442.12304 L 292.74349,434.61093 L 303.14104,434.61093 L 303.14104,507.09531 L 292.74349,507.09531 z "
+     transform="scale(0.993187, 1.00686)"
+     style="font-size: 101.886px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text1894" />
+  <path
+     d="M 348.33509,489.64451 L 348.33509,458.84985 C 348.33506,455.36747 347.39812,452.64786 345.52427,450.69101 C 343.65036,448.73428 341.18779,447.75588 338.13654,447.75582 C 335.05208,447.75588 332.58121,448.73428 330.72393,450.69101 C 328.86662,452.64786 327.93797,455.36747 327.93799,458.84985 L 327.93799,489.64451 C 327.93797,493.16012 328.86662,495.88803 330.72393,497.82822 C 332.58121,499.76845 335.05208,500.73855 338.13654,500.73854 C 341.18779,500.73855 343.65036,499.76845 345. [...]
+     style="font-size: 101.886px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text1898" />
+  <path
+     d="M 371.9405,510.98935 L 371.9405,459.34985 L 382.33805,459.34985 L 382.33805,464.872 L 382.53705,464.872 C 385.82046,460.79262 390.29787,458.75292 395.96929,458.75286 C 399.58435,458.75292 402.45321,459.39965 404.57587,460.69308 C 406.69846,461.9866 408.68842,463.57857 410.54576,465.46898 C 414.62513,460.99162 420.06435,458.75292 426.86344,458.75286 C 430.87646,458.75292 434.74859,460.27855 438.47984,463.32978 C 442.21094,466.38109 444.07653,470.82534 444.07661,476.66252 L 444.076 [...]
+     style="font-size: 101.886px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text1902" />
+  <g
+     transform="matrix(0.400053, 0, 0, 0.400053, 143.845, 217.208)"
+     id="g2148">
+    <path
+       d="M 295.78419,86.816926 L 295.78419,335.08252 L 687.71625,335.4031 C 664.71649,354.19396 650.35734,380.09418 650.54503,414.08813 L 261.47933,413.85667 C 257.75238,281.97351 70.642616,282.42223 66.576854,413.09434 C 38.473995,412.88466 34.575813,406.50199 34.30487,380.61469 L 34.304868,281.61469 C 33.952015,237.37253 28.42681,266.57731 61.177014,182.67997 C 94.875059,93.246445 85.585107,101.51291 116.0648,99.204795 L 295.78419,86.816926 z M 217.93865,233.19966 L 219.48981,127.7204 [...]
+       style="fill: black; fill-rule: evenodd; stroke: none;"
+       id="path2135" />
+    <rect
+       width="631.32404"
+       height="301.70154"
+       x="335.82718"
+       y="12.158683"
+       style="fill: black; stroke: none;"
+       id="rect2137" />
+    <circle
+       cx="164"
+       cy="412"
+       r="77"
+       style="fill: black; stroke: none;"
+       id="circle2139" />
+    <circle
+       cx="748"
+       cy="412"
+       r="77"
+       style="fill: black; stroke: none;"
+       id="circle2141" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/maxspeed.svg b/images/presets/vehicle/restriction/maxspeed.svg
new file mode 100644
index 0000000..e990b7c
--- /dev/null
+++ b/images/presets/vehicle/restriction/maxspeed.svg
@@ -0,0 +1,159 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_sign__maxspeed.svg">
+  <defs
+     id="defs4266">
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern" />
+    <pattern
+       y="0"
+       x="0"
+       height="6"
+       width="6"
+       patternUnits="userSpaceOnUse"
+       id="EMFhbasepattern-2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="5.0489532"
+     inkscape:cy="7.81344"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:snap-page="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-paths="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-grids="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+    <sodipodi:guide
+       position="662.00004,-146.00001"
+       orientation="1,0"
+       id="guide4273" />
+    <sodipodi:guide
+       position="652.00004,-148.00001"
+       orientation="1,0"
+       id="guide4275" />
+    <sodipodi:guide
+       position="650.00004,-142.00001"
+       orientation="0,1"
+       id="guide4277" />
+    <sodipodi:guide
+       position="656.00004,-174.00001"
+       orientation="0,1"
+       id="guide4279" />
+    <sodipodi:guide
+       position="657.48606,-176.99998"
+       orientation="1,0"
+       id="guide4283" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4315"
+       cx="8"
+       cy="1044.3621"
+       r="8" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.92387849;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 11.634905,1042.8175 0,3.2262 c 0,0.7333 -0.661947,1.1733 -1.3952,1.1733 -0.733254,0 -1.3911168,-0.44 -1.3911168,-1.1733 0,-0.7333 -1.79e-5,-2.4671 0,-3.2262 1.74e-5,-0.7332 0.6578628,-1.3199 1.3911168,-1.3199 0.733253,0 1.3952,0.5867 1.3952,1.3199 z"
+       id="path4271-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sszsszs" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none"
+       d="m 5.8378906,4.7363281 -1.796875,3.59375 c -0.066003,0.1667 -0.2148437,0.5342907 -0.2148437,0.8378907 -0.029575,0.5693998 0.091255,1.0140622 0.4472656,1.4765622 0.7272679,0.8256 1.9339375,0.918029 2.7519531,0.173829 C 7.6977325,10.28166 7.757444,8.8691811 7.3808594,8.1757812 6.968269,7.5014814 6.222665,7.2521907 5.484375,7.5253906 L 6.8847656,4.7363281 Z M 5.8066406,8.234375 C 6.2871077,8.27945 6.7353466,8.6845783 6.6425781,9.4550781 6.5727722,10.782678 4.6124976,10.685468 4.779 [...]
+       transform="translate(-4.7683724e-7,1036.3621)"
+       id="path4312"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccccccsccs" />
+    <path
+       style="fill:#000000;fill-rule:evenodd;stroke:none"
+       d="m 657.32083,1187.3629 c -0.46092,0 -0.92605,0.034 -1.39423,0.09 -16.366,3.2398 -9.73707,20.3533 -11.05691,32.2739 0.007,7.7011 6.59052,13.4062 14.19453,12.5508 16.36601,-3.37 9.74065,-20.1946 11.05675,-32.2737 0.0455,-7.1342 -5.88632,-12.7075 -12.80014,-12.6408 z m 0.24197,6.313 c 3.4452,0.026 6.21492,2.7762 6.20804,6.3285 l 0,20.0962 -0.0747,0.8222 -0.22416,0.7469 -0.29889,0.747 -0.37344,0.6709 c -0.94381,1.6214 -2.72557,2.6584 -4.55716,2.914 -1.83782,0.1898 -3.76286,-0.3932 - [...]
+       id="path4264"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6.3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 667.00012,1199.3621 0,22 c 0,5.0001 -4.51387,8 -9.51398,8 -5.00012,0 -9.48614,-3 -9.48614,-8 0,-5 -1.2e-4,-16.8236 0,-22 1.2e-4,-5 4.48602,-9 9.48614,-9 5.00011,0 9.51398,4 9.51398,9 z"
+       id="path4271"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sszsszs" />
+    <ellipse
+       cy="1044.3621"
+       cx="8"
+       id="circle4317"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#c1121c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       rx="6.5813241"
+       ry="6.5812936" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/maxspeed_none.svg b/images/presets/vehicle/restriction/maxspeed_none.svg
new file mode 100644
index 0000000..72efd64
--- /dev/null
+++ b/images/presets/vehicle/restriction/maxspeed_none.svg
@@ -0,0 +1,98 @@
+<?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://web.resource.org/cc/"
+   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"
+   width="600"
+   height="600"
+   id="svg1980"
+   sodipodi:version="0.32"
+   inkscape:version="0.44"
+   version="1.0"
+   sodipodi:docbase="/home/d0ktorz"
+   sodipodi:docname="Zeichen 278.svg">
+  <defs
+     id="defs1982" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="390.27652"
+     inkscape:cy="148.50728"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="600px"
+     height="600px"
+     inkscape:window-width="990"
+     inkscape:window-height="584"
+     inkscape:window-x="2"
+     inkscape:window-y="74" />
+  <metadata
+     id="metadata1985">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g3771"
+       transform="translate(1.374794,11.86118)">
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:black;stroke-opacity:1"
+         id="path10"
+         d="M 590.68796,288.07677 C 589.79109,140.65833 481.40336,16.725056 334.97912,-1.4206743 C 168.02447,-22.771464 18.137934,102.18382 7.1044943,269.72247 C -3.0251357,438.0815 130.10614,579.29842 298.68765,580.07708 C 460.66439,579.04118 589.56862,450.10913 590.68796,288.07677" />
+      <path
+         id="path14"
+         d="M 590.68796,288.07677 L 589.85367,269.72247 M 589.85367,269.72247 L 585.26509,233.431 M 585.26509,233.431 L 576.08794,197.97383 M 576.08794,197.97383 L 562.73935,163.76808 M 562.73935,163.76808 L 545.21934,131.64804 M 545.21934,131.64804 L 523.52789,102.03086 M 523.52789,102.03086 L 498.49929,75.333696 M 498.49929,75.333696 L 470.13355,51.973666 M 470.13355,51.973666 L 439.26494,32.367936 M 439.26494,32.367936 L 406.31062,16.516486 M 406.31062,16.516486 L 371.27059,5.2536157  [...]
+      <path
+         style="fill:black;fill-rule:evenodd;stroke:none"
+         id="path16"
+         d="M 580.67652,288.07677 C 581.13537,146.35929 474.68736,25.756216 334.14483,8.1736257 C 172.97457,-12.600114 26.890994,108.39925 17.115934,270.55676 C 6.7082043,432.19283 136.41891,570.80259 298.68765,570.06564 C 454.10134,570.66354 581.00328,443.31666 580.67652,288.07677" />
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path18"
+         d="M 445.52209,64.487966 C 197.85021,-89.451814 -78.840936,187.23933 75.098854,434.91121 L 445.52209,64.487966" />
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path20"
+         d="M 456.78496,71.996546 L 460.9564,75.333696 L 464.71068,78.253696 L 88.864574,454.0998 L 85.944574,450.34552 L 82.607424,446.17408 L 456.78496,71.996546" />
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path22"
+         d="M 475.5564,87.013706 L 479.3107,90.767986 L 483.06499,94.105136 L 104.71602,472.45412 L 101.37887,468.69982 L 97.624594,464.94553 L 475.5564,87.013706" />
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path24"
+         d="M 499.33357,111.20802 L 492.65928,103.69944 L 114.31031,482.04841 L 121.81889,488.7227 L 499.33357,111.20802" />
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path26"
+         d="M 514.76788,129.97947 L 511.43073,125.80803 L 508.51072,121.63661 L 132.24747,497.89985 L 136.41891,500.81985 L 140.59034,504.157 L 514.76788,129.97947" />
+      <path
+         style="fill:#fffefe;fill-rule:evenodd;stroke:none"
+         id="path28"
+         d="M 522.27646,141.24234 C 676.18843,388.64307 399.2609,665.57755 151.85321,511.66558 L 522.27646,141.24234" />
+      <path
+         style="fill:#999;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path30"
+         d="M 203.99612,144.99662 L 250.29903,144.99662 L 188.97896,267.63675 C 205.78289,261.15018 225.09662,260.58008 241.53902,268.47104 L 209.83612,299.75678 C 176.67323,291.7824 153.77207,318.66033 158.11036,351.48256 L 124.32175,385.27117 C 117.98813,370.75458 116.36127,354.65285 117.23032,338.96826 L 117.23032,335.21397 L 118.06461,327.70539 L 119.31604,320.61395 L 121.40175,313.10537 L 124.32175,306.01394 L 125.99033,302.67679 L 203.99612,144.99662 z M 137.67034,405.71119 L 136.0 [...]
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/maxweight.svg b/images/presets/vehicle/restriction/maxweight.svg
new file mode 100644
index 0000000..d3d823d
--- /dev/null
+++ b/images/presets/vehicle/restriction/maxweight.svg
@@ -0,0 +1,98 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="maxweight.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\maxweight.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective14" />
+  </defs>
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill: white; stroke: black; stroke-width: 2.5px;"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+       id="circle6" />
+  </g>
+  <path
+     d="M 294.04544,221.14362 L 183.255,221.14362 L 183.09088,366.25115 L 217.70291,366.25115 C 217.70291,346.53041 254.48357,345.84843 254.48357,366.25115 C 254.48357,366.25115 254.48357,438.76401 254.48357,438.76401 C 254.48363,445.03123 243.11783,452.40422 240.48875,452.53397 C 240.48875,452.53397 230.31359,452.48158 230.31359,452.48158 C 227.68867,452.48158 217.6159,446.79648 217.64867,439.33743 C 217.64867,439.33743 217.70122,422.19028 217.70122,422.19028 L 178.14358,422.19028 L 178 [...]
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1908" />
+  <path
+     d="M 495.56079,294.87587 L 495.43446,340.0281 L 480.58385,340.15444 L 480.58385,366.03161 L 495.49828,366.03161 L 495.62462,461.38956 C 495.62462,473.97512 514.04468,491.02693 522.86158,491.02693 L 545.83034,491.02693 L 545.57767,461.86366 L 533.98324,461.99 C 530.49753,461.99 526.64293,459.44917 526.64293,456.22031 L 526.64293,366.12536 L 545.61025,365.99903 L 545.61025,340.12185 L 526.46286,340.12185 L 526.58919,294.93837 L 495.56079,294.87587 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1886" />
+  <path
+     d="M 455.49795,280.06412 L 368.51182,280.06412 L 368.38296,393.99401 L 395.55829,393.99401 C 395.55829,378.51045 424.4363,377.975 424.4363,393.99401 C 424.4363,393.99401 424.4363,450.92684 424.4363,450.92684 C 424.43634,455.84749 415.51259,461.63633 413.44839,461.7382 C 413.44839,461.7382 405.45945,461.69707 405.45945,461.69707 C 403.39852,461.69707 395.48997,457.23346 395.5157,451.37706 C 395.5157,451.37706 395.55696,437.91412 395.55696,437.91412 L 364.49863,437.91412 L 364.62497,4 [...]
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1888" />
+  <path
+     d="M 311.3137,459.93357 L 342.53319,459.78807 L 342.53319,491.74752 L 311.34695,514.75268 L 311.3137,459.93357 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1910" />
+</svg>
diff --git a/images/presets/vehicle/restriction/maxwidth.svg b/images/presets/vehicle/restriction/maxwidth.svg
new file mode 100644
index 0000000..cca4077
--- /dev/null
+++ b/images/presets/vehicle/restriction/maxwidth.svg
@@ -0,0 +1,98 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="maxwidth.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\maxwidth.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective14" />
+  </defs>
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill: white; stroke: black; stroke-width: 2.5px;"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+       id="circle6" />
+  </g>
+  <path
+     d="M 373.6705,530.12962 L 229.30525,529.89446 L 229.30525,484.72809 L 324.10602,301.57116 L 324.57634,259.75103 C 324.57634,231.37364 278.55195,231.67 278.55195,259.75103 L 278.55195,291.15744 L 229.1114,290.92228 L 229.34656,253.94197 C 242.75061,168.76186 360.97193,171.22248 374.14082,254.64745 L 373.43534,301.59976 C 373.43534,301.59976 288.45405,482.14134 288.45405,482.14134 L 373.35273,482.14134 L 373.6705,530.12962 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1987" />
+  <path
+     d="M 186.83434,361.43995 L 136.72791,275.35796 C 113.58632,331.82472 116.27723,403.3499 136.72791,449.64204 L 186.83434,361.43995 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1983" />
+  <path
+     d="M 536.95093,361.43995 L 587.05736,275.35796 C 610.19895,331.82472 607.50804,403.3499 587.05736,449.64204 L 536.95093,361.43995 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1985" />
+  <path
+     d="M 405.37733,529.94375 L 405.46646,427.01946 L 426.68654,426.93034 L 426.59741,436.19134 C 438.86667,419.24523 453.69936,425.41377 463.64951,434.27918 C 473.90794,426.41966 496.53391,414.78388 508.62572,448.45831 L 508.62572,530.0896 L 486.57109,530.0896 L 486.57109,454.14617 C 486.30307,452.21761 483.74013,448.10992 481.36946,448.03086 C 481.36946,448.03086 472.67053,448.42575 472.67053,448.42575 C 469.95129,448.35104 467.75528,451.36531 467.68449,454.2353 L 467.59536,530.07339 L [...]
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1991" />
+</svg>
diff --git a/images/presets/vehicle/restriction/mini_roundabout_left.svg b/images/presets/vehicle/restriction/mini_roundabout_left.svg
new file mode 100644
index 0000000..3eb8ff4
--- /dev/null
+++ b/images/presets/vehicle/restriction/mini_roundabout_left.svg
@@ -0,0 +1,125 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="mini_roundabout_left.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="7.2552813"
+     inkscape:cy="9.7422512"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <ellipse
+       cx="-8.000001"
+       cy="1044.3621"
+       style="fill:#ffffff;stroke:#000000;stroke-width:0.05693951px"
+       id="circle4"
+       rx="7.9715319"
+       ry="7.9715323"
+       transform="scale(-1,1)" />
+    <g
+       id="g4140"
+       transform="matrix(-0.95565069,0,0,0.95565069,15.645207,46.316621)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path1883"
+         style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 15.473773,1044.362 a 7.473766,7.4737665 0 0 1 -14.94753137,0 7.473766,7.4737665 0 1 1 14.94753137,0 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path2806"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 3.2007794,1045.9956 1.8789881,-1.9111 -0.00863,-1.1154 -1.3830885,1.3524 c -0.045876,-2.1633 1.8168783,-3.9802 3.5664448,-4.2139 l -0.1550028,-0.936 c -3.0719145,0.608 -4.3090049,3.0094 -4.3681119,5.1419 l -1.3962344,-1.3574 -0.00637,1.1599 1.8719852,1.8796 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3753"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 11.819626,1047.7035 -2.5971756,-0.6612 -0.9593787,0.569 1.8648633,0.514 c -1.8459758,1.1289 -4.3536894,0.4343 -5.4365024,-0.9596 l -0.7306829,0.6052 c 2.0720634,2.348 4.7698086,2.2077 6.6420313,1.185 l -0.469823,1.8898 1.005388,-0.5785 0.68128,-2.5637 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3755"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 8.9807164,1039.4097 0.7321898,2.5782 0.9738458,0.5439 -0.491799,-1.8708 c 1.903114,1.0296 2.561547,3.5471 1.899717,5.1833 l 0.890273,0.3281 c 0.990166,-2.9708 -0.485704,-5.2334 -2.310139,-6.3391 l 1.870232,-0.5425 -1.005139,-0.5791 -2.5591806,0.698 z" />
+      <ellipse
+         ry="1.4999396"
+         rx="1.5000004"
+         cy="1044.3621"
+         cx="8.000001"
+         id="path4165"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/mini_roundabout_right.svg b/images/presets/vehicle/restriction/mini_roundabout_right.svg
new file mode 100644
index 0000000..c0ae194
--- /dev/null
+++ b/images/presets/vehicle/restriction/mini_roundabout_right.svg
@@ -0,0 +1,124 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="mini_roundabout2.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="-0.91293923"
+     inkscape:cy="5.3962327"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="false"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <ellipse
+       cx="8.000001"
+       cy="1044.3621"
+       style="fill:#ffffff;stroke:#000000;stroke-width:0.05693951px"
+       id="circle4"
+       rx="7.9715319"
+       ry="7.9715323" />
+    <g
+       id="g4140"
+       transform="matrix(0.95565069,0,0,0.95565069,0.3547948,46.316634)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path1883"
+         style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 15.473773,1044.362 a 7.473766,7.4737665 0 0 1 -14.94753137,0 7.473766,7.4737665 0 1 1 14.94753137,0 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path2806"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 3.2007794,1045.9956 1.8789881,-1.9111 -0.00863,-1.1154 -1.3830885,1.3524 c -0.045876,-2.1633 1.8168783,-3.9802 3.5664448,-4.2139 l -0.1550028,-0.936 c -3.0719145,0.608 -4.3090049,3.0094 -4.3681119,5.1419 l -1.3962344,-1.3574 -0.00637,1.1599 1.8719852,1.8796 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3753"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 11.819626,1047.7035 -2.5971756,-0.6612 -0.9593787,0.569 1.8648633,0.514 c -1.8459758,1.1289 -4.3536894,0.4343 -5.4365024,-0.9596 l -0.7306829,0.6052 c 2.0720634,2.348 4.7698086,2.2077 6.6420313,1.185 l -0.469823,1.8898 1.005388,-0.5785 0.68128,-2.5637 z" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3755"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 8.9807164,1039.4097 0.7321898,2.5782 0.9738458,0.5439 -0.491799,-1.8708 c 1.903114,1.0296 2.561547,3.5471 1.899717,5.1833 l 0.890273,0.3281 c 0.990166,-2.9708 -0.485704,-5.2334 -2.310139,-6.3391 l 1.870232,-0.5425 -1.005139,-0.5791 -2.5591806,0.698 z" />
+      <ellipse
+         ry="1.4999396"
+         rx="1.5000004"
+         cy="1044.3621"
+         cx="8.000001"
+         id="path4165"
+         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/minspeed.svg b/images/presets/vehicle/restriction/minspeed.svg
new file mode 100644
index 0000000..1fe934f
--- /dev/null
+++ b/images/presets/vehicle/restriction/minspeed.svg
@@ -0,0 +1,88 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="minspeed.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\minspeed.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata9">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective11" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill: white; stroke: black; stroke-width: 2.5px;"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     transform="matrix(1.16273, 0, 0, 1.16273, -58.9887, -58.9887)"
+     style="fill: rgb(0, 51, 153); fill-opacity: 1; stroke: none; stroke-width: 93.75;"
+     id="circle6" />
+  <path
+     d="M 210.53494,379.03602 L 210.53494,333.96347 L 228.17202,333.96347 C 245.15575,333.96368 258.58769,329.18697 268.46785,319.63334 C 278.34773,310.08015 283.28774,297.95467 283.2879,283.25686 C 283.28774,268.72287 278.1436,256.4749 267.85546,246.51293 C 257.56702,236.55155 245.31906,231.57071 231.11153,231.5704 C 220.33322,231.57071 210.12658,235.16345 200.4916,242.34862 C 190.85645,249.53439 184.65082,260.3126 181.87468,274.68327 L 130.67814,274.68327 C 132.63781,249.53439 143.1710 [...]
+     style="font-size: 501.677px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: white; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text3804" />
+  <path
+     d="M 538.95143,437.66956 L 538.95143,286.03963 C 538.95126,268.89274 534.33786,255.50163 525.11122,245.86628 C 515.88426,236.23151 503.75878,231.41398 488.73474,231.41367 C 473.54714,231.41398 461.38083,236.23151 452.23577,245.86628 C 443.09054,255.50163 438.51797,268.89274 438.51804,286.03963 L 438.51804,437.66956 C 438.51797,454.98011 443.09054,468.41204 452.23577,477.96539 C 461.38083,487.51886 473.54714,492.29557 488.73474,492.29552 C 503.75878,492.29557 515.88426,487.51886 525. [...]
+     style="font-size: 501.677px; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; text-align: center; line-height: 100%; text-anchor: middle; fill: white; fill-opacity: 1; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="text3808" />
+</svg>
diff --git a/images/presets/vehicle/restriction/motorbike.svg b/images/presets/vehicle/restriction/motorbike.svg
new file mode 100644
index 0000000..9dfa324
--- /dev/null
+++ b/images/presets/vehicle/restriction/motorbike.svg
@@ -0,0 +1,103 @@
+<?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://web.resource.org/cc/"
+   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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.45.1"
+   sodipodi:docname="motorbike.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   sodipodi:docbase="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions">
+  <metadata
+     id="metadata14">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="573"
+     inkscape:window-width="797"
+     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"
+     inkscape:zoom="0.52"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="176"
+     inkscape:window-y="232"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9" />
+  <g
+     id="g1875">
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="350"
+       style="fill:white;stroke:black;stroke-width:2.5px"
+       id="circle4" />
+    <circle
+       cx="362.5"
+       cy="362.5"
+       r="290"
+       style="fill:none;stroke:#c00;stroke-width:93.75"
+       id="circle6" />
+  </g>
+  <g
+     transform="matrix(0.658556,0,0,0.658556,137.1874,166.2154)"
+     id="layer1">
+    <path
+       d="M 438.12826,429.16927 C 375.32987,426.00501 282.92602,437.06422 251.92375,397.77007 C 237.71768,323.00073 197.12299,285.36345 127.4223,284.58694 C 84.626532,201.93866 162.31092,188.98722 215.41306,167.75274 C 218.78636,206.16837 216.71935,246.10015 277.48123,268.52224 C 279.92034,256.63453 284.90432,246.92813 300.84807,246.61583 L 390.66436,246.98094 L 454.19295,197.3264 C 464.45935,213.65423 484.83147,234.57558 484.86193,246.25072 L 581.25015,246.61583 C 588.2694,252.59444 594 [...]
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path4749" />
+    <path
+       d="M 281.45311,113.13794 L 281.71128,79.094411 L 319.83363,73.920272 L 319.83363,46.902363 L 280.93677,53.36735 C 283.79727,29.02724 299.44705,11.428004 333.92156,6.3312047 C 355.56786,7.8567994 378.26787,9.030436 391.1807,49.520754 C 394.96498,65.581097 392.60623,81.830116 382.63201,95.826685 C 350.34442,78.127222 326.17913,90.209532 304.13403,110.06585 L 281.45311,113.13794 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path5636" />
+    <path
+       d="M 215.04795,186.7383 L 328.59619,100.93818 C 343.85852,92.79748 360.69029,91.248459 380.80647,103.49393 C 398.00264,119.11558 427.05087,162.39207 450.17678,191.84979 L 385.55287,240.22646 L 323.48469,153.87868 L 225.27094,229.0907 C 217.71099,215.89572 215.94199,200.40941 215.04795,186.7383 z "
+       style="fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path6523" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path7410" />
+    <path
+       d="M 241.70075,414.19989 C 241.70789,460.38118 204.27256,497.8223 158.09128,497.8223 C 111.90999,497.8223 74.474661,460.38118 74.481804,414.19989 C 74.474661,368.0186 111.90999,330.57748 158.09128,330.57748 C 204.27256,330.57748 241.70789,368.0186 241.70075,414.19989 L 241.70075,414.19989 z "
+       transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)"
+       style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:black;stroke-width:34.99968338;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path8297" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/motorcar.svg b/images/presets/vehicle/restriction/motorcar.svg
new file mode 100644
index 0000000..64ad56e
--- /dev/null
+++ b/images/presets/vehicle/restriction/motorcar.svg
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   width="725"
+   height="725"
+   version="1.1"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="motorcar.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.openstreetmap.org\applications\share\map-icons\svg\vehicle\restrictions\motorcar.png"
+   inkscape:export-xdpi="2"
+   inkscape:export-ydpi="2">
+  <metadata
+     id="metadata15">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs13">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective17" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <circle
+     style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 2.5px;"
+     r="350"
+     cx="362.5"
+     cy="362.5"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     style="stroke: rgb(204, 0, 0); stroke-width: 93.75; fill: none;"
+     id="circle6" />
+  <g
+     transform="matrix(0.387772, 0, 0, 0.387772, 168.342, 207.443)"
+     id="CarSymbol">
+    <path
+       style="stroke: none; fill: black; fill-rule: evenodd;"
+       id="Car"
+       d="M 26.666667,456.41026 C 24.273504,280.00000 14.700854,431.79487 121.02564,170.25641 C 197.94872,-7.5213676 120.00000,40.341880 517.94872,33.846154 C 872.13675,41.025642 800.68376,-10.256409 882.05128,178.46154 C 983.93162,420.17094 976.06838,293.67521 975.38462,451.28205 C 971.62393,624.27350 1035.5556,579.82906 499.48718,585.64103 C -32.478634,578.46155 30.427346,623.58974 26.666667,456.41026 z     M 134.35897,286.15385 L 207.17949,117.94872 C 220.76607,88.070065 216.43137,92. [...]
+    <circle
+       style="fill: white; fill-opacity: 1; stroke: none;"
+       r="66.5"
+       cy="412"
+       cx="150"
+       id="LeftLamp" />
+    <circle
+       style="fill: white; fill-opacity: 1; stroke: none;"
+       r="66.5"
+       cy="412"
+       cx="850"
+       id="RightLamp" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/psv.svg b/images/presets/vehicle/restriction/psv.svg
new file mode 100644
index 0000000..3890b9d
--- /dev/null
+++ b/images/presets/vehicle/restriction/psv.svg
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   width="725"
+   height="725"
+   version="1.1"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="psv.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.map-icons\svg\vehicle\restrictions\psv.png"
+   inkscape:export-xdpi="2.0498221"
+   inkscape:export-ydpi="2.0498221">
+  <metadata
+     id="metadata11">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/publicdomain/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective13" />
+    <inkscape:perspective
+       id="perspective2523"
+       inkscape:persp3d-origin="340 : 90 : 1"
+       inkscape:vp_z="680 : 135 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 135 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <sodipodi:namedview
+     inkscape:window-height="667"
+     inkscape:window-width="788"
+     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="0.63724138"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="280"
+     inkscape:window-y="157"
+     inkscape:current-layer="svg2" />
+  <circle
+     style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 2.5px;"
+     r="350"
+     cx="362.5"
+     cy="362.5"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="295"
+     style="stroke: rgb(204, 0, 0); stroke-width: 83.75; fill: none;"
+     id="circle6" />
+  <g
+     id="layer1"
+     transform="matrix(0.6935644,0,0,0.6935644,127.67273,265.36674)">
+    <path
+       id="path1966"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 31.761217,26.619391 L 31.306216,5.7140301 C 31.754181,4.3093648 31.994305,2.6968585 33.909231,2.7591539 L 628.71325,2.3775139 C 655.69631,7.7477606 661.04445,77.952922 675,117.14286 L 675,202.14286 C 668.20192,218.11846 660.86056,219.42544 653.57143,222.14286 L 565,221.42857 C 565,144.20059 447.85714,144.63084 447.85714,221.42857 L 210,221.42857 C 210,144.48294 95.714286,144.46188 95.714286,221.42857 L 13.571429,221.42857 C 9.6780696,220.28672 7.0245746,216.66514 4.6428571,21 [...]
+    <path
+       id="path2856"
+       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:8, 2;stroke-dashoffset:0;stroke-opacity:1"
+       transform="matrix(1.08125,0,0,1.08125,-58.9543,-28.2252)"
+       d="M 566.16677,231.14012 C 566.17704,254.99373 546.84274,274.33634 522.98914,274.33634 C 499.13553,274.33634 479.80123,254.99373 479.8115,231.14012 C 479.80123,207.28651 499.13553,187.9439 522.98914,187.9439 C 546.84274,187.9439 566.17704,207.28651 566.16677,231.14012 L 566.16677,231.14012 z" />
+    <path
+       id="path3745"
+       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:8, 2;stroke-dashoffset:0;stroke-opacity:1"
+       transform="matrix(1.08125,0,0,1.08125,-412.201,-27.9554)"
+       d="M 566.16677,231.14012 C 566.17704,254.99373 546.84274,274.33634 522.98914,274.33634 C 499.13553,274.33634 479.80123,254.99373 479.8115,231.14012 C 479.80123,207.28651 499.13553,187.9439 522.98914,187.9439 C 546.84274,187.9439 566.17704,207.28651 566.16677,231.14012 L 566.16677,231.14012 z" />
+    <path
+       id="path3747"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 531.61675,40.718007 L 552.142,110.69117 C 553.35031,113.54485 554.53622,116.41596 557.8805,117.60833 L 629.04027,117.43371 C 631.87882,114.96101 634.80496,112.64856 635.25102,107.54413 L 615.09087,37.58684 C 613.44354,32.067784 611.173,30.495693 608.80472,29.542611 L 536.28374,29.633887 C 532.7483,31.744775 531.50679,35.690805 531.61675,40.718007 z" />
+    <path
+       id="path4634"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 429.39705,40.58628 L 449.9223,110.55944 C 451.13061,113.41312 452.31652,116.28423 455.6608,117.4766 L 526.82057,117.30198 C 529.65912,114.82928 532.58526,112.51683 533.03132,107.4124 L 512.87117,37.455113 C 511.22384,31.936057 508.9533,30.363966 506.58502,29.410884 L 434.06404,29.50216 C 430.5286,31.613048 429.28709,35.559078 429.39705,40.58628 z" />
+    <path
+       id="path4636"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 327.98862,40.586273 L 348.51387,110.55944 C 349.72218,113.41312 350.90809,116.28423 354.25237,117.4766 L 425.41214,117.30198 C 428.25069,114.82928 431.17683,112.51683 431.62289,107.4124 L 411.46274,37.455106 C 409.81541,31.93605 407.54487,30.363959 405.17659,29.410877 L 332.65561,29.502153 C 329.12017,31.613041 327.87866,35.559071 327.98862,40.586273 z" />
+    <path
+       id="path4638"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 227.1726,40.586276 L 247.69785,110.55944 C 248.90616,113.41312 250.09207,116.28423 253.43635,117.4766 L 324.59612,117.30198 C 327.43467,114.82928 330.36081,112.51683 330.80687,107.4124 L 310.64672,37.455109 C 308.99939,31.936053 306.72885,30.363962 304.36057,29.41088 L 231.83959,29.502156 C 228.30415,31.613044 227.06264,35.559074 227.1726,40.586276 z" />
+    <path
+       id="path4640"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 142.51433,35.694816 L 142.50232,110.96203 C 143.71063,113.81571 145.80931,116.50427 149.15359,117.69664 L 223.05166,117.43074 C 225.89021,114.95804 228.81635,112.64559 229.26241,107.54116 L 209.10226,37.583869 C 207.45493,32.064813 205.18439,30.492722 202.81611,29.53964 L 148.00281,29.448363 C 144.46737,31.559251 143.68225,31.580382 142.51433,35.694816 z" />
+    <path
+       id="path4642"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 124.8189,37.998446 L 124.68904,110.81147 C 123.48073,113.66515 122.29482,116.53626 118.95054,117.72863 L 35.269552,117.29584 C 32.431002,114.82314 29.504862,112.51069 29.058802,107.40626 L 54.124173,37.707145 C 55.771503,32.188089 58.04204,30.615998 60.41032,29.662916 L 120.15191,29.883276 C 123.68735,31.994164 124.92886,32.971244 124.8189,37.998446 z" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/restrictions.svg b/images/presets/vehicle/restriction/restrictions.svg
new file mode 100644
index 0000000..f3ad306
--- /dev/null
+++ b/images/presets/vehicle/restriction/restrictions.svg
@@ -0,0 +1,96 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="restrictions.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="0.26738697"
+     inkscape:cy="9.1870644"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="false"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.04587146;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path32"
+       d="m 15.977067,1044.3621 c 0,1.4685 -0.333951,2.7167 -1.068564,3.9889 -0.733974,1.2715 -1.648145,2.1856 -2.919605,2.9196 -1.272188,0.7346 -2.5203999,1.0685 -3.9888974,1.0685 -1.4684976,0 -2.7167086,-0.3339 -3.9882598,-1.0685 -1.2720966,-0.734 -2.1856522,-1.6481 -2.920242,-2.9196 -0.73390729,-1.2722 -1.06856354,-2.5204 -1.06856354,-3.9889 0,-1.4685 0.33465625,-2.7167 1.06856354,-3.9883 0.7345898,-1.272 1.6481454,-2.1857 2.920242,-2.9202 1.2715512,-0.7339 2.5197622,-1.0686 3.9882598 [...]
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:none;stroke:#ff0000;stroke-width:1.90915775;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path36"
+       d="m 14.723682,1044.3621 c 0,1.2378 -0.281688,2.2897 -0.900563,3.3616 -0.618944,1.0724 -1.389068,1.8426 -2.461552,2.4616 -1.071846,0.6188 -2.1236807,0.9004 -3.3615664,0.9004 -1.2378875,0 -2.2897208,-0.2816 -3.3622045,-0.9004 -1.0718466,-0.619 -1.8419691,-1.3892 -2.460913,-2.4616 -0.6188757,-1.0719 -0.9005633,-2.1238 -0.9005633,-3.3616 0,-1.2379 0.2816876,-2.2897 0.9005633,-3.3623 0.6189439,-1.0717 1.3890664,-1.8418 2.460913,-2.4608 1.0724837,-0.619 2.124317,-0.9006 3.3622045,-0.90 [...]
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/roundabout_left.svg b/images/presets/vehicle/restriction/roundabout_left.svg
new file mode 100644
index 0000000..2676f6c
--- /dev/null
+++ b/images/presets/vehicle/restriction/roundabout_left.svg
@@ -0,0 +1,114 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="roundabout_left.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="1.9058892"
+     inkscape:cy="7.871201"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <ellipse
+       cx="-8.000001"
+       cy="1044.3621"
+       style="fill:#ffffff;stroke:#000000;stroke-width:0.05693951px"
+       id="circle4"
+       rx="7.9715319"
+       ry="7.9715323"
+       transform="scale(-1,1)" />
+    <path
+       d="m 0.52622891,1044.362 a 7.473766,7.4737665 0 0 0 14.94753109,0 7.473766,7.4737665 0 1 0 -14.94753109,0 z"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       id="path1883"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 12.799223,1045.9956 -1.878989,-1.9111 0.0086,-1.1154 1.383089,1.3524 c 0.04588,-2.1633 -1.816878,-3.9802 -3.5664449,-4.2139 l 0.1550028,-0.936 c 3.0719141,0.608 4.3090051,3.0094 4.3681121,5.1419 l 1.396234,-1.3574 0.0064,1.1599 -1.871985,1.8796 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path2806"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 4.1803759,1047.7035 2.5971756,-0.6612 0.9593787,0.569 -1.8648633,0.514 c 1.8459758,1.1289 4.3536891,0.4343 5.4365021,-0.9596 l 0.730683,0.6052 c -2.0720632,2.348 -4.7698084,2.2077 -6.6420311,1.185 l 0.469823,1.8898 -1.005388,-0.5785 -0.68128,-2.5637 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path3753"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 7.0192855,1039.4097 -0.7321898,2.5782 -0.9738458,0.5439 0.491799,-1.8708 c -1.903114,1.0296 -2.561547,3.5471 -1.899717,5.1833 l -0.890273,0.3281 c -0.990166,-2.9708 0.485704,-5.2334 2.310139,-6.3391 l -1.870232,-0.5425 1.005139,-0.5791 2.5591806,0.698 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path3755"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/roundabout_right.svg b/images/presets/vehicle/restriction/roundabout_right.svg
new file mode 100644
index 0000000..7630119
--- /dev/null
+++ b/images/presets/vehicle/restriction/roundabout_right.svg
@@ -0,0 +1,113 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="roundabout.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="13.032322"
+     inkscape:cy="8.9063726"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-nodes="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:snap-global="true"
+     inkscape:snap-center="false"
+     inkscape:snap-grids="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <ellipse
+       cx="8.000001"
+       cy="1044.3621"
+       style="fill:#ffffff;stroke:#000000;stroke-width:0.05693951px"
+       id="circle4"
+       rx="7.9715319"
+       ry="7.9715323" />
+    <path
+       d="m 15.473773,1044.362 a 7.473766,7.4737665 0 0 1 -14.94753137,0 7.473766,7.4737665 0 1 1 14.94753137,0 z"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       id="path1883"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 3.2007794,1045.9956 1.8789881,-1.9111 -0.00863,-1.1154 -1.3830885,1.3524 c -0.045876,-2.1633 1.8168783,-3.9802 3.5664448,-4.2139 l -0.1550028,-0.936 c -3.0719145,0.608 -4.3090049,3.0094 -4.3681119,5.1419 l -1.3962344,-1.3574 -0.00637,1.1599 1.8719852,1.8796 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path2806"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 11.819626,1047.7035 -2.5971756,-0.6612 -0.9593787,0.569 1.8648633,0.514 c -1.8459758,1.1289 -4.3536894,0.4343 -5.4365024,-0.9596 l -0.7306829,0.6052 c 2.0720634,2.348 4.7698086,2.2077 6.6420313,1.185 l -0.469823,1.8898 1.005388,-0.5785 0.68128,-2.5637 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path3753"
+       inkscape:connector-curvature="0" />
+    <path
+       d="m 8.9807164,1039.4097 0.7321898,2.5782 0.9738458,0.5439 -0.491799,-1.8708 c 1.903114,1.0296 2.561547,3.5471 1.899717,5.1833 l 0.890273,0.3281 c 0.990166,-2.9708 -0.485704,-5.2334 -2.310139,-6.3391 l 1.870232,-0.5425 -1.005139,-0.5791 -2.5591806,0.698 z"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="path3755"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/speed_camera.svg b/images/presets/vehicle/restriction/speed_camera.svg
new file mode 100644
index 0000000..242bdc8
--- /dev/null
+++ b/images/presets/vehicle/restriction/speed_camera.svg
@@ -0,0 +1,241 @@
+<?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"
+   width="16"
+   height="14"
+   viewBox="0 0 16 14"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__speed_camera.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="6.4966037"
+     inkscape:cy="-12.252009"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="false"
+     inkscape:snap-intersection-paths="false"
+     inkscape:object-nodes="false"
+     inkscape:snap-smooth-nodes="false"
+     inkscape:snap-midpoints="false"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1038.3621)">
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4360"
+       width="16"
+       height="11"
+       x="-4.7683727e-007"
+       y="1041.3621"
+       ry="2" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4219"
+       cx="5.5"
+       cy="1046.8621"
+       r="3" />
+    <rect
+       style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4209"
+       width="6"
+       height="4"
+       x="8"
+       y="1038.3621"
+       ry="1" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4207"
+       width="4"
+       height="2"
+       x="9"
+       y="1039.3621"
+       ry="1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/stop.svg b/images/presets/vehicle/restriction/stop.svg
new file mode 100644
index 0000000..78eb634
--- /dev/null
+++ b/images/presets/vehicle/restriction/stop.svg
@@ -0,0 +1,237 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__stop2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="64"
+     inkscape:cx="8.3175116"
+     inkscape:cy="8.1344046"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <path
+       id="path11065"
+       style="fill:#ffffff;fill-rule:nonzero;stroke:none"
+       d="M 0.33858979,1048.0149 C 0.15507532,1047.8313 -4.7683724e-7,1047.4582 -4.7683724e-7,1047.2001 l 0,-5.676 c 0,-0.258 0.15507579683724,-0.6312 0.33859026683724,-0.8148 l 4.00839351,-4.0088 c 0.1832714,-0.1834 0.5585646,-0.3384 0.819617,-0.3384 l 5.6619687,0 c 0.260809,0 0.636346,0.155 0.819617,0.3384 l 4.008393,4.0088 c 0.183514,0.1836 0.33859,0.5568 0.33859,0.8146 l 0,5.6762 c 0,0.2581 -0.155076,0.631 -0.33859,0.8148 l -4.008393,4.009 c -0.183514,0.1832 -0.558808,0.3382 -0.81986 [...]
+       inkscape:connector-curvature="0" />
+    <path
+       id="path10312"
+       style="fill:#ee1c23;fill-rule:nonzero;stroke:none"
+       d="m 0.97021708,1047.2613 0,-5.8244 4.11760982,-4.1183 5.8234081,0 4.117849,4.1183 0,5.8242 -4.117849,4.1184 -5.8234081,0 -4.11760982,-4.1182"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path10314"
+       style="fill:#ffffff;fill-rule:nonzero;stroke:none"
+       d="m 8.0274364,1042.7657 c 0,-0.9769 0.7505385,-1.4651 1.4585192,-1.4651 0.7079814,0 1.4587824,0.4882 1.4587824,1.4651 l 0,3.1656 c 0,0.9766 -0.750801,1.4647 -1.4587824,1.4647 -0.7079807,0 -1.4585192,-0.4881 -1.4585192,-1.4647 l 0,-3.1656 z m 0.8700677,3.1656 c 0,0.4126 0.2729469,0.606 0.5884515,0.606 0.3157674,0 0.5887144,-0.1934 0.5887144,-0.606 l 0,-3.1656 c 0,-0.4126 -0.272947,-0.6063 -0.5887144,-0.6063 -0.3155046,0 -0.5884515,0.1937 -0.5884515,0.6063 l 0,3.1656"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path10316"
+       style="fill:#ffffff;fill-rule:nonzero;stroke:none"
+       d="m 11.911315,1041.3383 1.305101,0 c 0.477854,0 0.827509,0.1092 1.125939,0.4212 0.298691,0.3114 0.392475,0.6902 0.392475,1.4058 0,0.5222 -0.04256,0.9922 -0.247464,1.3204 -0.238796,0.3874 -0.622602,0.6232 -1.262281,0.6232 l -0.443704,0 0,2.224 -0.870066,0 0,-5.9946 z m 0.870066,2.9622 0.417958,0 c 0.707982,0 0.716652,-0.5289 0.716652,-1.1266 0,-0.5644 0,-1.0273 -0.682499,-1.0273 l -0.452111,0 0,2.1539"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path10318"
+       style="fill:#ffffff;fill-rule:nonzero;stroke:none"
+       d="m 6.0177719,1042.1604 -0.9181421,0 0,-0.8084 2.7063516,0 0,0.8084 -0.918142,0 0,5.1863 -0.8700675,0 0,-5.1863"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path10320"
+       style="fill:#ffffff;fill-rule:nonzero;stroke:none"
+       d="m 3.4437736,1044.6913 c -0.7079806,0 -1.4241051,-0.486 -1.4241051,-1.4629 l 0,-0.488 c 0,-0.9765 0.750801,-1.4647 1.4587817,-1.4647 0.7079807,0 1.4585191,0.4882 1.4585191,1.4647 l -0.8700677,0 c 0,-0.4122 -0.2729468,-0.606 -0.5884514,-0.606 -0.3157672,0 -0.5887141,0.1938 -0.5887141,0.606 l 0,0.488 c 0,0.4125 0.2382703,0.6033 0.5540375,0.6033 l 0.052015,0.011 c 0.7079808,0 1.4325117,0.4822 1.4325117,1.4588 l 0,0.6627 c 0,0.9767 -0.7505383,1.4651 -1.4585189,1.4651 -0.7079808,0 -1 [...]
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_left_turn.svg b/images/presets/vehicle/restriction/turn_restrictions/no_left_turn.svg
new file mode 100644
index 0000000..807a5bc
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/no_left_turn.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="725" height="725" id="svg2">
+  <defs id="defs9"/>
+  <circle cx="362.5" cy="362.5" r="350" style="fill: white; stroke: black; stroke-width: 2.5px;" id="circle4"/>
+  <path d="M -176.30905 369.66949 A 309.2189 309.2189 0 1 1  -794.74686,369.66949 A 309.2189 309.2189 0 1 1  -176.30905 369.66949 z" transform="matrix(1.06121, 0, 0, 1.06121, 877.745, -29.7955)" style="opacity: 1; fill: rgb(0, 51, 153); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;" id="path1883"/>
+  <path d="M 308.46875,87.53125 L 308.625,97.5 L 308.3125,87.75 L 204.03125,191.9375 L 204.15625,267.71875 L 279.40625,193.875 L 279.1875,628.59375 L 339.3125,628.53125 L 339.21875,527.53125 C 345.13959,485.77121 368.21125,456.96293 418.65625,446.5 C 418.65624,446.49999 528.5,446.375 528.5,446.375 L 455.21875,520.65625 L 531.96875,520.875 L 635.46875,415.9375 L 625.5,416.09375 L 635.25,415.8125 L 531.0625,311.53125 L 455.3125,311.625 L 528.34375,384.875 L 422.78125,384.15625 C 389.84442, [...]
+</svg>
\ No newline at end of file
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_left_turn_red.png b/images/presets/vehicle/restriction/turn_restrictions/no_left_turn_red.png
new file mode 100644
index 0000000..b3f10b4
Binary files /dev/null and b/images/presets/vehicle/restriction/turn_restrictions/no_left_turn_red.png differ
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_right_turn.svg b/images/presets/vehicle/restriction/turn_restrictions/no_right_turn.svg
new file mode 100644
index 0000000..3bf55e3
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/no_right_turn.svg
@@ -0,0 +1,81 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="no_right_turn.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\turn-restrictions\no_right_turn.png"
+   inkscape:export-xdpi="4.0996442"
+   inkscape:export-ydpi="4.0996442">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="667"
+     inkscape:window-width="640"
+     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="0.63724138"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="176"
+     inkscape:window-y="232"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective10" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:#ffffff;stroke:#000000;stroke-width:2.5px"
+     id="circle4"
+     sodipodi:cx="362.5"
+     sodipodi:cy="362.5"
+     sodipodi:rx="350"
+     sodipodi:ry="350"
+     transform="matrix(-1,0,0,1,725,0)" />
+  <path
+     d="M 34.355927,362.50146 C 34.355927,543.7316 181.27198,690.64765 362.50212,690.64765 C 543.73226,690.64765 690.64832,543.7316 690.64832,362.50146 C 690.64832,181.27132 543.73226,34.355265 362.50212,34.355265 C 181.27198,34.355265 34.355927,181.27132 34.355927,362.50146 z"
+     style="opacity:1;fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 416.53125,87.53125 L 416.375,97.5 L 416.6875,87.75 L 520.96875,191.9375 L 520.84375,267.71875 L 445.59375,193.875 L 445.8125,628.59375 L 385.6875,628.53125 L 385.78125,527.53125 C 379.86041,485.77121 356.78875,456.96293 306.34375,446.5 C 306.34376,446.49999 196.5,446.375 196.5,446.375 L 269.78125,520.65625 L 193.03125,520.875 L 89.53125,415.9375 L 99.5,416.09375 L 89.75,415.8125 L 193.9375,311.53125 L 269.6875,311.625 L 196.65625,384.875 L 302.21875,384.15625 C 335.15558,386.73 [...]
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path2806" />
+</svg>
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_right_turn_red.png b/images/presets/vehicle/restriction/turn_restrictions/no_right_turn_red.png
new file mode 100644
index 0000000..0d3f862
Binary files /dev/null and b/images/presets/vehicle/restriction/turn_restrictions/no_right_turn_red.png differ
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_straight_on.svg b/images/presets/vehicle/restriction/turn_restrictions/no_straight_on.svg
new file mode 100644
index 0000000..56c51a3
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/no_straight_on.svg
@@ -0,0 +1,85 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="no_straight_on.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\turn-restrictions\no_straight_on.png"
+   inkscape:export-xdpi="4.0996442"
+   inkscape:export-ydpi="4.0996442">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="667"
+     inkscape:window-width="640"
+     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="0.63724138"
+     inkscape:cx="387.12284"
+     inkscape:cy="362.5"
+     inkscape:window-x="341"
+     inkscape:window-y="114"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective10" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:#ffffff;stroke:#000000;stroke-width:2.5px"
+     id="circle4"
+     sodipodi:cx="362.5"
+     sodipodi:cy="362.5"
+     sodipodi:rx="350"
+     sodipodi:ry="350"
+     transform="matrix(-1,0,0,1,725,0)" />
+  <path
+     d="M 34.355927,362.50146 C 34.355927,543.7316 181.27198,690.64765 362.50212,690.64765 C 543.73226,690.64765 690.64832,543.7316 690.64832,362.50146 C 690.64832,181.27132 543.73226,34.355265 362.50212,34.355265 C 181.27198,34.355265 34.355927,181.27132 34.355927,362.50146 z"
+     style="opacity:1;fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 252.18597,190.12946 L 168.7173,279.78571 L 255.15348,280.25446 C 361.85463,285.1643 388.33535,385.16627 392.41565,414.28571 L 392.41565,647.06696 L 333.47263,647.06696 L 333.47263,423.87946 C 333.47264,413.08317 324.56058,354.14011 258.26646,341.87946 L 167.20445,342.12946 L 252.24415,433.47321 L 179.01633,433.47321 L 65.872507,311.91071 L 65.581574,311.91071 L 65.72704,311.75446 L 65.639761,311.66071 L 65.81432,311.66071 L 178.98724,190.12946 L 252.18597,190.12946 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1885" />
+  <path
+     id="path2381"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 471.70634,190.12946 L 555.175,279.78571 L 468.73882,280.25446 C 362.03768,285.1643 335.55696,385.16627 331.47666,414.28571 L 331.47666,647.06696 L 390.41967,647.06696 L 390.41967,423.87946 C 390.41966,413.08317 399.33173,354.14011 465.62584,341.87946 L 556.68786,342.12946 L 471.64815,433.47321 L 544.87598,433.47321 L 658.0198,311.91071 L 658.31074,311.91071 L 658.16527,311.75446 L 658.25255,311.66071 L 658.07799,311.66071 L 544.90507,190.12946 L 471.70634,190.12946 z" />
+</svg>
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_straight_on_red.png b/images/presets/vehicle/restriction/turn_restrictions/no_straight_on_red.png
new file mode 100644
index 0000000..8c66af3
Binary files /dev/null and b/images/presets/vehicle/restriction/turn_restrictions/no_straight_on_red.png differ
diff --git a/images/presets/vehicle/restriction/turn_restrictions/no_u_turn.svg b/images/presets/vehicle/restriction/turn_restrictions/no_u_turn.svg
new file mode 100644
index 0000000..67d928f
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/no_u_turn.svg
@@ -0,0 +1,80 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="no_u_turn.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\turn-restrictions\no_u_turn.png"
+   inkscape:export-xdpi="4.0996442"
+   inkscape:export-ydpi="4.0996442">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective12" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill: white; stroke: black; stroke-width: 2.5px;"
+     id="circle4" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="290"
+     style="fill: none; stroke: rgb(204, 0, 0); stroke-width: 93.75;"
+     id="circle6" />
+  <path
+     d="M 372.12936,407.61704 L 558.5298,515.33292 L 590.56227,455.34484 L 417.87814,355.17057 L 372.12936,407.61704 z "
+     style="fill: rgb(204, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path2770" />
+  <path
+     d="M 431.62149,525.59036 L 431.62149,299.14019 C 417.2558,213.04303 308.28159,213.79869 292.49321,298.089 L 292.49321,472.24328 L 257.25806,525.65284 L 221.51376,471.29865 L 221.51376,291.24233 C 236.67549,133.46511 472.30321,110.78353 502.26575,291.24233 L 502.26575,525.65284 L 467.32146,472.40686 L 431.62149,525.59036 z "
+     style="fill: black; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1881" />
+  <path
+     d="M 166.58744,209.24794 L 426.33219,359.97799 L 392.44564,419.24834 L 133.71666,270.26552 L 166.58744,209.24794 z "
+     style="fill: rgb(204, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1883" />
+</svg>
diff --git a/images/presets/vehicle/restriction/turn_restrictions/only_left_turn.svg b/images/presets/vehicle/restriction/turn_restrictions/only_left_turn.svg
new file mode 100644
index 0000000..dfa3628
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/only_left_turn.svg
@@ -0,0 +1,78 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="only_left_turn.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="667"
+     inkscape:window-width="640"
+     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="0.63724138"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="22"
+     inkscape:window-y="29"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective10" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:#ffffff;stroke:#000000;stroke-width:2.5px"
+     id="circle4"
+     sodipodi:cx="362.5"
+     sodipodi:cy="362.5"
+     sodipodi:rx="350"
+     sodipodi:ry="350"
+     transform="matrix(-1,0,0,1,725,0)" />
+  <path
+     d="M 34.355927,362.50146 C 34.355927,543.7316 181.27198,690.64765 362.50212,690.64765 C 543.73226,690.64765 690.64832,543.7316 690.64832,362.50146 C 690.64832,181.27132 543.73226,34.355265 362.50212,34.355265 C 181.27198,34.355265 34.355927,181.27132 34.355927,362.50146 z"
+     style="opacity:1;fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 341.34375,138.34375 L 251.6875,228 L 344.53125,228.46875 C 459.14222,233.37859 487.58597,333.38056 491.96875,362.5 L 491.96875,595.28125 L 428.65625,595.28125 L 428.65625,372.09375 C 428.65626,361.29746 419.08354,302.3544 347.875,290.09375 L 250.0625,290.34375 L 341.40625,381.6875 L 262.75,381.6875 L 141.21875,260.125 L 140.90625,260.125 L 141.0625,259.96875 L 140.96875,259.875 L 141.15625,259.875 L 262.71875,138.34375 L 341.34375,138.34375 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path1885" />
+</svg>
diff --git a/images/presets/vehicle/restriction/turn_restrictions/only_right_turn.svg b/images/presets/vehicle/restriction/turn_restrictions/only_right_turn.svg
new file mode 100644
index 0000000..21a304f
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/only_right_turn.svg
@@ -0,0 +1,71 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="only_right_turn.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\turn-restrictions\only_right_turn.png"
+   inkscape:export-xdpi="4.0996442"
+   inkscape:export-ydpi="4.0996442">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="640"
+     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" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective10" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill: white; stroke: black; stroke-width: 2.5px;"
+     id="circle4" />
+  <path
+     d="M -176.30905 369.66949 A 309.2189 309.2189 0 1 1  -794.74686,369.66949 A 309.2189 309.2189 0 1 1  -176.30905 369.66949 z"
+     transform="matrix(1.06121, 0, 0, 1.06121, 877.745, -29.7955)"
+     style="opacity: 1; fill: rgb(0, 51, 153); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1;"
+     id="path1883" />
+  <path
+     d="M 383.65625,138.34375 L 473.3125,228 L 380.46875,228.46875 C 265.85778,233.37859 237.41403,333.38056 233.03125,362.5 L 233.03125,595.28125 L 296.34375,595.28125 L 296.34375,372.09375 C 296.34374,361.29746 305.91646,302.3544 377.125,290.09375 L 474.9375,290.34375 L 383.59375,381.6875 L 462.25,381.6875 L 583.78125,260.125 L 584.09375,260.125 L 583.9375,259.96875 L 584.03125,259.875 L 583.84375,259.875 L 462.28125,138.34375 L 383.65625,138.34375 z "
+     style="fill: white; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;"
+     id="path1885" />
+</svg>
diff --git a/images/presets/vehicle/restriction/turn_restrictions/only_straight_on.svg b/images/presets/vehicle/restriction/turn_restrictions/only_straight_on.svg
new file mode 100644
index 0000000..76abb94
--- /dev/null
+++ b/images/presets/vehicle/restriction/turn_restrictions/only_straight_on.svg
@@ -0,0 +1,81 @@
+<?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"
+   version="1.0"
+   width="725"
+   height="725"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="only_straight_on.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\turn-restrictions\only_straight_on.png"
+   inkscape:export-xdpi="4.0996442"
+   inkscape:export-ydpi="4.0996442">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="667"
+     inkscape:window-width="640"
+     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="0.63724138"
+     inkscape:cx="362.5"
+     inkscape:cy="362.5"
+     inkscape:window-x="44"
+     inkscape:window-y="58"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs9">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective10" />
+  </defs>
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="350"
+     style="fill:#ffffff;stroke:#000000;stroke-width:2.5px"
+     id="circle4"
+     sodipodi:cx="362.5"
+     sodipodi:cy="362.5"
+     sodipodi:rx="350"
+     sodipodi:ry="350"
+     transform="matrix(0,-1,1,0,0,725)" />
+  <path
+     d="M 362.49788,34.355265 C 543.72802,34.355265 690.64407,181.27132 690.64407,362.50146 C 690.64407,543.7316 543.72802,690.64765 362.49788,690.64765 C 181.26774,690.64765 34.351685,543.7316 34.351685,362.50146 C 34.351685,181.27132 181.26774,34.355265 362.49788,34.355265 z"
+     style="opacity:1;fill:#003399;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+     id="path1883" />
+  <path
+     d="M 200.04688,353.01562 L 325.35938,227.85938 L 325.35938,626.70312 L 398.64062,626.70312 L 398.64062,227.45312 L 524.01562,352.67188 L 524.01562,260.32812 L 362.14062,98.140625 L 362.35938,114.23438 L 361.92188,98.484375 L 200.04688,260.70312 L 200.04688,353.01562 z"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path2806" />
+</svg>
diff --git a/images/presets/vehicle/rumble_strip.svg b/images/presets/vehicle/rumble_strip.svg
new file mode 100644
index 0000000..0af39f3
--- /dev/null
+++ b/images/presets/vehicle/rumble_strip.svg
@@ -0,0 +1,170 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__rumble_strip.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313709"
+     inkscape:cx="-41.808605"
+     inkscape:cy="15.624716"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846066,0,0,1.1346381,-204.78325,616.43414)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3653 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5,1043.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5,1047.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3653 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7-4"
+       d="m 9,1047.3621 -3,0 0,-1 3,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 9,1049.3621 -3,0 0,-1 3,0 z"
+       id="path4173"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4175"
+       d="m 9,1051.3621 -3,0 0,-1 3,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 3,1042.3621 -3,0 0,-1 3,0 z"
+       id="path4177"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4179"
+       d="m 3,1040.3621 -3,0 0,-1 3,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 3,1038.3621 -3,0 0,-1 3,0 z"
+       id="path4181"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#000000;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4147"
+       d="m 3,1044.3621 -3,0 0,-1 3,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 9,1045.3621 -3,0 0,-1 3,0 z"
+       id="path4149"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/services.svg b/images/presets/vehicle/services.svg
new file mode 100644
index 0000000..eb302eb
--- /dev/null
+++ b/images/presets/vehicle/services.svg
@@ -0,0 +1,274 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__motorway_junction.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.80000001"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.80000001"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.80000001"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="8.8855832"
+     inkscape:cy="10.815338"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="true"
+     inkscape:snap-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4254-5"
+       width="16"
+       height="16"
+       x="-4.7683727e-007"
+       y="1036.3621"
+       rx="2"
+       ry="2" />
+    <rect
+       rx="1.8715348"
+       y="1036.876"
+       x="0.51386845"
+       height="14.972305"
+       width="14.97227"
+       id="rect4217"
+       style="opacity:1;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <g
+       id="g4230"
+       transform="translate(1.1499033,-0.35440876)">
+      <g
+         id="XMLID_4_"
+         style="fill:#000000"
+         transform="matrix(0.07422091,0,0,0.07422091,6.6867444,1040.9887)">
+        <g
+           id="g1954"
+           style="fill:#000000">
+          <path
+             sodipodi:nodetypes="ccccccc"
+             inkscape:connector-curvature="0"
+             id="path1956"
+             style="fill:#ffffff;fill-opacity:1"
+             d="m 100.25,91.111 c 2.31808,2.318083 -6.552046,11.72595 -9.139,9.139 L 40.787555,47.528226 c 0,0 -3.033158,-3.581623 -7.640555,1.025774 L 5.471,20.356 C -7.671994,7.213006 3.0014474,-3.8990087 7.4948624,0.59440624 Z" />
+          <path
+             sodipodi:nodetypes="acccccsccsccsccsccsccsccca"
+             inkscape:connector-curvature="0"
+             id="path1958"
+             style="fill:#ffffff;fill-opacity:1"
+             d="m 81.189,35.237 c -3.405243,2.041853 -9.363961,-0.368207 -11.740962,2.008337 L 57.952,48.552 51.685,42.025 63.435,30.275 C 66.239352,27.470648 63.53552,21.645656 65.524,18.004 71.037953,9.2107244 87.899744,-1.1342555 89.284,0.25 90.772572,1.7385721 86.15,5.733 86.15,5.733 l -9.508561,8.71911 c 0,0 -4.102961,3.740345 -3.026589,4.90837 1.101122,1.194883 5.17152,-3.02444 5.17152,-3.02444 l 8.877,-8.9296296 c 0,0 3.972117,-4.7114218 5.27563,-3.5014104 1.329158,1.2338167 -3.39 [...]
+          <path
+             sodipodi:nodetypes="ccccc"
+             inkscape:connector-curvature="0"
+             id="path1960"
+             style="fill:#ffffff;fill-opacity:1"
+             d="M 42.286,51.425 48.628419,57.805129 9.388,100.25 C 5.8258038,103.8122 -3.109231,94.209231 0.25,90.85 Z" />
+        </g>
+      </g>
+      <g
+         transform="matrix(1.3087815,0,0,1.3087815,-12.188936,-326.89621)"
+         id="g4256">
+        <path
+           sodipodi:nodetypes="csssccc"
+           inkscape:connector-curvature="0"
+           d="m 13.959108,1050.882 0,-5.5689 c 0,-0.1115 -0.0646,-0.2079 -0.186101,-0.2079 l -2.695906,0 c -0.139141,0 -0.277865,0.1005 -0.277865,0.2612 l -0.0031,5.514 z"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1897" />
+        <path
+           sodipodi:nodetypes="cccccccccc"
+           inkscape:connector-curvature="0"
+           d="m 10.811968,1046.8825 -0.262811,0 c 0,0 0.156147,2.3898 -0.0055,3.4457 -0.411999,1.0379 -1.7451403,0.5611 -1.5558515,-0.4488 0.4157448,-1.0017 0.9987027,-1.6796 1.2888405,-2.8613 l 0.02583,0.8784 c 0,0 -0.7217719,1.4005 -1.0790229,2.1464 -0.030096,0.6888 0.7891539,0.9156 1.0457379,0.1764 0.114343,-1.294 -0.0043,-2.7044 -0.0065,-4.0565 0,-0.4099 0.350708,-0.5431 0.537413,-0.5196"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1899" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m 11.343882,1045.8422 -0.0091,1.3366 c 0,0.1077 0.08634,0.1817 0.186372,0.1817 l 1.731897,0 c 0.105071,0 0.154551,-0.067 0.154551,-0.1591 l 0,-1.3592 c 0,-0.1312 -0.07519,-0.1704 -0.170462,-0.1704 l -1.720532,0 c -0.0986,0 -0.172735,0.059 -0.172735,0.1659 z"
+           style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           id="path1901" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/table.svg b/images/presets/vehicle/table.svg
new file mode 100644
index 0000000..006b08e
--- /dev/null
+++ b/images/presets/vehicle/table.svg
@@ -0,0 +1,149 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__table.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-7.6439145"
+     inkscape:cy="13.095306"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846066,0,0,1.1346381,-204.78325,616.43414)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1040.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1050.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <rect
+       style="opacity:1;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4156"
+       width="9"
+       height="6"
+       x="0"
+       y="1041.3621" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7-4"
+       d="m 8.000001,1046.3621 -1,0 0,-4 1,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 2,1046.3621 -1,0 0,-4 1,0 z"
+       id="path4177"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4179"
+       d="m 4,1046.3621 -1,0 0,-4 1,0 z"
+       class="st5" />
+    <path
+       class="st5"
+       d="m 6,1046.3621 -1,0 0,-4 1,0 z"
+       id="path4181"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       class="st5"
+       d="m 5,1037.3621 -1,0 0,-1 1,0 z"
+       id="path4183"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       class="st5"
+       d="m 5,1052.3621 -1,0 0,-1 1,0 z"
+       id="path4185"
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1"
+       sodipodi:nodetypes="ccccc" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_calming.svg b/images/presets/vehicle/traffic_calming.svg
new file mode 100644
index 0000000..03fbfc0
--- /dev/null
+++ b/images/presets/vehicle/traffic_calming.svg
@@ -0,0 +1,146 @@
+<?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"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_calming__yes.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="-1.063307"
+     inkscape:cy="13.321318"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false"
+     inkscape:snap-global="false"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382-2"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78324,616.43072)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_-9"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9"
+       d="m 5,1042.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-7"
+       d="m 5,1048.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4143"
+       width="9"
+       height="2"
+       x="-4.7683722e-007"
+       y="1043.3621" />
+    <path
+       style="fill:none;stroke:#ffffff;stroke-width:2.00000048;stroke-miterlimit:4;stroke-dasharray:none"
+       inkscape:connector-curvature="0"
+       d="m 11.236234,1039.306 c -0.77002,0.017 -1.5671119,0.7072 -1.4897799,2.2195 l -1.7457337,-0.017 c -0.03222,-2.2242 1.025932,-3.0492 1.5484917,-3.2969 0.4994209,-0.2368 1.1335729,-0.3622 1.7510069,-0.3622 0.738027,0 1.340991,0.094 1.80889,0.2787 0.4679,0.1843 0.848973,0.4225 1.133571,0.7101 0.284599,0.2877 0.482371,0.6113 0.593316,0.9664 0.110946,0.3551 0.164006,0.6967 0.164006,1.0203 0,0.409 -0.082,0.7731 -0.250832,1.0922 -0.16883,0.3191 -0.37625,0.6158 -0.622259,0.8944 -0.246009 [...]
+       class="st1"
+       id="path4148"
+       sodipodi:nodetypes="sccsssssssscssssccssscccscssssssccscss" />
+    <g
+       id="XMLID_135_"
+       transform="matrix(0.04823708,0,0,0.04494685,-1.6321415,1026.0193)"
+       style="fill:#000000">
+      <path
+         style="fill:#000000"
+         inkscape:connector-curvature="0"
+         d="m 266.77352,295.60834 c -15.96324,0.36944 -32.48768,15.73538 -30.88452,49.38093 l -36.19071,-0.38025 C 199.03031,295.12395 220.9668,276.76971 231.8,271.25733 242.15344,265.98907 255.3,263.2 268.1,263.2 c 15.3,0 27.8,2.1 37.5,6.2 9.7,4.1 17.6,9.4 23.5,15.8 5.9,6.4 10,13.6 12.3,21.5 2.3,7.9 3.4,15.5 3.4,22.7 0,9.1 -1.7,17.2 -5.2,24.3 -3.5,7.1 -7.8,13.7 -12.9,19.9 -5.1,6.2 -10.7,12 -16.9,17.7 -6.2,5.6 -11.8,11.4 -16.9,17.4 -5.1,6 -9.4,12.6 -12.9,19.7 -3.5,7.1 -5.2,15 -5.2,23.9 l [...]
+         class="st1"
+         id="XMLID_140_-7"
+         sodipodi:nodetypes="sccsssssssscssssccssscccscsssssscscs" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_mirror.svg b/images/presets/vehicle/traffic_mirror.svg
new file mode 100644
index 0000000..78366cc
--- /dev/null
+++ b/images/presets/vehicle/traffic_mirror.svg
@@ -0,0 +1,270 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="14"
+   height="16"
+   viewBox="0 0 14 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="traffic_sign__traffic_mirror.svg">
+  <defs
+     id="defs4266">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4321">
+      <stop
+         style="stop-color:#000000;stop-opacity:1"
+         offset="0"
+         id="stop4291" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop4293" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4321"
+       id="radialGradient4665"
+       cx="3.6456184"
+       cy="1043.9417"
+       fx="3.6456184"
+       fy="1043.9417"
+       r="8"
+       gradientTransform="matrix(0.37498993,-0.74999645,1.5206994,0.76033289,-1585.8884,251.3531)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="8.1603866"
+     inkscape:cy="7.5582424"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4262"
+       width="4"
+       height="6"
+       x="5"
+       y="1046.3621"
+       rx="0"
+       ry="4.0764426e-005" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:2.0000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4260"
+       width="12"
+       height="8"
+       x="1"
+       y="1037.3621"
+       rx="1.65728"
+       ry="1.65728" />
+    <rect
+       style="opacity:1;fill:url(#radialGradient4665);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4360"
+       width="11"
+       height="7"
+       x="1.5"
+       y="1037.8621"
+       ry="1.6572816"
+       rx="1.6572815" />
+    <g
+       id="g3382-9"
+       transform="matrix(0,0.15384648,-0.35461025,0,155.24126,1020.1082)"
+       style="fill:#000000;fill-opacity:1" />
+    <rect
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4263"
+       width="2"
+       height="8"
+       x="6"
+       y="1044.3621"
+       ry="0" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_signals.svg b/images/presets/vehicle/traffic_signals.svg
new file mode 100644
index 0000000..39af39e
--- /dev/null
+++ b/images/presets/vehicle/traffic_signals.svg
@@ -0,0 +1,113 @@
+<?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"
+   width="6"
+   height="16"
+   id="svg3850"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="traffic_signal_crossing_island.svg">
+  <defs
+     id="defs3852" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="14.621652"
+     inkscape:cy="3.4019579"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3877"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="4.5474735e-013px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3855">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <g
+       id="g3927"
+       transform="translate(0,1.7382813e-5)">
+      <rect
+         ry="2"
+         y="1036.3622"
+         x="0"
+         height="16"
+         width="6"
+         id="rect3804"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,262.44169)"
+         d="m 640,709.36218 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="709.36218"
+         sodipodi:cx="638"
+         id="path3024"
+         style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,261.9655)"
+         d="m 640,714.36218 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="714.36218"
+         sodipodi:cx="638"
+         id="path3796"
+         style="fill:#ffff00;fill-opacity:1;stroke:#ffd600;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.76189,261.48932)"
+         d="m 640,719.36218 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="719.36218"
+         sodipodi:cx="638"
+         id="path3798"
+         style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_signals_crossing.svg b/images/presets/vehicle/traffic_signals_crossing.svg
new file mode 100644
index 0000000..5669df3
--- /dev/null
+++ b/images/presets/vehicle/traffic_signals_crossing.svg
@@ -0,0 +1,194 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg3850"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="traffic_signal_crossing_traffic_signal.svg">
+  <defs
+     id="defs3852" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="10.872455"
+     inkscape:cy="4.2485601"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3877"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="4.5474735e-013px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3855">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <g
+       id="g3933"
+       transform="translate(0,1.7382813e-5)">
+      <rect
+         y="1045.3193"
+         x="0"
+         height="7"
+         width="16"
+         id="rect2998"
+         style="fill:#999999;fill-opacity:1;stroke:none" />
+      <rect
+         y="1045.3193"
+         x="5"
+         height="0.9997701"
+         width="1.0000887"
+         id="rect3772"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1045.3193"
+         x="10"
+         height="1"
+         width="1"
+         id="rect3774"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1047.3193"
+         x="10"
+         height="2"
+         width="1"
+         id="rect3776"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1050.3193"
+         x="10"
+         height="2"
+         width="1"
+         id="rect3778"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1050.3193"
+         x="5"
+         height="2"
+         width="1"
+         id="rect3780"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1047.3193"
+         x="5"
+         height="2"
+         width="1"
+         id="rect3782"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1048.3193"
+         x="1.9999999"
+         height="1"
+         width="2"
+         id="rect3861"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1048.3193"
+         x="12"
+         height="1"
+         width="2"
+         id="rect3863"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1048.3193"
+         x="0"
+         height="1"
+         width="1"
+         id="rect3865"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1048.3193"
+         x="15"
+         height="1"
+         width="1"
+         id="rect3867"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </g>
+    <g
+       id="g3927"
+       transform="translate(0,1.7382813e-5)">
+      <rect
+         ry="2"
+         y="1036.3622"
+         x="0"
+         height="16"
+         width="6"
+         id="rect3804"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,262.44169)"
+         d="m 640,709.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="709.36218"
+         sodipodi:cx="638"
+         id="path3024"
+         style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,261.9655)"
+         d="m 640,714.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="714.36218"
+         sodipodi:cx="638"
+         id="path3796"
+         style="fill:#ffff00;fill-opacity:1;stroke:#ffd600;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.76189,261.48932)"
+         d="m 640,719.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="719.36218"
+         sodipodi:cx="638"
+         id="path3798"
+         style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_signals_crossing_island.svg b/images/presets/vehicle/traffic_signals_crossing_island.svg
new file mode 100644
index 0000000..502e11d
--- /dev/null
+++ b/images/presets/vehicle/traffic_signals_crossing_island.svg
@@ -0,0 +1,172 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg3850"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="traffic_signal_crossing_ref_zebra.svg">
+  <defs
+     id="defs3852" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16"
+     inkscape:cx="14.621652"
+     inkscape:cy="3.4019579"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3877"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="4.5474735e-013px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3855">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <g
+       id="g4031"
+       transform="translate(-19.5,3.7500174)">
+      <rect
+         y="1041.6122"
+         x="19.5"
+         height="7"
+         width="16"
+         id="rect3817"
+         style="fill:#999999;fill-opacity:1;stroke:none" />
+      <rect
+         y="1044.6122"
+         x="19.5"
+         height="1"
+         width="2"
+         id="rect3819"
+         style="fill:#999999;fill-opacity:1;stroke:none" />
+      <rect
+         y="1044.6122"
+         x="20.5"
+         height="1"
+         width="2"
+         id="rect3823"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1044.6122"
+         x="32.5"
+         height="1"
+         width="2"
+         id="rect3825"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <path
+         transform="translate(-628.5,313.25004)"
+         d="m 657,731.86218 c 0,1.38071 -1.11929,2.5 -2.5,2.5 -1.38071,0 -2.5,-1.11929 -2.5,-2.5 0,-1.38071 1.11929,-2.5 2.5,-2.5 1.38071,0 2.5,1.11929 2.5,2.5 z"
+         sodipodi:ry="2.5"
+         sodipodi:rx="2.5"
+         sodipodi:cy="731.86218"
+         sodipodi:cx="654.5"
+         id="path3827"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         d="m 657,731.86218 c 0,1.38071 -1.11929,2.5 -2.5,2.5 -1.38071,0 -2.5,-1.11929 -2.5,-2.5 0,-1.38071 1.11929,-2.5 2.5,-2.5 1.38071,0 2.5,1.11929 2.5,2.5 z"
+         sodipodi:ry="2.5"
+         sodipodi:rx="2.5"
+         sodipodi:cy="731.86218"
+         sodipodi:cx="654.5"
+         id="path3827-1"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         sodipodi:type="arc"
+         transform="translate(-625.5,313.25004)" />
+      <rect
+         y="1041.6122"
+         x="25.5"
+         height="7"
+         width="4"
+         id="rect3847"
+         style="fill:#999999;fill-opacity:1;stroke:none" />
+    </g>
+    <g
+       id="g3927"
+       transform="translate(0,1.7382813e-5)">
+      <rect
+         ry="2"
+         y="1036.3622"
+         x="0"
+         height="16"
+         width="6"
+         id="rect3804"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,262.44169)"
+         d="m 640,709.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="709.36218"
+         sodipodi:cx="638"
+         id="path3024"
+         style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,261.9655)"
+         d="m 640,714.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="714.36218"
+         sodipodi:cx="638"
+         id="path3796"
+         style="fill:#ffff00;fill-opacity:1;stroke:#ffd600;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.76189,261.48932)"
+         d="m 640,719.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="719.36218"
+         sodipodi:cx="638"
+         id="path3798"
+         style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_signals_crossing_ref_zebra.svg b/images/presets/vehicle/traffic_signals_crossing_ref_zebra.svg
new file mode 100644
index 0000000..0fca23e
--- /dev/null
+++ b/images/presets/vehicle/traffic_signals_crossing_ref_zebra.svg
@@ -0,0 +1,173 @@
+<?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"
+   width="16"
+   height="16"
+   id="svg3850"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="traffic_signal_crossing.svg">
+  <defs
+     id="defs3852" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="38.544379"
+     inkscape:cy="5.0923131"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-global="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3877"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="4.5474735e-013px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3855">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <g
+       id="g3985"
+       transform="translate(-24.4375,-0.68748262)">
+      <rect
+         y="1046.0497"
+         x="24.4375"
+         height="7"
+         width="16"
+         id="rect3784"
+         style="fill:#999999;fill-opacity:1;stroke:none" />
+      <rect
+         y="1047.0497"
+         x="29.4375"
+         height="1"
+         width="6"
+         id="rect3786"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1049.0497"
+         x="29.4375"
+         height="1"
+         width="6"
+         id="rect3788"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1051.0497"
+         x="29.4375"
+         height="1"
+         width="6"
+         id="rect3790"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1049.0497"
+         x="26.4375"
+         height="1"
+         width="2"
+         id="rect3853"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1049.0497"
+         x="24.4375"
+         height="1"
+         width="1"
+         id="rect3855"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1049.0497"
+         x="36.4375"
+         height="1"
+         width="2"
+         id="rect3857"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         y="1049.0497"
+         x="39.4375"
+         height="1"
+         width="1"
+         id="rect3859"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </g>
+    <g
+       id="g3927"
+       transform="translate(0,1.7382813e-5)">
+      <rect
+         ry="2"
+         y="1036.3622"
+         x="0"
+         height="16"
+         width="6"
+         id="rect3804"
+         style="fill:#000000;fill-opacity:1;stroke:none" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,262.44169)"
+         d="m 640,709.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="709.36218"
+         sodipodi:cx="638"
+         id="path3024"
+         style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.7619,261.9655)"
+         d="m 640,714.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="714.36218"
+         sodipodi:cx="638"
+         id="path3796"
+         style="fill:#ffff00;fill-opacity:1;stroke:#ffd600;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         transform="matrix(1.0952381,0,0,1.0952381,-695.76189,261.48932)"
+         d="m 640,719.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="719.36218"
+         sodipodi:cx="638"
+         id="path3798"
+         style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/images/presets/vehicle/traffic_signals_crossing_traffic_signals.svg b/images/presets/vehicle/traffic_signals_crossing_traffic_signals.svg
new file mode 100644
index 0000000..8afc9c5
--- /dev/null
+++ b/images/presets/vehicle/traffic_signals_crossing_traffic_signals.svg
@@ -0,0 +1,136 @@
+<?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"
+   width="12"
+   height="16"
+   id="svg3850"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="New document 4">
+  <defs
+     id="defs3852" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="28.262369"
+     inkscape:cy="29.50151"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3877"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       originx="0px"
+       originy="0px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3855">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3622)">
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect3804"
+       width="6"
+       height="16"
+       x="0"
+       y="1036.3622"
+       ry="2" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3024"
+       sodipodi:cx="638"
+       sodipodi:cy="709.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,709.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-695.7619,262.44169)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ffff00;fill-opacity:1;stroke:#ffd600;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3796"
+       sodipodi:cx="638"
+       sodipodi:cy="714.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,714.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-695.7619,261.9655)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3798"
+       sodipodi:cx="638"
+       sodipodi:cy="719.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,719.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-695.76189,261.48932)" />
+    <rect
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="rect3804-1"
+       width="6"
+       height="11"
+       x="6"
+       y="1041.3622"
+       ry="2" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ff0000;fill-opacity:1;stroke:#b20505;stroke-width:0.2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3024-7"
+       sodipodi:cx="638"
+       sodipodi:cy="709.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,709.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-689.7619,267.44172)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#00ff00;fill-opacity:1;stroke:#00b200;stroke-width:0.2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path3798-0"
+       sodipodi:cx="638"
+       sodipodi:cy="719.36218"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 640,719.36218 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.10457,0 2,0.89543 2,2 z"
+       transform="matrix(1.0952381,0,0,1.0952381,-689.76189,261.48935)" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/turning_circle.svg b/images/presets/vehicle/turning_circle.svg
new file mode 100644
index 0000000..25ae3d8
--- /dev/null
+++ b/images/presets/vehicle/turning_circle.svg
@@ -0,0 +1,233 @@
+<?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"
+   width="16"
+   height="12"
+   viewBox="0 0 16 12"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__turning_circle2.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="9.8027027"
+     inkscape:cy="5.2015579"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1040.3621)">
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4221"
+       cx="6"
+       cy="1046.3621"
+       rx="5.5"
+       ry="5.5" />
+    <g
+       id="g3382"
+       transform="matrix(0,0.61538806,-0.42566328,0,179.53891,948.34619)"
+       style="fill:#ffffff;fill-opacity:1" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 16,1043.8621 -5,0"
+       id="path4209"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4211"
+       d="m 16,1048.8621 -5,0"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4213"
+       d="m 16,1046.3621 -6,0"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/turning_loop.svg b/images/presets/vehicle/turning_loop.svg
new file mode 100644
index 0000000..e9e2050
--- /dev/null
+++ b/images/presets/vehicle/turning_loop.svg
@@ -0,0 +1,236 @@
+<?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"
+   width="16"
+   height="12"
+   viewBox="0 0 16 12"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="highway__turning_loop.svg">
+  <defs
+     id="defs4266">
+    <marker
+       inkscape:stockid="EmptyTriangleInL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="EmptyTriangleInL"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4298"
+         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,4.8,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4778"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4780"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4657"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4659"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineStart"
+       id="InfiniteLineStart"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4391"
+         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+         transform="translate(-13,0)">
+        <circle
+           id="circle4393"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4395"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+        <circle
+           id="circle4397"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4153"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.4,0,0,0.4,4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4147"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="13.788693"
+     inkscape:cy="4.3855505"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-object-midpoints="false"
+     inkscape:snap-center="false"
+     inkscape:snap-nodes="false"
+     inkscape:snap-others="true"
+     inkscape:snap-page="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1040.3621)">
+    <ellipse
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4221"
+       cx="6"
+       cy="1046.3621"
+       rx="5.5"
+       ry="5.5" />
+    <ellipse
+       cy="1046.3621"
+       cx="5.999999"
+       id="circle4223"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       rx="2"
+       ry="2" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 16,1043.8621 -5,0"
+       id="path4209"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4211"
+       d="m 16,1048.8621 -5,0"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4213"
+       d="m 16,1046.3621 -6,0"
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/images/presets/vehicle/tyres.svg b/images/presets/vehicle/tyres.svg
new file mode 100644
index 0000000..2f066e0
--- /dev/null
+++ b/images/presets/vehicle/tyres.svg
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   width="725"
+   height="725"
+   version="1.1"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="tyres.svg">
+  <metadata
+     id="metadata12">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 362.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="725 : 362.5 : 1"
+       inkscape:persp3d-origin="362.5 : 241.66667 : 1"
+       id="perspective14" />
+  </defs>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="988"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="0.48226238"
+     inkscape:cx="314.64442"
+     inkscape:cy="406.50663"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <rect
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:30;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.60000002;stroke-opacity:1"
+     id="rect4139"
+     width="725"
+     height="725"
+     x="0"
+     y="-3.0517578e-005" />
+  <circle
+     cx="362.5"
+     cy="362.5"
+     r="295"
+     style="fill:none;stroke:#000000;stroke-width:100;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+     id="circle6"
+     sodipodi:cx="362.5"
+     sodipodi:cy="362.5"
+     sodipodi:rx="295"
+     sodipodi:ry="295"
+     inkscape:export-xdpi="2.0869565"
+     inkscape:export-ydpi="2.0869565" />
+  <path
+     sodipodi:type="arc"
+     style="opacity:0.98999999;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:100;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="path3602"
+     sodipodi:cx="376.35117"
+     sodipodi:cy="398.41428"
+     sodipodi:rx="15.551701"
+     sodipodi:ry="15.551701"
+     d="m 391.90287,398.41428 a 15.551701,15.551701 0 1 1 -31.1034,0 15.551701,15.551701 0 1 1 31.1034,0 z"
+     transform="translate(-13.851166,-35.914276)"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.OMM\svg\circle6.png"
+     inkscape:export-xdpi="2.0869565"
+     inkscape:export-ydpi="2.0869565" />
+  <rect
+     style="opacity:0.98999999;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:32.5650444;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3604"
+     width="489.40442"
+     height="0.044254992"
+     x="117.79779"
+     y="362.47787"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.OMM\svg\circle6.png"
+     inkscape:export-xdpi="2.0869565"
+     inkscape:export-ydpi="2.0869565" />
+  <rect
+     y="362.47787"
+     x="-607.20221"
+     height="0.044254992"
+     width="489.40442"
+     id="rect3606"
+     style="opacity:0.98999999;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:32.5650444;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     transform="matrix(0,-1,1,0,0,0)"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.OMM\svg\circle6.png"
+     inkscape:export-xdpi="2.0869565"
+     inkscape:export-ydpi="2.0869565" />
+  <rect
+     y="-8.7529554"
+     x="267.87585"
+     height="0.044254992"
+     width="489.40442"
+     id="rect3608"
+     style="opacity:0.98999999;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:32.5650444;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     transform="matrix(0.69496171,0.71904675,-0.71904675,0.69496171,0,0)"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.OMM\svg\circle6.png"
+     inkscape:export-xdpi="2.0869565"
+     inkscape:export-ydpi="2.0869565" />
+  <rect
+     transform="matrix(-0.69496171,0.71904675,0.71904675,0.69496171,0,0)"
+     style="opacity:0.98999999;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:32.5650444;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+     id="rect3610"
+     width="489.40442"
+     height="0.044254992"
+     x="-235.97139"
+     y="512.55591"
+     inkscape:export-filename="C:\Dokumente und Einstellungen\ulfl\Eigene Dateien\osm\svn.OMM\svg\circle6.png"
+     inkscape:export-xdpi="2.0869565"
+     inkscape:export-ydpi="2.0869565" />
+</svg>
diff --git a/images/presets/vehicle/waypoints.svg b/images/presets/vehicle/waypoints.svg
new file mode 100644
index 0000000..55b745c
--- /dev/null
+++ b/images/presets/vehicle/waypoints.svg
@@ -0,0 +1,106 @@
+<?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"
+   width="9"
+   height="16"
+   viewBox="0 0 9 16"
+   id="svg4264"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="waypoints.svg">
+  <defs
+     id="defs4266" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="-5.2691134"
+     inkscape:cy="6.8269063"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     units="px"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-bbox-edge-midpoints="false"
+     inkscape:snap-bbox-midpoints="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4137" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4269">
+    <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></dc:title>
+        <cc:license
+           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Camada 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1036.3621)">
+    <g
+       id="g3382"
+       transform="matrix(1.3846064,0,0,1.1346381,-204.78322,616.43092)"
+       style="fill:#808080;fill-opacity:1">
+      <rect
+         id="XMLID_61_"
+         x="147.89999"
+         y="370.10001"
+         class="st4"
+         width="6.5"
+         height="14.1"
+         style="fill:#808080;fill-opacity:1" />
+    </g>
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0"
+       d="m 5,1039.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <path
+       sodipodi:nodetypes="ccccc"
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path3387-0-9-4"
+       d="m 5,1051.3621 -1,0 0,-2 1,0 z"
+       class="st5" />
+    <circle
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path4140"
+       cx="4.5"
+       cy="1044.3621"
+       r="3" />
+  </g>
+</svg>
diff --git a/images/presets/volcano.png b/images/presets/volcano.png
deleted file mode 100644
index 72ab9dc..0000000
Binary files a/images/presets/volcano.png and /dev/null differ
diff --git a/images/presets/wall.png b/images/presets/wall.png
deleted file mode 100644
index 8bd4b12..0000000
Binary files a/images/presets/wall.png and /dev/null differ
diff --git a/images/presets/wastewater_plant.png b/images/presets/wastewater_plant.png
deleted file mode 100644
index 426c97a..0000000
Binary files a/images/presets/wastewater_plant.png and /dev/null differ
diff --git a/images/presets/water_well.png b/images/presets/water_well.png
deleted file mode 100644
index 675e0ce..0000000
Binary files a/images/presets/water_well.png and /dev/null differ
diff --git a/images/presets/wayside_cross.png b/images/presets/wayside_cross.png
deleted file mode 100644
index 96c9d97..0000000
Binary files a/images/presets/wayside_cross.png and /dev/null differ
diff --git a/images/presets/wayside_shrine.png b/images/presets/wayside_shrine.png
deleted file mode 100644
index 222da16..0000000
Binary files a/images/presets/wayside_shrine.png and /dev/null differ
diff --git a/images/presets/works.png b/images/presets/works.png
deleted file mode 100644
index 0eb76a1..0000000
Binary files a/images/presets/works.png and /dev/null differ
diff --git a/images/presets/zoo.png b/images/presets/zoo.png
deleted file mode 100644
index d226ab7..0000000
Binary files a/images/presets/zoo.png and /dev/null differ
diff --git a/josm-latest.jnlp b/josm-latest.jnlp
index ecc2239..c997ba6 100644
--- a/josm-latest.jnlp
+++ b/josm-latest.jnlp
@@ -19,7 +19,7 @@
         <all-permissions/>
     </security>
     <resources>
-        <j2se version="1.7+"/>
+        <java version="1.8+"/>
         <jar href="josm-latest.jar"/>
         <property name="java.util.Arrays.useLegacyMergeSort" value="true"/>
     </resources>
diff --git a/josm.jnlp b/josm.jnlp
index afc9553..cda4ed0 100644
--- a/josm.jnlp
+++ b/josm.jnlp
@@ -19,7 +19,7 @@
         <all-permissions/>
     </security>
     <resources>
-        <j2se version="1.7+"/>
+        <java version="1.8+"/>
         <jar href="josm-tested.jar"/>
         <property name="java.util.Arrays.useLegacyMergeSort" value="true"/>
     </resources>
diff --git a/linux/latest/DEBIAN/control b/linux/latest/DEBIAN/control
index 914aef0..9190b0b 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-8-jre | java7-runtime
+Depends: openjdk-8-jre | java8-runtime
 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/bin/josm-latest b/linux/latest/usr/bin/josm-latest
index 862fa21..0f2d03b 100755
--- a/linux/latest/usr/bin/josm-latest
+++ b/linux/latest/usr/bin/josm-latest
@@ -2,8 +2,10 @@
 # Simple wrapper script used to start JOSM in Debian
 set -e
 
-# First, users preference as defined by $JAVA_HOME. Next, use OpenJDK or Oracle's proprietary JDK.
+# First, the alternative (if known to work) or users preference as defined by $JAVA_HOME. Next, use OpenJDK or Oracle's proprietary JDK.
 # Override to a specific one using $JAVACMD
+ALTERNATIVE_JDK="`readlink -n -f /etc/alternatives/java`"
+
 # Let's get the current architecture -- needed for multiarchified Java
 ARCH="`dpkg --print-architecture 2> /dev/null || true`"
 
@@ -11,12 +13,10 @@ ARCH="`dpkg --print-architecture 2> /dev/null || true`"
 if dpkg --get-selections 'openjdk-*-jre' | grep install$ > /dev/null ; then
 	JAVA_CMDS="$JAVA_HOME/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-8-openjdk/bin/java /usr/lib/jvm/java-8-openjdk-$ARCH/bin/java /usr/lib/jvm/java-8-oracle/bin/java"
-	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-openjdk/bin/java /usr/lib/jvm/java-9-openjdk-$ARCH/bin/java /usr/lib/jvm/java-9-oracle/bin/java"
 else
 	JAVA_CMDS="$JAVA_HOME/bin/java /usr/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-8-oracle/bin/java"
-	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-7-oracle/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-oracle/bin/java"
 fi
 
@@ -28,6 +28,15 @@ JAVA_OPTS="-Djosm.restart=true -Djosm.home=$HOME/.josm-latest -Djava.net.useSyst
 
 if [ -z "${JAVACMD}" ]; then
     for jcmd in $JAVA_CMDS; do
+        if [ "z$ALTERNATIVE_JDK" = "z`readlink -n -f $jcmd`" ] && [ -z "${JAVACMD}" ]; then
+            JAVACMD="$jcmd"
+            break
+        fi
+    done
+fi
+
+if [ -z "${JAVACMD}" ]; then
+    for jcmd in $JAVA_CMDS; do
         if [ -x "$jcmd" -a -z "${JAVACMD}" ]; then
             JAVACMD="$jcmd"
             break
diff --git a/linux/latest/usr/share/applications/josm-latest.desktop b/linux/latest/usr/share/applications/josm-latest.desktop
index 95a983b..f3557f5 100644
--- a/linux/latest/usr/share/applications/josm-latest.desktop
+++ b/linux/latest/usr/share/applications/josm-latest.desktop
@@ -7,7 +7,7 @@ Comment=Extensible off-line editor for OpenStreetMap (OSM)
 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;x-scheme-handler/geo;
 StartupNotify=true
 Categories=Education;Geoscience;Maps;
 StartupWMClass=org-openstreetmap-josm-Main
diff --git a/linux/latest/usr/share/man/man1/josm-latest.1 b/linux/latest/usr/share/man/man1/josm-latest.1
index 2145fe1..8447fbb 100644
--- a/linux/latest/usr/share/man/man1/josm-latest.1
+++ b/linux/latest/usr/share/man/man1/josm-latest.1
@@ -1,4 +1,4 @@
-.TH JOSM 1 "December 20, 2014"
+.TH JOSM 1 "July 21, 2016"
 .\" Please adjust this date whenever revising the manpage.
 .SH NAME
 josm \- Java OpenStreetMap Editor
@@ -6,7 +6,7 @@ josm \- Java OpenStreetMap Editor
 .B josm-latest
 .SH DESCRIPTION
 .B JOSM 
-is an editor for OpenStreetMap written in Java 7. 
+is an editor for OpenStreetMap written in Java 8. 
 .PP
 .B OpenStreetMap 
 is a project aimed squarely at creating and providing free geographic data such as street maps to anyone
diff --git a/linux/tested/DEBIAN/control b/linux/tested/DEBIAN/control
index db7d6e9..e905637 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-8-jre | java7-runtime
+Depends: openjdk-8-jre | java8-runtime
 Conflicts: josm-plugins
 Replaces: josm-plugins
 Description: Editor for OpenStreetMap
diff --git a/linux/tested/usr/bin/josm b/linux/tested/usr/bin/josm
index 6812d96..9aa40bf 100755
--- a/linux/tested/usr/bin/josm
+++ b/linux/tested/usr/bin/josm
@@ -2,8 +2,10 @@
 # Simple wrapper script used to start JOSM in Debian
 set -e
 
-# First, users preference as defined by $JAVA_HOME. Next, use OpenJDK or Oracle's proprietary JDK.
+# First, the alternative (if known to work) or users preference as defined by $JAVA_HOME. Next, use OpenJDK or Oracle's proprietary JDK.
 # Override to a specific one using $JAVACMD
+ALTERNATIVE_JDK="`readlink -n -f /etc/alternatives/java`"
+
 # Let's get the current architecture -- needed for multiarchified Java
 ARCH="`dpkg --print-architecture 2> /dev/null || true`"
 
@@ -11,12 +13,10 @@ ARCH="`dpkg --print-architecture 2> /dev/null || true`"
 if dpkg --get-selections 'openjdk-*-jre' | grep install$ > /dev/null ; then
 	JAVA_CMDS="$JAVA_HOME/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-8-openjdk/bin/java /usr/lib/jvm/java-8-openjdk-$ARCH/bin/java /usr/lib/jvm/java-8-oracle/bin/java"
-	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-openjdk/bin/java /usr/lib/jvm/java-9-openjdk-$ARCH/bin/java /usr/lib/jvm/java-9-oracle/bin/java"
 else
 	JAVA_CMDS="$JAVA_HOME/bin/java /usr/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-8-oracle/bin/java"
-	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-7-oracle/bin/java"
 	JAVA_CMDS="${JAVA_CMDS} /usr/lib/jvm/java-9-oracle/bin/java"
 fi
 
@@ -28,6 +28,15 @@ JAVA_OPTS="-Djosm.restart=true -Djava.net.useSystemProxies=true $JAVA_OPTS"
 
 if [ -z "${JAVACMD}" ]; then
     for jcmd in $JAVA_CMDS; do
+        if [ "z$ALTERNATIVE_JDK" = "z`readlink -n -f $jcmd`" ] && [ -z "${JAVACMD}" ]; then
+            JAVACMD="$jcmd"
+            break
+        fi
+    done
+fi
+
+if [ -z "${JAVACMD}" ]; then
+    for jcmd in $JAVA_CMDS; do
         if [ -x "$jcmd" -a -z "${JAVACMD}" ]; then
             JAVACMD="$jcmd"
             break
diff --git a/linux/tested/usr/share/applications/josm.desktop b/linux/tested/usr/share/applications/josm.desktop
index f21db97..0a552bc 100644
--- a/linux/tested/usr/share/applications/josm.desktop
+++ b/linux/tested/usr/share/applications/josm.desktop
@@ -7,7 +7,7 @@ Comment=Extensible off-line editor for OpenStreetMap (OSM)
 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;x-scheme-handler/geo;
 StartupNotify=true
 Categories=Education;Geoscience;Maps;
 StartupWMClass=org-openstreetmap-josm-Main
diff --git a/linux/tested/usr/share/man/man1/josm.1 b/linux/tested/usr/share/man/man1/josm.1
index 7f65af5..2c8b0da 100644
--- a/linux/tested/usr/share/man/man1/josm.1
+++ b/linux/tested/usr/share/man/man1/josm.1
@@ -1,4 +1,4 @@
-.TH JOSM 1 "December 20, 2014"
+.TH JOSM 1 "July 21, 2016"
 .\" Please adjust this date whenever revising the manpage.
 .SH NAME
 josm \- Java OpenStreetMap Editor
@@ -6,7 +6,7 @@ josm \- Java OpenStreetMap Editor
 .B josm
 .SH DESCRIPTION
 .B JOSM 
-is an editor for OpenStreetMap written in Java 7. 
+is an editor for OpenStreetMap written in Java 8. 
 .PP
 .B OpenStreetMap 
 is a project aimed squarely at creating and providing free geographic data such as street maps to anyone
diff --git a/netbeans/nbproject/project.properties b/netbeans/nbproject/project.properties
index 95ec5d6..3f5e876 100644
--- a/netbeans/nbproject/project.properties
+++ b/netbeans/nbproject/project.properties
@@ -36,7 +36,7 @@ file.reference.commons-lang-2.3.jar=../test/lib/unitils-core/commons-lang-2.3.ja
 file.reference.commons-logging-1.1.jar=../test/lib/unitils-core/commons-logging-1.1.jar
 file.reference.core-src=../src
 file.reference.debug-1.0.jar=../test/lib/fest/debug-1.0.jar
-file.reference.equalsverifier-2.0.2.jar=../test/lib/equalsverifier-2.0.2.jar
+file.reference.equalsverifier-2.1.5.jar=../test/lib/equalsverifier-2.1.5.jar
 file.reference.fest-assert-1.0.jar=../test/lib/fest/fest-assert-1.0.jar
 file.reference.fest-reflect-1.1.jar=../test/lib/fest/fest-reflect-1.1.jar
 file.reference.fest-swing-1.1.jar=../test/lib/fest/fest-swing-1.1.jar
@@ -60,13 +60,13 @@ javac.compilerargs=-Xlint:unchecked -Xlint:cast -Xlint:dep-ann -Xlint:divzero -X
 javac.deprecation=true
 javac.processorpath=\
     ${javac.classpath}
-javac.source=1.7
-javac.target=1.7
+javac.source=1.8
+javac.target=1.8
 javac.test.classpath=\
     ${javac.classpath}:\
     ${build.classes.dir}:\
     ${file.reference.junit-4.12.jar}:\
-    ${file.reference.equalsverifier-2.0.2.jar}:\
+    ${file.reference.equalsverifier-2.1.5.jar}:\
     ${file.reference.jfcunit.jar}:\
     ${file.reference.hamcrest-core-1.3.jar}:\
     ${file.reference.MRJToolkitStubs-1.0.jar}:\
diff --git a/scripts/TagInfoExtract.groovy b/scripts/TagInfoExtract.groovy
index 6edd4c9..810ecb3 100644
--- a/scripts/TagInfoExtract.groovy
+++ b/scripts/TagInfoExtract.groovy
@@ -269,8 +269,12 @@ class TagInfoExtract {
                             description: descriptionPrefix + preset.name,
                             key: item.key,
                             value: value,
-                            object_types: preset.types.collect {it == TaggingPresetType.CLOSEDWAY ? "area" : it.toString().toLowerCase()},
                     ]
+                    def otypes = preset.types.collect {
+                        it == TaggingPresetType.CLOSEDWAY ? "area" :
+                            (it == TaggingPresetType.MULTIPOLYGON ? "relation" : it.toString().toLowerCase(Locale.ENGLISH))
+                    }
+                    if (!otypes.isEmpty()) tag += [object_types: otypes]
                     if (addImages && preset.iconName) tag += [icon_url: find_image_url(preset.iconName)]
                     tags += tag
                 }
@@ -352,7 +356,7 @@ class TagInfoExtract {
                 contact_name: "JOSM developer team",
                 contact_email: "josm-dev at openstreetmap.org",
         ]
-        json data_format: 1, data_updated: new Date().format("yyyyMMdd'T'hhmmssZ"), project: project, tags: tags
+        json data_format: 1, data_updated: new Date().format("yyyyMMdd'T'hhmmss'Z'", TimeZone.getTimeZone('UTC')), project: project, tags: tags
 
         if (output_file != null) {
             json.writeTo(output_file)
diff --git a/src/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java b/src/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java
index f7af8b5..6842187 100644
--- a/src/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java
+++ b/src/org/apache/commons/jcs/auxiliary/disk/block/BlockDiskCache.java
@@ -26,6 +26,8 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
@@ -40,6 +42,7 @@ import org.apache.commons.jcs.engine.behavior.ICacheElement;
 import org.apache.commons.jcs.engine.behavior.IElementSerializer;
 import org.apache.commons.jcs.engine.behavior.IRequireScheduler;
 import org.apache.commons.jcs.engine.control.group.GroupAttrName;
+import org.apache.commons.jcs.engine.control.group.GroupId;
 import org.apache.commons.jcs.engine.stats.StatElement;
 import org.apache.commons.jcs.engine.stats.Stats;
 import org.apache.commons.jcs.engine.stats.behavior.IStatElement;
@@ -447,60 +450,17 @@ public class BlockDiskCache<K, V>
 
         try
         {
-            if ( key instanceof String && key.toString().endsWith( CacheConstants.NAME_COMPONENT_DELIMITER ) )
+            if (key instanceof String && key.toString().endsWith(CacheConstants.NAME_COMPONENT_DELIMITER))
             {
-                // remove all keys of the same name group.
-                Iterator<Map.Entry<K, int[]>> iter = this.keyStore.entrySet().iterator();
-
-                while ( iter.hasNext() )
-                {
-                    Map.Entry<K, int[]> entry = iter.next();
-                    K k = entry.getKey();
-
-                    if ( k instanceof String && k.toString().startsWith( key.toString() ) )
-                    {
-                        int[] ded = entry.getValue();
-                        this.dataFile.freeBlocks( ded );
-                        iter.remove();
-                        removed = true;
-                        // TODO this needs to update the remove count separately
-                    }
-                }
+                removed = performPartialKeyRemoval((String) key);
             }
-            else if ( key instanceof GroupAttrName && ((GroupAttrName<?>)key).attrName == null )
+            else if (key instanceof GroupAttrName && ((GroupAttrName<?>) key).attrName == null)
             {
-                // remove all keys of the same name hierarchy.
-                Iterator<Map.Entry<K, int[]>> iter = this.keyStore.entrySet().iterator();
-                while ( iter.hasNext() )
-                {
-                    Map.Entry<K, int[]> entry = iter.next();
-                    K k = entry.getKey();
-
-                    if ( k instanceof GroupAttrName &&
-                        ((GroupAttrName<?>)k).groupId.equals(((GroupAttrName<?>)key).groupId))
-                    {
-                        int[] ded = entry.getValue();
-                        this.dataFile.freeBlocks( ded );
-                        iter.remove();
-                        removed = true;
-                    }
-                }
+                removed = performGroupRemoval(((GroupAttrName<?>) key).groupId);
             }
             else
             {
-                // remove single item.
-                int[] ded = this.keyStore.remove( key );
-                removed = ded != null;
-                if ( removed )
-                {
-                    this.dataFile.freeBlocks( ded );
-                }
-
-                if ( log.isDebugEnabled() )
-                {
-                    log.debug( logCacheName + "Disk removal: Removed from key hash, key [" + key + "] removed = "
-                        + removed );
-                }
+                removed = performSingleKeyRemoval(key);
             }
         }
         catch ( Exception e )
@@ -522,6 +482,102 @@ public class BlockDiskCache<K, V>
     }
 
     /**
+     * Remove all elements from the group. This does not use the iterator to remove. It builds a
+     * list of group elements and then removes them one by one.
+     * <p>
+     * This operates under a lock obtained in doRemove().
+     * <p>
+     *
+     * @param key
+     * @return true if an element was removed
+     */
+    private boolean performGroupRemoval(GroupId key)
+    {
+        boolean removed = false;
+
+        // remove all keys of the same name group.
+        List<K> itemsToRemove = new LinkedList<K>();
+
+        // remove all keys of the same name hierarchy.
+        for (K k : keyStore.keySet())
+        {
+            if (k instanceof GroupAttrName && ((GroupAttrName<?>) k).groupId.equals(key))
+            {
+                itemsToRemove.add(k);
+            }
+        }
+
+        // remove matches.
+        for (K fullKey : itemsToRemove)
+        {
+            // Don't add to recycle bin here
+            // https://issues.apache.org/jira/browse/JCS-67
+            performSingleKeyRemoval(fullKey);
+            removed = true;
+            // TODO this needs to update the remove count separately
+        }
+
+        return removed;
+    }
+
+    /**
+     * Iterates over the keyset. Builds a list of matches. Removes all the keys in the list. Does
+     * not remove via the iterator, since the map impl may not support it.
+     * <p>
+     * This operates under a lock obtained in doRemove().
+     * <p>
+     *
+     * @param key
+     * @return true if there was a match
+     */
+    private boolean performPartialKeyRemoval(String key)
+    {
+        boolean removed = false;
+
+        // remove all keys of the same name hierarchy.
+        List<K> itemsToRemove = new LinkedList<K>();
+
+        for (K k : keyStore.keySet())
+        {
+            if (k instanceof String && k.toString().startsWith(key))
+            {
+                itemsToRemove.add(k);
+            }
+        }
+
+        // remove matches.
+        for (K fullKey : itemsToRemove)
+        {
+            // Don't add to recycle bin here
+            // https://issues.apache.org/jira/browse/JCS-67
+            performSingleKeyRemoval(fullKey);
+            removed = true;
+            // TODO this needs to update the remove count separately
+        }
+
+        return removed;
+    }
+
+    
+	private boolean performSingleKeyRemoval(K key) {
+		boolean removed;
+		// remove single item.
+		int[] ded = this.keyStore.remove( key );
+		removed = ded != null;
+		if ( removed )
+		{
+		    this.dataFile.freeBlocks( ded );
+		}
+
+		if ( log.isDebugEnabled() )
+		{
+		    log.debug( logCacheName + "Disk removal: Removed from key hash, key [" + key + "] removed = "
+		        + removed );
+		}
+		return removed;
+	}
+
+    /**
      * Resets the keyfile, the disk file, and the memory key map.
      * <p>
      * @see org.apache.commons.jcs.auxiliary.disk.AbstractDiskCache#removeAll()
diff --git a/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java b/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java
index d3d0c0f..3eeab31 100644
--- a/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java
+++ b/src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java
@@ -18,10 +18,7 @@ package org.jdesktop.swinghelper.debug;
 
 import java.lang.ref.WeakReference;
 
-import javax.swing.JButton;
 import javax.swing.JComponent;
-import javax.swing.JEditorPane;
-import javax.swing.JFrame;
 import javax.swing.RepaintManager;
 import javax.swing.SwingUtilities;
 
@@ -53,14 +50,6 @@ public class CheckThreadViolationRepaintManager extends RepaintManager {
         this(true);
     }
 
-    public boolean isCompleteCheck() {
-        return completeCheck;
-    }
-
-    public void setCompleteCheck(boolean completeCheck) {
-        this.completeCheck = completeCheck;
-    }
-
     @Override
     public synchronized void addInvalidComponent(JComponent component) {
         checkThreadViolations(component);
@@ -104,7 +93,7 @@ public class CheckThreadViolationRepaintManager extends RepaintManager {
             //ignore the last processed component
             if (lastComponent != null && c == lastComponent.get())
                 return;
-            lastComponent = new WeakReference<JComponent>(c);
+            lastComponent = new WeakReference<>(c);
             violationFound(c, stackTrace);
         }
     }
@@ -117,60 +106,4 @@ public class CheckThreadViolationRepaintManager extends RepaintManager {
             System.out.println("\tat " + st);
         }
     }
-
-    public static void main(String[] args) throws Exception {
-        //set CheckThreadViolationRepaintManager
-        RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());
-        //Valid code
-        SwingUtilities.invokeAndWait(new Runnable() {
-            public void run() {
-                test();
-            }
-        });
-        System.out.println("Valid code passed...");
-        repaintTest();
-        System.out.println("Repaint test - correct code");
-        //Invalide code (stack trace expected)
-        test();
-    }
-
-    static void test() {
-        JFrame frame = new JFrame("Am I on EDT?");
-        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        frame.add(new JButton("JButton"));
-        frame.pack();
-        frame.setVisible(true);
-        frame.dispose();
-    }
-
-    //this test must pass
-    static void imageUpdateTest() {
-        JFrame frame = new JFrame();
-        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-        JEditorPane editor = new JEditorPane();
-        frame.setContentPane(editor);
-        editor.setContentType("text/html");
-        //it works with no valid image as well
-        editor.setText("<html><img src=\"file:\\lala.png\"></html>");
-        frame.setSize(300, 200);
-        frame.setVisible(true);
-    }
-
-    private static JButton test;
-    static void repaintTest() {
-        try {
-            SwingUtilities.invokeAndWait(new Runnable() {
-                public void run() {
-                    test = new JButton();
-                    test.setSize(100, 100);
-                }
-            });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        // repaint(Rectangle) should be ok
-        test.repaint(test.getBounds());
-        test.repaint(0, 0, 100, 100);
-        test.repaint();
-    }
-}
\ No newline at end of file
+}
diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java
index 09e5a10..a2ac9c0 100644
--- a/src/org/openstreetmap/josm/Main.java
+++ b/src/org/openstreetmap/josm/Main.java
@@ -5,8 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.BorderLayout;
 import java.awt.Component;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
 import java.awt.Window;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowAdapter;
@@ -46,7 +44,6 @@ import javax.swing.InputMap;
 import javax.swing.JComponent;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.JTextArea;
 import javax.swing.KeyStroke;
 import javax.swing.LookAndFeel;
 import javax.swing.UIManager;
@@ -72,7 +69,6 @@ import org.openstreetmap.josm.data.coor.CoordinateFormat;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
 import org.openstreetmap.josm.data.validation.OsmValidator;
@@ -83,7 +79,6 @@ import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MainPanel;
 import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.MapFrameListener;
-import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.io.SaveLayersDialog;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -99,7 +94,6 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.util.RedirectInputMap;
-import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.io.FileWatcher;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.io.OsmApi;
@@ -176,16 +170,6 @@ public abstract class Main {
     public static Preferences pref;
 
     /**
-     * The global paste buffer.
-     */
-    public static final PrimitiveDeepCopy pasteBuffer = new PrimitiveDeepCopy();
-
-    /**
-     * The layer source from which {@link Main#pasteBuffer} data comes from.
-     */
-    public static Layer pasteSource;
-
-    /**
      * The MapFrame. Use {@link Main#setMapFrame} to set or clear it.
      * <p>
      * There should be no need to access this to access any map data. Use {@link #layerManager} instead.
@@ -221,11 +205,6 @@ public abstract class Main {
     public MainMenu menu;
 
     /**
-     * The data validation handler.
-     */
-    public OsmValidator validator;
-
-    /**
      * The file watcher service.
      */
     public static final FileWatcher fileWatcher = new FileWatcher();
@@ -595,12 +574,7 @@ public abstract class Main {
      */
     public Main() {
         main = this;
-        mainPanel.addMapFrameListener(new MapFrameListener() {
-            @Override
-            public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
-                redoUndoListener.commandChanged(0, 0);
-            }
-        });
+        mainPanel.addMapFrameListener((o, n) -> redoUndoListener.commandChanged(0, 0));
     }
 
     /**
@@ -656,7 +630,7 @@ public abstract class Main {
 
             @Override
             public void initialize() {
-                validator = new OsmValidator();
+                OsmValidator.initialize();
             }
         });
 
@@ -696,16 +670,9 @@ public abstract class Main {
         }
 
         // hooks for the jmapviewer component
-        FeatureAdapter.registerBrowserAdapter(new FeatureAdapter.BrowserAdapter() {
-            @Override
-            public void openLink(String url) {
-                OpenBrowser.displayUrl(url);
-            }
-        });
+        FeatureAdapter.registerBrowserAdapter(OpenBrowser::displayUrl);
         FeatureAdapter.registerTranslationAdapter(I18n.getTranslationAdapter());
-        FeatureAdapter.registerLoggingAdapter(new FeatureAdapter.LoggingAdapter() {
-            @Override
-            public Logger getLogger(String name) {
+        FeatureAdapter.registerLoggingAdapter(name -> {
                 Logger logger = Logger.getAnonymousLogger();
                 logger.setUseParentHandlers(false);
                 logger.setLevel(Level.ALL);
@@ -739,8 +706,7 @@ public abstract class Main {
                     });
                 }
                 return logger;
-            }
-        });
+            });
 
         new InitializationTask(tr("Updating user interface")) {
 
@@ -908,7 +874,7 @@ public abstract class Main {
         if (map != null && map.mapMode instanceof DrawAction) {
             return ((DrawAction) map.mapMode).getInProgressSelection();
         } else {
-            DataSet ds = getCurrentDataSet();
+            DataSet ds = getLayerManager().getEditDataSet();
             if (ds == null) return null;
             return ds.getSelected();
         }
@@ -990,13 +956,10 @@ public abstract class Main {
      */
     public static final JPanel panel = mainPanel;
 
-    private final CommandQueueListener redoUndoListener = new CommandQueueListener() {
-        @Override
-        public void commandChanged(final int queueSize, final int redoSize) {
+    private final CommandQueueListener redoUndoListener = (queueSize, redoSize) -> {
             menu.undo.setEnabled(queueSize > 0);
             menu.redo.setEnabled(redoSize > 0);
-        }
-    };
+        };
 
     /**
      * Should be called before the main constructor to setup some parameter stuff
@@ -1051,7 +1014,7 @@ public abstract class Main {
         UIManager.put("OptionPane.cancelIcon", ImageProvider.get("cancel"));
         UIManager.put("OptionPane.noIcon", UIManager.get("OptionPane.cancelIcon"));
         // Ensures caret color is the same than text foreground color, see #12257
-        // See http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html
+        // See http://docs.oracle.com/javase/8/docs/api/javax/swing/plaf/synth/doc-files/componentProperties.html
         for (String p : Arrays.asList(
                 "EditorPane", "FormattedTextField", "PasswordField", "TextArea", "TextField", "TextPane")) {
             UIManager.put(p+".caretForeground", UIManager.getColor(p+".foreground"));
@@ -1335,55 +1298,6 @@ public abstract class Main {
         }
     }
 
-    /**
-     * Determines if JOSM currently runs with Java 8 or later.
-     * @return {@code true} if the current JVM is at least Java 8, {@code false} otherwise
-     * @since 7894
-     */
-    public static boolean isJava8orLater() {
-        String version = System.getProperty("java.version");
-        return version != null && !version.matches("^(1\\.)?[7].*");
-    }
-
-    /**
-     * Checks that JOSM is at least running with Java 7.
-     * @since 7001
-     */
-    public static void checkJavaVersion() {
-        String version = System.getProperty("java.version");
-        if (version != null) {
-            if (version.matches("^(1\\.)?[789].*"))
-                return;
-            if (version.matches("^(1\\.)?[56].*")) {
-                JMultilineLabel ho = new JMultilineLabel("<html>"+
-                        tr("<h2>JOSM requires Java version {0}.</h2>"+
-                                "Detected Java version: {1}.<br>"+
-                                "You can <ul><li>update your Java (JRE) or</li>"+
-                                "<li>use an earlier (Java {2} compatible) version of JOSM.</li></ul>"+
-                                "More Info:", "7", version, "6")+"</html>");
-                JTextArea link = new JTextArea(HelpUtil.getWikiBaseHelpUrl()+"/Help/SystemRequirements");
-                link.setEditable(false);
-                link.setBackground(panel.getBackground());
-                JPanel panel = new JPanel(new GridBagLayout());
-                GridBagConstraints gbc = new GridBagConstraints();
-                gbc.gridwidth = GridBagConstraints.REMAINDER;
-                gbc.anchor = GridBagConstraints.WEST;
-                gbc.weightx = 1.0;
-                panel.add(ho, gbc);
-                panel.add(link, gbc);
-                final String exitStr = tr("Exit JOSM");
-                final String continueStr = tr("Continue, try anyway");
-                int ret = JOptionPane.showOptionDialog(null, panel, tr("Error"), JOptionPane.YES_NO_OPTION,
-                        JOptionPane.ERROR_MESSAGE, null, new String[] {exitStr, continueStr}, exitStr);
-                if (ret == 0) {
-                    System.exit(0);
-                }
-                return;
-            }
-        }
-        error("Could not recognize Java Version: "+version);
-    }
-
     /* ----------------------------------------------------------------------------------------- */
     /* projection handling  - Main is a registry for a single, global projection instance        */
     /*                                                                                           */
@@ -1427,7 +1341,7 @@ public abstract class Main {
     private static final List<WeakReference<ProjectionChangeListener>> listeners = new ArrayList<>();
 
     private static void fireProjectionChanged(Projection oldValue, Projection newValue, Bounds oldBounds) {
-        if (newValue == null ^ oldValue == null
+        if ((newValue == null ^ oldValue == null)
                 || (newValue != null && oldValue != null && !Objects.equals(newValue.toCode(), oldValue.toCode()))) {
             if (Main.map != null) {
                 // This needs to be called first
diff --git a/src/org/openstreetmap/josm/actions/AboutAction.java b/src/org/openstreetmap/josm/actions/AboutAction.java
index e45fea5..43d3498 100644
--- a/src/org/openstreetmap/josm/actions/AboutAction.java
+++ b/src/org/openstreetmap/josm/actions/AboutAction.java
@@ -57,11 +57,13 @@ public final class AboutAction extends JosmAction {
         Version version = Version.getInstance();
 
         JosmTextArea readme = new JosmTextArea();
+        readme.setFont(GuiHelper.getMonospacedFont(readme));
         readme.setEditable(false);
         setTextFromResourceFile(readme, "/README");
         readme.setCaretPosition(0);
 
         JosmTextArea revision = new JosmTextArea();
+        revision.setFont(GuiHelper.getMonospacedFont(revision));
         revision.setEditable(false);
         revision.setText(version.getReleaseAttributes());
         revision.setCaretPosition(0);
diff --git a/src/org/openstreetmap/josm/actions/AbstractPasteAction.java b/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
new file mode 100644
index 0000000..0c6c76a
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/AbstractPasteAction.java
@@ -0,0 +1,103 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import java.awt.MouseInfo;
+import java.awt.Point;
+import java.awt.datatransfer.FlavorEvent;
+import java.awt.datatransfer.FlavorListener;
+import java.awt.datatransfer.Transferable;
+import java.awt.event.ActionEvent;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
+import org.openstreetmap.josm.tools.Shortcut;
+
+/**
+ * This is the base class for all actions that paste objects.
+ * @author Michael Zangl
+ * @since 10765
+ */
+public abstract class AbstractPasteAction extends JosmAction implements FlavorListener {
+
+    protected final OsmTransferHandler transferHandler;
+
+    /**
+     * Constructs a new {@link AbstractPasteAction}.
+     * @param name the action's text as displayed on the menu (if it is added to a menu)
+     * @param iconName the filename of the icon to use
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip. Please note
+     *           that html is not supported for menu actions on some platforms.
+     * @param shortcut a ready-created shortcut object or null if you don't want a shortcut. But you always
+     *            do want a shortcut, remember you can always register it with group=none, so you
+     *            won't be assigned a shortcut unless the user configures one. If you pass null here,
+     *            the user CANNOT configure a shortcut for your action.
+     * @param registerInToolbar register this action for the toolbar preferences?
+     */
+    public AbstractPasteAction(String name, String iconName, String tooltip, Shortcut shortcut,
+            boolean registerInToolbar) {
+        this(name, iconName, tooltip, shortcut, registerInToolbar, null);
+    }
+
+    /**
+     * Constructs a new {@link AbstractPasteAction}.
+     * @param name the action's text as displayed on the menu (if it is added to a menu)
+     * @param iconName the filename of the icon to use
+     * @param tooltip  a longer description of the action that will be displayed in the tooltip. Please note
+     *           that html is not supported for menu actions on some platforms.
+     * @param shortcut a ready-created shortcut object or null if you don't want a shortcut. But you always
+     *            do want a shortcut, remember you can always register it with group=none, so you
+     *            won't be assigned a shortcut unless the user configures one. If you pass null here,
+     *            the user CANNOT configure a shortcut for your action.
+     * @param registerInToolbar register this action for the toolbar preferences?
+     * @param toolbarId identifier for the toolbar preferences. The iconName is used, if this parameter is null
+     */
+    public AbstractPasteAction(String name, String iconName, String tooltip, Shortcut shortcut,
+            boolean registerInToolbar, String toolbarId) {
+        super(name, iconName, tooltip, shortcut, registerInToolbar, toolbarId, true);
+        transferHandler = new OsmTransferHandler();
+        ClipboardUtils.getClipboard().addFlavorListener(this);
+    }
+
+    /**
+     * Compute the location the objects should be pasted at.
+     * @param e The action event that triggered the paste
+     * @return The paste position.
+     */
+    protected EastNorth computePastePosition(ActionEvent e) {
+        // default to paste in center of map (pasted via menu or cursor not in MapView)
+        EastNorth mPosition = Main.map.mapView.getCenter();
+        // We previously checked for modifier to know if the action has been trigerred via shortcut or via menu
+        // But this does not work if the shortcut is changed to a single key (see #9055)
+        // Observed behaviour: getActionCommand() returns Action.NAME when triggered via menu, but shortcut text when triggered with it
+        if (e != null && !getValue(NAME).equals(e.getActionCommand())) {
+            final Point mp = MouseInfo.getPointerInfo().getLocation();
+            final Point tl = Main.map.mapView.getLocationOnScreen();
+            final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
+            if (Main.map.mapView.contains(pos)) {
+                mPosition = Main.map.mapView.getEastNorth(pos.x, pos.y);
+            }
+        }
+        return mPosition;
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        doPaste(e, ClipboardUtils.getClipboard().getContents(null));
+    }
+
+    protected void doPaste(ActionEvent e, Transferable contents) {
+        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), computePastePosition(e), contents);
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(getLayerManager().getEditDataSet() != null && transferHandler.isDataAvailable());
+    }
+
+    @Override
+    public void flavorsChanged(FlavorEvent e) {
+        updateEnabledState();
+    }
+}
diff --git a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
index 0c36f82..2325ffa 100644
--- a/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
@@ -31,8 +31,6 @@ import org.openstreetmap.josm.io.imagery.WMSImagery.LayerDetails;
 import org.openstreetmap.josm.io.imagery.WMSImagery.WMSGetCapabilitiesException;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ImageProvider.ImageResourceCallback;
-import org.openstreetmap.josm.tools.ImageResource;
 
 /**
  * Action displayed in imagery menu to add a new imagery layer.
@@ -56,19 +54,11 @@ public class AddImageryLayerAction extends JosmAction implements AdaptableAction
         // change toolbar icon from if specified
         String icon = info.getIcon();
         if (icon != null) {
-            new ImageProvider(icon).setOptional(true).getInBackground(new ImageResourceCallback() {
-                        @Override
-                        public void finished(final ImageResource result) {
-                            if (result != null) {
-                                GuiHelper.runInEDT(new Runnable() {
-                                    @Override
-                                    public void run() {
-                                        result.attachImageIcon(AddImageryLayerAction.this);
-                                    }
-                                });
-                            }
-                        }
-                    });
+            new ImageProvider(icon).setOptional(true).getResourceAsync().thenAccept(result -> {
+                if (result != null) {
+                    GuiHelper.runInEDT(() -> result.attachImageIcon(this));
+                }
+            });
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/AlignInCircleAction.java b/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
index a0a1302..6e69f93 100644
--- a/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
+++ b/src/org/openstreetmap/josm/actions/AlignInCircleAction.java
@@ -387,7 +387,7 @@ public final class AlignInCircleAction extends JosmAction {
      * @param ways The ways collection to check
      * @return true if all ways can be joined into a polygon
      */
-    protected static boolean checkWaysArePolygon(Collection<Way> ways) {
+    private static boolean checkWaysArePolygon(Collection<Way> ways) {
         // For each way, nodes strictly between first and last should't be reference by an other way
         for (Way way: ways) {
             for (Node node: way.getNodes()) {
diff --git a/src/org/openstreetmap/josm/actions/AutoScaleAction.java b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
index fd8fcf8..62447db 100644
--- a/src/org/openstreetmap/josm/actions/AutoScaleAction.java
+++ b/src/org/openstreetmap/josm/actions/AutoScaleAction.java
@@ -16,9 +16,7 @@ import java.util.HashSet;
 import java.util.List;
 
 import javax.swing.JOptionPane;
-import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
-import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
 
 import org.openstreetmap.josm.Main;
@@ -409,19 +407,9 @@ public class AutoScaleAction extends JosmAction {
 
         MapFrameAdapter() {
             if ("conflict".equals(mode)) {
-                conflictSelectionListener = new ListSelectionListener() {
-                    @Override
-                    public void valueChanged(ListSelectionEvent e) {
-                        updateEnabledState();
-                    }
-                };
+                conflictSelectionListener = e -> updateEnabledState();
             } else if ("problem".equals(mode)) {
-                validatorSelectionListener = new TreeSelectionListener() {
-                    @Override
-                    public void valueChanged(TreeSelectionEvent e) {
-                        updateEnabledState();
-                    }
-                };
+                validatorSelectionListener = e -> updateEnabledState();
             }
         }
 
diff --git a/src/org/openstreetmap/josm/actions/CloseChangesetAction.java b/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
index 1f935d7..a5c43e4 100644
--- a/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
+++ b/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
@@ -96,10 +96,7 @@ public class CloseChangesetAction extends JosmAction {
 
         @Override
         protected void finish() {
-            SwingUtilities.invokeLater(
-                    new Runnable() {
-                        @Override
-                        public void run() {
+            SwingUtilities.invokeLater(() -> {
                             if (lastException != null) {
                                 ExceptionDialogUtil.explainException(lastException);
                             }
@@ -107,21 +104,17 @@ public class CloseChangesetAction extends JosmAction {
                             if (!canceled && lastException == null) {
                                 onPostDownloadOpenChangesets();
                             }
-                        }
-                    }
-            );
+                        });
         }
 
         /**
-         * Fetch the user info from the server. This is necessary if we don't know
-         * the users id yet
+         * Fetch the user info from the server. This is necessary if we don't know the users id yet
          *
          * @return the user info
          * @throws OsmTransferException in case of any communication exception
          */
-        protected UserInfo fetchUserInfo() throws OsmTransferException {
-            OsmServerUserInfoReader reader = new OsmServerUserInfoReader();
-            return reader.fetchUserInfo(getProgressMonitor().createSubTaskMonitor(1, false));
+        private UserInfo fetchUserInfo() throws OsmTransferException {
+            return new OsmServerUserInfoReader().fetchUserInfo(getProgressMonitor().createSubTaskMonitor(1, false));
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/actions/CombineWayAction.java b/src/org/openstreetmap/josm/actions/CombineWayAction.java
index cfcec2d..10390fa 100644
--- a/src/org/openstreetmap/josm/actions/CombineWayAction.java
+++ b/src/org/openstreetmap/josm/actions/CombineWayAction.java
@@ -232,24 +232,13 @@ public class CombineWayAction extends JosmAction {
         final Way selectedWay = combineResult.a;
         Main.main.undoRedo.add(combineResult.b);
         if (selectedWay != null) {
-            Runnable guiTask = new Runnable() {
-                @Override
-                public void run() {
-                    ds.setSelected(selectedWay);
-                }
-            };
-            GuiHelper.runInEDT(guiTask);
+            GuiHelper.runInEDT(() -> ds.setSelected(selectedWay));
         }
     }
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-            return;
-        }
-        updateEnabledState(ds.getSelected());
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
@@ -347,7 +336,7 @@ public class CombineWayAction extends JosmAction {
             if (obj == null || getClass() != obj.getClass()) return false;
             NodePair nodePair = (NodePair) obj;
             return Objects.equals(a, nodePair.a) &&
-                    Objects.equals(b, nodePair.b);
+                   Objects.equals(b, nodePair.b);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/CopyAction.java b/src/org/openstreetmap/josm/actions/CopyAction.java
index 6db64bf..9828b0d 100644
--- a/src/org/openstreetmap/josm/actions/CopyAction.java
+++ b/src/org/openstreetmap/josm/actions/CopyAction.java
@@ -8,25 +8,24 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collection;
+import java.util.Collections;
 
 import javax.swing.JOptionPane;
 
 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.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Copy OSM primitives to clipboard in order to paste them, or their tags, somewhere else.
  * @since 404
  */
-public final class CopyAction extends JosmAction {
-
-    /** regular expression that matches text clipboard contents after copying */
-    public static final String CLIPBOARD_REGEXP = "((node|way|relation)\\s\\d+,)*(node|way|relation)\\s\\d+";
-
+public class CopyAction extends JosmAction {
     /**
      * Constructs a new {@code CopyAction}.
      */
@@ -42,8 +41,12 @@ public final class CopyAction extends JosmAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (isEmptySelection()) return;
-        Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
+        DataSet set = getLayerManager().getEditDataSet();
+        Collection<OsmPrimitive> selection = set == null ? Collections.<OsmPrimitive>emptySet() : set.getSelected();
+        if (selection.isEmpty()) {
+            showEmptySelectionWarning();
+            return;
+        }
 
         copy(getLayerManager().getEditLayer(), selection);
     }
@@ -56,19 +59,7 @@ public final class CopyAction extends JosmAction {
      */
     public static void copy(OsmDataLayer source, Collection<OsmPrimitive> primitives) {
         // copy ids to the clipboard
-        String ids = getCopyString(primitives);
-        Utils.copyToClipboard(ids);
-
-        Main.pasteBuffer.makeCopy(primitives);
-        Main.pasteSource = source;
-    }
-
-    static String getCopyString(Collection<? extends OsmPrimitive> primitives) {
-        StringBuilder idsBuilder = new StringBuilder();
-        for (OsmPrimitive p : primitives) {
-            idsBuilder.append(OsmPrimitiveType.from(p).getAPIName()).append(' ').append(p.getId()).append(',');
-        }
-        return idsBuilder.substring(0, idsBuilder.length() - 1);
+        ClipboardUtils.copy(new PrimitiveTransferable(PrimitiveTransferData.getDataWithReferences(primitives), source));
     }
 
     @Override
@@ -81,17 +72,12 @@ public final class CopyAction extends JosmAction {
         setEnabled(selection != null && !selection.isEmpty());
     }
 
-    private boolean isEmptySelection() {
-        Collection<OsmPrimitive> sel = getLayerManager().getEditDataSet().getSelected();
-        if (sel.isEmpty()) {
-            JOptionPane.showMessageDialog(
-                    Main.parent,
-                    tr("Please select something to copy."),
-                    tr("Information"),
-                    JOptionPane.INFORMATION_MESSAGE
-            );
-            return true;
-        }
-        return false;
+    protected void showEmptySelectionWarning() {
+        JOptionPane.showMessageDialog(
+                Main.parent,
+                tr("Please select something to copy."),
+                tr("Information"),
+                JOptionPane.INFORMATION_MESSAGE
+        );
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java b/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
index 2394349..f13f2db 100644
--- a/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
+++ b/src/org/openstreetmap/josm/actions/CopyCoordinatesAction.java
@@ -11,6 +11,7 @@ import java.util.Collections;
 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.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -34,7 +35,7 @@ public class CopyCoordinatesAction extends JosmAction {
             s.append(n.getCoor().lon());
             s.append('\n');
         }
-        Utils.copyToClipboard(s.toString().trim());
+        ClipboardUtils.copyString(s.toString().trim());
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java b/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
index 1ff34ab..59b12f9 100644
--- a/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
+++ b/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
@@ -103,31 +103,24 @@ public class CreateMultipolygonAction extends JosmAction {
             final Relation relation = commandAndRelation.b;
 
             // to avoid EDT violations
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
+            SwingUtilities.invokeLater(() -> {
                     Main.main.undoRedo.add(command);
 
                     // Use 'SwingUtilities.invokeLater' to make sure the relationListDialog
                     // knows about the new relation before we try to select it.
                     // (Yes, we are already in event dispatch thread. But DatasetEventManager
                     // uses 'SwingUtilities.invokeLater' to fire events so we have to do the same.)
-                    SwingUtilities.invokeLater(new Runnable() {
-                        @Override
-                        public void run() {
+                    SwingUtilities.invokeLater(() -> {
                             Main.map.relationListDialog.selectRelation(relation);
                             if (Main.pref.getBoolean("multipoly.show-relation-editor", false)) {
                                 //Open relation edit window, if set up in preferences
                                 RelationEditor editor = RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), relation, null);
-
                                 editor.setModal(true);
                                 editor.setVisible(true);
                             } else {
                                 Main.getLayerManager().getEditLayer().setRecentRelation(relation);
                             }
-                        }
                     });
-                }
             });
         }
     }
@@ -262,12 +255,7 @@ public class CreateMultipolygonAction extends JosmAction {
     /** Enable this action only if something is selected */
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     /**
@@ -300,14 +288,10 @@ public class CreateMultipolygonAction extends JosmAction {
 
         if (error != null) {
             if (showNotif) {
-                GuiHelper.runInEDT(new Runnable() {
-                    @Override
-                    public void run() {
+                GuiHelper.runInEDT(() ->
                         new Notification(error)
                         .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                        .show();
-                    }
-                });
+                        .show());
             }
             return null;
         } else {
diff --git a/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java b/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
index d4cd662..8ab0b71 100644
--- a/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
+++ b/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
@@ -52,19 +52,11 @@ public class DownloadPrimitiveAction extends JosmAction {
         final DownloadPrimitivesWithReferrersTask task =
                 new DownloadPrimitivesWithReferrersTask(newLayer, ids, downloadReferrers, full, null, null);
         Main.worker.submit(task);
-        Main.worker.submit(new Runnable() {
-            @Override
-            public void run() {
+        Main.worker.submit(() -> {
                 final List<PrimitiveId> downloaded = task.getDownloadedId();
                 if (downloaded != null) {
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            Main.getLayerManager().getEditDataSet().setSelected(downloaded);
-                        }
-                    });
+                    GuiHelper.runInEDT(() -> Main.getLayerManager().getEditDataSet().setSelected(downloaded));
                 }
-            }
         });
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/DuplicateAction.java b/src/org/openstreetmap/josm/actions/DuplicateAction.java
index 488b119..cb8bb5d 100644
--- a/src/org/openstreetmap/josm/actions/DuplicateAction.java
+++ b/src/org/openstreetmap/josm/actions/DuplicateAction.java
@@ -9,27 +9,30 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.Collection;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
+import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.tools.Shortcut;
 
-public final class DuplicateAction extends JosmAction {
+/**
+ * An action that duplicates the given nodes. They are not added to the clipboard.
+ */
+public final class DuplicateAction extends AbstractPasteAction {
 
     /**
      * Constructs a new {@code DuplicateAction}.
      */
     public DuplicateAction() {
         super(tr("Duplicate"), "duplicate",
-                tr("Duplicate selection by copy and immediate paste."),
+                tr("Duplicate selection."),
                 Shortcut.registerShortcut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Duplicate"));
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.main.menu.paste.pasteData(
-                new PrimitiveDeepCopy(getLayerManager().getEditDataSet().getSelected()), getLayerManager().getEditLayer(), e);
+        PrimitiveTransferData data = PrimitiveTransferData.getDataWithReferences(getLayerManager().getEditDataSet().getSelected());
+        doPaste(e, new PrimitiveTransferable(data));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/ExpertToggleAction.java b/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
index 6a45a39..7b12bae 100644
--- a/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
+++ b/src/org/openstreetmap/josm/actions/ExpertToggleAction.java
@@ -18,6 +18,7 @@ import org.openstreetmap.josm.Main;
  */
 public class ExpertToggleAction extends ToggleAction {
 
+    @FunctionalInterface
     public interface ExpertModeChangeListener {
         void expertChanged(boolean isExpert);
     }
diff --git a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
index c1b144a..bb0ac0e 100644
--- a/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
+++ b/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
@@ -20,6 +20,14 @@ import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.io.AllFormatsImporter;
 import org.openstreetmap.josm.io.FileExporter;
 import org.openstreetmap.josm.io.FileImporter;
+import org.openstreetmap.josm.io.GpxImporter;
+import org.openstreetmap.josm.io.JpgImporter;
+import org.openstreetmap.josm.io.NMEAImporter;
+import org.openstreetmap.josm.io.NoteImporter;
+import org.openstreetmap.josm.io.OsmChangeImporter;
+import org.openstreetmap.josm.io.OsmImporter;
+import org.openstreetmap.josm.io.WMSLayerImporter;
+import org.openstreetmap.josm.io.session.SessionImporter;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -50,15 +58,15 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
         importers = new ArrayList<>();
 
         final List<Class<? extends FileImporter>> importerNames = Arrays.asList(
-                org.openstreetmap.josm.io.OsmImporter.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.JpgImporter.class,
-                org.openstreetmap.josm.io.WMSLayerImporter.class,
-                org.openstreetmap.josm.io.AllFormatsImporter.class,
-                org.openstreetmap.josm.io.session.SessionImporter.class
+                OsmImporter.class,
+                OsmChangeImporter.class,
+                GpxImporter.class,
+                NMEAImporter.class,
+                NoteImporter.class,
+                JpgImporter.class,
+                WMSLayerImporter.class,
+                AllFormatsImporter.class,
+                SessionImporter.class
         );
 
         for (final Class<? extends FileImporter> importerClass : importerNames) {
@@ -118,17 +126,15 @@ public class ExtensionFileFilter extends FileFilter implements java.io.FileFilte
     private final String defaultExtension;
 
     protected static void sort(List<ExtensionFileFilter> filters) {
-        Collections.sort(
-                filters,
-                new Comparator<ExtensionFileFilter>() {
-                    private AllFormatsImporter all = new AllFormatsImporter();
-                    @Override
-                    public int compare(ExtensionFileFilter o1, ExtensionFileFilter o2) {
-                        if (o1.getDescription().equals(all.filter.getDescription())) return 1;
-                        if (o2.getDescription().equals(all.filter.getDescription())) return -1;
-                        return o1.getDescription().compareTo(o2.getDescription());
-                    }
+        filters.sort(new Comparator<ExtensionFileFilter>() {
+                private AllFormatsImporter all = new AllFormatsImporter();
+                @Override
+                public int compare(ExtensionFileFilter o1, ExtensionFileFilter o2) {
+                    if (o1.getDescription().equals(all.filter.getDescription())) return 1;
+                    if (o2.getDescription().equals(all.filter.getDescription())) return -1;
+                    return o1.getDescription().compareTo(o2.getDescription());
                 }
+            }
         );
     }
 
diff --git a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
index a35cac3..315147a 100644
--- a/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
+++ b/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java
@@ -27,7 +27,8 @@ import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.gui.layer.ImageryLayer;
+import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
@@ -41,16 +42,16 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
     private static volatile ImageryOffsetDialog offsetDialog;
     private static Cursor cursor = ImageProvider.getCursor("normal", "move");
 
-    private double oldDx, oldDy;
+    private EastNorth old;
     private EastNorth prevEastNorth;
-    private transient ImageryLayer layer;
+    private transient AbstractTileSourceLayer<?> layer;
     private MapMode oldMapMode;
 
     /**
      * Constructs a new {@code ImageryAdjustAction} for the given layer.
      * @param layer The imagery layer
      */
-    public ImageryAdjustAction(ImageryLayer layer) {
+    public ImageryAdjustAction(AbstractTileSourceLayer<?> layer) {
         super(tr("New offset"), "adjustimg",
                 tr("Adjust the position of this imagery layer"), Main.map,
                 cursor);
@@ -66,8 +67,7 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
         if (!layer.isVisible()) {
             layer.setVisible(true);
         }
-        oldDx = layer.getDx();
-        oldDy = layer.getDy();
+        old = layer.getDisplaySettings().getDisplacement();
         addListeners();
         offsetDialog = new ImageryOffsetDialog();
         offsetDialog.setVisible(true);
@@ -88,7 +88,7 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
         super.exitMode();
         if (offsetDialog != null) {
             if (layer != null) {
-                layer.setOffset(oldDx, oldDy);
+                layer.getDisplaySettings().setDisplacement(old);
             }
             offsetDialog.setVisible(false);
             offsetDialog = null;
@@ -128,7 +128,7 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
         }
         if (dx != 0 || dy != 0) {
             double ppd = layer.getPPD();
-            layer.displace(dx / ppd, dy / ppd);
+            layer.getDisplaySettings().addDisplacement(new EastNorth(dx / ppd, dy / ppd));
             if (offsetDialog != null) {
                 offsetDialog.updateOffset();
             }
@@ -154,11 +154,9 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
     @Override
     public void mouseDragged(MouseEvent e) {
         if (layer == null || prevEastNorth == null) return;
-        EastNorth eastNorth =
-            Main.map.mapView.getEastNorth(e.getX(), e.getY());
-        double dx = layer.getDx()+eastNorth.east()-prevEastNorth.east();
-        double dy = layer.getDy()+eastNorth.north()-prevEastNorth.north();
-        layer.setOffset(dx, dy);
+        EastNorth eastNorth = Main.map.mapView.getEastNorth(e.getX(), e.getY());
+        EastNorth d = layer.getDisplaySettings().getDisplacement().add(eastNorth).subtract(prevEastNorth);
+        layer.getDisplaySettings().setDisplacement(d);
         if (offsetDialog != null) {
             offsetDialog.updateOffset();
         }
@@ -226,19 +224,17 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
             if (ignoreListener) return;
             String ostr = tOffset.getText();
             int semicolon = ostr.indexOf(';');
-            if (semicolon >= 0 && semicolon + 1 < ostr.length()) {
+            if (layer != null && semicolon >= 0 && semicolon + 1 < ostr.length()) {
                 try {
                     // here we assume that Double.parseDouble() needs '.' as a decimal separator
                     String easting = ostr.substring(0, semicolon).trim().replace(',', '.');
                     String northing = ostr.substring(semicolon + 1).trim().replace(',', '.');
                     double dx = Double.parseDouble(easting);
                     double dy = Double.parseDouble(northing);
-                    layer.setOffset(dx, dy);
+                    layer.getDisplaySettings().setDisplacement(new EastNorth(dx, dy));
                 } catch (NumberFormatException nfe) {
                     // we repaint offset numbers in any case
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(nfe.getMessage());
-                    }
+                    Main.trace(nfe);
                 }
             }
             updateOffsetIntl();
@@ -258,9 +254,10 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
             int precision = Main.getProjection().getDefaultZoomInPPD() >= 1.0 ? 2 : 7;
             // US locale to force decimal separator to be '.'
             try (Formatter us = new Formatter(Locale.US)) {
+                TileSourceDisplaySettings ds = layer.getDisplaySettings();
                 tOffset.setText(us.format(new StringBuilder()
                     .append("%1.").append(precision).append("f; %1.").append(precision).append('f').toString(),
-                    layer.getDx(), layer.getDy()).toString());
+                    ds.getDx(), ds.getDy()).toString());
             }
         }
 
@@ -297,7 +294,7 @@ public class ImageryAdjustAction extends MapMode implements AWTEventListener {
             offsetDialog = null;
             if (layer != null) {
                 if (getValue() != 1) {
-                    layer.setOffset(oldDx, oldDy);
+                    layer.getDisplaySettings().setDisplacement(old);
                 } else if (tBookmarkName.getText() != null && !tBookmarkName.getText().isEmpty()) {
                     OffsetBookmark.bookmarkOffset(tBookmarkName.getText(), layer);
                 }
diff --git a/src/org/openstreetmap/josm/actions/InfoAction.java b/src/org/openstreetmap/josm/actions/InfoAction.java
index 05bc692..b770b85 100644
--- a/src/org/openstreetmap/josm/actions/InfoAction.java
+++ b/src/org/openstreetmap/josm/actions/InfoAction.java
@@ -42,12 +42,7 @@ public class InfoAction extends JosmAction {
 
     @Override
     public void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getAllSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/JoinAreasAction.java b/src/org/openstreetmap/josm/actions/JoinAreasAction.java
index 9b853c0..995a9df 100644
--- a/src/org/openstreetmap/josm/actions/JoinAreasAction.java
+++ b/src/org/openstreetmap/josm/actions/JoinAreasAction.java
@@ -1007,7 +1007,7 @@ public class JoinAreasAction extends JosmAction {
      * @param boundaries list of joined boundaries to search in
      * @return outer ways
      */
-    private List<AssembledMultipolygon> findPolygons(Collection<AssembledPolygon> boundaries) {
+    private static List<AssembledMultipolygon> findPolygons(Collection<AssembledPolygon> boundaries) {
 
         List<PolygonLevel> list = findOuterWaysImpl(0, boundaries);
         List<AssembledMultipolygon> result = new ArrayList<>();
diff --git a/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java b/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
index ab3d135..68d7866 100644
--- a/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
+++ b/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
@@ -93,7 +93,7 @@ public class JoinNodeWayAction extends JosmAction {
         // Planning phase: decide where we'll insert the nodes and put it all in "data"
         for (Node node : selectedNodes) {
             List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
-                    Main.map.mapView.getPoint(node), OsmPrimitive.isSelectablePredicate);
+                    Main.map.mapView.getPoint(node), OsmPrimitive::isSelectable);
 
             MultiMap<Way, Integer> insertPoints = new MultiMap<>();
             for (WaySegment ws : wss) {
@@ -129,7 +129,7 @@ public class JoinNodeWayAction extends JosmAction {
 
             List<Integer> segmentIndexes = new LinkedList<>();
             segmentIndexes.addAll(innerEntry.keySet());
-            Collections.sort(segmentIndexes, Collections.reverseOrder());
+            segmentIndexes.sort(Collections.reverseOrder());
 
             List<Node> wayNodes = w.getNodes();
             for (Integer segmentIndex : segmentIndexes) {
@@ -148,7 +148,7 @@ public class JoinNodeWayAction extends JosmAction {
                 }
                 List<Node> nodesToAdd = new LinkedList<>();
                 nodesToAdd.addAll(nodesInSegment);
-                Collections.sort(nodesToAdd, new NodeDistanceToRefNodeComparator(
+                nodesToAdd.sort(new NodeDistanceToRefNodeComparator(
                         w.getNode(segmentIndex), w.getNode(segmentIndex+1), !joinWayToNode));
                 wayNodes.addAll(segmentIndex + 1, nodesToAdd);
             }
diff --git a/src/org/openstreetmap/josm/actions/JosmAction.java b/src/org/openstreetmap/josm/actions/JosmAction.java
index b321ca7..9b3bd4a 100644
--- a/src/org/openstreetmap/josm/actions/JosmAction.java
+++ b/src/org/openstreetmap/josm/actions/JosmAction.java
@@ -292,10 +292,7 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
     }
 
     protected static void waitFuture(final Future<?> future, final PleaseWaitProgressMonitor monitor) {
-        Main.worker.submit(
-                new Runnable() {
-                    @Override
-                    public void run() {
+        Main.worker.submit(() -> {
                         try {
                             future.get();
                         } catch (InterruptedException | ExecutionException | CancellationException e) {
@@ -303,9 +300,7 @@ public abstract class JosmAction extends AbstractAction implements Destroyable {
                             return;
                         }
                         monitor.close();
-                    }
-                }
-        );
+                    });
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/JumpToAction.java b/src/org/openstreetmap/josm/actions/JumpToAction.java
index e1a5555..b0d7ed9 100644
--- a/src/org/openstreetmap/josm/actions/JumpToAction.java
+++ b/src/org/openstreetmap/josm/actions/JumpToAction.java
@@ -18,8 +18,6 @@ import javax.swing.event.DocumentListener;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.gui.MapFrame;
-import org.openstreetmap.josm.gui.MapFrameListener;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LatLonDialog;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
@@ -222,11 +220,6 @@ public class JumpToAction extends JosmAction {
     protected void installAdapters() {
         super.installAdapters();
         // make this action listen to mapframe change events
-        Main.addMapFrameListener(new MapFrameListener() {
-            @Override
-            public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
-                updateEnabledState();
-            }
-        });
+        Main.addMapFrameListener((o, n) -> updateEnabledState());
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java b/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
index 12f5bdb..6fb6424 100644
--- a/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
+++ b/src/org/openstreetmap/josm/actions/MapRectifierWMSmenuAction.java
@@ -22,12 +22,12 @@ import javax.swing.JRadioButton;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Download rectified images from various services.
@@ -123,7 +123,7 @@ public class MapRectifierWMSmenuAction extends JosmAction {
 
         JosmTextField tfWmsUrl = new JosmTextField(30);
 
-        String clip = Utils.getClipboardContent();
+        String clip = ClipboardUtils.getClipboardStringContent();
         clip = clip == null ? "" : clip.trim();
         ButtonGroup group = new ButtonGroup();
 
diff --git a/src/org/openstreetmap/josm/actions/MergeLayerAction.java b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
index 85f52ef..05c5480 100644
--- a/src/org/openstreetmap/josm/actions/MergeLayerAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeLayerAction.java
@@ -40,9 +40,7 @@ public class MergeLayerAction extends AbstractMergeAction {
         final Layer targetLayer = askTargetLayer(targetLayers);
         if (targetLayer == null)
             return;
-        Main.worker.submit(new Runnable() {
-            @Override
-            public void run() {
+        Main.worker.submit(() -> {
                 boolean layerMerged = false;
                 for (final Layer sourceLayer: sourceLayers) {
                     if (sourceLayer != null && !sourceLayer.equals(targetLayer)) {
@@ -53,19 +51,13 @@ public class MergeLayerAction extends AbstractMergeAction {
                             }
                         }
                         targetLayer.mergeFrom(sourceLayer);
-                        GuiHelper.runInEDTAndWait(new Runnable() {
-                            @Override
-                            public void run() {
-                                Main.getLayerManager().removeLayer(sourceLayer);
-                            }
-                        });
+                        GuiHelper.runInEDTAndWait(() -> Main.getLayerManager().removeLayer(sourceLayer));
                         layerMerged = true;
                     }
                 }
                 if (layerMerged) {
                     Main.getLayerManager().setActiveLayer(targetLayer);
                 }
-            }
         });
     }
 
@@ -99,9 +91,7 @@ public class MergeLayerAction extends AbstractMergeAction {
 
     @Override
     protected void updateEnabledState() {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
+        GuiHelper.runInEDT(() -> {
                 final Layer sourceLayer = getSourceLayer();
                 if (sourceLayer == null) {
                     setEnabled(false);
@@ -109,7 +99,6 @@ public class MergeLayerAction extends AbstractMergeAction {
                     final List<Layer> possibleMergeTargets = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer);
                     setEnabled(!possibleMergeTargets.isEmpty());
                 }
-            }
         });
     }
 
diff --git a/src/org/openstreetmap/josm/actions/MergeNodesAction.java b/src/org/openstreetmap/josm/actions/MergeNodesAction.java
index 05d0e45..59254ad 100644
--- a/src/org/openstreetmap/josm/actions/MergeNodesAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeNodesAction.java
@@ -25,7 +25,6 @@ import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
 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.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.TagCollection;
@@ -73,7 +72,7 @@ public class MergeNodesAction extends JosmAction {
 
         if (selectedNodes.size() == 1) {
             List<Node> nearestNodes = Main.map.mapView.getNearestNodes(
-                    Main.map.mapView.getPoint(selectedNodes.get(0)), selectedNodes, OsmPrimitive.isUsablePredicate);
+                    Main.map.mapView.getPoint(selectedNodes.get(0)), selectedNodes, OsmPrimitive::isUsable);
             if (nearestNodes.isEmpty()) {
                 new Notification(
                         tr("Please select at least two nodes to merge or one node that is close to another node."))
@@ -352,12 +351,7 @@ public class MergeNodesAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getAllSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/MergeSelectionAction.java b/src/org/openstreetmap/josm/actions/MergeSelectionAction.java
index ffea86d..af117cb 100644
--- a/src/org/openstreetmap/josm/actions/MergeSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/MergeSelectionAction.java
@@ -9,7 +9,6 @@ import java.awt.event.KeyEvent;
 import java.util.Collection;
 import java.util.List;
 
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.MergeSourceBuildingVisitor;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -70,12 +69,7 @@ public class MergeSelectionAction extends AbstractMergeAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getAllSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/MoveNodeAction.java b/src/org/openstreetmap/josm/actions/MoveNodeAction.java
index 1a367f1..43a605e 100644
--- a/src/org/openstreetmap/josm/actions/MoveNodeAction.java
+++ b/src/org/openstreetmap/josm/actions/MoveNodeAction.java
@@ -10,7 +10,6 @@ import java.util.Collection;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.MoveCommand;
 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.gui.dialogs.LatLonDialog;
@@ -55,12 +54,7 @@ public final class MoveNodeAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/OpenFileAction.java b/src/org/openstreetmap/josm/actions/OpenFileAction.java
index 9dbb0d7..4dcf43f 100644
--- a/src/org/openstreetmap/josm/actions/OpenFileAction.java
+++ b/src/org/openstreetmap/josm/actions/OpenFileAction.java
@@ -9,7 +9,6 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FilenameFilter;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -126,13 +125,8 @@ public class OpenFileAction extends DiskAccessAction {
                     this.files.add(file);
                 } else if (file.getParentFile() != null) {
                     // try to guess an extension using the specified fileFilter
-                    final File[] matchingFiles = file.getParentFile().listFiles(new FilenameFilter() {
-                        @Override
-                        public boolean accept(File dir, String name) {
-                            return name.startsWith(file.getName())
-                                    && fileFilter != null && fileFilter.accept(new File(dir, name));
-                        }
-                    });
+                    final File[] matchingFiles = file.getParentFile().listFiles((dir, name) ->
+                            name.startsWith(file.getName()) && fileFilter != null && fileFilter.accept(new File(dir, name)));
                     if (matchingFiles != null && matchingFiles.length == 1) {
                         // use the unique match as filename
                         this.files.add(matchingFiles[0]);
@@ -259,14 +253,9 @@ public class OpenFileAction extends DiskAccessAction {
                 for (final File f : files) {
                     if (!chosenImporter.acceptFile(f)) {
                         if (f.isDirectory()) {
-                            SwingUtilities.invokeLater(new Runnable() {
-                                @Override
-                                public void run() {
-                                    JOptionPane.showMessageDialog(Main.parent, tr(
-                                            "<html>Cannot open directory ''{0}''.<br>Please select a file.</html>",
-                                            f.getAbsolutePath()), tr("Open file"), JOptionPane.ERROR_MESSAGE);
-                                }
-                            });
+                            SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(Main.parent, tr(
+                                    "<html>Cannot open directory ''{0}''.<br>Please select a file.</html>",
+                                    f.getAbsolutePath()), tr("Open file"), JOptionPane.ERROR_MESSAGE));
                             // TODO when changing to Java 6: Don't cancel the task here but use different modality. (Currently 2 dialogs
                             // would block each other.)
                             return;
diff --git a/src/org/openstreetmap/josm/actions/OpenLocationAction.java b/src/org/openstreetmap/josm/actions/OpenLocationAction.java
index 522da6a..af71769 100644
--- a/src/org/openstreetmap/josm/actions/OpenLocationAction.java
+++ b/src/org/openstreetmap/josm/actions/OpenLocationAction.java
@@ -23,6 +23,7 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.downloadtasks.DownloadGeoUrlTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadGpsTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesTask;
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesUrlBoundsTask;
@@ -67,6 +68,7 @@ public class OpenLocationAction extends JosmAction {
         addDownloadTaskClass(DownloadNotesTask.class);
         addDownloadTaskClass(DownloadOsmChangeTask.class);
         addDownloadTaskClass(DownloadOsmUrlTask.class);
+        addDownloadTaskClass(DownloadGeoUrlTask.class);
         addDownloadTaskClass(DownloadOsmIdTask.class);
         addDownloadTaskClass(DownloadOsmCompressedTask.class);
         addDownloadTaskClass(DownloadOsmChangeCompressedTask.class);
diff --git a/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java b/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
index 973c492..c6b4027 100644
--- a/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
+++ b/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
@@ -499,7 +499,7 @@ public final class OrthogonalizeAction extends JosmAction {
      * @param a angle
      * @return correct angle
      */
-    private static double standard_angle_0_to_2PI(double a) {
+    private static double standardAngle0to2PI(double a) {
         while (a >= 2 * Math.PI) {
             a -= 2 * Math.PI;
         }
@@ -514,7 +514,7 @@ public final class OrthogonalizeAction extends JosmAction {
      * @param a angle
      * @return correct angle
      */
-    private static double standard_angle_mPI_to_PI(double a) {
+    private static double standardAngleMPItoPI(double a) {
         while (a > Math.PI) {
             a -= 2 * Math.PI;
         }
@@ -571,7 +571,7 @@ public final class OrthogonalizeAction extends JosmAction {
      * @throws RejectedAngleException in case of invalid angle
      */
     private static int angleToDirectionChange(double a, double deltaMax) throws RejectedAngleException {
-        a = standard_angle_mPI_to_PI(a);
+        a = standardAngleMPItoPI(a);
         double d0 = Math.abs(a);
         double d90 = Math.abs(a - Math.PI / 2);
         double dm90 = Math.abs(a + Math.PI / 2);
@@ -583,7 +583,7 @@ public final class OrthogonalizeAction extends JosmAction {
         } else if (dm90 < deltaMax) {
             dirChange = -1;
         } else {
-            a = standard_angle_0_to_2PI(a);
+            a = standardAngle0to2PI(a);
             double d180 = Math.abs(a - Math.PI);
             if (d180 < deltaMax) {
                 dirChange = 2;
diff --git a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
index 2984525..8b5c9cd 100644
--- a/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java
@@ -47,6 +47,7 @@ import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.io.OverpassDownloadReader;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UncheckedParseException;
@@ -154,7 +155,7 @@ public class OverpassDownloadAction extends JosmAction {
             overpassWizard.setToolTipText(tooltip);
             overpassWizard.getEditorComponent().addFocusListener(disableActionsFocusListener);
             final JButton buildQuery = new JButton(tr("Build query"));
-            buildQuery.addActionListener(new AbstractAction() {
+            final Action buildQueryAction = new AbstractAction() {
                 @Override
                 public void actionPerformed(ActionEvent e) {
                     final String overpassWizardText = overpassWizard.getText();
@@ -172,10 +173,12 @@ public class OverpassDownloadAction extends JosmAction {
                         );
                     }
                 }
-            });
+            };
+            buildQuery.addActionListener(buildQueryAction);
             buildQuery.setToolTipText(tooltip);
             pnl.add(buildQuery, GBC.std().insets(5, 5, 5, 5));
             pnl.add(overpassWizard, GBC.eol().fill(GBC.HORIZONTAL));
+            InputMapUtils.addEnterAction(overpassWizard.getEditorComponent(), buildQueryAction);
 
             overpassQuery = new JosmTextArea("", 8, 80);
             overpassQuery.setFont(GuiHelper.getMonospacedFont(overpassQuery));
@@ -220,6 +223,10 @@ public class OverpassDownloadAction extends JosmAction {
             OverpassQueryHistoryPopup.addToHistory(getOverpassQuery());
         }
 
+        @Override
+        protected void updateSizeCheck() {
+            displaySizeCheckResult(false);
+        }
     }
 
     static class OverpassQueryHistoryPopup extends JPopupMenu {
diff --git a/src/org/openstreetmap/josm/actions/PasteAction.java b/src/org/openstreetmap/josm/actions/PasteAction.java
index d0a1b4b..b54f14b 100644
--- a/src/org/openstreetmap/josm/actions/PasteAction.java
+++ b/src/org/openstreetmap/josm/actions/PasteAction.java
@@ -5,210 +5,26 @@ package org.openstreetmap.josm.actions;
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.MouseInfo;
-import java.awt.Point;
-import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.command.AddPrimitivesCommand;
-import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.osm.NodeData;
-import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
-import org.openstreetmap.josm.data.osm.PrimitiveData;
-import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
-import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy.PasteBufferChangedListener;
-import org.openstreetmap.josm.data.osm.RelationData;
-import org.openstreetmap.josm.data.osm.RelationMemberData;
-import org.openstreetmap.josm.data.osm.WayData;
-import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
  * Paste OSM primitives from clipboard to the current edit layer.
  * @since 404
  */
-public final class PasteAction extends JosmAction implements PasteBufferChangedListener {
+public final class PasteAction extends AbstractPasteAction {
 
     /**
      * Constructs a new {@code PasteAction}.
      */
     public PasteAction() {
-        super(tr("Paste"), "paste", tr("Paste contents of paste buffer."),
+        super(tr("Paste"), "paste", tr("Paste contents of clipboard."),
                 Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.CTRL), true);
         putValue("help", ht("/Action/Paste"));
         // CUA shortcut for paste (https://en.wikipedia.org/wiki/IBM_Common_User_Access#Description)
         Main.registerActionShortcut(this,
                 Shortcut.registerShortcut("system:paste:cua", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_INSERT, Shortcut.SHIFT));
-        Main.pasteBuffer.addPasteBufferChangedListener(this);
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-        if (!isEnabled())
-            return;
-        pasteData(Main.pasteBuffer, Main.pasteSource, e);
-    }
-
-    /**
-     * Paste OSM primitives from the given paste buffer and OSM data layer source to the current edit layer.
-     * @param pasteBuffer The paste buffer containing primitive ids to copy
-     * @param source The OSM data layer used to look for primitive ids
-     * @param e The ActionEvent that triggered this operation
-     */
-    public void pasteData(PrimitiveDeepCopy pasteBuffer, Layer source, ActionEvent e) {
-        /* Find the middle of the pasteBuffer area */
-        double maxEast = -1E100;
-        double minEast = 1E100;
-        double maxNorth = -1E100;
-        double minNorth = 1E100;
-        boolean incomplete = false;
-        for (PrimitiveData data : pasteBuffer.getAll()) {
-            if (data instanceof NodeData) {
-                NodeData n = (NodeData) data;
-                if (n.getEastNorth() != null) {
-                    double east = n.getEastNorth().east();
-                    double north = n.getEastNorth().north();
-                    if (east > maxEast) {
-                        maxEast = east;
-                    }
-                    if (east < minEast) {
-                        minEast = east;
-                    }
-                    if (north > maxNorth) {
-                        maxNorth = north;
-                    }
-                    if (north < minNorth) {
-                        minNorth = north;
-                    }
-                }
-            }
-            if (data.isIncomplete()) {
-                incomplete = true;
-            }
-        }
-
-        // Allow to cancel paste if there are incomplete primitives
-        if (incomplete && !confirmDeleteIncomplete()) {
-            return;
-        }
-
-        // default to paste in center of map (pasted via menu or cursor not in MapView)
-        EastNorth mPosition = Main.map.mapView.getCenter();
-        // We previously checked for modifier to know if the action has been trigerred via shortcut or via menu
-        // But this does not work if the shortcut is changed to a single key (see #9055)
-        // Observed behaviour: getActionCommand() returns Action.NAME when triggered via menu, but shortcut text when triggered with it
-        if (e != null && !getValue(NAME).equals(e.getActionCommand())) {
-            final Point mp = MouseInfo.getPointerInfo().getLocation();
-            final Point tl = Main.map.mapView.getLocationOnScreen();
-            final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
-            if (Main.map.mapView.contains(pos)) {
-                mPosition = Main.map.mapView.getEastNorth(pos.x, pos.y);
-            }
-        }
-
-        double offsetEast = mPosition.east() - (maxEast + minEast)/2.0;
-        double offsetNorth = mPosition.north() - (maxNorth + minNorth)/2.0;
-
-        // Make a copy of pasteBuffer and map from old id to copied data id
-        List<PrimitiveData> bufferCopy = new ArrayList<>();
-        List<PrimitiveData> toSelect = new ArrayList<>();
-        Map<Long, Long> newNodeIds = new HashMap<>();
-        Map<Long, Long> newWayIds = new HashMap<>();
-        Map<Long, Long> newRelationIds = new HashMap<>();
-        for (PrimitiveData data: pasteBuffer.getAll()) {
-            if (data.isIncomplete()) {
-                continue;
-            }
-            PrimitiveData copy = data.makeCopy();
-            copy.clearOsmMetadata();
-            if (data instanceof NodeData) {
-                newNodeIds.put(data.getUniqueId(), copy.getUniqueId());
-            } else if (data instanceof WayData) {
-                newWayIds.put(data.getUniqueId(), copy.getUniqueId());
-            } else if (data instanceof RelationData) {
-                newRelationIds.put(data.getUniqueId(), copy.getUniqueId());
-            }
-            bufferCopy.add(copy);
-            if (pasteBuffer.getDirectlyAdded().contains(data)) {
-                toSelect.add(copy);
-            }
-        }
-
-        // Update references in copied buffer
-        for (PrimitiveData data:bufferCopy) {
-            if (data instanceof NodeData) {
-                NodeData nodeData = (NodeData) data;
-                if (Main.getLayerManager().getEditLayer() == source) {
-                    nodeData.setEastNorth(nodeData.getEastNorth().add(offsetEast, offsetNorth));
-                }
-            } else if (data instanceof WayData) {
-                List<Long> newNodes = new ArrayList<>();
-                for (Long oldNodeId: ((WayData) data).getNodes()) {
-                    Long newNodeId = newNodeIds.get(oldNodeId);
-                    if (newNodeId != null) {
-                        newNodes.add(newNodeId);
-                    }
-                }
-                ((WayData) data).setNodes(newNodes);
-            } else if (data instanceof RelationData) {
-                List<RelationMemberData> newMembers = new ArrayList<>();
-                for (RelationMemberData member: ((RelationData) data).getMembers()) {
-                    OsmPrimitiveType memberType = member.getMemberType();
-                    Long newId;
-                    switch (memberType) {
-                    case NODE:
-                        newId = newNodeIds.get(member.getMemberId());
-                        break;
-                    case WAY:
-                        newId = newWayIds.get(member.getMemberId());
-                        break;
-                    case RELATION:
-                        newId = newRelationIds.get(member.getMemberId());
-                        break;
-                    default: throw new AssertionError();
-                    }
-                    if (newId != null) {
-                        newMembers.add(new RelationMemberData(member.getRole(), memberType, newId));
-                    }
-                }
-                ((RelationData) data).setMembers(newMembers);
-            }
-        }
-
-        /* Now execute the commands to add the duplicated contents of the paste buffer to the map */
-        Main.main.undoRedo.add(new AddPrimitivesCommand(bufferCopy, toSelect));
-        Main.map.mapView.repaint();
-    }
-
-    private static boolean confirmDeleteIncomplete() {
-        ExtendedDialog ed = new ExtendedDialog(Main.parent,
-                tr("Delete incomplete members?"),
-                new String[] {tr("Paste without incomplete members"), tr("Cancel")});
-        ed.setButtonIcons(new String[] {"dialogs/relation/deletemembers", "cancel"});
-        ed.setContent(tr("The copied data contains incomplete objects.  "
-                + "When pasting the incomplete objects are removed.  "
-                + "Do you want to paste the data without the incomplete objects?"));
-        ed.showDialog();
-        return ed.getValue() == 1;
-    }
-
-    @Override
-    protected void updateEnabledState() {
-        if (getLayerManager().getEditDataSet() == null || Main.pasteBuffer == null) {
-            setEnabled(false);
-            return;
-        }
-        setEnabled(!Main.pasteBuffer.isEmpty());
-    }
-
-    @Override
-    public void pasteBufferChanged(PrimitiveDeepCopy pasteBuffer) {
-        updateEnabledState();
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/PasteAtSourcePositionAction.java b/src/org/openstreetmap/josm/actions/PasteAtSourcePositionAction.java
new file mode 100644
index 0000000..ccfee85
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/PasteAtSourcePositionAction.java
@@ -0,0 +1,35 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.tools.Shortcut;
+
+/**
+ * A special version of the {@link PasteAction} that pastes at the exact source location the item was copied from.
+ * @author Michael Zangl
+ * @since 10765
+ */
+public class PasteAtSourcePositionAction extends AbstractPasteAction {
+
+    /**
+     * Constructs a new {@link PasteAtSourcePositionAction}.
+     */
+    public PasteAtSourcePositionAction() {
+        super(tr("Paste at source position"), "paste", tr("Paste contents of clipboard at the position they were copied from."),
+                Shortcut.registerShortcut("menu:edit:pasteAtSource", tr("Edit: {0}", tr("Paste at source position")),
+                        KeyEvent.VK_V, Shortcut.ALT_CTRL), true, "pasteatsource");
+        putValue("help", ht("/Action/Paste"));
+    }
+
+    @Override
+    protected EastNorth computePastePosition(ActionEvent e) {
+        // null means use old position
+        return null;
+    }
+}
diff --git a/src/org/openstreetmap/josm/actions/PasteTagsAction.java b/src/org/openstreetmap/josm/actions/PasteTagsAction.java
index 18791ce..a62cadd 100644
--- a/src/org/openstreetmap/josm/actions/PasteTagsAction.java
+++ b/src/org/openstreetmap/josm/actions/PasteTagsAction.java
@@ -3,32 +3,15 @@ package org.openstreetmap.josm.actions;
 
 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.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.EnumMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.command.ChangePropertyCommand;
-import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.command.SequenceCommand;
 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.data.osm.PrimitiveData;
-import org.openstreetmap.josm.data.osm.Tag;
-import org.openstreetmap.josm.data.osm.TagCollection;
-import org.openstreetmap.josm.gui.conflict.tags.PasteTagsConflictResolverDialog;
-import org.openstreetmap.josm.tools.I18n;
+import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.TextTagParser;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Action, to paste all tags from one primitive to another.
@@ -41,6 +24,7 @@ import org.openstreetmap.josm.tools.Utils;
 public final class PasteTagsAction extends JosmAction {
 
     private static final String help = ht("/Action/PasteTags");
+    private final OsmTransferHandler transferHandler = new OsmTransferHandler();
 
     /**
      * Constructs a new {@code PasteTagsAction}.
@@ -53,204 +37,6 @@ public final class PasteTagsAction extends JosmAction {
         putValue("help", help);
     }
 
-    public static class TagPaster {
-
-        private final Collection<PrimitiveData> source;
-        private final Collection<OsmPrimitive> target;
-        private final List<Tag> tags = new ArrayList<>();
-
-        /**
-         * Constructs a new {@code TagPaster}.
-         * @param source source primitives
-         * @param target target primitives
-         */
-        public TagPaster(Collection<PrimitiveData> source, Collection<OsmPrimitive> target) {
-            this.source = source;
-            this.target = target;
-        }
-
-        /**
-         * 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 isHeterogeneousSource() {
-            int count = 0;
-            count = !getSourcePrimitivesByType(OsmPrimitiveType.NODE).isEmpty() ? (count + 1) : count;
-            count = !getSourcePrimitivesByType(OsmPrimitiveType.WAY).isEmpty() ? (count + 1) : count;
-            count = !getSourcePrimitivesByType(OsmPrimitiveType.RELATION).isEmpty() ? (count + 1) : count;
-            return count > 1;
-        }
-
-        /**
-         * Replies all primitives of type <code>type</code> in the current selection.
-         *
-         * @param type  the type
-         * @return all primitives of type <code>type</code> in the current selection.
-         */
-        protected Collection<? extends PrimitiveData> getSourcePrimitivesByType(OsmPrimitiveType type) {
-            return PrimitiveData.getFilteredList(source, type);
-        }
-
-        /**
-         * Replies the collection of tags for all primitives of type <code>type</code> in the current
-         * selection
-         *
-         * @param type  the type
-         * @return the collection of tags for all primitives of type <code>type</code> in the current
-         * selection
-         */
-        protected TagCollection getSourceTagsByType(OsmPrimitiveType type) {
-            return TagCollection.unionOfAllPrimitives(getSourcePrimitivesByType(type));
-        }
-
-        /**
-         * Replies true if there is at least one tag in the current selection for primitives of
-         * type <code>type</code>
-         *
-         * @param type the type
-         * @return true if there is at least one tag in the current selection for primitives of
-         * type <code>type</code>
-         */
-        protected boolean hasSourceTagsByType(OsmPrimitiveType type) {
-            return !getSourceTagsByType(type).isEmpty();
-        }
-
-        protected void buildTags(TagCollection tc) {
-            for (String key : tc.getKeys()) {
-                tags.add(new Tag(key, tc.getValues(key).iterator().next()));
-            }
-        }
-
-        protected Map<OsmPrimitiveType, Integer> getSourceStatistics() {
-            Map<OsmPrimitiveType, Integer> ret = new EnumMap<>(OsmPrimitiveType.class);
-            for (OsmPrimitiveType type: OsmPrimitiveType.dataValues()) {
-                if (!getSourceTagsByType(type).isEmpty()) {
-                    ret.put(type, getSourcePrimitivesByType(type).size());
-                }
-            }
-            return ret;
-        }
-
-        protected Map<OsmPrimitiveType, Integer> getTargetStatistics() {
-            Map<OsmPrimitiveType, Integer> ret = new EnumMap<>(OsmPrimitiveType.class);
-            for (OsmPrimitiveType type: OsmPrimitiveType.dataValues()) {
-                int count = OsmPrimitive.getFilteredList(target, type.getOsmClass()).size();
-                if (count > 0) {
-                    ret.put(type, count);
-                }
-            }
-            return ret;
-        }
-
-        /**
-         * Pastes the tags from a homogeneous source (the {@link Main#pasteBuffer}s selection consisting
-         * of one type of {@link OsmPrimitive}s only).
-         *
-         * Tags from a homogeneous source can be pasted to a heterogeneous target. All target primitives,
-         * regardless of their type, receive the same tags.
-         */
-        protected void pasteFromHomogeneousSource() {
-            TagCollection tc = null;
-            for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
-                TagCollection tc1 = getSourceTagsByType(type);
-                if (!tc1.isEmpty()) {
-                    tc = tc1;
-                }
-            }
-            if (tc == null)
-                // no tags found to paste. Abort.
-                return;
-
-            if (!tc.isApplicableToPrimitive()) {
-                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(Main.parent);
-                dialog.populate(tc, getSourceStatistics(), getTargetStatistics());
-                dialog.setVisible(true);
-                if (dialog.isCanceled())
-                    return;
-                buildTags(dialog.getResolution());
-            } else {
-                // no conflicts in the source tags to resolve. Just apply the tags
-                // to the target primitives
-                //
-                buildTags(tc);
-            }
-        }
-
-        /**
-         * Replies true if there is at least one primitive of type <code>type</code>
-         * is in the target collection
-         *
-         * @param type  the type to look for
-         * @return true if there is at least one primitive of type <code>type</code> in the collection
-         * <code>selection</code>
-         */
-        protected boolean hasTargetPrimitives(Class<? extends OsmPrimitive> type) {
-            return !OsmPrimitive.getFilteredList(target, type).isEmpty();
-        }
-
-        /**
-         * Replies true if this a heterogeneous source can be pasted without conflict to targets
-         *
-         * @return true if this a heterogeneous source can be pasted without conflicts to targets
-         */
-        protected boolean canPasteFromHeterogeneousSourceWithoutConflict() {
-            for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
-                if (hasTargetPrimitives(type.getOsmClass())) {
-                    TagCollection tc = TagCollection.unionOfAllPrimitives(getSourcePrimitivesByType(type));
-                    if (!tc.isEmpty() && !tc.isApplicableToPrimitive())
-                        return false;
-                }
-            }
-            return true;
-        }
-
-        /**
-         * Pastes the tags in the current selection of the paste buffer to a set of target primitives.
-         */
-        protected void pasteFromHeterogeneousSource() {
-            if (canPasteFromHeterogeneousSourceWithoutConflict()) {
-                for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
-                    if (hasSourceTagsByType(type) && hasTargetPrimitives(type.getOsmClass())) {
-                        buildTags(getSourceTagsByType(type));
-                    }
-                }
-            } else {
-                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(Main.parent);
-                dialog.populate(
-                        getSourceTagsByType(OsmPrimitiveType.NODE),
-                        getSourceTagsByType(OsmPrimitiveType.WAY),
-                        getSourceTagsByType(OsmPrimitiveType.RELATION),
-                        getSourceStatistics(),
-                        getTargetStatistics()
-                );
-                dialog.setVisible(true);
-                if (dialog.isCanceled())
-                    return;
-                for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
-                    if (hasSourceTagsByType(type) && hasTargetPrimitives(type.getOsmClass())) {
-                        buildTags(dialog.getResolution(type));
-                    }
-                }
-            }
-        }
-
-        /**
-         * Performs the paste operation.
-         * @return list of tags
-         */
-        public List<Tag> execute() {
-            tags.clear();
-            if (isHeterogeneousSource()) {
-                pasteFromHeterogeneousSource();
-            } else {
-                pasteFromHomogeneousSource();
-            }
-            return tags;
-        }
-
-    }
-
     @Override
     public void actionPerformed(ActionEvent e) {
         Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
@@ -258,74 +44,7 @@ public final class PasteTagsAction extends JosmAction {
         if (selection.isEmpty())
             return;
 
-        String buf = Utils.getClipboardContent();
-        if (buf == null || buf.isEmpty() || buf.matches(CopyAction.CLIPBOARD_REGEXP)) {
-            pasteTagsFromJOSMBuffer(selection);
-        } else {
-            // Paste tags from arbitrary text
-            pasteTagsFromText(selection, buf);
-        }
-    }
-
-    /**
-     * Paste tags from arbitrary text, not using JOSM buffer
-     * @param selection selected primitives
-     * @param text text containing tags
-     * @return true if action was successful
-     * @see TextTagParser#readTagsFromText
-     */
-    public static boolean pasteTagsFromText(Collection<OsmPrimitive> selection, String text) {
-        Map<String, String> tags = TextTagParser.readTagsFromText(text);
-        if (tags == null || tags.isEmpty()) {
-            TextTagParser.showBadBufferMessage(help);
-            return false;
-        }
-        if (!TextTagParser.validateTags(tags)) return false;
-
-        List<Command> commands = new ArrayList<>(tags.size());
-        for (Entry<String, String> entry: tags.entrySet()) {
-            String v = entry.getValue();
-            commands.add(new ChangePropertyCommand(selection, entry.getKey(), "".equals(v) ? null : v));
-        }
-        commitCommands(selection, commands);
-        return !commands.isEmpty();
-    }
-
-    /**
-     * Paste tags from JOSM buffer
-     * @param selection objects that will have the tags
-     * @return false if JOSM buffer was empty
-     */
-    public static boolean pasteTagsFromJOSMBuffer(Collection<OsmPrimitive> selection) {
-        List<PrimitiveData> directlyAdded = Main.pasteBuffer.getDirectlyAdded();
-        if (directlyAdded == null || directlyAdded.isEmpty()) return false;
-
-        PasteTagsAction.TagPaster tagPaster = new PasteTagsAction.TagPaster(directlyAdded, selection);
-        List<Command> commands = new ArrayList<>();
-        for (Tag tag : tagPaster.execute()) {
-            commands.add(new ChangePropertyCommand(selection, tag.getKey(), "".equals(tag.getValue()) ? null : tag.getValue()));
-        }
-        commitCommands(selection, commands);
-        return true;
-    }
-
-    /**
-     * Create and execute SequenceCommand with descriptive title
-     * @param selection selected primitives
-     * @param commands the commands to perform in a sequential command
-     */
-    private static void commitCommands(Collection<OsmPrimitive> selection, List<Command> commands) {
-        if (!commands.isEmpty()) {
-            String title1 = trn("Pasting {0} tag", "Pasting {0} tags", commands.size(), commands.size());
-            String title2 = trn("to {0} object", "to {0} objects", selection.size(), selection.size());
-            @I18n.QuirkyPluralString
-            final String title = title1 + ' ' + title2;
-            Main.main.undoRedo.add(
-                    new SequenceCommand(
-                            title,
-                            commands
-                    ));
-        }
+        transferHandler.pasteTags(selection);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/PurgeAction.java b/src/org/openstreetmap/josm/actions/PurgeAction.java
index dcb1e88..b8506f4 100644
--- a/src/org/openstreetmap/josm/actions/PurgeAction.java
+++ b/src/org/openstreetmap/josm/actions/PurgeAction.java
@@ -12,8 +12,6 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -244,14 +242,11 @@ public class PurgeAction extends JosmAction {
                             "in addition to the selected objects:")+"</html>",
                             ImageProvider.get("warning-small"), JLabel.LEFT), GBC.eol().fill(GBC.HORIZONTAL));
 
-            Collections.sort(toPurgeAdditionally, new Comparator<OsmPrimitive>() {
-                @Override
-                public int compare(OsmPrimitive o1, OsmPrimitive o2) {
-                    int type = o2.getType().compareTo(o1.getType());
-                    if (type != 0)
-                        return type;
-                    return Long.compare(o1.getUniqueId(), o2.getUniqueId());
-                }
+            toPurgeAdditionally.sort((o1, o2) -> {
+                int type = o2.getType().compareTo(o1.getType());
+                if (type != 0)
+                    return type;
+                return Long.compare(o1.getUniqueId(), o2.getUniqueId());
             });
             JList<OsmPrimitive> list = new JList<>(toPurgeAdditionally.toArray(new OsmPrimitive[toPurgeAdditionally.size()]));
             /* force selection to be active for all entries */
diff --git a/src/org/openstreetmap/josm/actions/ReverseWayAction.java b/src/org/openstreetmap/josm/actions/ReverseWayAction.java
index 831bcc3..c16a563 100644
--- a/src/org/openstreetmap/josm/actions/ReverseWayAction.java
+++ b/src/org/openstreetmap/josm/actions/ReverseWayAction.java
@@ -27,7 +27,6 @@ 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 {
 
@@ -129,16 +128,11 @@ public final class ReverseWayAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
     protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
-        setEnabled(Utils.exists(selection, OsmPrimitive.wayPredicate));
+        setEnabled(selection.stream().anyMatch(Way.class::isInstance));
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java b/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
index 2853bb4..5e55145 100644
--- a/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
+++ b/src/org/openstreetmap/josm/actions/SearchNotesDownloadAction.java
@@ -87,9 +87,7 @@ public class SearchNotesDownloadAction extends JosmAction {
             new DownloadNotesTask().download(id, null);
             return;
         } catch (NumberFormatException ignore) {
-            if (Main.isTraceEnabled()) {
-                Main.trace(ignore.getMessage());
-            }
+            Main.trace(ignore);
         }
 
         int noteLimit = Main.pref.getInteger("osm.notes.downloadLimit", 1000);
diff --git a/src/org/openstreetmap/josm/actions/SelectAllAction.java b/src/org/openstreetmap/josm/actions/SelectAllAction.java
index 42c6ca5..1e6590e 100644
--- a/src/org/openstreetmap/josm/actions/SelectAllAction.java
+++ b/src/org/openstreetmap/josm/actions/SelectAllAction.java
@@ -8,6 +8,7 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.tools.Shortcut;
 
 public class SelectAllAction extends JosmAction {
@@ -26,7 +27,7 @@ public class SelectAllAction extends JosmAction {
         if (!isEnabled())
             return;
         DataSet ds = getLayerManager().getEditDataSet();
-        ds.setSelected(ds.allNonDeletedCompletePrimitives());
+        ds.setSelected(ds.getPrimitives(OsmPrimitive::isSelectable));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/SessionLoadAction.java b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
index 6d2b2ee..983da92 100644
--- a/src/org/openstreetmap/josm/actions/SessionLoadAction.java
+++ b/src/org/openstreetmap/josm/actions/SessionLoadAction.java
@@ -111,14 +111,11 @@ public class SessionLoadAction extends DiskAccessAction {
 
         @Override
         protected void finish() {
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    if (canceled)
-                        return;
-                    addLayers();
-                    runPostLoadTasks();
-                }
+            SwingUtilities.invokeLater(() -> {
+                if (canceled)
+                    return;
+                addLayers();
+                runPostLoadTasks();
             });
         }
 
diff --git a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
index 99cf774..8e6e697 100644
--- a/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
+++ b/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
@@ -18,7 +18,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.TreeSet;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
@@ -27,8 +27,6 @@ import org.openstreetmap.josm.data.osm.DatasetConsistencyTest;
 import org.openstreetmap.josm.data.preferences.Setting;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.preferences.SourceEditor;
-import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
-import org.openstreetmap.josm.gui.preferences.SourceEntry;
 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;
 import org.openstreetmap.josm.gui.preferences.validator.ValidatorTagCheckerRulesPreference;
@@ -36,6 +34,7 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.plugins.PluginHandler;
 import org.openstreetmap.josm.tools.PlatformHookUnixoid;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReportSender;
 import org.openstreetmap.josm.tools.bugreport.DebugTextDisplay;
 
@@ -108,6 +107,13 @@ public final class ShowStatusReportAction extends JosmAction {
                         .append('\n');
                 }
             }
+            // Add Gnome Atk wrapper details if found
+            String atkWrapperDetails = ((PlatformHookUnixoid) Main.platform).getAtkWrapperPackageDetails();
+            if (atkWrapperDetails != null) {
+                text.append("Java ATK Wrapper package: ")
+                    .append(atkWrapperDetails)
+                    .append('\n');
+            }
         }
         try {
             // Build a new list of VM parameters to modify it below if needed (default implementation returns an UnmodifiableList instance)
@@ -152,12 +158,12 @@ public final class ShowStatusReportAction extends JosmAction {
                 }
             }
         }
-        text.append('\n').append(PluginHandler.getBugReportText()).append('\n');
-
+        text.append("\n");
+        appendCollection(text, "Plugins", Utils.transform(PluginHandler.getBugReportInformation(), i -> "+ " + i));
         appendCollection(text, "Tagging presets", getCustomUrls(TaggingPresetPreference.PresetPrefHelper.INSTANCE));
         appendCollection(text, "Map paint styles", getCustomUrls(MapPaintPreference.MapPaintPrefHelper.INSTANCE));
         appendCollection(text, "Validator rules", getCustomUrls(ValidatorTagCheckerRulesPreference.RulePrefHelper.INSTANCE));
-        appendCollection(text, "Last errors/warnings", Main.getLastErrorAndWarnings());
+        appendCollection(text, "Last errors/warnings", Utils.transform(Main.getLastErrorAndWarnings(), i -> "- " + i));
 
         String osmApi = OsmApi.getOsmApi().getServerUrl();
         if (!OsmApi.DEFAULT_API_URL.equals(osmApi.trim())) {
@@ -168,14 +174,13 @@ public final class ShowStatusReportAction extends JosmAction {
     }
 
     private static Collection<String> getCustomUrls(SourceEditor.SourcePrefHelper helper) {
-        Set<String> set = new TreeSet<>();
-        for (SourceEntry entry : helper.get()) {
-            set.add(entry.url);
-        }
-        for (ExtendedSourceEntry def : helper.getDefault()) {
-            set.remove(def.url);
-        }
-        return set;
+        final Set<String> defaultUrls = helper.getDefault().stream()
+                .map(i -> i.url)
+                .collect(Collectors.toSet());
+        return helper.get().stream()
+                .filter(i -> !defaultUrls.contains(i.url))
+                .map(i -> (i.active ? "+ " : "- ") + i.url)
+                .collect(Collectors.toList());
     }
 
     private static List<String> paramCleanup(Collection<String> params) {
@@ -223,11 +228,11 @@ public final class ShowStatusReportAction extends JosmAction {
         return target == null ? str : str.replace(target, replacement);
     }
 
-    private static <T> void appendCollection(StringBuilder text, String label, Collection<T> col) {
+    private static void appendCollection(StringBuilder text, String label, Collection<String> col) {
         if (!col.isEmpty()) {
-            text.append(label+":\n");
-            for (T o : col) {
-                text.append("- ").append(paramCleanup(o.toString())).append('\n');
+            text.append(label).append(":\n");
+            for (String o : col) {
+                text.append(paramCleanup(o)).append('\n');
             }
             text.append('\n');
         }
diff --git a/src/org/openstreetmap/josm/actions/SplitWayAction.java b/src/org/openstreetmap/josm/actions/SplitWayAction.java
index acd0199..076355a 100644
--- a/src/org/openstreetmap/josm/actions/SplitWayAction.java
+++ b/src/org/openstreetmap/josm/actions/SplitWayAction.java
@@ -26,15 +26,12 @@ 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;
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
-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.PrimitiveId;
@@ -252,21 +249,18 @@ public class SplitWayAction extends JosmAction {
 
         private void configureList() {
             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 && selected.getNodesCount() > 1) {
-                        final Collection<WaySegment> segments = new ArrayList<>(selected.getNodesCount() - 1);
-                        final Iterator<Node> it = selected.getNodes().iterator();
-                        Node previousNode = it.next();
-                        while (it.hasNext()) {
-                            final Node node = it.next();
-                            segments.add(WaySegment.forNodePair(selectedWay, previousNode, node));
-                            previousNode = node;
-                        }
-                        setHighlightedWaySegments(segments);
+            list.addListSelectionListener(e -> {
+                final Way selected = list.getSelectedValue();
+                if (Main.isDisplayingMapView() && selected != null && selected.getNodesCount() > 1) {
+                    final Collection<WaySegment> segments = new ArrayList<>(selected.getNodesCount() - 1);
+                    final Iterator<Node> it = selected.getNodes().iterator();
+                    Node previousNode = it.next();
+                    while (it.hasNext()) {
+                        final Node node = it.next();
+                        segments.add(WaySegment.forNodePair(selectedWay, previousNode, node));
+                        previousNode = node;
                     }
+                    setHighlightedWaySegments(segments);
                 }
             });
             list.setCellRenderer(new DefaultListCellRenderer() {
@@ -318,8 +312,10 @@ public class SplitWayAction extends JosmAction {
      * Determines which way chunk should reuse the old id and its history
      *
      * @since 8954
+     * @since 10599 (functional interface)
      */
-    public abstract static class Strategy {
+    @FunctionalInterface
+    public interface Strategy {
 
         /**
          * Determines which way chunk should reuse the old id and its history.
@@ -327,16 +323,14 @@ public class SplitWayAction extends JosmAction {
          * @param wayChunks the way chunks
          * @return the way to keep
          */
-        public abstract Way determineWayToKeep(Iterable<Way> wayChunks);
+        Way determineWayToKeep(Iterable<Way> wayChunks);
 
         /**
          * Returns a strategy which selects the way chunk with the highest node count to keep.
          * @return 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) {
+        static Strategy keepLongestChunk() {
+            return wayChunks -> {
                     Way wayToKeep = null;
                     for (Way i : wayChunks) {
                         if (wayToKeep == null || i.getNodesCount() > wayToKeep.getNodesCount()) {
@@ -344,21 +338,15 @@ public class SplitWayAction extends JosmAction {
                         }
                     }
                     return wayToKeep;
-                }
-            };
+                };
         }
 
         /**
          * Returns a strategy which selects the first way chunk.
          * @return 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();
-                }
-            };
+        static Strategy keepFirstChunk() {
+            return wayChunks -> wayChunks.iterator().next();
         }
     }
 
@@ -375,10 +363,10 @@ public class SplitWayAction extends JosmAction {
         // Special case - one of the selected ways touches (not cross) way that we want to split
         if (selectedNodes.size() == 1) {
             Node n = selectedNodes.get(0);
-            List<Way> referedWays =
+            List<Way> referredWays =
                 OsmPrimitive.getFilteredList(n.getReferrers(), Way.class);
             Way inTheMiddle = null;
-            for (Way w: referedWays) {
+            for (Way w: referredWays) {
                 // Need to look at all nodes see #11184 for a case where node n is
                 // firstNode, lastNode and also in the middle
                 if (selectedWays.contains(w) && w.isInnerNode(n)) {
@@ -750,12 +738,7 @@ public class SplitWayAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/UnGlueAction.java b/src/org/openstreetmap/josm/actions/UnGlueAction.java
index 6b096fa..af7bbe7 100644
--- a/src/org/openstreetmap/josm/actions/UnGlueAction.java
+++ b/src/org/openstreetmap/josm/actions/UnGlueAction.java
@@ -42,7 +42,6 @@ import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.UserCancelException;
 import org.openstreetmap.josm.tools.Utils;
@@ -235,7 +234,7 @@ public class UnGlueAction extends JosmAction {
             setResizable(false);
         }
 
-        static PropertiesMembershipDialog showIfNecessary(Iterable<Node> selectedNodes, boolean preselectNew) throws UserCancelException {
+        static PropertiesMembershipDialog showIfNecessary(Collection<Node> selectedNodes, boolean preselectNew) throws UserCancelException {
             final boolean tagged = isTagged(selectedNodes);
             final boolean usedInRelations = isUsedInRelations(selectedNodes);
             if (tagged || usedInRelations) {
@@ -249,22 +248,13 @@ public class UnGlueAction extends JosmAction {
             return null;
         }
 
-        private static boolean isTagged(final Iterable<Node> existingNodes) {
-            return Utils.exists(existingNodes, new Predicate<Node>() {
-                @Override
-                public boolean evaluate(final Node selectedNode) {
-                    return selectedNode.hasKeys();
-                }
-            });
+        private static boolean isTagged(final Collection<Node> existingNodes) {
+            return existingNodes.stream().anyMatch(Node::hasKeys);
         }
 
-        private static boolean isUsedInRelations(final Iterable<Node> existingNodes) {
-            return Utils.exists(existingNodes, new Predicate<Node>() {
-                @Override
-                public boolean evaluate(final Node selectedNode) {
-                    return Utils.exists(selectedNode.getReferrers(), OsmPrimitive.relationPredicate);
-                }
-            });
+        private static boolean isUsedInRelations(final Collection<Node> existingNodes) {
+            return existingNodes.stream().anyMatch(
+                    selectedNode -> selectedNode.getReferrers().stream().anyMatch(Relation.class::isInstance));
         }
 
         void update(final Node existingNode, final List<Node> newNodes, final Collection<Command> cmds) {
diff --git a/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java b/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
index 9dbb7ec..2053b3f 100644
--- a/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
@@ -112,12 +112,7 @@ public class UpdateSelectionAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getAllSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
index 7257aff..0b1f6cb 100644
--- a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
+++ b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
@@ -57,12 +57,7 @@ public class UploadSelectionAction extends JosmAction {
 
     @Override
     protected void updateEnabledState() {
-        DataSet ds = getLayerManager().getEditDataSet();
-        if (ds == null) {
-            setEnabled(false);
-        } else {
-            updateEnabledState(ds.getAllSelected());
-        }
+        updateEnabledStateOnCurrentSelection();
     }
 
     @Override
@@ -293,13 +288,7 @@ public class UploadSelectionAction extends JosmAction {
                 ExceptionUtil.explainException(lastException);
                 return;
             }
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    processPostParentChecker(layer, toUpload);
-                }
-            };
-            SwingUtilities.invokeLater(r);
+            SwingUtilities.invokeLater(() -> processPostParentChecker(layer, toUpload));
         }
 
         /**
diff --git a/src/org/openstreetmap/josm/actions/ValidateAction.java b/src/org/openstreetmap/josm/actions/ValidateAction.java
index 094af62..12febf6 100644
--- a/src/org/openstreetmap/josm/actions/ValidateAction.java
+++ b/src/org/openstreetmap/josm/actions/ValidateAction.java
@@ -141,13 +141,10 @@ public class ValidateAction extends JosmAction {
 
             // update GUI on Swing EDT
             //
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    Main.map.validatorDialog.tree.setErrors(errors);
-                    Main.map.validatorDialog.unfurlDialog();
-                    Main.getLayerManager().getEditDataSet().fireSelectionChanged();
-                }
+            GuiHelper.runInEDT(() -> {
+                Main.map.validatorDialog.tree.setErrors(errors);
+                Main.map.validatorDialog.unfurlDialog();
+                Main.getLayerManager().getEditDataSet().fireSelectionChanged();
             });
         }
 
diff --git a/src/org/openstreetmap/josm/actions/audio/package-info.java b/src/org/openstreetmap/josm/actions/audio/package-info.java
new file mode 100644
index 0000000..8f5b14c
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/audio/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM audio playback actions.
+ */
+package org.openstreetmap.josm.actions.audio;
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
index f655091..e17fa5f 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java
@@ -60,11 +60,7 @@ public abstract class AbstractChangesetDownloadTask extends AbstractDownloadTask
             //
             // Run on the EDT because UI updates are triggered.
             //
-            Runnable r = new Runnable() {
-                @Override public void run() {
-                    ChangesetCache.getInstance().update(downloadedChangesets);
-                }
-            };
+            Runnable r = () -> ChangesetCache.getInstance().update(downloadedChangesets);
             if (SwingUtilities.isEventDispatchThread()) {
                 r.run();
             } else {
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGeoUrlTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGeoUrlTask.java
new file mode 100644
index 0000000..36973db
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGeoUrlTask.java
@@ -0,0 +1,30 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions.downloadtasks;
+
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.GeoUrlToBounds;
+
+import java.util.concurrent.Future;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+/**
+ * Task allowing to download a Geo URL (as specified in <a href="https://tools.ietf.org/html/rfc5870">RFC 5870</a>).
+ */
+public class DownloadGeoUrlTask extends DownloadOsmTask {
+
+    @Override
+    public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
+        return download(newLayer, GeoUrlToBounds.parse(url), null);
+    }
+
+    @Override
+    public String[] getPatterns() {
+        return new String[]{GeoUrlToBounds.PATTERN.toString()};
+    }
+
+    @Override
+    public String getTitle() {
+        return tr("Download Geo URL");
+    }
+}
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
index 41114c4..a05aa88 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadReferrersTask.java
@@ -116,23 +116,16 @@ public class DownloadReferrersTask extends PleaseWaitRunnable {
 
         DataSetMerger visitor = new DataSetMerger(targetLayer.data, parents);
         visitor.merge();
-        SwingUtilities.invokeLater(
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        targetLayer.onPostDownloadFromServer();
-                    }
-                }
-        );
+        SwingUtilities.invokeLater(targetLayer::onPostDownloadFromServer);
         if (visitor.getConflicts().isEmpty())
             return;
         targetLayer.getConflicts().add(visitor.getConflicts());
         JOptionPane.showMessageDialog(
                 Main.parent,
                 trn("There was {0} conflict during import.",
-                        "There were {0} conflicts during import.",
-                        visitor.getConflicts().size(),
-                        visitor.getConflicts().size()
+                    "There were {0} conflicts during import.",
+                    visitor.getConflicts().size(),
+                    visitor.getConflicts().size()
                 ),
                 trn("Conflict during download", "Conflicts during download", visitor.getConflicts().size()),
                 JOptionPane.WARNING_MESSAGE
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
index 155e095..d2efe4e 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
@@ -32,7 +32,6 @@ import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ExceptionUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -87,12 +86,9 @@ public class DownloadTaskList {
                 addDownloadTask(progressMonitor, new DownloadGpsTask(), td, i, n);
             }
         }
-        progressMonitor.addCancelListener(new CancelListener() {
-            @Override
-            public void operationCanceled() {
-                for (DownloadTask dt : tasks) {
-                    dt.cancel();
-                }
+        progressMonitor.addCancelListener(() -> {
+            for (DownloadTask dt : tasks) {
+                dt.cancel();
             }
         });
         return Main.worker.submit(new PostDownloadProcessor(osmData));
@@ -150,11 +146,7 @@ public class DownloadTaskList {
                 toSelect.add(primitive);
             }
         }
-        EventQueue.invokeLater(new Runnable() {
-            @Override public void run() {
-                UpdateSelectionAction.updatePrimitives(toSelect);
-            }
-        });
+        EventQueue.invokeLater(() -> UpdateSelectionAction.updatePrimitives(toSelect));
     }
 
     /**
@@ -269,17 +261,14 @@ public class DownloadTaskList {
                     }
                 }
 
-                GuiHelper.runInEDT(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (items.size() == 1 && tr("No data found in this area.").equals(items.iterator().next())) {
-                            new Notification(items.iterator().next()).setIcon(JOptionPane.WARNING_MESSAGE).show();
-                        } else {
-                            JOptionPane.showMessageDialog(Main.parent, "<html>"
-                                    + tr("The following errors occurred during mass download: {0}",
-                                            Utils.joinAsHtmlUnorderedList(items)) + "</html>",
-                                    tr("Errors during download"), JOptionPane.ERROR_MESSAGE);
-                        }
+                GuiHelper.runInEDT(() -> {
+                    if (items.size() == 1 && tr("No data found in this area.").equals(items.iterator().next())) {
+                        new Notification(items.iterator().next()).setIcon(JOptionPane.WARNING_MESSAGE).show();
+                    } else {
+                        JOptionPane.showMessageDialog(Main.parent, "<html>"
+                                + tr("The following errors occurred during mass download: {0}",
+                                        Utils.joinAsHtmlUnorderedList(items)) + "</html>",
+                                tr("Errors during download"), JOptionPane.ERROR_MESSAGE);
                     }
                 });
 
@@ -311,11 +300,7 @@ public class DownloadTaskList {
                     }
                 }
                 if (!myPrimitives.isEmpty()) {
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override public void run() {
-                            handlePotentiallyDeletedPrimitives(myPrimitives);
-                        }
-                    });
+                    GuiHelper.runInEDT(() -> handlePotentiallyDeletedPrimitives(myPrimitives));
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java b/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
index 700ecfa..0206654 100644
--- a/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/PostDownloadHandler.java
@@ -57,20 +57,17 @@ public class PostDownloadHandler implements Runnable {
         if (errors.size() == 1) {
             final Object error = errors.iterator().next();
             if (!GraphicsEnvironment.isHeadless()) {
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (error instanceof Exception) {
-                            ExceptionDialogUtil.explainException((Exception) error);
-                        } else if (tr("No data found in this area.").equals(error)) {
-                            new Notification(error.toString()).setIcon(JOptionPane.WARNING_MESSAGE).show();
-                        } else {
-                            JOptionPane.showMessageDialog(
-                                    Main.parent,
-                                    error.toString(),
-                                    tr("Error during download"),
-                                    JOptionPane.ERROR_MESSAGE);
-                        }
+                SwingUtilities.invokeLater(() -> {
+                    if (error instanceof Exception) {
+                        ExceptionDialogUtil.explainException((Exception) error);
+                    } else if (tr("No data found in this area.").equals(error)) {
+                        new Notification(error.toString()).setIcon(JOptionPane.WARNING_MESSAGE).show();
+                    } else {
+                        JOptionPane.showMessageDialog(
+                                Main.parent,
+                                error.toString(),
+                                tr("Error during download"),
+                                JOptionPane.ERROR_MESSAGE);
                     }
                 });
             }
@@ -90,16 +87,11 @@ public class PostDownloadHandler implements Runnable {
             }
 
             if (!GraphicsEnvironment.isHeadless()) {
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        JOptionPane.showMessageDialog(
-                                Main.parent,
-                                "<html>"+Utils.joinAsHtmlUnorderedList(items)+"</html>",
-                                tr("Errors during download"),
-                                JOptionPane.ERROR_MESSAGE);
-                    }
-                });
+                SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(
+                        Main.parent,
+                        "<html>"+Utils.joinAsHtmlUnorderedList(items)+"</html>",
+                        tr("Errors during download"),
+                        JOptionPane.ERROR_MESSAGE));
             }
             return;
         }
diff --git a/src/org/openstreetmap/josm/actions/downloadtasks/package-info.java b/src/org/openstreetmap/josm/actions/downloadtasks/package-info.java
new file mode 100644
index 0000000..68a8c6f
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/downloadtasks/package-info.java
@@ -0,0 +1,7 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM {@link org.openstreetmap.josm.actions.downloadtasks.DownloadTask download tasks} .
+ * They are used to download geographic data (OSM data, GPX tracks, etc.) for a given URL or geographic area.
+ */
+package org.openstreetmap.josm.actions.downloadtasks;
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
index 05d267e..cabef66 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
@@ -361,9 +361,9 @@ public class DeleteAction extends MapMode implements ModifierListener {
 
         DeleteParameters result = new DeleteParameters();
 
-        result.nearestNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive.isSelectablePredicate);
+        result.nearestNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
         if (result.nearestNode == null) {
-            result.nearestSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive.isSelectablePredicate);
+            result.nearestSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
             if (result.nearestSegment != null) {
                 if (shift) {
                     result.mode = DeleteMode.segment;
diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
index d766412..6ac7873 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
@@ -398,7 +398,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
         Collection<OsmPrimitive> selection = new ArrayList<>(ds.getSelected());
 
         boolean newNode = false;
-        Node n = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive.isSelectablePredicate);
+        Node n = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         if (ctrl) {
             Iterator<Way> it = ds.getSelectedWays().iterator();
             if (it.hasNext()) {
@@ -468,7 +468,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
             if (!ctrl) {
                 // Insert the node into all the nearby way segments
                 List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
-                        Main.map.mapView.getPoint(n), OsmPrimitive.isSelectablePredicate);
+                        Main.map.mapView.getPoint(n), OsmPrimitive::isSelectable);
                 if (snapHelper.isActive()) {
                     tryToMoveNodeOnIntersection(wss, n);
                 }
@@ -691,9 +691,9 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
         if (selectedWay != null) {
             int posn0 = selectedWay.getNodes().indexOf(currentNode);
             // CHECKSTYLE.OFF: SingleSpaceSeparator
-            if (posn0 != -1 && // n0 is part of way
-               (posn0 >= 1                             && targetNode.equals(selectedWay.getNode(posn0-1))) || // previous node
-               (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) {  // next node
+            if ((posn0 != -1 && // n0 is part of way
+                (posn0 >= 1                            && targetNode.equals(selectedWay.getNode(posn0-1)))) || // previous node
+                (posn0 < selectedWay.getNodesCount()-1 && targetNode.equals(selectedWay.getNode(posn0+1)))) {  // next node
                 getLayerManager().getEditDataSet().setSelected(targetNode);
                 lastUsedNode = targetNode;
                 return true;
@@ -760,7 +760,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
      * This method is used to detect segment under mouse and use it as reference for angle snapping
      */
     private void tryToSetBaseSegmentForAngleSnap() {
-        WaySegment seg = Main.map.mapView.getNearestWaySegment(mousePos, OsmPrimitive.isSelectablePredicate);
+        WaySegment seg = Main.map.mapView.getNearestWaySegment(mousePos, OsmPrimitive::isSelectable);
         if (seg != null) {
             snapHelper.setBaseSegment(seg);
         }
@@ -789,13 +789,13 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
         showStatusInfo(-1, -1, -1, snapHelper.isSnapOn());
 
         if (!ctrl && mousePos != null) {
-            currentMouseNode = mv.getNearestNode(mousePos, OsmPrimitive.isSelectablePredicate);
+            currentMouseNode = mv.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         }
 
         // We need this for highlighting and we'll only do so if we actually want to re-use
         // *and* there is no node nearby (because nodes beat ways when re-using)
         if (!ctrl && currentMouseNode == null) {
-            List<WaySegment> wss = mv.getNearestWaySegments(mousePos, OsmPrimitive.isSelectablePredicate);
+            List<WaySegment> wss = mv.getNearestWaySegments(mousePos, OsmPrimitive::isSelectable);
             for (WaySegment ws : wss) {
                 mouseOnExistingWays.add(ws.way);
             }
@@ -1087,7 +1087,7 @@ public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
 
         // This happens when nothing is selected, but we still want to highlight the "target node"
         if (mouseOnExistingNode == null && getLayerManager().getEditDataSet().selectionEmpty() && mousePos != null) {
-            mouseOnExistingNode = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive.isSelectablePredicate);
+            mouseOnExistingNode = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable);
         }
 
         if (mouseOnExistingNode != null) {
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
index 80a8698..0dd0492 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
@@ -390,8 +390,8 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
         requestFocusInMapView();
         updateKeyModifiers(e);
 
-        selectedNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive.isSelectablePredicate);
-        selectedSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive.isSelectablePredicate);
+        selectedNode = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isSelectable);
+        selectedSegment = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
 
         // If nothing gets caught, stay in select mode
         if (selectedSegment == null && selectedNode == null) return;
@@ -569,7 +569,7 @@ public class ExtrudeAction extends MapMode implements MapViewPaintable, KeyPress
      */
     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);
+        WaySegment ws = Main.map.mapView.getNearestWaySegment(e.getPoint(), OsmPrimitive::isSelectable);
         if (ws != null) {
             Node n = new Node(Main.map.mapView.getLatLon(e.getX(), e.getY()));
             EastNorth a = ws.getFirstNode().getEastNorth();
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
index 72d4740..604dbe5 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
@@ -287,6 +287,9 @@ public class ImproveWayAccuracyAction extends MapMode implements
                 if (index != 0 && index != (nodes.size() - 1)) {
                     p1 = mv.getPoint(nodes.get(index - 1));
                     p2 = mv.getPoint(nodes.get(index + 1));
+                } else if (targetWay.isClosed()) {
+                    p1 = mv.getPoint(targetWay.getNode(1));
+                    p2 = mv.getPoint(targetWay.getNode(nodes.size() - 2));
                 }
                 // TODO: indicate what part that will be deleted? (for end nodes)
             }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
index c90e493..4873183 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyHelper.java
@@ -40,7 +40,7 @@ final class ImproveWayAccuracyHelper {
             return null;
         }
 
-        Node node = mv.getNearestNode(p, OsmPrimitive.isSelectablePredicate);
+        Node node = mv.getNearestNode(p, OsmPrimitive::isSelectable);
         Way candidate = null;
 
         if (node != null) {
@@ -56,7 +56,7 @@ final class ImproveWayAccuracyHelper {
             }
         }
 
-        return Main.map.mapView.getNearestWay(p, OsmPrimitive.isSelectablePredicate);
+        return Main.map.mapView.getNearestWay(p, OsmPrimitive::isSelectable);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
index 6b68712..a5d6a53 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
@@ -320,7 +320,7 @@ public class ParallelWayAction extends MapMode implements ModifierListener, MapV
 
         if (!mouseHasBeenDragged) {
             // use point from press or click event? (or are these always the same)
-            Way nearestWay = mv.getNearestWay(e.getPoint(), OsmPrimitive.isSelectablePredicate);
+            Way nearestWay = mv.getNearestWay(e.getPoint(), OsmPrimitive::isSelectable);
             if (nearestWay == null) {
                 if (matchesCurrentModifiers(setSelectedModifierCombo)) {
                     clearSourceWays();
@@ -521,7 +521,7 @@ public class ParallelWayAction extends MapMode implements ModifierListener, MapV
 
     // TODO: rename
     private boolean initParallelWays(Point p, boolean copyTags) {
-        referenceSegment = mv.getNearestWaySegment(p, Way.isUsablePredicate, true);
+        referenceSegment = mv.getNearestWaySegment(p, OsmPrimitive::isUsable, true);
         if (referenceSegment == null)
             return false;
 
diff --git a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
index 5cc3e6d..7d2bcb4 100644
--- a/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
+++ b/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
@@ -8,8 +8,6 @@ import static org.openstreetmap.josm.tools.I18n.trn;
 import java.awt.Cursor;
 import java.awt.Point;
 import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 import java.awt.geom.Point2D;
@@ -446,12 +444,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
             selectPrims(asColl(toSelect), false, false);
             useLastMoveCommandIfPossible();
             // Schedule a timer to update status line "initialMoveDelay+1" ms in the future
-            GuiHelper.scheduleTimer(initialMoveDelay+1, new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent evt) {
-                    updateStatusLine();
-                }
-            }, false);
+            GuiHelper.scheduleTimer(initialMoveDelay+1, evt -> updateStatusLine(), false);
             break;
         case SELECT:
         default:
@@ -615,12 +608,7 @@ public class SelectAction extends MapMode implements ModifierListener, KeyPressR
                     if (e.getClickCount() >= 2 && c.size() == 1 && c.iterator().next() instanceof Node) {
                         // We need to do it like this as otherwise drawAction will see a double
                         // click and switch back to SelectMode
-                        Main.worker.execute(new Runnable() {
-                            @Override
-                            public void run() {
-                                Main.map.selectDrawTool(true);
-                            }
-                        });
+                        Main.worker.execute(() -> Main.map.selectDrawTool(true));
                         return;
                     }
                 }
diff --git a/src/org/openstreetmap/josm/actions/mapmode/package-info.java b/src/org/openstreetmap/josm/actions/mapmode/package-info.java
new file mode 100644
index 0000000..feb6b57
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/mapmode/package-info.java
@@ -0,0 +1,7 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM {@link org.openstreetmap.josm.actions.mapmode.MapMode map modes}.
+ * Map modes are different ways to edit the map (select, draw, etc.).
+ */
+package org.openstreetmap.josm.actions.mapmode;
diff --git a/src/org/openstreetmap/josm/actions/package-info.java b/src/org/openstreetmap/josm/actions/package-info.java
index 6970a7a..2ae7f7a 100644
--- a/src/org/openstreetmap/josm/actions/package-info.java
+++ b/src/org/openstreetmap/josm/actions/package-info.java
@@ -2,6 +2,6 @@
 
 /**
  * Provides the classes for JOSM user actions.
- * All of them inherit from {@code JosmAction}.
+ * All of them inherit from {@link org.openstreetmap.josm.actions.JosmAction JosmAction}.
  */
 package org.openstreetmap.josm.actions;
diff --git a/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java b/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java
index 7902d64..a1c9c32 100644
--- a/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java
@@ -26,7 +26,7 @@ public abstract class AbstractRelationAction extends AbstractAction implements O
         } else {
             // Diamond operator does not work with Java 9 here
             return new SubclassFilteredCollection<OsmPrimitive, Relation>(
-                    primitives, OsmPrimitive.relationPredicate);
+                    primitives, Relation.class::isInstance);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java b/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
index aa5280f..ba82307 100644
--- a/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
+++ b/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
@@ -62,11 +62,6 @@ public class AddSelectionToRelations extends AbstractRelationAction implements S
 
     @Override
     public void selectionChanged(final Collection<? extends OsmPrimitive> newSelection) {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                setEnabled(newSelection != null && !newSelection.isEmpty());
-            }
-        });
+        GuiHelper.runInEDT(() -> setEnabled(newSelection != null && !newSelection.isEmpty()));
     }
 }
diff --git a/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java b/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
index 8ffcb56..e14c151 100644
--- a/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
@@ -9,12 +9,10 @@ import java.util.Collection;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * The action for downloading members of relations
@@ -41,12 +39,7 @@ public class DownloadMembersAction extends AbstractRelationAction {
     @Override
     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
         // selected non-new relations
-        this.relations = Utils.filter(getRelations(primitives), new Predicate<Relation>() {
-            @Override
-            public boolean evaluate(Relation r) {
-                return !r.isNew();
-            }
-        });
+        this.relations = SubclassFilteredCollection.filter(getRelations(primitives), r -> !r.isNew());
         updateEnabledState();
     }
 
diff --git a/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java b/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
index 716ce6d..11699d3 100644
--- a/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
+++ b/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
@@ -14,8 +14,7 @@ import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Action for downloading incomplete members of selected relations
@@ -42,12 +41,7 @@ public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAct
     public static Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) {
         Set<OsmPrimitive> ret = new HashSet<>();
         for (Relation r : rels) {
-            ret.addAll(Utils.filter(r.getIncompleteMembers(), new Predicate<OsmPrimitive>() {
-                @Override
-                public boolean evaluate(OsmPrimitive osm) {
-                    return !osm.isNew();
-                }
-            }));
+            ret.addAll(SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew()));
         }
         return ret;
     }
@@ -64,12 +58,7 @@ public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAct
     @Override
     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
         // selected relations with incomplete members
-        this.relations = Utils.filter(getRelations(primitives), new Predicate<Relation>() {
-            @Override
-            public boolean evaluate(Relation r) {
-                return r.hasIncompleteMembers();
-            }
-        });
+        this.relations = SubclassFilteredCollection.filter(getRelations(primitives), Relation::hasIncompleteMembers);
         this.incompleteMembers = buildSetOfIncompleteMembers(relations);
         updateEnabledState();
     }
diff --git a/src/org/openstreetmap/josm/actions/relation/package-info.java b/src/org/openstreetmap/josm/actions/relation/package-info.java
new file mode 100644
index 0000000..c403a5a
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/relation/package-info.java
@@ -0,0 +1,7 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM actions that work with {@link org.openstreetmap.josm.data.osm.Relation relations}.
+ * @see org.openstreetmap.josm.actions.relation.AbstractRelationAction
+ */
+package org.openstreetmap.josm.actions.relation;
diff --git a/src/org/openstreetmap/josm/actions/search/SearchAction.java b/src/org/openstreetmap/josm/actions/search/SearchAction.java
index 9ac3515..4407a0e 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchAction.java
+++ b/src/org/openstreetmap/josm/actions/search/SearchAction.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import javax.swing.ButtonGroup;
 import javax.swing.JCheckBox;
@@ -53,7 +54,6 @@ import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -554,7 +554,9 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
      * Interfaces implementing this may receive the result of the current search.
      * @author Michael Zangl
      * @since 10457
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     interface SearchReceiver {
         /**
          * Receive the search result
@@ -622,7 +624,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
         private final Predicate<OsmPrimitive> predicate;
         private boolean canceled;
         private int foundMatches;
-        private SearchReceiver resultReceiver;
+        private final SearchReceiver resultReceiver;
 
         private SearchTask(DataSet ds, SearchSetting setting, Collection<OsmPrimitive> selection, Predicate<OsmPrimitive> predicate,
                 SearchReceiver resultReceiver) {
@@ -648,12 +650,7 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
          */
         private static SearchTask newSearchTask(SearchSetting setting, final DataSet ds, SearchReceiver resultReceiver) {
             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);
-                }
-            }, resultReceiver);
+            return new SearchTask(ds, setting, selection, ds::isSelected, resultReceiver);
         }
 
         @Override
@@ -675,9 +672,9 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
 
                 Collection<OsmPrimitive> all;
                 if (setting.allElements) {
-                    all = Main.getLayerManager().getEditDataSet().allPrimitives();
+                    all = ds.allPrimitives();
                 } else {
-                    all = Main.getLayerManager().getEditDataSet().allNonDeletedCompletePrimitives();
+                    all = ds.getPrimitives(OsmPrimitive::isSelectable);
                 }
                 final ProgressMonitor subMonitor = getProgressMonitor().createSubTaskMonitor(all.size(), false);
                 subMonitor.beginTask(trn("Searching in {0} object", "Searching in {0} objects", all.size(), all.size()));
@@ -691,13 +688,13 @@ public class SearchAction extends JosmAction implements ParameterizedAction {
                             selection.add(osm);
                             ++foundMatches;
                         }
-                    } else if (setting.mode == SearchMode.add && !predicate.evaluate(osm) && matcher.match(osm)) {
+                    } else if (setting.mode == SearchMode.add && !predicate.test(osm) && matcher.match(osm)) {
                         selection.add(osm);
                         ++foundMatches;
-                    } else if (setting.mode == SearchMode.remove && predicate.evaluate(osm) && matcher.match(osm)) {
+                    } else if (setting.mode == SearchMode.remove && predicate.test(osm) && matcher.match(osm)) {
                         selection.remove(osm);
                         ++foundMatches;
-                    } else if (setting.mode == SearchMode.in_selection && predicate.evaluate(osm) && !matcher.match(osm)) {
+                    } else if (setting.mode == SearchMode.in_selection && predicate.test(osm) && !matcher.match(osm)) {
                         selection.remove(osm);
                         --foundMatches;
                     }
diff --git a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java b/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
index 12e1f3d..84f13e8 100644
--- a/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
+++ b/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
@@ -14,6 +14,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
@@ -37,7 +38,6 @@ 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.UncheckedParseException;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
@@ -96,15 +96,18 @@ public class SearchCompiler {
      */
     public static void addMatchFactory(MatchFactory factory) {
         for (String keyword : factory.getKeywords()) {
-            // TODO: check for keyword collisions
+            final MatchFactory existing;
             if (factory instanceof SimpleMatchFactory) {
-                simpleMatchFactoryMap.put(keyword, (SimpleMatchFactory) factory);
+                existing = simpleMatchFactoryMap.put(keyword, (SimpleMatchFactory) factory);
             } else if (factory instanceof UnaryMatchFactory) {
-                unaryMatchFactoryMap.put(keyword, (UnaryMatchFactory) factory);
+                existing = unaryMatchFactoryMap.put(keyword, (UnaryMatchFactory) factory);
             } else if (factory instanceof BinaryMatchFactory) {
-                binaryMatchFactoryMap.put(keyword, (BinaryMatchFactory) factory);
+                existing = binaryMatchFactoryMap.put(keyword, (BinaryMatchFactory) factory);
             } else
                 throw new AssertionError("Unknown match factory");
+            if (existing != null) {
+                Main.warn("SearchCompiler: for key ''{0}'', overriding match factory ''{1}'' with ''{2}''", keyword, existing, factory);
+            }
         }
     }
 
@@ -229,7 +232,9 @@ public class SearchCompiler {
 
     /**
      * Classes implementing this interface can provide Match operators.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     private interface MatchFactory {
         Collection<String> getKeywords();
     }
@@ -268,34 +273,8 @@ public class SearchCompiler {
             return false;
         }
 
-        /**
-         * 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) {
-                if (match(p))
-                    return true;
-            }
-            return false;
-        }
-
-        /**
-         * 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) {
-                if (!match(p))
-                    return false;
-            }
-            return true;
-        }
-
         @Override
-        public final boolean evaluate(OsmPrimitive object) {
+        public final boolean test(OsmPrimitive object) {
             return match(object);
         }
     }
@@ -731,9 +710,7 @@ public class SearchCompiler {
                     v = Double.valueOf(referenceValue);
                 }
             } catch (NumberFormatException ignore) {
-                if (Main.isTraceEnabled()) {
-                    Main.trace(ignore.getMessage());
-                }
+                Main.trace(ignore);
             }
             this.referenceNumber = v;
             this.compareMode = compareMode;
@@ -1472,22 +1449,15 @@ public class SearchCompiler {
             if (!osm.isUsable())
                 return false;
             else if (osm instanceof Node) {
+                LatLon coordinate = ((Node) osm).getCoor();
                 Collection<Bounds> allBounds = getBounds(osm);
-                if (allBounds != null) {
-                    LatLon coor = ((Node) osm).getCoor();
-                    for (Bounds bounds: allBounds) {
-                        if (bounds.contains(coor)) {
-                            return true;
-                        }
-                    }
-                }
-                return false;
+                return allBounds != null && allBounds.stream().anyMatch(bounds -> bounds.contains(coordinate));
             } else if (osm instanceof Way) {
                 Collection<Node> nodes = ((Way) osm).getNodes();
-                return all ? forallMatch(nodes) : existsMatch(nodes);
+                return all ? nodes.stream().allMatch(this) : nodes.stream().anyMatch(this);
             } else if (osm instanceof Relation) {
-                Collection<OsmPrimitive> primitives = ((Relation) osm).getMemberPrimitives();
-                return all ? forallMatch(primitives) : existsMatch(primitives);
+                Collection<OsmPrimitive> primitives = ((Relation) osm).getMemberPrimitivesList();
+                return all ? primitives.stream().allMatch(this) : primitives.stream().anyMatch(this);
             } else
                 return false;
         }
diff --git a/src/org/openstreetmap/josm/actions/search/package-info.java b/src/org/openstreetmap/josm/actions/search/package-info.java
new file mode 100644
index 0000000..e383292
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/search/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM {@link org.openstreetmap.josm.actions.search.SearchAction search action}.
+ */
+package org.openstreetmap.josm.actions.search;
diff --git a/src/org/openstreetmap/josm/actions/upload/FixDataHook.java b/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
index 8367ce5..d2ce49d 100644
--- a/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
@@ -45,21 +45,20 @@ public class FixDataHook implements UploadHook {
         deprecated.add(new FixDataTag("oneway",  "1",     "oneway",  "yes"));
         deprecated.add(new FixDataTag("highway", "stile", "barrier", "stile"));
         // CHECKSTYLE.ON: SingleSpaceSeparator
-        deprecated.add(new FixData() {
-            @Override
-            public boolean fixKeys(Map<String, String> keys, OsmPrimitive osm) {
-                if (osm instanceof Relation && "multipolygon".equals(keys.get("type")) && "administrative".equals(keys.get("boundary"))) {
-                    keys.put("type", "boundary");
-                    return true;
-                }
-                return false;
+        deprecated.add((keys, osm) -> {
+            if (osm instanceof Relation && "multipolygon".equals(keys.get("type")) && "administrative".equals(keys.get("boundary"))) {
+                keys.put("type", "boundary");
+                return true;
             }
+            return false;
         });
     }
 
     /**
      * Common set of commands for data fixing
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface FixData {
         /**
          * Checks if data needs to be fixed and change keys
diff --git a/src/org/openstreetmap/josm/actions/upload/UploadHook.java b/src/org/openstreetmap/josm/actions/upload/UploadHook.java
index d524446..11301d7 100644
--- a/src/org/openstreetmap/josm/actions/upload/UploadHook.java
+++ b/src/org/openstreetmap/josm/actions/upload/UploadHook.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.actions.upload;
 
 import org.openstreetmap.josm.data.APIDataSet;
 
+ at FunctionalInterface
 public interface UploadHook {
 
     /**
diff --git a/src/org/openstreetmap/josm/actions/upload/package-info.java b/src/org/openstreetmap/josm/actions/upload/package-info.java
new file mode 100644
index 0000000..09e8922
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/upload/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM {@link org.openstreetmap.josm.actions.UploadAction upload action}.
+ */
+package org.openstreetmap.josm.actions.upload;
diff --git a/src/org/openstreetmap/josm/command/ChangeNodesCommand.java b/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
index 147e75e..ca60540 100644
--- a/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
@@ -37,6 +37,9 @@ public class ChangeNodesCommand extends Command {
     public ChangeNodesCommand(Way way, List<Node> newNodes) {
         this.way = way;
         this.newNodes = newNodes;
+        if (newNodes.isEmpty()) {
+            throw new IllegalArgumentException("Cannot set nodes to be an empty list.");
+        }
     }
 
     @Override
@@ -54,7 +57,7 @@ public class ChangeNodesCommand extends Command {
 
     @Override
     public String getDescriptionText() {
-        return tr("Changed nodes of {0}", way.getDisplayName(DefaultNameFormatter.getInstance()));
+        return tr("Change nodes of {0}", way.getDisplayName(DefaultNameFormatter.getInstance()));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/command/ChangePropertyCommand.java b/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
index eb4fc87..d23f1d0 100644
--- a/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
@@ -155,7 +155,7 @@ public class ChangePropertyCommand extends Command {
             OsmPrimitive primitive = objects.get(0);
             String msg;
             Map.Entry<String, String> entry = tags.entrySet().iterator().next();
-            if (entry.getValue() == null) {
+            if (entry.getValue() == null || entry.getValue().isEmpty()) {
                 switch(OsmPrimitiveType.from(primitive)) {
                 case NODE: msg = marktr("Remove \"{0}\" for node ''{1}''"); break;
                 case WAY: msg = marktr("Remove \"{0}\" for way ''{1}''"); break;
@@ -174,7 +174,7 @@ public class ChangePropertyCommand extends Command {
             }
         } else if (objects.size() > 1 && tags.size() == 1) {
             Map.Entry<String, String> entry = tags.entrySet().iterator().next();
-            if (entry.getValue() == null) {
+            if (entry.getValue() == null || entry.getValue().isEmpty()) {
                 /* I18n: plural form for objects, but value < 2 not possible! */
                 text = trn("Remove \"{0}\" for {1} object", "Remove \"{0}\" for {1} objects", objects.size(), entry.getKey(), objects.size());
             } else {
@@ -185,7 +185,7 @@ public class ChangePropertyCommand extends Command {
         } else {
             boolean allnull = true;
             for (Map.Entry<String, String> tag : this.tags.entrySet()) {
-                if (tag.getValue() != null) {
+                if (tag.getValue() != null && !tag.getValue().isEmpty()) {
                     allnull = false;
                     break;
                 }
@@ -225,7 +225,6 @@ public class ChangePropertyCommand extends Command {
                 @Override public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
                     return Collections.singleton(osm);
                 }
-
             });
         }
         return children;
diff --git a/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java b/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
index 735350b..f883d76 100644
--- a/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
@@ -65,7 +65,7 @@ public class ChangePropertyKeyCommand extends Command {
         if (!super.executeCommand())
             return false; // save old
         for (OsmPrimitive osm : objects) {
-            if (osm.hasKeys()) {
+            if (osm.hasKey(key) || osm.hasKey(newKey)) {
                 osm.setModified(true);
                 String oldValue = osm.get(key);
                 osm.put(newKey, oldValue);
@@ -86,9 +86,9 @@ public class ChangePropertyKeyCommand extends Command {
         if (objects.size() == 1) {
             NameVisitor v = new NameVisitor();
             objects.get(0).accept(v);
-            text += ' '+tr(v.className)+' '+v.name;
+            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;
     }
@@ -107,15 +107,17 @@ public class ChangePropertyKeyCommand extends Command {
         final NameVisitor v = new NameVisitor();
         for (final OsmPrimitive osm : objects) {
             osm.accept(v);
+            final String name = v.name;
+            final Icon icon = v.icon;
             children.add(new PseudoCommand() {
                 @Override
                 public String getDescriptionText() {
-                    return v.name;
+                    return name;
                 }
 
                 @Override
                 public Icon getDescriptionIcon() {
-                    return v.icon;
+                    return icon;
                 }
 
                 @Override
diff --git a/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java b/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
index c57e468..48c5237 100644
--- a/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
+++ b/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
@@ -48,7 +48,7 @@ public class ChangeRelationMemberRoleCommand extends Command {
     @Override
     public boolean executeCommand() {
         if (position < 0 || position >= relation.getMembersCount())
-            return false;
+            return true;
 
         oldRole = relation.getMember(position).getRole();
         if (newRole.equals(oldRole)) return true;
@@ -61,9 +61,11 @@ public class ChangeRelationMemberRoleCommand extends Command {
 
     @Override
     public void undoCommand() {
-        relation.setMember(position, new RelationMember(oldRole, relation.getMember(position).getMember()));
-        if (oldModified != null) {
-            relation.setModified(oldModified);
+        if (position >= 0 && position < relation.getMembersCount()) {
+            relation.setMember(position, new RelationMember(oldRole, relation.getMember(position).getMember()));
+            if (oldModified != null) {
+                relation.setModified(oldModified);
+            }
         }
     }
 
diff --git a/src/org/openstreetmap/josm/command/Command.java b/src/org/openstreetmap/josm/command/Command.java
index 031eec2..4e7b266 100644
--- a/src/org/openstreetmap/josm/command/Command.java
+++ b/src/org/openstreetmap/josm/command/Command.java
@@ -36,8 +36,10 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
  * The command remembers the {@link OsmDataLayer} it is operating on.
  *
  * @author imi
+ * @since 21 (creation)
+ * @since 10599 (signature)
  */
-public abstract class Command extends PseudoCommand {
+public abstract class Command implements PseudoCommand {
 
     private static final class CloneVisitor extends AbstractVisitor {
         public final Map<OsmPrimitive, PrimitiveData> orig = new LinkedHashMap<>();
@@ -185,12 +187,10 @@ public abstract class Command extends PseudoCommand {
      * any buffer if it is not longer applicable to the dataset (e.g. it was part of
      * the removed layer)
      *
-     * @param oldLayer the old layer
-     * @return true if this command
+     * @param oldLayer the old layer that was removed
+     * @return true if this command is invalid after that layer is removed.
      */
     public boolean invalidBecauselayerRemoved(Layer oldLayer) {
-        if (!(oldLayer instanceof OsmDataLayer))
-            return false;
         return layer == oldLayer;
     }
 
diff --git a/src/org/openstreetmap/josm/command/DeleteCommand.java b/src/org/openstreetmap/josm/command/DeleteCommand.java
index edf5e39..1eb5d37 100644
--- a/src/org/openstreetmap/josm/command/DeleteCommand.java
+++ b/src/org/openstreetmap/josm/command/DeleteCommand.java
@@ -50,6 +50,34 @@ import org.openstreetmap.josm.tools.Utils;
  * @since 23
  */
 public class DeleteCommand extends Command {
+    private static final class DeleteChildCommand implements PseudoCommand {
+        private final OsmPrimitive osm;
+
+        private DeleteChildCommand(OsmPrimitive osm) {
+            this.osm = osm;
+        }
+
+        @Override
+        public String getDescriptionText() {
+            return tr("Deleted ''{0}''", osm.getDisplayName(DefaultNameFormatter.getInstance()));
+        }
+
+        @Override
+        public Icon getDescriptionIcon() {
+            return ImageProvider.get(osm.getDisplayType());
+        }
+
+        @Override
+        public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
+            return Collections.singleton(osm);
+        }
+
+        @Override
+        public String toString() {
+            return "DeleteChildCommand [osm=" + osm + "]";
+        }
+    }
+
     /**
      * The primitives that get deleted.
      */
@@ -64,8 +92,6 @@ public class DeleteCommand extends Command {
      */
     public DeleteCommand(Collection<? extends OsmPrimitive> data) {
         CheckParameterUtil.ensureParameterNotNull(data, "data");
-        if (data.isEmpty())
-            throw new IllegalArgumentException(tr("At least one object to delete required, got empty collection"));
         this.toDelete = data;
         checkConsistency();
     }
@@ -105,13 +131,14 @@ public class DeleteCommand extends Command {
     public DeleteCommand(OsmDataLayer layer, Collection<? extends OsmPrimitive> data) {
         super(layer);
         CheckParameterUtil.ensureParameterNotNull(data, "data");
-        if (data.isEmpty())
-            throw new IllegalArgumentException(tr("At least one object to delete required, got empty collection"));
         this.toDelete = data;
         checkConsistency();
     }
 
     private void checkConsistency() {
+        if (toDelete.isEmpty()) {
+            throw new IllegalArgumentException(tr("At least one object to delete required, got empty collection"));
+        }
         for (OsmPrimitive p : toDelete) {
             if (p == null) {
                 throw new IllegalArgumentException("Primitive to delete must not be null");
@@ -215,21 +242,7 @@ public class DeleteCommand extends Command {
         else {
             List<PseudoCommand> children = new ArrayList<>(toDelete.size());
             for (final OsmPrimitive osm : toDelete) {
-                children.add(new PseudoCommand() {
-
-                    @Override public String getDescriptionText() {
-                        return tr("Deleted ''{0}''", osm.getDisplayName(DefaultNameFormatter.getInstance()));
-                    }
-
-                    @Override public Icon getDescriptionIcon() {
-                        return ImageProvider.get(osm.getDisplayType());
-                    }
-
-                    @Override public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
-                        return Collections.singleton(osm);
-                    }
-
-                });
+                children.add(new DeleteChildCommand(osm));
             }
             return children;
 
@@ -440,6 +453,12 @@ public class DeleteCommand extends Command {
         return new SequenceCommand(tr("Delete"), cmds);
     }
 
+    /**
+     * Create a command that deletes a single way segment. The way may be split by this.
+     * @param layer The layer the segment is in.
+     * @param ws The way segment that should be deleted
+     * @return A matching command to safely delete that segment.
+     */
     public static Command deleteWaySegment(OsmDataLayer layer, WaySegment ws) {
         if (ws.way.getNodesCount() < 3)
             return delete(layer, Collections.singleton(ws.way), false);
diff --git a/src/org/openstreetmap/josm/command/MoveCommand.java b/src/org/openstreetmap/josm/command/MoveCommand.java
index 65466ce..d4838b4 100644
--- a/src/org/openstreetmap/josm/command/MoveCommand.java
+++ b/src/org/openstreetmap/josm/command/MoveCommand.java
@@ -244,6 +244,14 @@ public class MoveCommand extends Command {
         return nodes;
     }
 
+    /**
+     * Gets the offset.
+     * @return The current offset.
+     */
+    protected EastNorth getOffset() {
+        return new EastNorth(x, y);
+    }
+
     @Override
     public int hashCode() {
         return Objects.hash(super.hashCode(), nodes, startEN, x, y, backupX, backupY, oldState);
diff --git a/src/org/openstreetmap/josm/command/PseudoCommand.java b/src/org/openstreetmap/josm/command/PseudoCommand.java
index ad3b821..eb71487 100644
--- a/src/org/openstreetmap/josm/command/PseudoCommand.java
+++ b/src/org/openstreetmap/josm/command/PseudoCommand.java
@@ -11,20 +11,22 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
  * PseudoCommand is a reduced form of a command. It can be presented in a tree view
  * as subcommand of real commands but it is just an empty shell and can not be
  * executed or undone.
+ * @since  3262 (creation)
+ * @since 10599 (functional interface)
  */
-public abstract class PseudoCommand {
+public interface PseudoCommand {
 
     /**
      * Provides a description text representing this command.
      * @return description text representing this command
      */
-    public abstract String getDescriptionText();
+    String getDescriptionText();
 
     /**
      * Provides a descriptive icon of this command.
      * @return descriptive icon of this command
      */
-    public Icon getDescriptionIcon() {
+    default Icon getDescriptionIcon() {
         return null;
     }
 
@@ -32,14 +34,14 @@ public abstract class PseudoCommand {
      * Return the primitives that take part in this command.
      * @return primitives that take part in this command
      */
-    public abstract Collection<? extends OsmPrimitive> getParticipatingPrimitives();
+    Collection<? extends OsmPrimitive> getParticipatingPrimitives();
 
     /**
      * Returns the subcommands of this command.
      * Override for subclasses that have child commands.
      * @return the subcommands, null if there are no child commands
      */
-    public Collection<PseudoCommand> getChildren() {
+    default Collection<PseudoCommand> getChildren() {
         return null;
     }
 }
diff --git a/src/org/openstreetmap/josm/command/RotateCommand.java b/src/org/openstreetmap/josm/command/RotateCommand.java
index c4fdc8e..2b4f17a 100644
--- a/src/org/openstreetmap/josm/command/RotateCommand.java
+++ b/src/org/openstreetmap/josm/command/RotateCommand.java
@@ -38,7 +38,7 @@ public class RotateCommand extends TransformNodesCommand {
      * @param objects objects to fetch nodes from
      * @param currentEN cuurent eats/north
      */
-    public RotateCommand(Collection<OsmPrimitive> objects, EastNorth currentEN) {
+    public RotateCommand(Collection<? extends OsmPrimitive> objects, EastNorth currentEN) {
         super(objects);
 
         pivot = getNodesCenter();
@@ -70,13 +70,21 @@ public class RotateCommand extends TransformNodesCommand {
     }
 
     /**
+     * Set the rotation angle.
+     * @param rotationAngle The rotate angle
+     */
+    protected void setRotationAngle(double rotationAngle) {
+        this.rotationAngle = rotationAngle;
+    }
+
+    /**
      * Rotate nodes.
      */
     @Override
     protected void transformNodes() {
+        double cosPhi = Math.cos(rotationAngle);
+        double sinPhi = Math.sin(rotationAngle);
         for (Node n : nodes) {
-            double cosPhi = Math.cos(rotationAngle);
-            double sinPhi = Math.sin(rotationAngle);
             EastNorth oldEastNorth = oldStates.get(n).getEastNorth();
             double x = oldEastNorth.east() - pivot.east();
             double y = oldEastNorth.north() - pivot.north();
diff --git a/src/org/openstreetmap/josm/command/ScaleCommand.java b/src/org/openstreetmap/josm/command/ScaleCommand.java
index 2c7d043..a72c46d 100644
--- a/src/org/openstreetmap/josm/command/ScaleCommand.java
+++ b/src/org/openstreetmap/josm/command/ScaleCommand.java
@@ -34,7 +34,7 @@ public class ScaleCommand extends TransformNodesCommand {
      * @param objects objects to fetch nodes from
      * @param currentEN cuurent eats/north
      */
-    public ScaleCommand(Collection<OsmPrimitive> objects, EastNorth currentEN) {
+    public ScaleCommand(Collection<? extends OsmPrimitive> objects, EastNorth currentEN) {
         super(objects);
 
         pivot = getNodesCenter();
@@ -57,11 +57,19 @@ public class ScaleCommand extends TransformNodesCommand {
         double endAngle = Math.atan2(currentEN.east()-pivot.east(), currentEN.north()-pivot.north());
         double startDistance = pivot.distance(startEN);
         double currentDistance = pivot.distance(currentEN);
-        scalingFactor = Math.cos(startAngle-endAngle) * currentDistance / startDistance;
+        setScalingFactor(Math.cos(startAngle-endAngle) * currentDistance / startDistance);
         transformNodes();
     }
 
     /**
+     * Set the scaling factor
+     * @param scalingFactor The scaling factor.
+     */
+    protected void setScalingFactor(double scalingFactor) {
+        this.scalingFactor = scalingFactor;
+    }
+
+    /**
      * Scale nodes.
      */
     @Override
diff --git a/src/org/openstreetmap/josm/command/SelectCommand.java b/src/org/openstreetmap/josm/command/SelectCommand.java
index d893d18..7d84315 100644
--- a/src/org/openstreetmap/josm/command/SelectCommand.java
+++ b/src/org/openstreetmap/josm/command/SelectCommand.java
@@ -4,6 +4,8 @@ package org.openstreetmap.josm.command;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Objects;
 
 import org.openstreetmap.josm.Main;
@@ -27,7 +29,11 @@ public class SelectCommand extends Command {
      * @param newSelection the primitives to select when executing the command.
      */
     public SelectCommand(Collection<OsmPrimitive> newSelection) {
-        this.newSelection = newSelection;
+        if (newSelection == null || newSelection.isEmpty()) {
+            this.newSelection = Collections.emptySet();
+        } else {
+            this.newSelection = new HashSet<>(newSelection);
+        }
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/command/SequenceCommand.java b/src/org/openstreetmap/josm/command/SequenceCommand.java
index eb74259..226be55 100644
--- a/src/org/openstreetmap/josm/command/SequenceCommand.java
+++ b/src/org/openstreetmap/josm/command/SequenceCommand.java
@@ -116,7 +116,7 @@ public class SequenceCommand extends Command {
         return prims;
     }
 
-    protected final void setSequence(Command[] sequence) {
+    protected final void setSequence(Command ... sequence) {
         this.sequence = Utils.copyArray(sequence);
     }
 
diff --git a/src/org/openstreetmap/josm/command/TransformNodesCommand.java b/src/org/openstreetmap/josm/command/TransformNodesCommand.java
index bade457..b27d525 100644
--- a/src/org/openstreetmap/josm/command/TransformNodesCommand.java
+++ b/src/org/openstreetmap/josm/command/TransformNodesCommand.java
@@ -48,7 +48,7 @@ public abstract class TransformNodesCommand extends Command {
      * Find out the impacted nodes and store their initial state.
      * @param objects objects to fetch nodes from
      */
-    public TransformNodesCommand(Collection<OsmPrimitive> objects) {
+    public TransformNodesCommand(Collection<? extends OsmPrimitive> objects) {
         this.nodes = AllNodesVisitor.getAllNodes(objects);
         storeOldState();
     }
diff --git a/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java b/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
index d368140..18996e0 100644
--- a/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
+++ b/src/org/openstreetmap/josm/command/conflict/TagConflictResolveCommand.java
@@ -68,8 +68,9 @@ public class TagConflictResolveCommand extends ConflictResolveCommand {
                 /* for correct i18n of plural forms - see #9110 */
                 return trn("Resolve {0} tag conflict in relation {1}", "Resolve {0} tag conflicts in relation {1}",
                         getNumDecidedConflicts(), getNumDecidedConflicts(), conflict.getMy().getId());
+            default:
+                return "";
         }
-        return "";
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java b/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
index a92f2f7..110ccb8 100644
--- a/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
+++ b/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
@@ -10,7 +10,6 @@ import java.util.Map;
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
 import org.openstreetmap.josm.data.osm.Tagged;
@@ -54,7 +53,7 @@ public final class ReverseWayNoTagCorrector {
         final TagCollection collection = new TagCollection();
         for (Map.Entry<String, String> entry : way.getKeys().entrySet()) {
             final Tag tag = new Tag(entry.getKey(), entry.getValue());
-            final boolean isDirectional = directionalTags.contains(tag) || OsmPrimitive.directionalKeyPredicate.evaluate(tag);
+            final boolean isDirectional = directionalTags.contains(tag) || tag.isDirectionKey();
             if (isDirectional) {
                 final boolean cannotBeCorrected = ReverseWayTagCorrector.getTagCorrections(tag).isEmpty();
                 if (cannotBeCorrected) {
@@ -75,7 +74,7 @@ public final class ReverseWayNoTagCorrector {
         return getDirectionalTags(way).isEmpty();
     }
 
-    protected static boolean confirmReverseWay(Way way, TagCollection tags) {
+    private static boolean confirmReverseWay(Way way, TagCollection tags) {
         String msg = trn(
                 // Singular, if a single tag is impacted
                 "<html>You are going to reverse the way ''{0}'',"
diff --git a/src/org/openstreetmap/josm/corrector/package-info.java b/src/org/openstreetmap/josm/corrector/package-info.java
new file mode 100644
index 0000000..47f6fdc
--- /dev/null
+++ b/src/org/openstreetmap/josm/corrector/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM {@link org.openstreetmap.josm.corrector.TagCorrector tag correctors}.
+ */
+package org.openstreetmap.josm.corrector;
diff --git a/src/org/openstreetmap/josm/data/APIDataSet.java b/src/org/openstreetmap/josm/data/APIDataSet.java
index 8691bee..fd33018 100644
--- a/src/org/openstreetmap/josm/data/APIDataSet.java
+++ b/src/org/openstreetmap/josm/data/APIDataSet.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.data;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -72,9 +71,9 @@ public class APIDataSet {
             }
         }
         OsmPrimitiveComparator c = new OsmPrimitiveComparator(false, true);
-        Collections.sort(toDelete, c);
-        Collections.sort(toAdd, c);
-        Collections.sort(toUpdate, c);
+        toDelete.sort(c);
+        toAdd.sort(c);
+        toUpdate.sort(c);
     }
 
     /**
@@ -332,15 +331,7 @@ public class APIDataSet {
                 visit(path, relation);
             }
             List<Relation> ret = new ArrayList<>(relations);
-            Collections.sort(
-                    ret,
-                    new Comparator<Relation>() {
-                        @Override
-                        public int compare(Relation o1, Relation o2) {
-                            return Integer.compare(uploadOrder.indexOf(o1), uploadOrder.indexOf(o2));
-                        }
-                    }
-                    );
+            ret.sort(Comparator.comparingInt(uploadOrder::indexOf));
             return ret;
         }
     }
diff --git a/src/org/openstreetmap/josm/data/AutosaveTask.java b/src/org/openstreetmap/josm/data/AutosaveTask.java
index a72f525..b0e094d 100644
--- a/src/org/openstreetmap/josm/data/AutosaveTask.java
+++ b/src/org/openstreetmap/josm/data/AutosaveTask.java
@@ -231,7 +231,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
                 }
                 changedDatasets.clear();
                 if (PROP_NOTIFICATION.get() && !layersInfo.isEmpty()) {
-                    displayNotification();
+                    GuiHelper.runInEDT(this::displayNotification);
                 }
             } catch (RuntimeException t) {
                 // Don't let exception stop time thread
@@ -242,14 +242,9 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
     }
 
     protected void displayNotification() {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                new Notification(tr("Your work has been saved automatically."))
-                .setDuration(Notification.TIME_SHORT)
-                .show();
-            }
-        });
+        new Notification(tr("Your work has been saved automatically."))
+        .setDuration(Notification.TIME_SHORT)
+        .show();
     }
 
     @Override
@@ -345,12 +340,7 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
     private static boolean jvmPerfDataFileExists(final String jvmId) {
         File jvmDir = new File(System.getProperty("java.io.tmpdir") + File.separator + "hsperfdata_" + System.getProperty("user.name"));
         if (jvmDir.exists() && jvmDir.canRead()) {
-            File[] files = jvmDir.listFiles(new FileFilter() {
-                @Override
-                public boolean accept(File file) {
-                    return file.getName().equals(jvmId) && file.isFile();
-                }
-            });
+            File[] files = jvmDir.listFiles((FileFilter) file -> file.getName().equals(jvmId) && file.isFile());
             return files != null && files.length == 1;
         }
         return false;
@@ -364,18 +354,15 @@ public class AutosaveTask extends TimerTask implements LayerChangeListener, List
         List<File> files = getUnsavedLayersFiles();
         final OpenFileTask openFileTsk = new OpenFileTask(files, null, tr("Restoring files"));
         final Future<?> openFilesFuture = Main.worker.submit(openFileTsk);
-        return Main.worker.submit(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    // Wait for opened tasks to be generated.
-                    openFilesFuture.get();
-                    for (File f: openFileTsk.getSuccessfullyOpenedFiles()) {
-                        moveToDeletedLayersFolder(f);
-                    }
-                } catch (InterruptedException | ExecutionException e) {
-                    Main.error(e);
+        return Main.worker.submit(() -> {
+            try {
+                // Wait for opened tasks to be generated.
+                openFilesFuture.get();
+                for (File f: openFileTsk.getSuccessfullyOpenedFiles()) {
+                    moveToDeletedLayersFolder(f);
                 }
+            } catch (InterruptedException | ExecutionException e) {
+                Main.error(e);
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/data/Bounds.java b/src/org/openstreetmap/josm/data/Bounds.java
index 67dd1aa..067a9c3 100644
--- a/src/org/openstreetmap/josm/data/Bounds.java
+++ b/src/org/openstreetmap/josm/data/Bounds.java
@@ -149,7 +149,7 @@ public class Bounds {
         }
     }
 
-    public Bounds(double[] coords) {
+    public Bounds(double ... coords) {
         this(coords, true);
     }
 
diff --git a/src/org/openstreetmap/josm/data/CustomConfigurator.java b/src/org/openstreetmap/josm/data/CustomConfigurator.java
index 1b6321a..d015b8c 100644
--- a/src/org/openstreetmap/josm/data/CustomConfigurator.java
+++ b/src/org/openstreetmap/josm/data/CustomConfigurator.java
@@ -371,52 +371,46 @@ public final class CustomConfigurator {
         }
 
         final ReadLocalPluginInformationTask task = new ReadLocalPluginInformationTask();
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                if (task.isCanceled()) return;
-                synchronized (CustomConfigurator.class) {
-                    try { // proceed only after all other tasks were finished
-                        while (busy) CustomConfigurator.class.wait();
-                    } catch (InterruptedException ex) {
-                        Main.warn("InterruptedException while reading local plugin information");
-                    }
+        Runnable r = () -> {
+            if (task.isCanceled()) return;
+            synchronized (CustomConfigurator.class) {
+                try { // proceed only after all other tasks were finished
+                    while (busy) CustomConfigurator.class.wait();
+                } catch (InterruptedException ex) {
+                    Main.warn(ex, "InterruptedException while reading local plugin information");
+                }
 
-                    SwingUtilities.invokeLater(new Runnable() {
-                        @Override
-                        public void run() {
-                            List<PluginInformation> availablePlugins = task.getAvailablePlugins();
-                            List<PluginInformation> toInstallPlugins = new ArrayList<>();
-                            List<PluginInformation> toRemovePlugins = new ArrayList<>();
-                            List<PluginInformation> toDeletePlugins = new ArrayList<>();
-                            for (PluginInformation pi: availablePlugins) {
-                                String name = pi.name.toLowerCase(Locale.ENGLISH);
-                                if (installList.contains(name)) toInstallPlugins.add(pi);
-                                if (removeList.contains(name)) toRemovePlugins.add(pi);
-                                if (deleteList.contains(name)) toDeletePlugins.add(pi);
-                            }
-                            if (!installList.isEmpty()) {
-                                PluginDownloadTask pluginDownloadTask =
-                                        new PluginDownloadTask(Main.parent, toInstallPlugins, tr("Installing plugins"));
-                                Main.worker.submit(pluginDownloadTask);
-                            }
-                            Collection<String> pls = new ArrayList<>(Main.pref.getCollection("plugins"));
-                            for (PluginInformation pi: toInstallPlugins) {
-                                if (!pls.contains(pi.name)) {
-                                    pls.add(pi.name);
-                                }
-                            }
-                            for (PluginInformation pi: toRemovePlugins) {
-                                pls.remove(pi.name);
-                            }
-                            for (PluginInformation pi: toDeletePlugins) {
-                                pls.remove(pi.name);
-                                new File(Main.pref.getPluginsDirectory(), pi.name+".jar").deleteOnExit();
-                            }
-                            Main.pref.putCollection("plugins", pls);
+                SwingUtilities.invokeLater(() -> {
+                    List<PluginInformation> availablePlugins = task.getAvailablePlugins();
+                    List<PluginInformation> toInstallPlugins = new ArrayList<>();
+                    List<PluginInformation> toRemovePlugins = new ArrayList<>();
+                    List<PluginInformation> toDeletePlugins = new ArrayList<>();
+                    for (PluginInformation pi1: availablePlugins) {
+                        String name = pi1.name.toLowerCase(Locale.ENGLISH);
+                        if (installList.contains(name)) toInstallPlugins.add(pi1);
+                        if (removeList.contains(name)) toRemovePlugins.add(pi1);
+                        if (deleteList.contains(name)) toDeletePlugins.add(pi1);
+                    }
+                    if (!installList.isEmpty()) {
+                        PluginDownloadTask pluginDownloadTask =
+                                new PluginDownloadTask(Main.parent, toInstallPlugins, tr("Installing plugins"));
+                        Main.worker.submit(pluginDownloadTask);
+                    }
+                    Collection<String> pls = new ArrayList<>(Main.pref.getCollection("plugins"));
+                    for (PluginInformation pi2: toInstallPlugins) {
+                        if (!pls.contains(pi2.name)) {
+                            pls.add(pi2.name);
                         }
-                    });
-                }
+                    }
+                    for (PluginInformation pi3: toRemovePlugins) {
+                        pls.remove(pi3.name);
+                    }
+                    for (PluginInformation pi4: toDeletePlugins) {
+                        pls.remove(pi4.name);
+                        new File(Main.pref.getPluginsDirectory(), pi4.name+".jar").deleteOnExit();
+                    }
+                    Main.pref.putCollection("plugins", pls);
+                });
             }
         };
         Main.worker.submit(task);
@@ -939,9 +933,9 @@ public final class CustomConfigurator {
             return null;
         }
         if (existing != null)
-            return new ArrayList<Collection<String>>(existing.getValue());
+            return new ArrayList<>(existing.getValue());
         else
-            return defaults.getValue() == null ? null : new ArrayList<Collection<String>>(defaults.getValue());
+            return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
     }
 
     private static List<Map<String, String>> getListOfStructs(Preferences mainpref, String key, boolean warnUnknownDefault) {
diff --git a/src/org/openstreetmap/josm/data/Preferences.java b/src/org/openstreetmap/josm/data/Preferences.java
index 74c9b67..f79ba40 100644
--- a/src/org/openstreetmap/josm/data/Preferences.java
+++ b/src/org/openstreetmap/josm/data/Preferences.java
@@ -37,6 +37,7 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -68,7 +69,6 @@ import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.FilteredCollection;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -137,12 +137,8 @@ public class Preferences {
      */
     protected final SortedMap<String, Setting<?>> defaultsMap = new TreeMap<>();
 
-    private final Predicate<Entry<String, Setting<?>>> NO_DEFAULT_SETTINGS_ENTRY = new Predicate<Entry<String, Setting<?>>>() {
-        @Override
-        public boolean evaluate(Entry<String, Setting<?>> e) {
-            return !e.getValue().equals(defaultsMap.get(e.getKey()));
-        }
-    };
+    private final Predicate<Entry<String, Setting<?>>> NO_DEFAULT_SETTINGS_ENTRY =
+            e -> !e.getValue().equals(defaultsMap.get(e.getKey()));
 
     /**
      * Maps color keys to human readable color name
@@ -180,7 +176,9 @@ public class Preferences {
 
     /**
      * Listener to preference change events.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface PreferenceChangedListener {
         /**
          * Trigerred when a preference entry value changes.
@@ -794,9 +792,7 @@ public class Preferences {
             return Integer.parseInt(v);
         } catch (NumberFormatException e) {
             // fall out
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return def;
     }
@@ -812,9 +808,7 @@ public class Preferences {
             return Integer.parseInt(v);
         } catch (NumberFormatException e) {
             // fall out
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return def;
     }
@@ -828,9 +822,7 @@ public class Preferences {
             return Long.parseLong(v);
         } catch (NumberFormatException e) {
             // fall out
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return def;
     }
@@ -844,9 +836,7 @@ public class Preferences {
             return Double.parseDouble(v);
         } catch (NumberFormatException e) {
             // fall out
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return def;
     }
@@ -1335,13 +1325,6 @@ public class Preferences {
         if (getBoolean("jdk.tls.disableSNIExtension", false)) {
             Utils.updateSystemProperty("jsse.enableSNIExtension", "false");
         }
-        // Workaround to fix another Java bug - The bug seems to have been fixed in Java 8, to remove during transition
-        // 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
-        if (getBoolean("jdk.Arrays.useLegacyMergeSort", !Version.getInstance().isLocalBuild())) {
-            Utils.updateSystemProperty("java.util.Arrays.useLegacyMergeSort", "true");
-        }
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/SelectionChangedListener.java b/src/org/openstreetmap/josm/data/SelectionChangedListener.java
index ddb41a0..300ab7d 100644
--- a/src/org/openstreetmap/josm/data/SelectionChangedListener.java
+++ b/src/org/openstreetmap/josm/data/SelectionChangedListener.java
@@ -15,7 +15,10 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
  * is issued within a one message dispatch routine.
  *
  * @author imi
+ * @since     8 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface SelectionChangedListener {
 
     /**
diff --git a/src/org/openstreetmap/josm/data/SystemOfMeasurement.java b/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
index f403de6..8e763f8 100644
--- a/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
+++ b/src/org/openstreetmap/josm/data/SystemOfMeasurement.java
@@ -25,7 +25,9 @@ public class SystemOfMeasurement {
     /**
      * Interface to notify listeners of the change of the system of measurement.
      * @since 8554
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface SoMChangeListener {
         /**
          * The current SoM has changed.
diff --git a/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java b/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java
index 06fe61e..52c4538 100644
--- a/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java
+++ b/src/org/openstreetmap/josm/data/cache/BufferedImageCacheEntry.java
@@ -10,8 +10,8 @@ import javax.imageio.ImageIO;
 /**
  * Cache Entry that has methods to get the BufferedImage, that will be cached along in memory
  * but will be not serialized when saved to the disk (to avoid duplication of data)
- * @author Wiktor Niesiobędzki
  *
+ * @author Wiktor Niesiobędzki
  */
 public class BufferedImageCacheEntry extends CacheEntry {
     private static final long serialVersionUID = 1L; //version
diff --git a/src/org/openstreetmap/josm/data/cache/CacheEntry.java b/src/org/openstreetmap/josm/data/cache/CacheEntry.java
index b9360a7..47b1e00 100644
--- a/src/org/openstreetmap/josm/data/cache/CacheEntry.java
+++ b/src/org/openstreetmap/josm/data/cache/CacheEntry.java
@@ -5,10 +5,9 @@ import java.io.Serializable;
 import java.util.Arrays;
 
 /**
- * @author Wiktor Niesiobędzki
- *
  * Class that will hold JCS cache entries
  *
+ * @author Wiktor Niesiobędzki
  */
 public class CacheEntry implements Serializable {
     private static final long serialVersionUID = 1L; //version
diff --git a/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java b/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java
index 68b0119..e6cf1b1 100644
--- a/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java
+++ b/src/org/openstreetmap/josm/data/cache/HostLimitQueue.java
@@ -13,21 +13,18 @@ import java.util.concurrent.TimeUnit;
 import org.openstreetmap.josm.Main;
 
 /**
- * @author Wiktor Niesiobędzki
- *
  * Queue for ThreadPoolExecutor that implements per-host limit. It will acquire a semaphore for each task
  * and it will set a runnable task with semaphore release, when job has finished.
- *
+ * <p>
  * This implementation doesn't guarantee to have at most hostLimit connections per host[1], and it doesn't
- * guarantee that all threads will be busy, when there is work for them[2].
- *
+ * guarantee that all threads will be busy, when there is work for them[2]. <br>
  * [1] More connection per host may happen, when ThreadPoolExecutor is growing its pool, and thus
- *     tasks do not go through the Queue
+ *     tasks do not go through the Queue <br>
  * [2] If we have a queue, and for all hosts in queue we will fail to acquire semaphore, the thread
  *     take the first available job and wait for semaphore. It might be the case, that semaphore was released
  *     for some task further in queue, but this implementation doesn't try to detect such situation
  *
- *
+ * @author Wiktor Niesiobędzki
  */
 public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
     private static final long serialVersionUID = 1L;
@@ -124,12 +121,7 @@ public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
             Semaphore limit = getSemaphore(jcsJob);
             if (limit != null) {
                 limit.acquire();
-                jcsJob.setFinishedTask(new Runnable() {
-                    @Override
-                    public void run() {
-                        releaseSemaphore(jcsJob);
-                    }
-                });
+                jcsJob.setFinishedTask(() -> releaseSemaphore(jcsJob));
             }
         }
     }
@@ -140,12 +132,7 @@ public class HostLimitQueue extends LinkedBlockingDeque<Runnable> {
         if (limit != null) {
             ret = limit.tryAcquire();
             if (ret) {
-                job.setFinishedTask(new Runnable() {
-                    @Override
-                    public void run() {
-                        releaseSemaphore(job);
-                    }
-                });
+                job.setFinishedTask(() -> releaseSemaphore(job));
             }
         }
         return ret;
diff --git a/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java b/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java
index bde426b..dd065c9 100644
--- a/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java
+++ b/src/org/openstreetmap/josm/data/cache/ICachedLoaderListener.java
@@ -4,7 +4,9 @@ package org.openstreetmap.josm.data.cache;
 /**
  * Cache loader listener.
  * @since 8168
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ICachedLoaderListener {
 
     /**
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
index 46eeffa..082f3e1 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCacheManager.java
@@ -32,10 +32,10 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
- * @author Wiktor Niesiobędzki
- *
  * Wrapper class for JCS Cache. Sets some sane environment and returns instances of cache objects.
  * Static configuration for now assumes some small LRU cache in memory and larger LRU cache on disk
+ *
+ * @author Wiktor Niesiobędzki
  * @since 8168
  */
 public final class JCSCacheManager {
@@ -44,7 +44,7 @@ public final class JCSCacheManager {
     private static volatile CompositeCacheManager cacheManager;
     private static long maxObjectTTL = -1;
     private static final String PREFERENCE_PREFIX = "jcs.cache";
-    public static BooleanProperty USE_BLOCK_CACHE = new BooleanProperty(PREFERENCE_PREFIX + ".use_block_cache", true);
+    public static final BooleanProperty USE_BLOCK_CACHE = new BooleanProperty(PREFERENCE_PREFIX + ".use_block_cache", true);
 
     private static final AuxiliaryCacheFactory diskCacheFactory =
             USE_BLOCK_CACHE.get() ? new BlockDiskCacheFactory() : new IndexedDiskCacheFactory();
@@ -199,9 +199,23 @@ public final class JCSCacheManager {
 
     private static IDiskCacheAttributes getDiskCacheAttributes(int maxDiskObjects, String cachePath, String cacheName) {
         IDiskCacheAttributes ret;
+        removeStaleFiles(cachePath + File.separator + cacheName, USE_BLOCK_CACHE.get() ? "_INDEX_v2" : "_BLOCK_v2");
+        cacheName = cacheName + (USE_BLOCK_CACHE.get() ? "_BLOCK_v2" : "_INDEX_v2");
+
         if (USE_BLOCK_CACHE.get()) {
             BlockDiskCacheAttributes blockAttr = new BlockDiskCacheAttributes();
-            blockAttr.setMaxKeySize(maxDiskObjects);
+            /*
+             * BlockDiskCache never optimizes the file, so when file size is reduced, it will never be truncated to desired size.
+             *
+             * If for some mysterious reason, file size is greater than the value set in preferences, just use the whole file. If the user
+             * wants to reduce the file size, (s)he may just go to preferences and there it should be handled (by removing old file)
+             */
+            File diskCacheFile = new File(cachePath + File.separator + cacheName + ".data");
+            if (diskCacheFile.exists()) {
+                blockAttr.setMaxKeySize((int) Math.max(maxDiskObjects, diskCacheFile.length()/1024));
+            } else {
+                blockAttr.setMaxKeySize(maxDiskObjects);
+            }
             blockAttr.setBlockSizeBytes(4096); // use 4k blocks
             ret = blockAttr;
         } else {
@@ -216,9 +230,8 @@ public final class JCSCacheManager {
         } else {
             ret.setDiskPath(cachePath);
         }
-        ret.setCacheName(cacheName + (USE_BLOCK_CACHE.get() ? "_BLOCK_v2" : "_INDEX_v2"));
+        ret.setCacheName(cacheName);
 
-        removeStaleFiles(cachePath + File.separator + cacheName, (USE_BLOCK_CACHE.get() ? "_INDEX_v2" : "_BLOCK_v2"));
         return ret;
     }
 
@@ -230,8 +243,8 @@ public final class JCSCacheManager {
     }
 
     private static void deleteCacheFiles(String basePathPart) {
-        Utils.deleteFile(new File(basePathPart + ".key"));
-        Utils.deleteFile(new File(basePathPart + ".data"));
+        Utils.deleteFileIfExists(new File(basePathPart + ".key"));
+        Utils.deleteFileIfExists(new File(basePathPart + ".data"));
     }
 
     private static CompositeCacheAttributes getCacheAttributes(int maxMemoryElements) {
diff --git a/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
index dcc5f24..a6a2dff 100644
--- a/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJob.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.data.cache;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.net.HttpURLConnection;
 import java.net.URL;
 import java.security.SecureRandom;
 import java.util.HashSet;
@@ -26,14 +27,7 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.Utils;
 
-import sun.net.www.protocol.http.HttpURLConnection;
-
 /**
- * @author Wiktor Niesiobędzki
- *
- * @param <K> cache entry key type
- * @param <V> cache value type
- *
  * Generic loader for HTTP based tiles. Uses custom attribute, to check, if entry has expired
  * according to HTTP headers sent with tile. If so, it tries to verify using Etags
  * or If-Modified-Since / Last-Modified.
@@ -44,10 +38,13 @@ import sun.net.www.protocol.http.HttpURLConnection;
  * This class will keep only one Job running for specified tile. All others will just finish, but
  * listeners will be gathered and notified, once download job will be finished
  *
+ * @author Wiktor Niesiobędzki
+ * @param <K> cache entry key type
+ * @param <V> cache value type
  * @since 8168
  */
 public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements ICachedLoaderJob<K> {
-    private static final Logger log = FeatureAdapter.getLogger(JCSCachedTileLoaderJob.class.getCanonicalName());
+    private static final Logger LOG = FeatureAdapter.getLogger(JCSCachedTileLoaderJob.class.getCanonicalName());
     protected static final long DEFAULT_EXPIRE_TIME = 1000L * 60 * 60 * 24 * 7; // 7 days
     // Limit for the max-age value send by the server.
     protected static final long EXPIRE_TIME_SERVER_LIMIT = 1000L * 60 * 60 * 24 * 28; // 4 weeks
@@ -160,7 +157,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
             deduplicationKey = url.toString();
         }
         if (deduplicationKey == null) {
-            log.log(Level.WARNING, "No url returned for: {0}, skipping", getCacheKey());
+            LOG.log(Level.WARNING, "No url returned for: {0}, skipping", getCacheKey());
             throw new IllegalArgumentException("No url returned");
         }
         synchronized (inProgress) {
@@ -175,7 +172,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
 
         if (first || force) {
             // submit all jobs to separate thread, so calling thread is not blocked with IO when loading from disk
-            log.log(Level.FINE, "JCS - Submitting job for execution for url: {0}", getUrlNoException());
+            LOG.log(Level.FINE, "JCS - Submitting job for execution for url: {0}", getUrlNoException());
             downloadJobExecutor.execute(this);
         }
     }
@@ -223,13 +220,13 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
         final Thread currentThread = Thread.currentThread();
         final String oldName = currentThread.getName();
         currentThread.setName("JCS Downloading: " + getUrlNoException());
-        log.log(Level.FINE, "JCS - starting fetch of url: {0} ", getUrlNoException());
+        LOG.log(Level.FINE, "JCS - starting fetch of url: {0} ", getUrlNoException());
         ensureCacheElement();
         try {
             // try to fetch from cache
             if (!force && cacheElement != null && isCacheElementValid() && isObjectLoadable()) {
                 // we got something in cache, and it's valid, so lets return it
-                log.log(Level.FINE, "JCS - Returning object from cache: {0}", getCacheKey());
+                LOG.log(Level.FINE, "JCS - Returning object from cache: {0}", getCacheKey());
                 finishLoading(LoadResult.SUCCESS);
                 return;
             }
@@ -242,7 +239,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
                 if (isObjectLoadable()) {
                     // try to get stale entry in cache
                     finishLoading(LoadResult.SUCCESS);
-                    log.log(Level.FINE, "JCS - found stale object in cache: {0}", getUrlNoException());
+                    LOG.log(Level.FINE, "JCS - found stale object in cache: {0}", getUrlNoException());
                 } else {
                     // failed completely
                     finishLoading(LoadResult.FAILURE);
@@ -260,7 +257,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
             listeners = inProgress.remove(getUrlNoException().toString());
         }
         if (listeners == null) {
-            log.log(Level.WARNING, "Listener not found for URL: {0}. Listener not notified!", getUrlNoException());
+            LOG.log(Level.WARNING, "Listener not found for URL: {0}. Listener not notified!", getUrlNoException());
             return;
         }
         for (ICachedLoaderListener l: listeners) {
@@ -277,17 +274,17 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
             // that is too large)
             expires = Math.min(expires, attributes.getCreateTime() + EXPIRE_TIME_SERVER_LIMIT);
             if (now > expires) {
-                log.log(Level.FINE, "JCS - Object {0} has expired -> valid to {1}, now is: {2}",
+                LOG.log(Level.FINE, "JCS - Object {0} has expired -> valid to {1}, now is: {2}",
                         new Object[]{getUrlNoException(), Long.toString(expires), Long.toString(now)});
                 return false;
             }
         } else if (attributes.getLastModification() > 0 &&
                 now - attributes.getLastModification() > DEFAULT_EXPIRE_TIME) {
             // check by file modification date
-            log.log(Level.FINE, "JCS - Object has expired, maximum file age reached {0}", getUrlNoException());
+            LOG.log(Level.FINE, "JCS - Object has expired, maximum file age reached {0}", getUrlNoException());
             return false;
         } else if (now - attributes.getCreateTime() > DEFAULT_EXPIRE_TIME) {
-            log.log(Level.FINE, "JCS - Object has expired, maximum time since object creation reached {0}", getUrlNoException());
+            LOG.log(Level.FINE, "JCS - Object has expired, maximum time since object creation reached {0}", getUrlNoException());
             return false;
         }
         return true;
@@ -306,7 +303,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
             if (isObjectLoadable() &&
                     Boolean.TRUE.equals(useHead.get(getServerKey())) &&
                     isCacheValidUsingHead()) {
-                log.log(Level.FINE, "JCS - cache entry verified using HEAD request: {0}", getUrl());
+                LOG.log(Level.FINE, "JCS - cache entry verified using HEAD request: {0}", getUrl());
                 return true;
             }
 
@@ -325,7 +322,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
             if (urlConn.getResponseCode() == 304) {
                 // If isModifiedSince or If-None-Match has been set
                 // and the server answers with a HTTP 304 = "Not Modified"
-                log.log(Level.FINE, "JCS - If-Modified-Since/ETag test: local version is up to date: {0}", getUrl());
+                LOG.log(Level.FINE, "JCS - If-Modified-Since/ETag test: local version is up to date: {0}", getUrl());
                 return true;
             } else if (isObjectLoadable() // we have an object in cache, but we haven't received 304 response code
                     && (
@@ -335,7 +332,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
                 // we sent ETag or If-Modified-Since, but didn't get 304 response code
                 // for further requests - use HEAD
                 String serverKey = getServerKey();
-                log.log(Level.INFO, "JCS - Host: {0} found not to return 304 codes for If-Modified-Since or If-None-Match headers",
+                LOG.log(Level.INFO, "JCS - Host: {0} found not to return 304 codes for If-Modified-Since or If-None-Match headers",
                         serverKey);
                 useHead.put(serverKey, Boolean.TRUE);
             }
@@ -361,21 +358,21 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
                     // as empty (eg. empty tile images) to save some space
                     cacheData = createCacheEntry(raw);
                     cache.put(getCacheKey(), cacheData, attributes);
-                    log.log(Level.FINE, "JCS - downloaded key: {0}, length: {1}, url: {2}",
+                    LOG.log(Level.FINE, "JCS - downloaded key: {0}, length: {1}, url: {2}",
                             new Object[] {getCacheKey(), raw.length, getUrl()});
                     return true;
                 } else if (cacheAsEmpty()) {
                     cacheData = createCacheEntry(new byte[]{});
                     cache.put(getCacheKey(), cacheData, attributes);
-                    log.log(Level.FINE, "JCS - Caching empty object {0}", getUrl());
+                    LOG.log(Level.FINE, "JCS - Caching empty object {0}", getUrl());
                     return true;
                 } else {
-                    log.log(Level.FINE, "JCS - failure during load - reponse is not loadable nor cached as empty");
+                    LOG.log(Level.FINE, "JCS - failure during load - reponse is not loadable nor cached as empty");
                     return false;
                 }
             }
         } catch (FileNotFoundException e) {
-            log.log(Level.FINE, "JCS - Caching empty object as server returned 404 for: {0}", getUrlNoException());
+            LOG.log(Level.FINE, "JCS - Caching empty object as server returned 404 for: {0}", getUrlNoException());
             attributes.setResponseCode(404);
             attributes.setError(e);
             boolean doCache = isResponseLoadable(null, 404, null) || cacheAsEmpty();
@@ -385,21 +382,21 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
             }
             return doCache;
         } catch (IOException e) {
-            log.log(Level.FINE, "JCS - IOExecption during communication with server for: {0}", getUrlNoException());
-            attributes.setError(e);
-            attributes.setResponseCode(499); // set dummy error code
-            boolean doCache = isResponseLoadable(null, 499, null) || cacheAsEmpty(); //generic 499 error code returned
-            if (doCache) {
-                cacheData = createCacheEntry(new byte[]{});
-                cache.put(getCacheKey(), createCacheEntry(new byte[]{}), attributes);
+            LOG.log(Level.FINE, "JCS - IOExecption during communication with server for: {0}", getUrlNoException());
+            if (isObjectLoadable()) {
+                return true;
+            } else {
+                attributes.setError(e);
+                attributes.setResponseCode(599); // set dummy error code, greater than 500 so it will be not cached
+                return false;
             }
-            return doCache;
+
         } catch (InterruptedException e) {
             attributes.setError(e);
-            log.log(Level.WARNING, "JCS - Exception during download {0}", getUrlNoException());
+            LOG.log(Level.WARNING, "JCS - Exception during download {0}", getUrlNoException());
             Main.warn(e);
         }
-        log.log(Level.WARNING, "JCS - Silent failure during download: {0}", getUrlNoException());
+        LOG.log(Level.WARNING, "JCS - Silent failure during download: {0}", getUrlNoException());
         return false;
     }
 
@@ -440,9 +437,7 @@ public abstract class JCSCachedTileLoaderJob<K, V extends CacheEntry> implements
                 }
             } catch (NumberFormatException e) {
                 // ignore malformed Cache-Control headers
-                if (Main.isTraceEnabled()) {
-                    Main.trace(e.getMessage());
-                }
+                Main.trace(e);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/data/cache/package-info.java b/src/org/openstreetmap/josm/data/cache/package-info.java
new file mode 100644
index 0000000..741ccc6
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/cache/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM cache of imagery tiles, backed up by JCS.
+ */
+package org.openstreetmap.josm.data.cache;
diff --git a/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java b/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
index 4eb31d0..250a1cb 100644
--- a/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
+++ b/src/org/openstreetmap/josm/data/conflict/ConflictCollection.java
@@ -17,8 +17,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * This is a collection of {@link Conflict}s. This collection is {@link Iterable}, i.e.
@@ -42,24 +41,6 @@ public class ConflictCollection implements Iterable<Conflict<? extends OsmPrimit
     private final List<Conflict<? extends OsmPrimitive>> conflicts;
     private final CopyOnWriteArrayList<IConflictListener> listeners;
 
-    private static class FilterPredicate implements Predicate<Conflict<? extends OsmPrimitive>> {
-
-        private final Class<? extends OsmPrimitive> c;
-
-        FilterPredicate(Class<? extends OsmPrimitive> c) {
-            this.c = c;
-        }
-
-        @Override
-        public boolean evaluate(Conflict<? extends OsmPrimitive> conflict) {
-            return conflict != null && c.isInstance(conflict.getMy());
-        }
-    }
-
-    private static final FilterPredicate NODE_FILTER_PREDICATE = new FilterPredicate(Node.class);
-    private static final FilterPredicate WAY_FILTER_PREDICATE = new FilterPredicate(Way.class);
-    private static final FilterPredicate RELATION_FILTER_PREDICATE = new FilterPredicate(Relation.class);
-
     /**
      * Constructs a new {@code ConflictCollection}.
      */
@@ -363,7 +344,7 @@ public class ConflictCollection implements Iterable<Conflict<? extends OsmPrimit
      * @since 6555
      */
     public final Collection<Conflict<? extends OsmPrimitive>> getNodeConflicts() {
-        return Utils.filter(conflicts, NODE_FILTER_PREDICATE);
+        return SubclassFilteredCollection.filter(conflicts, c -> c != null && c.getMy() instanceof Node);
     }
 
     /**
@@ -372,7 +353,7 @@ public class ConflictCollection implements Iterable<Conflict<? extends OsmPrimit
      * @since 6555
      */
     public final Collection<Conflict<? extends OsmPrimitive>> getWayConflicts() {
-        return Utils.filter(conflicts, WAY_FILTER_PREDICATE);
+        return SubclassFilteredCollection.filter(conflicts, c -> c != null && c.getMy() instanceof Way);
     }
 
     /**
@@ -381,7 +362,7 @@ public class ConflictCollection implements Iterable<Conflict<? extends OsmPrimit
      * @since 6555
      */
     public final Collection<Conflict<? extends OsmPrimitive>> getRelationConflicts() {
-        return Utils.filter(conflicts, RELATION_FILTER_PREDICATE);
+        return SubclassFilteredCollection.filter(conflicts, c -> c != null && c.getMy() instanceof Relation);
     }
 
     @Override
@@ -395,6 +376,6 @@ public class ConflictCollection implements Iterable<Conflict<? extends OsmPrimit
         if (obj == null || getClass() != obj.getClass()) return false;
         ConflictCollection conflicts1 = (ConflictCollection) obj;
         return Objects.equals(conflicts, conflicts1.conflicts) &&
-                Objects.equals(listeners, conflicts1.listeners);
+               Objects.equals(listeners, conflicts1.listeners);
     }
 }
diff --git a/src/org/openstreetmap/josm/data/conflict/package-info.java b/src/org/openstreetmap/josm/data/conflict/package-info.java
new file mode 100644
index 0000000..3c24a22
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/conflict/package-info.java
@@ -0,0 +1,7 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for edition {@link org.openstreetmap.josm.data.conflict.Conflict conflicts}
+ * between {@link org.openstreetmap.josm.data.osm.OsmPrimitive OsmPrimitive}s
+ */
+package org.openstreetmap.josm.data.conflict;
diff --git a/src/org/openstreetmap/josm/data/coor/package-info.java b/src/org/openstreetmap/josm/data/coor/package-info.java
new file mode 100644
index 0000000..f62829f
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/coor/package-info.java
@@ -0,0 +1,7 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for geographic {@link org.openstreetmap.josm.data.coor.Coordinate coordinates}
+ * (east/north and lat/lon systems).
+ */
+package org.openstreetmap.josm.data.coor;
diff --git a/src/org/openstreetmap/josm/data/gpx/GpxData.java b/src/org/openstreetmap/josm/data/gpx/GpxData.java
index da6d631..47d7af9 100644
--- a/src/org/openstreetmap/josm/data/gpx/GpxData.java
+++ b/src/org/openstreetmap/josm/data/gpx/GpxData.java
@@ -360,13 +360,8 @@ public class GpxData extends WithAttributes implements Data {
      * @return an Iterable object, which iterates over all track segments and
      * over all routes
      */
-    public Iterable<Collection<WayPoint>> getLinesIterable(final boolean[] trackVisibility) {
-        return new Iterable<Collection<WayPoint>>() {
-            @Override
-            public Iterator<Collection<WayPoint>> iterator() {
-                return new LinesIterator(GpxData.this, trackVisibility);
-            }
-        };
+    public Iterable<Collection<WayPoint>> getLinesIterable(final boolean ... trackVisibility) {
+        return () -> new LinesIterator(this, trackVisibility);
     }
 
     /**
@@ -418,7 +413,7 @@ public class GpxData extends WithAttributes implements Data {
          * @param trackVisibility An array indicating which tracks should be
          * included in the iteration. Can be null, then all tracks are included.
          */
-        public LinesIterator(GpxData data, boolean[] trackVisibility) {
+        public LinesIterator(GpxData data, boolean ... trackVisibility) {
             itTracks = data.tracks.iterator();
             idxTracks = -1;
             itRoutes = data.routes.iterator();
diff --git a/src/org/openstreetmap/josm/data/gpx/package-info.java b/src/org/openstreetmap/josm/data/gpx/package-info.java
new file mode 100644
index 0000000..81f1a14
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/gpx/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM {@link org.openstreetmap.josm.data.gpx.GpxData GPX data} (points, tracks, routes).
+ */
+package org.openstreetmap.josm.data.gpx;
diff --git a/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java b/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
index eb26517..1224ac3 100644
--- a/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/CachedAttributionBingAerialTileSource.java
@@ -60,26 +60,22 @@ public class CachedAttributionBingAerialTileSource extends BingAerialTileSource
 
     @Override
     protected Callable<List<Attribution>> getAttributionLoaderCallable() {
-        return new Callable<List<Attribution>>() {
-
-            @Override
-            public List<Attribution> call() throws Exception {
-                BingAttributionData attributionLoader = new BingAttributionData();
-                int waitTimeSec = 1;
-                while (true) {
-                    try {
-                        String xml = attributionLoader.updateIfRequiredString();
-                        List<Attribution> ret = parseAttributionText(new InputSource(new StringReader(xml)));
-                        if (attributionDownloadedTask != null) {
-                            GuiHelper.runInEDT(attributionDownloadedTask);
-                            attributionDownloadedTask = null;
-                        }
-                        return ret;
-                    } catch (IOException ex) {
-                        Main.warn(ex, "Could not connect to Bing API. Will retry in " + waitTimeSec + " seconds.");
-                        Thread.sleep(waitTimeSec * 1000L);
-                        waitTimeSec *= 2;
+        return () -> {
+            BingAttributionData attributionLoader = new BingAttributionData();
+            int waitTimeSec = 1;
+            while (true) {
+                try {
+                    String xml = attributionLoader.updateIfRequiredString();
+                    List<Attribution> ret = parseAttributionText(new InputSource(new StringReader(xml)));
+                    if (attributionDownloadedTask != null) {
+                        GuiHelper.runInEDT(attributionDownloadedTask);
+                        attributionDownloadedTask = null;
                     }
+                    return ret;
+                } catch (IOException ex) {
+                    Main.warn(ex, "Could not connect to Bing API. Will retry in " + waitTimeSec + " seconds.");
+                    Thread.sleep(waitTimeSec * 1000L);
+                    waitTimeSec *= 2;
                 }
             }
         };
diff --git a/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java b/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
index 2a286b3..d648aa7 100644
--- a/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
+++ b/src/org/openstreetmap/josm/data/imagery/CachedTileLoaderFactory.java
@@ -59,11 +59,6 @@ public class CachedTileLoaderFactory implements TileLoaderFactory {
     }
 
     @Override
-    public TileLoader makeTileLoader(TileLoaderListener listener) {
-        return makeTileLoader(listener, null);
-    }
-
-    @Override
     public TileLoader makeTileLoader(TileLoaderListener listener, Map<String, String> inputHeaders) {
         Map<String, String> headers = new ConcurrentHashMap<>();
         headers.put("User-Agent", Version.getInstance().getFullAgentString());
diff --git a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
index 764e7dc..540d332 100644
--- a/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
+++ b/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
@@ -167,7 +167,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
     /** display bounds of imagery, displayed in prefs and used for automatic imagery selection */
     private ImageryBounds bounds;
     /** projections supported by WMS servers */
-    private List<String> serverProjections;
+    private List<String> serverProjections = Collections.emptyList();
     /** description of the imagery entry, should contain notes what type of data it is */
     private String description;
     /** language of the description entry */
@@ -270,7 +270,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
                     shapes = shapesString.toString();
                 }
             }
-            if (i.serverProjections != null && !i.serverProjections.isEmpty()) {
+            if (!i.serverProjections.isEmpty()) {
                 StringBuilder val = new StringBuilder();
                 for (String p : i.serverProjections) {
                     if (val.length() > 0) {
@@ -536,6 +536,11 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         return url.equals(in.url);
     }
 
+    /**
+     * Sets the pixel per degree value.
+     * @param ppd The ppd value
+     * @see #getPixelPerDegree()
+     */
     public void setPixelPerDegree(double ppd) {
         this.pixelPerDegree = ppd;
     }
@@ -611,26 +616,56 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         return termsOfUseURL;
     }
 
+    /**
+     * Set the attribution text
+     * @param text The text
+     * @see #getAttributionText(int, ICoordinate, ICoordinate)
+     */
     public void setAttributionText(String text) {
         attributionText = text;
     }
 
-    public void setAttributionImageURL(String text) {
-        attributionImageURL = text;
+    /**
+     * Set the attribution image
+     * @param url The url of the image.
+     * @see #getAttributionImageURL()
+     */
+    public void setAttributionImageURL(String url) {
+        attributionImageURL = url;
     }
 
-    public void setAttributionImage(String text) {
-        attributionImage = text;
+    /**
+     * Set the image for the attribution
+     * @param res The image resource
+     * @see #getAttributionImage()
+     */
+    public void setAttributionImage(String res) {
+        attributionImage = res;
     }
 
-    public void setAttributionLinkURL(String text) {
-        attributionLinkURL = text;
+    /**
+     * Sets the URL the attribution should link to.
+     * @param url The url.
+     * @see #getAttributionLinkURL()
+     */
+    public void setAttributionLinkURL(String url) {
+        attributionLinkURL = url;
     }
 
+    /**
+     * Sets the text to display to the user as terms of use.
+     * @param text The text
+     * @see #getTermsOfUseText()
+     */
     public void setTermsOfUseText(String text) {
         termsOfUseText = text;
     }
 
+    /**
+     * Sets a url that links to the terms of use text.
+     * @param text The url.
+     * @see #getTermsOfUseURL()
+     */
     public void setTermsOfUseURL(String text) {
         termsOfUseURL = text;
     }
@@ -649,7 +684,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         defaultMaxZoom = 0;
         defaultMinZoom = 0;
         for (ImageryType type : ImageryType.values()) {
-            Matcher m = Pattern.compile(type.getTypeString()+"(?:\\[(?:(\\d+),)?(\\d+)\\])?:(.*)").matcher(url);
+            Matcher m = Pattern.compile(type.getTypeString()+"(?:\\[(?:(\\d+)[,-])?(\\d+)\\])?:(.*)").matcher(url);
             if (m.matches()) {
                 this.url = m.group(3);
                 this.imageryType = type;
@@ -663,7 +698,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
             }
         }
 
-        if (serverProjections == null || serverProjections.isEmpty()) {
+        if (serverProjections.isEmpty()) {
             serverProjections = new ArrayList<>();
             Matcher m = Pattern.compile(".*\\{PROJ\\(([^)}]+)\\)\\}.*").matcher(url.toUpperCase(Locale.ENGLISH));
             if (m.matches()) {
@@ -700,6 +735,9 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         }
     }
 
+    /**
+     * Store the id of this info to the preferences and clear it afterwards.
+     */
     public void clearId() {
         if (this.id != null) {
             Collection<String> newAddedIds = new TreeSet<>(Main.pref.getCollection("imagery.layers.addedIds"));
@@ -734,6 +772,10 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         return this.cookies;
     }
 
+    /**
+     * Gets the pixel per degree value
+     * @return The ppd value.
+     */
     public double getPixelPerDegree() {
         return this.pixelPerDegree;
     }
@@ -847,12 +889,15 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
      * of supported projections otherwise.
      */
     public List<String> getServerProjections() {
-        if (serverProjections == null)
-            return Collections.emptyList();
         return Collections.unmodifiableList(serverProjections);
     }
 
+    /**
+     * Sets the list of collections the server supports
+     * @param serverProjections The list of supported projections
+     */
     public void setServerProjections(Collection<String> serverProjections) {
+        CheckParameterUtil.ensureParameterNotNull(serverProjections, "serverProjections");
         this.serverProjections = new ArrayList<>(serverProjections);
     }
 
@@ -865,6 +910,10 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
             ? ('['+(defaultMinZoom != 0 ? (Integer.toString(defaultMinZoom) + ',') : "")+defaultMaxZoom+']') : "") + ':' + url;
     }
 
+    /**
+     * Gets a unique toolbar key to store this layer as toolbar item
+     * @return The kay.
+     */
     public String getToolbarName() {
         String res = name;
         if (pixelPerDegree != 0) {
@@ -873,6 +922,10 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         return res;
     }
 
+    /**
+     * Gets the name that should be displayed in the menu to add this imagery layer.
+     * @return The text.
+     */
     public String getMenuName() {
         String res = name;
         if (pixelPerDegree != 0) {
@@ -1019,18 +1072,34 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
         this.metadataHeaders = metadataHeaders;
     }
 
+    /**
+     * Gets the flag if epsg 4326 to 3857 is supported
+     * @return The flag.
+     */
     public boolean isEpsg4326To3857Supported() {
         return isEpsg4326To3857Supported;
     }
 
+    /**
+     * Sets the flag that epsg 4326 to 3857 is supported
+     * @param isEpsg4326To3857Supported The flag.
+     */
     public void setEpsg4326To3857Supported(boolean isEpsg4326To3857Supported) {
         this.isEpsg4326To3857Supported = isEpsg4326To3857Supported;
     }
 
+    /**
+     * Gets the flag if the georeference is valid.
+     * @return <code>true</code> if it is valid.
+     */
     public boolean isGeoreferenceValid() {
         return isGeoreferenceValid;
     }
 
+    /**
+     * Sets an indicator that the georeference is valid
+     * @param isGeoreferenceValid <code>true</code> if it is marked as valid.
+     */
     public void setGeoreferenceValid(boolean isGeoreferenceValid) {
         this.isGeoreferenceValid = isGeoreferenceValid;
     }
@@ -1066,9 +1135,7 @@ public class ImageryInfo extends TileSourceInfo implements Comparable<ImageryInf
                if (i.defaultMinZoom != 0) {
                    n.defaultMinZoom = i.defaultMinZoom;
                }
-               if (i.serverProjections != null) {
-                   n.serverProjections = i.serverProjections;
-               }
+               n.setServerProjections(i.getServerProjections());
                n.url = i.url;
                n.imageryType = i.imageryType;
                if (i.getTileSize() != 0) {
diff --git a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
index f4b2602..550102c 100644
--- a/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
+++ b/src/org/openstreetmap/josm/data/imagery/OffsetBookmark.java
@@ -12,6 +12,7 @@ import java.util.ListIterator;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 
 public class OffsetBookmark {
@@ -100,7 +101,7 @@ public class OffsetBookmark {
         return null;
     }
 
-    public static void bookmarkOffset(String name, ImageryLayer layer) {
+    public static void bookmarkOffset(String name, AbstractTileSourceLayer layer) {
         LatLon center;
         if (Main.isDisplayingMapView()) {
             center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter());
@@ -109,7 +110,7 @@ public class OffsetBookmark {
         }
         OffsetBookmark nb = new OffsetBookmark(
                 Main.getProjection().toCode(), layer.getInfo().getName(),
-                name, layer.getDx(), layer.getDy(), center.lon(), center.lat());
+                name, layer.getDisplaySettings().getDx(), layer.getDisplaySettings().getDy(), center.lon(), center.lat());
         for (ListIterator<OffsetBookmark> it = allBookmarks.listIterator(); it.hasNext();) {
             OffsetBookmark b = it.next();
             if (b.isUsable(layer) && name.equals(b.name)) {
diff --git a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
index 434421f..78843bb 100644
--- a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
+++ b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoader.java
@@ -19,10 +19,9 @@ import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
- * @author Wiktor Niesiobędzki
- *
  * Wrapper class that bridges between JCS cache and Tile Loaders
  *
+ * @author Wiktor Niesiobędzki
  */
 public class TMSCachedTileLoader implements TileLoader, CachedTileLoader {
 
diff --git a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
index 2f723b6..092ae1c 100644
--- a/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
+++ b/src/org/openstreetmap/josm/data/imagery/TMSCachedTileLoaderJob.java
@@ -34,9 +34,9 @@ import org.openstreetmap.josm.data.preferences.LongProperty;
 import org.openstreetmap.josm.tools.HttpClient;
 
 /**
- * @author Wiktor Niesiobędzki
- *
  * Class bridging TMS requests to JCS cache requests
+ *
+ * @author Wiktor Niesiobędzki
  * @since 8168
  */
 public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, BufferedImageCacheEntry> implements TileJob, ICachedLoaderListener {
@@ -127,6 +127,7 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
                 return content != null || cacheData.getImage() != null || isNoTileAtZoom();
             } catch (IOException e) {
                 LOG.log(Level.WARNING, "JCS TMS - error loading from cache for tile {0}: {1}", new Object[] {tile.getKey(), e.getMessage()});
+                Main.warn(e);
             }
         }
         return false;
@@ -295,6 +296,7 @@ public class TMSCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, Buffe
                 return tile;
             } catch (IOException e) {
                 LOG.log(Level.WARNING, "JCS TMS - error loading object for tile {0}: {1}", new Object[] {tile.getKey(), e.getMessage()});
+                Main.warn(e);
                 return null;
             }
 
diff --git a/src/org/openstreetmap/josm/data/imagery/TileLoaderFactory.java b/src/org/openstreetmap/josm/data/imagery/TileLoaderFactory.java
index 7818d65..c678c7d 100644
--- a/src/org/openstreetmap/josm/data/imagery/TileLoaderFactory.java
+++ b/src/org/openstreetmap/josm/data/imagery/TileLoaderFactory.java
@@ -12,17 +12,12 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
  * @author Wiktor Niesiobędzki
  * @since 8526
  */
+ at FunctionalInterface
 public interface TileLoaderFactory {
 
     /**
      * @param listener that will be notified, when tile has finished loading
-     * @return TileLoader that notifies specified listener
-     */
-    TileLoader makeTileLoader(TileLoaderListener listener);
-
-    /**
-     * @param listener that will be notified, when tile has finished loading
-     * @param headers that will be sent with requests to TileSource
+     * @param headers that will be sent with requests to TileSource. <code>null</code> indicates none
      * @return TileLoader that uses both of above
      */
     TileLoader makeTileLoader(TileLoaderListener listener, Map<String, String> headers);
diff --git a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
index c38297d..af57cac 100644
--- a/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
+++ b/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
@@ -13,7 +13,6 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -84,13 +83,8 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
     }
 
     private static class TileMatrixSetBuilder {
-        SortedSet<TileMatrix> tileMatrix = new TreeSet<>(new Comparator<TileMatrix>() {
-            @Override
-            public int compare(TileMatrix o1, TileMatrix o2) {
-                // reverse the order, so it will be from greatest (lowest zoom level) to lowest value (highest zoom level)
-                return -1 * Double.compare(o1.scaleDenominator, o2.scaleDenominator);
-            }
-        }); // sorted by zoom level
+        // sorted by zoom level
+        SortedSet<TileMatrix> tileMatrix = new TreeSet<>((o1, o2) -> -1 * Double.compare(o1.scaleDenominator, o2.scaleDenominator));
         private String crs;
         private String identifier;
 
@@ -606,7 +600,7 @@ public class WMTSTileSource extends AbstractTMSTileSource implements TemplatedTi
      * @return true if tag was found, false otherwise
      * @throws XMLStreamException See {@link XMLStreamReader}
      */
-    private static boolean moveReaderToTag(XMLStreamReader reader, QName[] tags) throws XMLStreamException {
+    private static boolean moveReaderToTag(XMLStreamReader reader, QName ... tags) throws XMLStreamException {
         QName stopTag = reader.getName();
         int currentLevel = 0;
         QName searchTag = tags[currentLevel];
diff --git a/src/org/openstreetmap/josm/data/imagery/package-info.java b/src/org/openstreetmap/josm/data/imagery/package-info.java
new file mode 100644
index 0000000..521d4ea
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/imagery/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM imagery sources, coupled with {@code JMapViewer} classes.
+ */
+package org.openstreetmap.josm.data.imagery;
diff --git a/src/org/openstreetmap/josm/data/notes/package-info.java b/src/org/openstreetmap/josm/data/notes/package-info.java
index 6ba4ba0..603df1c 100644
--- a/src/org/openstreetmap/josm/data/notes/package-info.java
+++ b/src/org/openstreetmap/josm/data/notes/package-info.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 
 /**
- * Provides the classes for OSM notes. See <a href="https://wiki.openstreetmap.org/wiki/Notes">Notes</a>.
+ * Provides the classes for OSM {@link org.openstreetmap.josm.data.notes.Note notes}.
+ * See <a href="https://wiki.openstreetmap.org/wiki/Notes">Notes on OSM wiki</a>.
  */
 package org.openstreetmap.josm.data.notes;
diff --git a/src/org/openstreetmap/josm/data/oauth/package-info.java b/src/org/openstreetmap/josm/data/oauth/package-info.java
new file mode 100644
index 0000000..27a4514
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/oauth/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for OAuth authentication to OSM.
+ */
+package org.openstreetmap.josm.data.oauth;
diff --git a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
index 1c371f3..e0d0ff8 100644
--- a/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/AbstractPrimitive.java
@@ -30,7 +30,9 @@ public abstract class AbstractPrimitive implements IPrimitive {
      *
      * @author Michael Zangl
      * @since 8742
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface KeyValueVisitor {
 
         /**
@@ -175,7 +177,7 @@ public abstract class AbstractPrimitive implements IPrimitive {
 
     @Override
     public boolean isNewOrUndeleted() {
-        return (id <= 0) || ((flags & (FLAG_VISIBLE + FLAG_DELETED)) == 0);
+        return isNew() || ((flags & (FLAG_VISIBLE + FLAG_DELETED)) == 0);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/data/osm/ChangesetCache.java b/src/org/openstreetmap/josm/data/osm/ChangesetCache.java
index dbbda87..a2ef26f 100644
--- a/src/org/openstreetmap/josm/data/osm/ChangesetCache.java
+++ b/src/org/openstreetmap/josm/data/osm/ChangesetCache.java
@@ -15,8 +15,7 @@ import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * ChangesetCache is global in-memory cache for changesets downloaded from
@@ -68,17 +67,15 @@ public final class ChangesetCache implements PreferenceChangedListener {
         }
     }
 
-    protected void fireChangesetCacheEvent(final ChangesetCacheEvent e) {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override public void run() {
-                for (ChangesetCacheListener l: listeners) {
-                    l.changesetCacheUpdated(e);
-                }
+    private void fireChangesetCacheEvent(final ChangesetCacheEvent e) {
+        GuiHelper.runInEDT(() -> {
+            for (ChangesetCacheListener l: listeners) {
+                l.changesetCacheUpdated(e);
             }
         });
     }
 
-    protected void update(Changeset cs, DefaultChangesetCacheEvent e) {
+    private void update(Changeset cs, DefaultChangesetCacheEvent e) {
         if (cs == null) return;
         if (cs.isNew()) return;
         Changeset inCache = cache.get(cs.getId());
@@ -125,7 +122,7 @@ public final class ChangesetCache implements PreferenceChangedListener {
         return new HashSet<>(cache.values());
     }
 
-    protected void remove(int id, DefaultChangesetCacheEvent e) {
+    private void remove(int id, DefaultChangesetCacheEvent e) {
         if (id <= 0) return;
         Changeset cs = cache.get(id);
         if (cs == null) return;
@@ -205,12 +202,8 @@ public final class ChangesetCache implements PreferenceChangedListener {
         if (JosmUserIdentityManager.getInstance().isAnonymous()) {
             return getOpenChangesets();
         } else {
-            return new ArrayList<>(Utils.filter(getOpenChangesets(), new Predicate<Changeset>() {
-                @Override
-                public boolean evaluate(Changeset object) {
-                    return JosmUserIdentityManager.getInstance().isCurrentUser(object.getUser());
-                }
-            }));
+            return new ArrayList<>(SubclassFilteredCollection.filter(getOpenChangesets(),
+                    object -> JosmUserIdentityManager.getInstance().isCurrentUser(object.getUser())));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java b/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java
index 861ebe2..3a1f508 100644
--- a/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java
+++ b/src/org/openstreetmap/josm/data/osm/ChangesetCacheListener.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.osm;
 
+ at FunctionalInterface
 public interface ChangesetCacheListener {
 
     void changesetCacheUpdated(ChangesetCacheEvent event);
diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java
index fe3febc..eaad637 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSet.java
@@ -20,6 +20,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.function.Predicate;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
@@ -46,8 +47,6 @@ import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.tools.FilteredCollection;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -312,7 +311,14 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      */
     private final QuadBuckets<Node> nodes = new QuadBuckets<>();
 
-    private <T extends OsmPrimitive> Collection<T> getPrimitives(Predicate<? super OsmPrimitive> predicate) {
+    /**
+     * Gets a filtered collection of primitives matching the given predicate.
+     * @param <T> The primitive type.
+     * @param predicate The predicate to match
+     * @return The list of primtives.
+     * @since 10590
+     */
+    public <T extends OsmPrimitive> Collection<T> getPrimitives(Predicate<? super OsmPrimitive> predicate) {
         return new SubclassFilteredCollection<>(allPrimitives, predicate);
     }
 
@@ -322,7 +328,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return an unmodifiable collection of nodes in this dataset
      */
     public Collection<Node> getNodes() {
-        return getPrimitives(OsmPrimitive.nodePredicate);
+        return getPrimitives(Node.class::isInstance);
     }
 
     /**
@@ -364,7 +370,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return an unmodifiable collection of ways in this dataset
      */
     public Collection<Way> getWays() {
-        return getPrimitives(OsmPrimitive.wayPredicate);
+        return getPrimitives(Way.class::isInstance);
     }
 
     /**
@@ -404,7 +410,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return an unmodifiable collection of relations in this dataset
      */
     public Collection<Relation> getRelations() {
-        return getPrimitives(OsmPrimitive.relationPredicate);
+        return getPrimitives(Relation.class::isInstance);
     }
 
     /**
@@ -450,7 +456,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return A collection containing all primitives of the dataset. Data is not ordered
      */
     public Collection<OsmPrimitive> allPrimitives() {
-        return getPrimitives(Predicates.alwaysTrue());
+        return getPrimitives(o -> true);
     }
 
     /**
@@ -459,7 +465,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @see OsmPrimitive#isDeleted
      */
     public Collection<OsmPrimitive> allNonDeletedPrimitives() {
-        return getPrimitives(OsmPrimitive.nonDeletedPredicate);
+        return getPrimitives(p -> !p.isDeleted());
     }
 
     /**
@@ -469,7 +475,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @see OsmPrimitive#isIncomplete
      */
     public Collection<OsmPrimitive> allNonDeletedCompletePrimitives() {
-        return getPrimitives(OsmPrimitive.nonDeletedCompletePredicate);
+        return getPrimitives(primitive -> !primitive.isDeleted() && !primitive.isIncomplete());
     }
 
     /**
@@ -479,7 +485,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @see OsmPrimitive#isIncomplete
      */
     public Collection<OsmPrimitive> allNonDeletedPhysicalPrimitives() {
-        return getPrimitives(OsmPrimitive.nonDeletedPhysicalPredicate);
+        return getPrimitives(primitive -> !primitive.isDeleted() && !primitive.isIncomplete() && !(primitive instanceof Relation));
     }
 
     /**
@@ -488,7 +494,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @see OsmPrimitive#isModified
      */
     public Collection<OsmPrimitive> allModifiedPrimitives() {
-        return getPrimitives(OsmPrimitive.modifiedPredicate);
+        return getPrimitives(OsmPrimitive::isModified);
     }
 
     /**
@@ -606,12 +612,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return selected nodes and ways
      */
     public Collection<OsmPrimitive> getSelectedNodesAndWays() {
-        return new FilteredCollection<>(getSelected(), new Predicate<OsmPrimitive>() {
-            @Override
-            public boolean evaluate(OsmPrimitive primitive) {
-                return primitive instanceof Node || primitive instanceof Way;
-            }
-        });
+        return new FilteredCollection<>(getSelected(), primitive -> primitive instanceof Node || primitive instanceof Way);
     }
 
     /**
@@ -641,7 +642,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return unmodifiable collection of primitives
      */
     public Collection<OsmPrimitive> getSelected() {
-        return new SubclassFilteredCollection<>(getAllSelected(), OsmPrimitive.nonDeletedPredicate);
+        return new SubclassFilteredCollection<>(getAllSelected(), p -> !p.isDeleted());
     }
 
     /**
@@ -666,7 +667,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return selected nodes
      */
     public Collection<Node> getSelectedNodes() {
-        return new SubclassFilteredCollection<>(getSelected(), OsmPrimitive.nodePredicate);
+        return new SubclassFilteredCollection<>(getSelected(), Node.class::isInstance);
     }
 
     /**
@@ -674,7 +675,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return selected ways
      */
     public Collection<Way> getSelectedWays() {
-        return new SubclassFilteredCollection<>(getSelected(), OsmPrimitive.wayPredicate);
+        return new SubclassFilteredCollection<>(getSelected(), Way.class::isInstance);
     }
 
     /**
@@ -682,7 +683,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
      * @return selected relations
      */
     public Collection<Relation> getSelectedRelations() {
-        return new SubclassFilteredCollection<>(getSelected(), OsmPrimitive.relationPredicate);
+        return new SubclassFilteredCollection<>(getSelected(), Relation.class::isInstance);
     }
 
     /**
@@ -710,7 +711,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
         boolean changed = false;
         synchronized (selectionLock) {
             for (PrimitiveId o : osm) {
-                changed = changed | this.__toggleSelected(o);
+                changed = changed | this.dotoggleSelected(o);
             }
             if (changed) {
                 selectionSnapshot = null;
@@ -729,7 +730,7 @@ public final class DataSet implements Data, Cloneable, ProjectionChangeListener
         toggleSelected(Arrays.asList(osm));
     }
 
-    private boolean __toggleSelected(PrimitiveId primitiveId) {
+    private boolean dotoggleSelected(PrimitiveId primitiveId) {
         OsmPrimitive primitive = getPrimitiveByIdChecked(primitiveId);
         if (primitive == null)
             return false;
diff --git a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
index 2888e7b..9bdbce0 100644
--- a/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
+++ b/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
@@ -214,6 +214,7 @@ public class DatasetConsistencyTest {
         } catch (RuntimeException e) {
             writer.println("Exception during dataset integrity test:");
             e.printStackTrace(writer);
+            Main.warn(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
index 3f03c0c..ae5a979 100644
--- a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
+++ b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
@@ -206,7 +206,7 @@ public class FilterMatcher {
     private static boolean allParentMultipolygonsFiltered(OsmPrimitive primitive, boolean hidden) {
         boolean isExplicit = false;
         for (Relation r : new SubclassFilteredCollection<OsmPrimitive, Relation>(
-                primitive.getReferrers(), OsmPrimitive.multipolygonPredicate)) {
+                primitive.getReferrers(), OsmPrimitive::isMultipolygon)) {
             if (!isFiltered(r, hidden))
                 return false;
             isExplicit |= isFilterExplicit(r, hidden);
@@ -216,7 +216,7 @@ public class FilterMatcher {
 
     private static boolean oneParentMultipolygonNotFiltered(OsmPrimitive primitive, boolean hidden) {
         for (Relation r : new SubclassFilteredCollection<OsmPrimitive, Relation>(
-                primitive.getReferrers(), OsmPrimitive.multipolygonPredicate)) {
+                primitive.getReferrers(), OsmPrimitive::isMultipolygon)) {
             if (!isFiltered(r, hidden))
                 return true;
         }
diff --git a/src/org/openstreetmap/josm/data/osm/FilterWorker.java b/src/org/openstreetmap/josm/data/osm/FilterWorker.java
index 54b1ee1..73e6b02 100644
--- a/src/org/openstreetmap/josm/data/osm/FilterWorker.java
+++ b/src/org/openstreetmap/josm/data/osm/FilterWorker.java
@@ -5,7 +5,7 @@ import java.util.Collection;
 import java.util.Collections;
 
 import org.openstreetmap.josm.data.osm.FilterMatcher.FilterType;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Class for applying {@link Filter}s to {@link OsmPrimitive}s.
@@ -31,9 +31,9 @@ public final class FilterWorker {
     public static boolean executeFilters(Collection<OsmPrimitive> all, FilterMatcher filterMatcher) {
         boolean changed;
         // first relations, then ways and nodes last; this is required to resolve dependencies
-        changed = doExecuteFilters(Utils.filter(all, OsmPrimitive.relationPredicate), filterMatcher);
-        changed |= doExecuteFilters(Utils.filter(all, OsmPrimitive.wayPredicate), filterMatcher);
-        changed |= doExecuteFilters(Utils.filter(all, OsmPrimitive.nodePredicate), filterMatcher);
+        changed = doExecuteFilters(SubclassFilteredCollection.filter(all, Relation.class::isInstance), filterMatcher);
+        changed |= doExecuteFilters(SubclassFilteredCollection.filter(all, Way.class::isInstance), filterMatcher);
+        changed |= doExecuteFilters(SubclassFilteredCollection.filter(all, Node.class::isInstance), filterMatcher);
         return changed;
     }
 
diff --git a/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java b/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
index a77afe2..1951a84 100644
--- a/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
+++ b/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
@@ -169,7 +169,7 @@ public class MultipolygonBuilder {
      * @return a list of multipolygon rings.
      * @throws JoinedPolygonCreationException if the creation fails.
      */
-    public static List<JoinedPolygon> joinWays(Collection<Way> ways) throws JoinedPolygonCreationException {
+    public static List<JoinedPolygon> joinWays(Collection<Way> ways) {
         List<JoinedPolygon> joinedWays = new ArrayList<>();
 
         //collect ways connecting to each node.
diff --git a/src/org/openstreetmap/josm/data/osm/Node.java b/src/org/openstreetmap/josm/data/osm/Node.java
index f149615..56ffb05 100644
--- a/src/org/openstreetmap/josm/data/osm/Node.java
+++ b/src/org/openstreetmap/josm/data/osm/Node.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.data.osm;
 import java.util.Collection;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.function.Predicate;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -12,7 +13,6 @@ import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -111,7 +111,7 @@ public final class Node extends OsmPrimitive implements INode {
      * @param coor lat/lon
      * @param eastNorth east/north
      */
-    protected void setCoorInternal(LatLon coor, EastNorth eastNorth) {
+    void setCoorInternal(LatLon coor, EastNorth eastNorth) {
         if (coor != null) {
             this.lat = coor.lat();
             this.lon = coor.lon();
@@ -380,7 +380,7 @@ public final class Node extends OsmPrimitive implements INode {
                 for (final Node n : w.getNodes()) {
                     final boolean containsN = visited.contains(n);
                     visited.add(n);
-                    if (!containsN && (predicate == null || predicate.evaluate(n))
+                    if (!containsN && (predicate == null || predicate.test(n))
                             && n.isConnectedTo(otherNodes, hops - 1, predicate, visited)) {
                         return true;
                     }
diff --git a/src/org/openstreetmap/josm/data/osm/NoteData.java b/src/org/openstreetmap/josm/data/osm/NoteData.java
index e9c6893..fe3fecb 100644
--- a/src/org/openstreetmap/josm/data/osm/NoteData.java
+++ b/src/org/openstreetmap/josm/data/osm/NoteData.java
@@ -15,8 +15,6 @@ 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.gui.JosmUserIdentityManager;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Class to hold and perform operations on a set of notes
@@ -36,54 +34,40 @@ public class NoteData {
      * 3) New notes
      * Within each subgroup it sorts by ID
      */
-    public static final Comparator<Note> DEFAULT_COMPARATOR = new Comparator<Note>() {
-        @Override
-        public int compare(Note n1, Note n2) {
-            if (n1.getId() < 0 && n2.getId() > 0) {
-                return 1;
-            }
-            if (n1.getId() > 0 && n2.getId() < 0) {
-                return -1;
-            }
-            if (n1.getState() == State.CLOSED && n2.getState() == State.OPEN) {
-                return 1;
-            }
-            if (n1.getState() == State.OPEN && n2.getState() == State.CLOSED) {
-                return -1;
-            }
-            return Long.compare(Math.abs(n1.getId()), Math.abs(n2.getId()));
+    public static final Comparator<Note> DEFAULT_COMPARATOR = (n1, n2) -> {
+        if (n1.getId() < 0 && n2.getId() > 0) {
+            return 1;
+        }
+        if (n1.getId() > 0 && n2.getId() < 0) {
+            return -1;
+        }
+        if (n1.getState() == State.CLOSED && n2.getState() == State.OPEN) {
+            return 1;
+        }
+        if (n1.getState() == State.OPEN && n2.getState() == State.CLOSED) {
+            return -1;
         }
+        return Long.compare(Math.abs(n1.getId()), Math.abs(n2.getId()));
     };
 
     /** Sorts notes strictly by creation date */
-    public static final Comparator<Note> DATE_COMPARATOR = new Comparator<Note>() {
-        @Override
-        public int compare(Note n1, Note n2) {
-            return n1.getCreatedAt().compareTo(n2.getCreatedAt());
-        }
-    };
+    public static final Comparator<Note> DATE_COMPARATOR = (n1, n2) -> n1.getCreatedAt().compareTo(n2.getCreatedAt());
 
     /** Sorts notes by user, then creation date */
-    public static final Comparator<Note> USER_COMPARATOR = new Comparator<Note>() {
-        @Override
-        public int compare(Note n1, Note n2) {
-            String n1User = n1.getFirstComment().getUser().getName();
-            String n2User = n2.getFirstComment().getUser().getName();
-            if (n1User.equals(n2User)) {
-                return n1.getCreatedAt().compareTo(n2.getCreatedAt());
-            }
-            return n1.getFirstComment().getUser().getName().compareTo(n2.getFirstComment().getUser().getName());
+    public static final Comparator<Note> USER_COMPARATOR = (n1, n2) -> {
+        String n1User = n1.getFirstComment().getUser().getName();
+        String n2User = n2.getFirstComment().getUser().getName();
+        if (n1User.equals(n2User)) {
+            return n1.getCreatedAt().compareTo(n2.getCreatedAt());
         }
+        return n1.getFirstComment().getUser().getName().compareTo(n2.getFirstComment().getUser().getName());
     };
 
     /** Sorts notes by the last modified date */
-    public static final Comparator<Note> LAST_ACTION_COMPARATOR = new Comparator<Note>() {
-        @Override
-        public int compare(Note n1, Note n2) {
-            Date n1Date = n1.getComments().get(n1.getComments().size()-1).getCommentTimestamp();
-            Date n2Date = n2.getComments().get(n2.getComments().size()-1).getCommentTimestamp();
-            return n1Date.compareTo(n2Date);
-        }
+    public static final Comparator<Note> LAST_ACTION_COMPARATOR = (n1, n2) -> {
+        Date n1Date = n1.getComments().get(n1.getComments().size()-1).getCommentTimestamp();
+        Date n2Date = n2.getComments().get(n2.getComments().size()-1).getCommentTimestamp();
+        return n1Date.compareTo(n2Date);
     };
 
     /**
@@ -116,7 +100,7 @@ public class NoteData {
      */
     public Collection<Note> getSortedNotes() {
         final List<Note> list = new ArrayList<>(noteList);
-        Collections.sort(list, comparator);
+        list.sort(comparator);
         return list;
     }
 
@@ -168,12 +152,7 @@ public class NoteData {
                 noteList.add(newNote);
             } else {
                 final Note existingNote = noteList.get(newNote);
-                final boolean isDirty = Utils.exists(existingNote.getComments(), new Predicate<NoteComment>() {
-                    @Override
-                    public boolean evaluate(NoteComment object) {
-                        return object.isNew();
-                    }
-                });
+                final boolean isDirty = existingNote.getComments().stream().anyMatch(NoteComment::isNew);
                 if (!isDirty) {
                     noteList.put(newNote);
                 } else {
diff --git a/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java b/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
index 54faab8..c8cd049 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
@@ -18,6 +18,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.search.SearchCompiler;
@@ -26,8 +27,6 @@ import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.gui.mappaint.StyleCache;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
 
@@ -110,6 +109,33 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
     protected static final int FLAG_ANNOTATED = 1 << 12;
 
     /**
+     * A tagged way that matches this pattern has a direction.
+     * @see #FLAG_HAS_DIRECTIONS
+     */
+    static volatile Match directionKeys;
+
+    /**
+     * A tagged way that matches this pattern has a direction that is reversed.
+     * <p>
+     * This pattern should be a subset of {@link #directionKeys}
+     * @see #FLAG_DIRECTION_REVERSED
+     */
+    private static volatile Match reversedDirectionKeys;
+
+    static {
+        String reversedDirectionDefault = "oneway=\"-1\"";
+
+        String directionDefault = "oneway? | (aerialway=* -aerialway=station) | "+
+                "waterway=stream | waterway=river | waterway=ditch | waterway=drain | "+
+                "\"piste:type\"=downhill | \"piste:type\"=sled | man_made=\"piste:halfpipe\" | "+
+                "junction=roundabout | (highway=motorway & -oneway=no & -oneway=reversible) | "+
+                "(highway=motorway_link & -oneway=no & -oneway=reversible)";
+
+        reversedDirectionKeys = compileDirectionKeys("tags.reversed_direction", reversedDirectionDefault);
+        directionKeys = compileDirectionKeys("tags.direction", directionDefault);
+    }
+
+    /**
      * Replies the sub-collection of {@link OsmPrimitive}s of type <code>type</code> present in
      * another collection of {@link OsmPrimitive}s. The result collection is a list.
      *
@@ -173,95 +199,84 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
     /**
      * A predicate that filters primitives that are usable.
      * @see OsmPrimitive#isUsable()
+     * @deprecated Use {@code OsmPrimitive::isUsable} instead
      */
-    public static final Predicate<OsmPrimitive> isUsablePredicate = new Predicate<OsmPrimitive>() {
-        @Override
-        public boolean evaluate(OsmPrimitive primitive) {
-            return primitive.isUsable();
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> isUsablePredicate = OsmPrimitive::isUsable;
 
     /**
      * A predicate filtering primitives that are selectable.
+     * @deprecated Use {@code OsmPrimitive::isSelectable} instead
      */
-    public static final Predicate<OsmPrimitive> isSelectablePredicate = new Predicate<OsmPrimitive>() {
-        @Override
-        public boolean evaluate(OsmPrimitive primitive) {
-            return primitive.isSelectable();
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> isSelectablePredicate = OsmPrimitive::isSelectable;
 
     /**
      * A predicate filtering primitives that are not deleted.
+     * @deprecated Use {@code p -> !p.isDeleted()} instead
      */
-    public static final Predicate<OsmPrimitive> nonDeletedPredicate = new Predicate<OsmPrimitive>() {
-        @Override public boolean evaluate(OsmPrimitive primitive) {
-            return !primitive.isDeleted();
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> nonDeletedPredicate = p -> !p.isDeleted();
 
     /**
      * A predicate filtering primitives that are not deleted and not incomplete.
+     * @deprecated use lambda instead
      */
-    public static final Predicate<OsmPrimitive> nonDeletedCompletePredicate = new Predicate<OsmPrimitive>() {
-        @Override public boolean evaluate(OsmPrimitive primitive) {
-            return !primitive.isDeleted() && !primitive.isIncomplete();
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> nonDeletedCompletePredicate =
+            primitive -> !primitive.isDeleted() && !primitive.isIncomplete();
 
     /**
      * A predicate filtering primitives that are not deleted and not incomplete and that are not a relation.
+     * @deprecated use lambda instead
      */
-    public static final Predicate<OsmPrimitive> nonDeletedPhysicalPredicate = new Predicate<OsmPrimitive>() {
-        @Override public boolean evaluate(OsmPrimitive primitive) {
-            return !primitive.isDeleted() && !primitive.isIncomplete() && !(primitive instanceof Relation);
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> nonDeletedPhysicalPredicate =
+            primitive -> !primitive.isDeleted() && !primitive.isIncomplete() && !(primitive instanceof Relation);
 
     /**
      * A predicate filtering primitives that are modified
+     * @deprecated Use {@code OsmPrimitive::isModified} instead
      */
-    public static final Predicate<OsmPrimitive> modifiedPredicate = new Predicate<OsmPrimitive>() {
-        @Override public boolean evaluate(OsmPrimitive primitive) {
-            return primitive.isModified();
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> modifiedPredicate = OsmPrimitive::isModified;
 
     /**
      * A predicate filtering nodes.
+     * @deprecated Use {@code Node.class::isInstance} instead
      */
-    public static final Predicate<OsmPrimitive> nodePredicate = Predicates.<OsmPrimitive>isOfClass(Node.class);
+    @Deprecated
+    public static final Predicate<OsmPrimitive> nodePredicate = Node.class::isInstance;
 
     /**
      * A predicate filtering ways.
+     * @deprecated Use {@code Way.class::isInstance} instead
      */
-    public static final Predicate<OsmPrimitive> wayPredicate = Predicates.<OsmPrimitive>isOfClass(Way.class);
+    @Deprecated
+    public static final Predicate<OsmPrimitive> wayPredicate = Way.class::isInstance;
 
     /**
      * A predicate filtering relations.
+     * @deprecated Use {@code Relation.class::isInstance} instead
      */
-    public static final Predicate<OsmPrimitive> relationPredicate = Predicates.<OsmPrimitive>isOfClass(Relation.class);
+    @Deprecated
+    public static final Predicate<OsmPrimitive> relationPredicate = Relation.class::isInstance;
 
     /**
      * A predicate filtering multipolygon relations.
+     * @deprecated Use {@code OsmPrimitive::isMultipolygon} instead
      */
-    public static final Predicate<OsmPrimitive> multipolygonPredicate = new Predicate<OsmPrimitive>() {
-        @Override public boolean evaluate(OsmPrimitive primitive) {
-            return primitive.getClass() == Relation.class && ((Relation) primitive).isMultipolygon();
-        }
-    };
+    @Deprecated
+    public static final Predicate<OsmPrimitive> multipolygonPredicate = OsmPrimitive::isMultipolygon;
 
     /**
      * This matches all ways that have a direction
      *
      * @see #FLAG_HAS_DIRECTIONS
+     * @deprecated use {@code directionKeys::match}
      */
-    public static final Predicate<Tag> directionalKeyPredicate = new Predicate<Tag>() {
-        @Override
-        public boolean evaluate(Tag tag) {
-            return directionKeys.match(tag);
-        }
-    };
+    @Deprecated
+    public static final Predicate<Tag> directionalKeyPredicate = directionKeys::match;
 
     /**
      * Creates a new primitive for the given id.
@@ -843,33 +858,6 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
         return result;
     }
 
-    /**
-     * A tagged way that matches this pattern has a direction.
-     * @see #FLAG_HAS_DIRECTIONS
-     */
-    private static volatile Match directionKeys;
-
-    /**
-     * A tagged way that matches this pattern has a direction that is reversed.
-     * <p>
-     * This pattern should be a subset of {@link #directionKeys}
-     * @see #FLAG_DIRECTION_REVERSED
-     */
-    private static volatile Match reversedDirectionKeys;
-
-    static {
-        String reversedDirectionDefault = "oneway=\"-1\"";
-
-        String directionDefault = "oneway? | (aerialway=* -aerialway=station) | "+
-                "waterway=stream | waterway=river | waterway=ditch | waterway=drain | "+
-                "\"piste:type\"=downhill | \"piste:type\"=sled | man_made=\"piste:halfpipe\" | "+
-                "junction=roundabout | (highway=motorway & -oneway=no & -oneway=reversible) | "+
-                "(highway=motorway_link & -oneway=no & -oneway=reversible)";
-
-        reversedDirectionKeys = compileDirectionKeys("tags.reversed_direction", reversedDirectionDefault);
-        directionKeys = compileDirectionKeys("tags.direction", directionDefault);
-    }
-
     private static Match compileDirectionKeys(String prefName, String defaultValue) throws AssertionError {
         try {
             return SearchCompiler.compile(Main.pref.get(prefName, defaultValue));
@@ -1295,7 +1283,7 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
                 && timestamp == other.timestamp
                 && version == other.version
                 && isVisible() == other.isVisible()
-                && (user == null ? other.user == null : user == other.user)
+                && Objects.equals(user, other.user)
                 && changesetId == other.changesetId;
     }
 
@@ -1384,10 +1372,14 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
      */
     @Override
     public boolean equals(Object obj) {
-        if (this == obj) return true;
-        if (obj == null || getClass() != obj.getClass()) return false;
-        OsmPrimitive that = (OsmPrimitive) obj;
-        return Objects.equals(id, that.id);
+        if (this == obj) {
+            return true;
+        } else if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        } else {
+            OsmPrimitive that = (OsmPrimitive) obj;
+            return id == that.id;
+        }
     }
 
     /**
@@ -1397,7 +1389,7 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
      */
     @Override
     public int hashCode() {
-        return Objects.hash(id);
+        return Long.hashCode(id);
     }
 
     /**
@@ -1480,4 +1472,13 @@ public abstract class OsmPrimitive extends AbstractPrimitive implements Comparab
      * @return {@code true} if this primitive lies outside of the downloaded area
      */
     public abstract boolean isOutsideDownloadArea();
+
+    /**
+     * Determines if this object is a relation and behaves as a multipolygon.
+     * @return {@code true} if it is a real mutlipolygon or a boundary relation
+     * @since 10716
+     */
+    public boolean isMultipolygon() {
+        return false;
+    }
 }
diff --git a/src/org/openstreetmap/josm/data/osm/OsmUtils.java b/src/org/openstreetmap/josm/data/osm/OsmUtils.java
index 9e7a9dd..62de4ed 100644
--- a/src/org/openstreetmap/josm/data/osm/OsmUtils.java
+++ b/src/org/openstreetmap/josm/data/osm/OsmUtils.java
@@ -74,8 +74,10 @@ public final class OsmUtils {
         if (p == null) {
             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());
+        if (x.length > 1) {
+            for (final Map.Entry<String, String> i : TextTagParser.readTagsFromText(x[1]).entrySet()) {
+                p.put(i.getKey(), i.getValue());
+            }
         }
         return p;
     }
diff --git a/src/org/openstreetmap/josm/data/osm/PrimitiveData.java b/src/org/openstreetmap/josm/data/osm/PrimitiveData.java
index 5664dd3..693d277 100644
--- a/src/org/openstreetmap/josm/data/osm/PrimitiveData.java
+++ b/src/org/openstreetmap/josm/data/osm/PrimitiveData.java
@@ -80,6 +80,7 @@ public abstract class PrimitiveData extends AbstractPrimitive implements Seriali
         oos.writeInt(version);
         oos.writeInt(changesetId);
         oos.writeInt(timestamp);
+        oos.writeObject(keys);
         oos.defaultWriteObject();
     }
 
@@ -91,6 +92,7 @@ public abstract class PrimitiveData extends AbstractPrimitive implements Seriali
         version = ois.readInt();
         changesetId = ois.readInt();
         timestamp = ois.readInt();
+        keys = (String[]) ois.readObject();
         ois.defaultReadObject();
     }
 }
diff --git a/src/org/openstreetmap/josm/data/osm/PrimitiveDeepCopy.java b/src/org/openstreetmap/josm/data/osm/PrimitiveDeepCopy.java
deleted file mode 100644
index 03db280..0000000
--- a/src/org/openstreetmap/josm/data/osm/PrimitiveDeepCopy.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.data.osm;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
-
-/**
- * This class allows to create and keep a deep copy of primitives. Provides methods to access directly added
- * primitives and reference primitives
- * @since 2305
- */
-public class PrimitiveDeepCopy {
-
-    public interface PasteBufferChangedListener {
-        void pasteBufferChanged(PrimitiveDeepCopy pasteBuffer);
-    }
-
-    private final List<PrimitiveData> directlyAdded = new ArrayList<>();
-    private final List<PrimitiveData> referenced = new ArrayList<>();
-    private final CopyOnWriteArrayList<PasteBufferChangedListener> listeners = new CopyOnWriteArrayList<>();
-
-    /**
-     * Constructs a new {@code PrimitiveDeepCopy} without data. Use {@link #makeCopy(Collection)} after that.
-     */
-    public PrimitiveDeepCopy() {
-        // Do nothing
-    }
-
-    /**
-     * Constructs a new {@code PrimitiveDeepCopy} of given OSM primitives.
-     * @param primitives OSM primitives to copy
-     * @since 7961
-     */
-    public PrimitiveDeepCopy(final Collection<? extends OsmPrimitive> primitives) {
-        makeCopy(primitives);
-    }
-
-    /**
-     * Replace content of the object with copy of provided primitives.
-     * @param primitives OSM primitives to copy
-     * @since 7961
-     */
-    public final void makeCopy(final Collection<? extends OsmPrimitive> primitives) {
-        directlyAdded.clear();
-        referenced.clear();
-
-        final Set<Long> visitedNodeIds = new HashSet<>();
-        final Set<Long> visitedWayIds = new HashSet<>();
-        final Set<Long> visitedRelationIds = new HashSet<>();
-
-        new AbstractVisitor() {
-            private boolean firstIteration;
-
-            @Override
-            public void visit(Node n) {
-                if (!visitedNodeIds.add(n.getUniqueId()))
-                    return;
-                (firstIteration ? directlyAdded : referenced).add(n.save());
-            }
-
-            @Override
-            public void visit(Way w) {
-                if (!visitedWayIds.add(w.getUniqueId()))
-                    return;
-                (firstIteration ? directlyAdded : referenced).add(w.save());
-                firstIteration = false;
-                for (Node n : w.getNodes()) {
-                    visit(n);
-                }
-            }
-
-            @Override
-            public void visit(Relation r) {
-                if (!visitedRelationIds.add(r.getUniqueId()))
-                    return;
-                (firstIteration ? directlyAdded : referenced).add(r.save());
-                firstIteration = false;
-                for (RelationMember m : r.getMembers()) {
-                    m.getMember().accept(this);
-                }
-            }
-
-            public void visitAll() {
-                for (OsmPrimitive osm : primitives) {
-                    firstIteration = true;
-                    osm.accept(this);
-                }
-            }
-        }.visitAll();
-
-        firePasteBufferChanged();
-    }
-
-    public List<PrimitiveData> getDirectlyAdded() {
-        return directlyAdded;
-    }
-
-    public List<PrimitiveData> getReferenced() {
-        return referenced;
-    }
-
-    public List<PrimitiveData> getAll() {
-        List<PrimitiveData> result = new ArrayList<>(directlyAdded.size() + referenced.size());
-        result.addAll(directlyAdded);
-        result.addAll(referenced);
-        return result;
-    }
-
-    public boolean isEmpty() {
-        return directlyAdded.isEmpty() && referenced.isEmpty();
-    }
-
-    private void firePasteBufferChanged() {
-        for (PasteBufferChangedListener listener: listeners) {
-            listener.pasteBufferChanged(this);
-        }
-    }
-
-    public void addPasteBufferChangedListener(PasteBufferChangedListener listener) {
-        listeners.addIfAbsent(listener);
-    }
-
-    public void removePasteBufferChangedListener(PasteBufferChangedListener listener) {
-        listeners.remove(listener);
-    }
-}
diff --git a/src/org/openstreetmap/josm/data/osm/QuadBuckets.java b/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
index 16aecd8..fddd0ea 100644
--- a/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
+++ b/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
@@ -133,7 +133,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             }
         }
 
-        boolean remove_content(T o) {
+        boolean removeContent(T o) {
             // If two threads try to remove item at the same time from different buckets of this QBLevel,
             // it might happen that one thread removes bucket but don't remove parent because it still sees
             // another bucket set. Second thread do the same. Due to thread memory caching, it's possible that
@@ -146,7 +146,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
                 this.content = null;
             }
             if (this.canRemove()) {
-                this.remove_from_parent();
+                this.removeFromParent();
             }
             return ret;
         }
@@ -157,14 +157,14 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
          * attempt to null out 'children' because it thinks this
          * is a dead end.
          */
-        void __split() {
+        void doSplit() {
             List<T> tmpcontent = content;
             content = null;
 
             for (T o : tmpcontent) {
                 int idx = o.getBBox().getIndex(level);
                 if (idx == -1) {
-                    __add_content(o);
+                    doAddContent(o);
                 } else {
                     getChild(idx).doAdd(o);
                 }
@@ -172,7 +172,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             isLeaf = false; // It's not enough to check children because all items could end up in this level (index == -1)
         }
 
-        boolean __add_content(T o) {
+        boolean doAddContent(T o) {
             // The split_lock will keep two concurrent calls from overwriting content
             if (content == null) {
                 content = new ArrayList<>();
@@ -189,7 +189,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             return o.getBBox().intersects(searchBbox);
         }
 
-        private void search_contents(BBox searchBbox, List<T> result) {
+        private void searchContents(BBox searchBbox, List<T> result) {
             /*
              * It is possible that this was created in a split
              * but never got any content populated.
@@ -218,7 +218,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             return nw != null || ne != null || sw != null || se != null;
         }
 
-        QBLevel<T> next_sibling() {
+        QBLevel<T> findNextSibling() {
             return (parent == null) ? null : parent.firstSiblingOf(this);
         }
 
@@ -228,7 +228,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
 
         QBLevel<T> nextSibling() {
             QBLevel<T> next = this;
-            QBLevel<T> sibling = next.next_sibling();
+            QBLevel<T> sibling = next.findNextSibling();
             // Walk back up the tree to find the next sibling node.
             // It may be either a leaf or branch.
             while (sibling == null) {
@@ -236,7 +236,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
                 if (next == null) {
                     break;
                 }
-                sibling = next.next_sibling();
+                sibling = next.findNextSibling();
             }
             return sibling;
         }
@@ -288,9 +288,9 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
                     abort("\nobject " + o + " does not belong in node at level: " + level + " bbox: " + this.bbox());
                 }
             }
-            __add_content(o);
+            doAddContent(o);
             if (isLeaf() && content.size() > MAX_OBJECTS_PER_LEVEL && level < QuadTiling.NR_LEVELS) {
-                __split();
+                doSplit();
             }
         }
 
@@ -306,7 +306,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             }
 
             if (this.hasContent()) {
-                search_contents(searchBbox, result);
+                searchContents(searchBbox, result);
             }
 
             //TODO Coincidence vector should be calculated here and only buckets that match search_bbox should be checked
@@ -329,7 +329,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             return Long.toHexString(quad);
         }
 
-        int index_of(QBLevel<T> findThis) {
+        int indexOf(QBLevel<T> findThis) {
             QBLevel<T>[] children = getChildren();
             for (int i = 0; i < QuadTiling.TILES_PER_LEVEL; i++) {
                 if (children[i] == findThis)
@@ -358,7 +358,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             return QuadTiling.tile2LatLon(this.quad);
         }
 
-        void remove_from_parent() {
+        void removeFromParent() {
             if (parent == null)
                 return;
 
@@ -377,7 +377,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             }
 
             if (parent.canRemove()) {
-                parent.remove_from_parent();
+                parent.removeFromParent();
             }
         }
 
@@ -460,7 +460,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
         T t = (T) o;
         searchCache = null; // Search cache might point to one of removed buckets
         QBLevel<T> bucket = root.findBucket(t.getBBox());
-        if (bucket.remove_content(t)) {
+        if (bucket.removeContent(t)) {
             size--;
             return true;
         } else
@@ -563,7 +563,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
             //    an element
             contentIndex--;
             T object = peek();
-            currentNode.remove_content(object);
+            currentNode.removeContent(object);
         }
     }
 
@@ -606,7 +606,7 @@ public class QuadBuckets<T extends OsmPrimitive> implements Collection<T> {
         // A way that spans this bucket may be stored in one
         // of the nodes which is a parent of the search cache
         while (tmp != null) {
-            tmp.search_contents(searchBbox, ret);
+            tmp.searchContents(searchBbox, ret);
             tmp = tmp.parent;
         }
         return ret;
diff --git a/src/org/openstreetmap/josm/data/osm/Relation.java b/src/org/openstreetmap/josm/data/osm/Relation.java
index bbea6d8..ac94ce9 100644
--- a/src/org/openstreetmap/josm/data/osm/Relation.java
+++ b/src/org/openstreetmap/josm/data/osm/Relation.java
@@ -14,7 +14,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.CopyList;
-import org.openstreetmap.josm.tools.Predicate;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -348,12 +348,7 @@ public final class Relation extends OsmPrimitive implements IRelation {
      * @return all relation members for the given primitives
      */
     public Collection<RelationMember> getMembersFor(final Collection<? extends OsmPrimitive> primitives) {
-        return Utils.filter(getMembers(), new Predicate<RelationMember>() {
-            @Override
-            public boolean evaluate(RelationMember member) {
-                return primitives.contains(member.getMember());
-            }
-        });
+        return SubclassFilteredCollection.filter(getMembers(), member -> primitives.contains(member.getMember()));
     }
 
     /**
@@ -404,12 +399,7 @@ public final class Relation extends OsmPrimitive implements IRelation {
     }
 
     public List<OsmPrimitive> getMemberPrimitivesList() {
-        return Utils.transform(getMembers(), new Utils.Function<RelationMember, OsmPrimitive>() {
-            @Override
-            public OsmPrimitive apply(RelationMember x) {
-                return x.getMember();
-            }
-        });
+        return Utils.transform(getMembers(), RelationMember::getMember);
     }
 
     @Override
@@ -430,10 +420,7 @@ public final class Relation extends OsmPrimitive implements IRelation {
         return "boundary".equals(get("type"));
     }
 
-    /**
-     * Determines if this relation behaves as a multipolygon.
-     * @return {@code true} if it's a real mutlipolygon or a boundary relation
-     */
+    @Override
     public boolean isMultipolygon() {
         return "multipolygon".equals(get("type")) || isBoundary();
     }
@@ -493,7 +480,11 @@ public final class Relation extends OsmPrimitive implements IRelation {
         bbox = null; // bbox might have changed if relation was in ds, was removed, modified, added back to dataset
     }
 
-    private void checkMembers() throws DataIntegrityProblemException {
+    /**
+     * Checks that members are part of the same dataset, and that they're not deleted.
+     * @throws DataIntegrityProblemException if one the above conditions is not met
+     */
+    private void checkMembers() {
         DataSet dataSet = getDataSet();
         if (dataSet != null) {
             RelationMember[] members = this.members;
@@ -512,7 +503,12 @@ public final class Relation extends OsmPrimitive implements IRelation {
         }
     }
 
-    private void fireMembersChanged() throws DataIntegrityProblemException {
+    /**
+     * Fires the {@code RelationMembersChangedEvent} to listeners.
+     * @throws DataIntegrityProblemException if members are not valid
+     * @see #checkMembers
+     */
+    private void fireMembersChanged() {
         checkMembers();
         if (getDataSet() != null) {
             getDataSet().fireRelationMembersChanged(this);
diff --git a/src/org/openstreetmap/josm/data/osm/RelationMember.java b/src/org/openstreetmap/josm/data/osm/RelationMember.java
index 3fcc763..e03cfe8 100644
--- a/src/org/openstreetmap/josm/data/osm/RelationMember.java
+++ b/src/org/openstreetmap/josm/data/osm/RelationMember.java
@@ -174,7 +174,7 @@ public class RelationMember implements PrimitiveId {
         if (obj == null || getClass() != obj.getClass()) return false;
         RelationMember that = (RelationMember) obj;
         return Objects.equals(role, that.role) &&
-                Objects.equals(member, that.member);
+               Objects.equals(member, that.member);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/Storage.java b/src/org/openstreetmap/josm/data/osm/Storage.java
index c677200..041b6ae 100644
--- a/src/org/openstreetmap/josm/data/osm/Storage.java
+++ b/src/org/openstreetmap/josm/data/osm/Storage.java
@@ -274,7 +274,7 @@ public class Storage<T> extends AbstractSet<T> {
      * @return new hash
      */
     private static int rehash(int h) {
-        return 1103515245*h >> 2;
+        return (1103515245*h) >> 2;
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/Tag.java b/src/org/openstreetmap/josm/data/osm/Tag.java
index 826d8e8..132a6e2 100644
--- a/src/org/openstreetmap/josm/data/osm/Tag.java
+++ b/src/org/openstreetmap/josm/data/osm/Tag.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.osm;
 
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
@@ -16,7 +17,9 @@ import org.openstreetmap.josm.tools.Utils;
  * It implements the {@link Tagged} interface. However, since instances of this class are immutable,
  * the modifying methods throw an {@link UnsupportedOperationException}.
  */
-public class Tag implements Tagged, Entry<String, String> {
+public class Tag implements Tagged, Entry<String, String>, Serializable {
+
+    private static final long serialVersionUID = 1;
 
     private final String key;
     private final String value;
@@ -208,4 +211,15 @@ public class Tag implements Tagged, Entry<String, String> {
     public void removeAll() {
         throw new UnsupportedOperationException();
     }
+
+    /**
+     * true if this is a direction dependent tag (e.g. oneway)
+     *
+     * @return {@code true} if this is is a direction dependent tag
+     * @since 10716
+     */
+    public boolean isDirectionKey() {
+        return OsmPrimitive.directionKeys.match(this);
+    }
+
 }
diff --git a/src/org/openstreetmap/josm/data/osm/TagCollection.java b/src/org/openstreetmap/josm/data/osm/TagCollection.java
index 255c069..925042c 100644
--- a/src/org/openstreetmap/josm/data/osm/TagCollection.java
+++ b/src/org/openstreetmap/josm/data/osm/TagCollection.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.data.osm;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -14,8 +15,11 @@ import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.Utils;
@@ -44,7 +48,9 @@ import org.openstreetmap.josm.tools.Utils;
  *
  * @since 2008
  */
-public class TagCollection implements Iterable<Tag> {
+public class TagCollection implements Iterable<Tag>, Serializable {
+
+    private static final long serialVersionUID = 1;
 
     /**
      * Creates a tag collection from the tags managed by a specific
@@ -145,7 +151,7 @@ public class TagCollection implements Iterable<Tag> {
         return tags;
     }
 
-    private final Set<Tag> tags = new HashSet<>();
+    private final Map<Tag, Integer> tags = new HashMap<>();
 
     /**
      * Creates an empty tag collection.
@@ -162,7 +168,7 @@ public class TagCollection implements Iterable<Tag> {
      */
     public TagCollection(TagCollection other) {
         if (other != null) {
-            tags.addAll(other.tags);
+            tags.putAll(other.tags);
         }
     }
 
@@ -199,9 +205,19 @@ public class TagCollection implements Iterable<Tag> {
      * @param tag the tag to add
      */
     public final void add(Tag tag) {
-        if (tag == null) return;
-        if (tags.contains(tag)) return;
-        tags.add(tag);
+        if (tag != null) {
+            tags.merge(tag, 1, (i, j) -> i + j);
+        }
+    }
+
+    /**
+     * Gets the number of this this tag was added to the collection.
+     * @param tag The tag
+     * @return The number of thimes this tag is used in this collection.
+     * @since 10736
+     */
+    public int getTagOccurence(Tag tag) {
+        return tags.getOrDefault(tag, 0);
     }
 
     /**
@@ -224,8 +240,11 @@ public class TagCollection implements Iterable<Tag> {
      * @param tags the other tag collection
      */
     public final void add(TagCollection tags) {
-        if (tags == null) return;
-        this.tags.addAll(tags.tags);
+        if (tags != null) {
+            for (Entry<Tag, Integer> entry : tags.tags.entrySet()) {
+                this.tags.merge(entry.getKey(), entry.getValue(), (i, j) -> i + j);
+            }
+        }
     }
 
     /**
@@ -246,8 +265,9 @@ public class TagCollection implements Iterable<Tag> {
      * @param tags the tags to be removed
      */
     public void remove(Collection<Tag> tags) {
-        if (tags == null) return;
-        this.tags.removeAll(tags);
+        if (tags != null) {
+            tags.stream().forEach(this::remove);
+        }
     }
 
     /**
@@ -257,8 +277,9 @@ public class TagCollection implements Iterable<Tag> {
      * @param tags the tag collection to be removed.
      */
     public void remove(TagCollection tags) {
-        if (tags == null) return;
-        this.tags.removeAll(tags.tags);
+        if (tags != null) {
+            tags.tags.keySet().stream().forEach(this::remove);
+        }
     }
 
     /**
@@ -268,11 +289,12 @@ public class TagCollection implements Iterable<Tag> {
      * @param key the key to be removed
      */
     public void removeByKey(String key) {
-        if (key == null) return;
-        Iterator<Tag> it = tags.iterator();
-        while (it.hasNext()) {
-            if (it.next().matchesKey(key)) {
-                it.remove();
+        if (key != null) {
+            Iterator<Tag> it = tags.keySet().iterator();
+            while (it.hasNext()) {
+                if (it.next().matchesKey(key)) {
+                    it.remove();
+                }
             }
         }
     }
@@ -297,7 +319,7 @@ public class TagCollection implements Iterable<Tag> {
      * @return true if the this tag collection contains <code>tag</code>; false, otherwise
      */
     public boolean contains(Tag tag) {
-        return tags.contains(tag);
+        return tags.containsKey(tag);
     }
 
     /**
@@ -305,13 +327,11 @@ public class TagCollection implements Iterable<Tag> {
      *
      * @param key the key to look up
      * @return true if this tag collection contains at least one tag with key <code>key</code>; false, otherwise
+     * @deprecated Use {@link #hasTagsFor(String)} instead.
      */
+    @Deprecated
     public boolean containsKey(String key) {
-        if (key == null) return false;
-        for (Tag tag: tags) {
-            if (tag.matchesKey(key)) return true;
-        }
-        return false;
+        return generateStreamForKey(key).findAny().isPresent();
     }
 
     /**
@@ -323,8 +343,11 @@ public class TagCollection implements Iterable<Tag> {
      * false, if tags is null.
      */
     public boolean containsAll(Collection<Tag> tags) {
-        if (tags == null) return false;
-        return this.tags.containsAll(tags);
+        if (tags == null) {
+            return false;
+        } else {
+            return this.tags.keySet().containsAll(tags);
+        }
     }
 
     /**
@@ -335,31 +358,21 @@ public class TagCollection implements Iterable<Tag> {
      * @return true if this tag collection at least one tag for every key in <code>keys</code>.
      */
     public boolean containsAllKeys(Collection<String> keys) {
-        if (keys == null) return false;
-        for (String key: keys) {
-            if (key == null) {
-                continue;
-            }
-            if (!containsKey(key)) return false;
+        if (keys == null) {
+            return false;
+        } else {
+            return keys.stream().filter(Objects::nonNull).allMatch(this::hasTagsFor);
         }
-        return true;
     }
 
     /**
      * Replies the number of tags with key <code>key</code>
      *
      * @param key the key to look up
-     * @return the number of tags with key <code>key</code>. 0, if key is null.
+     * @return the number of tags with key <code>key</code>, including the empty "" value. 0, if key is null.
      */
     public int getNumTagsFor(String key) {
-        if (key == null) return 0;
-        int count = 0;
-        for (Tag tag: tags) {
-            if (tag.matchesKey(key)) {
-                count++;
-            }
-        }
-        return count;
+        return (int) generateStreamForKey(key).count();
     }
 
     /**
@@ -380,10 +393,7 @@ public class TagCollection implements Iterable<Tag> {
      * @return true it there is at least one tag with a non empty value for key.
      */
     public boolean hasValuesFor(String key) {
-        if (key == null) return false;
-        Set<String> values = getTagsFor(key).getValues();
-        values.remove("");
-        return !values.isEmpty();
+        return generateStreamForKey(key).filter(t -> !t.getValue().isEmpty()).findAny().isPresent();
     }
 
     /**
@@ -396,9 +406,7 @@ public class TagCollection implements Iterable<Tag> {
      * if the value of this tag is not empty
      */
     public boolean hasUniqueNonEmptyValue(String key) {
-        if (key == null) return false;
-        Set<String> values = getTagsFor(key).getValues();
-        return values.size() == 1 && !values.contains("");
+        return generateStreamForKey(key).filter(t -> !t.getValue().isEmpty()).count() == 1;
     }
 
     /**
@@ -409,9 +417,7 @@ public class TagCollection implements Iterable<Tag> {
      * @return true if there is a tag with an empty value for <code>key</code>
      */
     public boolean hasEmptyValue(String key) {
-        if (key == null) return false;
-        Set<String> values = getTagsFor(key).getValues();
-        return values.contains("");
+        return generateStreamForKey(key).anyMatch(t -> t.getValue().isEmpty());
     }
 
     /**
@@ -423,8 +429,7 @@ public class TagCollection implements Iterable<Tag> {
      * the value for this tag is empty
      */
     public boolean hasUniqueEmptyValue(String key) {
-        if (key == null) return false;
-        Set<String> values = getTagsFor(key).getValues();
+        Set<String> values = getValues(key);
         return values.size() == 1 && values.contains("");
     }
 
@@ -438,13 +443,7 @@ public class TagCollection implements Iterable<Tag> {
      */
     public TagCollection getTagsFor(String key) {
         TagCollection ret = new TagCollection();
-        if (key == null)
-            return ret;
-        for (Tag tag: tags) {
-            if (tag.matchesKey(key)) {
-                ret.add(tag);
-            }
-        }
+        generateStreamForKey(key).forEach(ret::add);
         return ret;
     }
 
@@ -474,17 +473,17 @@ public class TagCollection implements Iterable<Tag> {
      * @return the tags of this tag collection as set
      */
     public Set<Tag> asSet() {
-        return new HashSet<>(tags);
+        return new HashSet<>(tags.keySet());
     }
 
     /**
      * Replies the tags of this tag collection as list.
      * Note that the order of the list is not preserved between method invocations.
      *
-     * @return the tags of this tag collection as list.
+     * @return the tags of this tag collection as list. There are no dupplicate values.
      */
     public List<Tag> asList() {
-        return new ArrayList<>(tags);
+        return new ArrayList<>(tags.keySet());
     }
 
     /**
@@ -494,7 +493,7 @@ public class TagCollection implements Iterable<Tag> {
      */
     @Override
     public Iterator<Tag> iterator() {
-        return tags.iterator();
+        return tags.keySet().iterator();
     }
 
     /**
@@ -503,11 +502,7 @@ public class TagCollection implements Iterable<Tag> {
      * @return the set of keys of this tag collection
      */
     public Set<String> getKeys() {
-        Set<String> ret = new HashSet<>();
-        for (Tag tag: tags) {
-            ret.add(tag.getKey());
-        }
-        return ret;
+        return generateKeyStream().collect(Collectors.toCollection(HashSet::new));
     }
 
     /**
@@ -516,18 +511,8 @@ public class TagCollection implements Iterable<Tag> {
      * @return the set of keys which have at least 2 matching tags.
      */
     public Set<String> getKeysWithMultipleValues() {
-        Map<String, Integer> counters = new HashMap<>();
-        for (Tag tag: tags) {
-            Integer v = counters.get(tag.getKey());
-            counters.put(tag.getKey(), (v == null) ? 1 : v+1);
-        }
-        Set<String> ret = new HashSet<>();
-        for (Entry<String, Integer> e : counters.entrySet()) {
-            if (e.getValue() > 1) {
-                ret.add(e.getKey());
-            }
-        }
-        return ret;
+        HashSet<String> singleKeys = new HashSet<>();
+        return generateKeyStream().filter(key -> !singleKeys.add(key)).collect(Collectors.toSet());
     }
 
     /**
@@ -561,11 +546,7 @@ public class TagCollection implements Iterable<Tag> {
      * @return the set of values
      */
     public Set<String> getValues() {
-        Set<String> ret = new HashSet<>();
-        for (Tag tag: tags) {
-            ret.add(tag.getValue());
-        }
-        return ret;
+        return tags.keySet().stream().map(e -> e.getValue()).collect(Collectors.toSet());
     }
 
     /**
@@ -577,14 +558,8 @@ public class TagCollection implements Iterable<Tag> {
      * are no values for the given key
      */
     public Set<String> getValues(String key) {
-        Set<String> ret = new HashSet<>();
-        if (key == null) return ret;
-        for (Tag tag: tags) {
-            if (tag.matchesKey(key)) {
-                ret.add(tag.getValue());
-            }
-        }
-        return ret;
+        // null-safe
+        return generateStreamForKey(key).map(e -> e.getValue()).collect(Collectors.toSet());
     }
 
     /**
@@ -593,7 +568,7 @@ public class TagCollection implements Iterable<Tag> {
      * @return {@code true} if for every key there is one tag only
      */
     public boolean isApplicableToPrimitive() {
-        return size() == getKeys().size();
+        return getKeysWithMultipleValues().isEmpty();
     }
 
     /**
@@ -606,9 +581,8 @@ public class TagCollection implements Iterable<Tag> {
      */
     public void applyTo(Tagged primitive) {
         if (primitive == null) return;
-        if (!isApplicableToPrimitive())
-            throw new IllegalStateException(tr("Tag collection cannot be applied to a primitive because there are keys with multiple values."));
-        for (Tag tag: tags) {
+        ensureApplicableToPrimitive();
+        for (Tag tag: tags.keySet()) {
             if (tag.getValue() == null || tag.getValue().isEmpty()) {
                 primitive.remove(tag.getKey());
             } else {
@@ -627,8 +601,7 @@ public class TagCollection implements Iterable<Tag> {
      */
     public void applyTo(Collection<? extends Tagged> primitives) {
         if (primitives == null) return;
-        if (!isApplicableToPrimitive())
-            throw new IllegalStateException(tr("Tag collection cannot be applied to a primitive because there are keys with multiple values."));
+        ensureApplicableToPrimitive();
         for (Tagged primitive: primitives) {
             applyTo(primitive);
         }
@@ -644,10 +617,9 @@ public class TagCollection implements Iterable<Tag> {
      */
     public void replaceTagsOf(Tagged primitive) {
         if (primitive == null) return;
-        if (!isApplicableToPrimitive())
-            throw new IllegalStateException(tr("Tag collection cannot be applied to a primitive because there are keys with multiple values."));
+        ensureApplicableToPrimitive();
         primitive.removeAll();
-        for (Tag tag: tags) {
+        for (Tag tag: tags.keySet()) {
             primitive.put(tag.getKey(), tag.getValue());
         }
     }
@@ -662,27 +634,27 @@ public class TagCollection implements Iterable<Tag> {
      */
     public void replaceTagsOf(Collection<? extends Tagged> primitives) {
         if (primitives == null) return;
-        if (!isApplicableToPrimitive())
-            throw new IllegalStateException(tr("Tag collection cannot be applied to a primitive because there are keys with multiple values."));
+        ensureApplicableToPrimitive();
         for (Tagged primitive: primitives) {
             replaceTagsOf(primitive);
         }
     }
 
+    private void ensureApplicableToPrimitive() {
+        if (!isApplicableToPrimitive())
+            throw new IllegalStateException(tr("Tag collection cannot be applied to a primitive because there are keys with multiple values."));
+    }
+
     /**
      * Builds the intersection of this tag collection and another tag collection
      *
      * @param other the other tag collection. If null, replies an empty tag collection.
-     * @return the intersection of this tag collection and another tag collection
+     * @return the intersection of this tag collection and another tag collection. All counts are set to 1.
      */
     public TagCollection intersect(TagCollection other) {
         TagCollection ret = new TagCollection();
         if (other != null) {
-            for (Tag tag: tags) {
-                if (other.contains(tag)) {
-                    ret.add(tag);
-                }
-            }
+            tags.keySet().stream().filter(other::contains).forEach(ret::add);
         }
         return ret;
     }
@@ -705,7 +677,7 @@ public class TagCollection implements Iterable<Tag> {
      * Replies the union of this tag collection and another tag collection
      *
      * @param other the other tag collection. May be null.
-     * @return the union of this tag collection and another tag collection
+     * @return the union of this tag collection and another tag collection. The tag count is summed.
      */
     public TagCollection union(TagCollection other) {
         TagCollection ret = new TagCollection(this);
@@ -757,10 +729,10 @@ public class TagCollection implements Iterable<Tag> {
     }
 
     /**
-     * Replies the sum of all numeric tag values.
+     * Replies the sum of all numeric tag values. Ignores dupplicates.
      * @param key the key to look up
      *
-     * @return the sum of all numeric tag values, as string
+     * @return the sum of all numeric tag values, as string.
      * @since 7743
      */
     public String getSummedValues(String key) {
@@ -769,14 +741,25 @@ public class TagCollection implements Iterable<Tag> {
             try {
                 result += Integer.parseInt(value);
             } catch (NumberFormatException e) {
-                if (Main.isTraceEnabled()) {
-                    Main.trace(e.getMessage());
-                }
+                Main.trace(e);
             }
         }
         return Integer.toString(result);
     }
 
+    private Stream<String> generateKeyStream() {
+        return tags.keySet().stream().map(tag -> tag.getKey());
+    }
+
+    /**
+     * Get a stram for the given key.
+     * @param key The key
+     * @return The stream. An empty stream if key is <code>null</code>
+     */
+    private Stream<Tag> generateStreamForKey(String key) {
+        return tags.keySet().stream().filter(e -> e.matchesKey(key));
+    }
+
     @Override
     public String toString() {
         return tags.toString();
diff --git a/src/org/openstreetmap/josm/data/osm/TagMap.java b/src/org/openstreetmap/josm/data/osm/TagMap.java
index ce49e40..2661857 100644
--- a/src/org/openstreetmap/josm/data/osm/TagMap.java
+++ b/src/org/openstreetmap/josm/data/osm/TagMap.java
@@ -1,11 +1,16 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.osm;
 
+import java.io.Serializable;
 import java.util.AbstractMap;
 import java.util.AbstractSet;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.ConcurrentModificationException;
 import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
 
@@ -16,7 +21,8 @@ import java.util.Set;
  *
  * @author Michael Zangl
  */
-public class TagMap extends AbstractMap<String, String> {
+public class TagMap extends AbstractMap<String, String> implements Serializable {
+    static final long serialVersionUID = 1;
     /**
      * We use this array every time we want to represent an empty map.
      * This saves us the burden of checking for null every time but saves some object allocations.
@@ -42,7 +48,7 @@ public class TagMap extends AbstractMap<String, String> {
          * Create a new {@link TagEntryInterator}
          * @param tags The tags array. It is never changed but should also not be changed by you.
          */
-        TagEntryInterator(String[] tags) {
+        TagEntryInterator(String ... tags) {
             super();
             this.tags = tags;
         }
@@ -81,7 +87,7 @@ public class TagMap extends AbstractMap<String, String> {
          * Create a new {@link TagEntrySet}
          * @param tags The tags array. It is never changed but should also not be changed by you.
          */
-        TagEntrySet(String[] tags) {
+        TagEntrySet(String ... tags) {
             super();
             this.tags = tags;
         }
@@ -107,7 +113,25 @@ public class TagMap extends AbstractMap<String, String> {
      * Creates a new, empty tag map.
      */
     public TagMap() {
-        this(null);
+        this((String[]) null);
+    }
+
+    /**
+     * Create a new tag map and load it from the other map.
+     * @param tags The map to load from.
+     * @since 10604
+     */
+    public TagMap(Map<String, String> tags) {
+        putAll(tags);
+    }
+
+    /**
+     * Copy constructor.
+     * @param tagMap The map to copy from.
+     * @since 10604
+     */
+    public TagMap(TagMap tagMap) {
+        this(tagMap.tags);
     }
 
     /**
@@ -116,7 +140,7 @@ public class TagMap extends AbstractMap<String, String> {
      * The array that is passed as parameter may not be modified after passing it to this map.
      * @param tags The tags array. It is not modified by this map.
      */
-    public TagMap(String[] tags) {
+    public TagMap(String ... tags) {
         if (tags == null || tags.length == 0) {
             this.tags = EMPTY_TAGS;
         } else {
@@ -127,6 +151,17 @@ public class TagMap extends AbstractMap<String, String> {
         }
     }
 
+    /**
+     * Creates a new map using the given list of tags. For dupplicate keys the last value found is used.
+     * @param tags The tags
+     * @since 10736
+     */
+    public TagMap(Collection<Tag> tags) {
+        for (Tag tag : tags) {
+            put(tag.getKey(), tag.getValue());
+        }
+    }
+
     @Override
     public Set<Entry<String, String>> entrySet() {
         return new TagEntrySet(tags);
@@ -209,6 +244,19 @@ public class TagMap extends AbstractMap<String, String> {
     }
 
     /**
+     * Gets a list of all tags contained in this map.
+     * @return The list of tags in the order they were added.
+     * @since 10604
+     */
+    public List<Tag> getTags() {
+        List<Tag> tagList = new ArrayList<>();
+        for (int i = 0; i < tags.length; i += 2) {
+            tagList.add(new Tag(tags[i], tags[i+1]));
+        }
+        return tagList;
+    }
+
+    /**
      * Finds a key in an array that is structured like the {@link #tags} array and returns the position.
      * <p>
      * We allow the parameter to be passed to allow for better synchronization.
@@ -231,7 +279,7 @@ public class TagMap extends AbstractMap<String, String> {
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.append("TagMap[");
         boolean first = true;
-        for (java.util.Map.Entry<String, String> e : entrySet()) {
+        for (Map.Entry<String, String> e : entrySet()) {
             if (!first) {
                 stringBuilder.append(',');
             }
diff --git a/src/org/openstreetmap/josm/data/osm/Tagged.java b/src/org/openstreetmap/josm/data/osm/Tagged.java
index fb9cf44..80f22af 100644
--- a/src/org/openstreetmap/josm/data/osm/Tagged.java
+++ b/src/org/openstreetmap/josm/data/osm/Tagged.java
@@ -34,6 +34,16 @@ public interface Tagged {
     void put(String key, String value);
 
     /**
+     * Sets a key/value pairs
+     *
+     * @param tag The tag to set.
+     * @since 10736
+     */
+    default void put(Tag tag) {
+        put(tag.getKey(), tag.getValue());
+    }
+
+    /**
      * Replies the value of the given key; null, if there is no value for this key
      *
      * @param key the key
diff --git a/src/org/openstreetmap/josm/data/osm/Way.java b/src/org/openstreetmap/josm/data/osm/Way.java
index 17201fd..7f3996d 100644
--- a/src/org/openstreetmap/josm/data/osm/Way.java
+++ b/src/org/openstreetmap/josm/data/osm/Way.java
@@ -447,7 +447,7 @@ public final class Way extends OsmPrimitive implements IWay {
      * @throws IndexOutOfBoundsException if offs is out of bounds
      * @since 1313
      */
-    public void addNode(int offs, Node n) throws IndexOutOfBoundsException {
+    public void addNode(int offs, Node n) {
         if (n == null) return;
 
         boolean locked = writeLock();
diff --git a/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java b/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java
index 0201e44..63ca0b8 100644
--- a/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java
+++ b/src/org/openstreetmap/josm/data/osm/event/DataSetListenerAdapter.java
@@ -9,6 +9,7 @@ package org.openstreetmap.josm.data.osm.event;
  */
 public class DataSetListenerAdapter implements DataSetListener {
 
+    @FunctionalInterface
     public interface Listener {
         void processDatasetEvent(AbstractDatasetChangedEvent event);
     }
diff --git a/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java b/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
index 8e238c5..25ec322 100644
--- a/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
+++ b/src/org/openstreetmap/josm/data/osm/event/SelectionEventManager.java
@@ -87,12 +87,9 @@ public class SelectionEventManager implements SelectionChangedListener {
         }
     }
 
-    private final Runnable edtRunnable = new Runnable() {
-        @Override
-        public void run() {
-            if (selection != null) {
-                fireEvents(inEDTListeners, selection);
-            }
+    private final Runnable edtRunnable = () -> {
+        if (selection != null) {
+            fireEvents(inEDTListeners, selection);
         }
     };
 }
diff --git a/src/org/openstreetmap/josm/data/osm/event/package-info.java b/src/org/openstreetmap/josm/data/osm/event/package-info.java
new file mode 100644
index 0000000..52976e8
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/event/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for OSM dataset events.
+ */
+package org.openstreetmap.josm.data.osm.event;
diff --git a/src/org/openstreetmap/josm/data/osm/history/History.java b/src/org/openstreetmap/josm/data/osm/history/History.java
index a5e92eb..981545d 100644
--- a/src/org/openstreetmap/josm/data/osm/history/History.java
+++ b/src/org/openstreetmap/josm/data/osm/history/History.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.data.osm.history;
 
 import java.text.MessageFormat;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
@@ -20,6 +19,7 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
  */
 public class History {
 
+    @FunctionalInterface
     private interface FilterPredicate {
         boolean matches(HistoryOsmPrimitive primitive);
     }
@@ -68,15 +68,7 @@ public class History {
      */
     public History sortAscending() {
         List<HistoryOsmPrimitive> copy = new ArrayList<>(versions);
-        Collections.sort(
-                copy,
-                new Comparator<HistoryOsmPrimitive>() {
-                    @Override
-                    public int compare(HistoryOsmPrimitive o1, HistoryOsmPrimitive o2) {
-                        return o1.compareTo(o2);
-                    }
-                }
-            );
+        copy.sort(Comparator.naturalOrder());
         return new History(id, type, copy);
     }
 
@@ -86,15 +78,7 @@ public class History {
      */
     public History sortDescending() {
         List<HistoryOsmPrimitive> copy = new ArrayList<>(versions);
-        Collections.sort(
-                copy,
-                new Comparator<HistoryOsmPrimitive>() {
-                    @Override
-                    public int compare(HistoryOsmPrimitive o1, HistoryOsmPrimitive o2) {
-                        return o2.compareTo(o1);
-                    }
-                }
-            );
+        copy.sort(Comparator.reverseOrder());
         return new History(id, type, copy);
     }
 
@@ -104,15 +88,7 @@ public class History {
      * @return a new partial copy of this history, from the given date
      */
     public History from(final Date fromDate) {
-        return filter(
-                this,
-                new FilterPredicate() {
-                    @Override
-                    public boolean matches(HistoryOsmPrimitive primitive) {
-                        return primitive.getTimestamp().compareTo(fromDate) >= 0;
-                    }
-                }
-            );
+        return filter(this, primitive -> primitive.getTimestamp().compareTo(fromDate) >= 0);
     }
 
     /**
@@ -121,15 +97,7 @@ public class History {
      * @return a new partial copy of this history, until the given date
      */
     public History until(final Date untilDate) {
-        return filter(
-                this,
-                new FilterPredicate() {
-                    @Override
-                    public boolean matches(HistoryOsmPrimitive primitive) {
-                        return primitive.getTimestamp().compareTo(untilDate) <= 0;
-                    }
-                }
-            );
+        return filter(this, primitive -> primitive.getTimestamp().compareTo(untilDate) <= 0);
     }
 
     /**
@@ -148,15 +116,7 @@ public class History {
      * @return a new partial copy of this history, from the given version number
      */
     public History from(final long fromVersion) {
-        return filter(
-                this,
-                new FilterPredicate() {
-                    @Override
-                    public boolean matches(HistoryOsmPrimitive primitive) {
-                        return primitive.getVersion() >= fromVersion;
-                    }
-                }
-            );
+        return filter(this, primitive -> primitive.getVersion() >= fromVersion);
     }
 
     /**
@@ -165,15 +125,7 @@ public class History {
      * @return a new partial copy of this history, to the given version number
      */
     public History until(final long untilVersion) {
-        return filter(
-                this,
-                new FilterPredicate() {
-                    @Override
-                    public boolean matches(HistoryOsmPrimitive primitive) {
-                        return primitive.getVersion() <= untilVersion;
-                    }
-                }
-            );
+        return filter(this, primitive -> primitive.getVersion() <= untilVersion);
     }
 
     /**
@@ -192,15 +144,7 @@ public class History {
      * @return a new partial copy of this history, for the given user id
      */
     public History forUserId(final long uid) {
-        return filter(
-                this,
-                new FilterPredicate() {
-                    @Override
-                    public boolean matches(HistoryOsmPrimitive primitive) {
-                        return primitive.getUser() != null && primitive.getUser().getId() == uid;
-                    }
-                }
-            );
+        return filter(this, primitive -> primitive.getUser() != null && primitive.getUser().getId() == uid);
     }
 
     /**
@@ -281,7 +225,7 @@ public class History {
      * @return the history primitive at index <code>idx</code>
      * @throws IndexOutOfBoundsException if index out or range
      */
-    public HistoryOsmPrimitive get(int idx) throws IndexOutOfBoundsException {
+    public HistoryOsmPrimitive get(int idx) {
         if (idx < 0 || idx >= versions.size())
             throw new IndexOutOfBoundsException(MessageFormat.format(
                     "Parameter ''{0}'' in range 0..{1} expected. Got ''{2}''.", "idx", versions.size()-1, idx));
@@ -336,7 +280,7 @@ public class History {
     @Override
     public String toString() {
         StringBuilder result = new StringBuilder("History ["
-                + (type != null ? "type=" + type + ", " : "") + "id=" + id);
+                + (type != null ? ("type=" + type + ", ") : "") + "id=" + id);
         if (versions != null) {
             result.append(", versions=\n");
             for (HistoryOsmPrimitive v : versions) {
diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java b/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java
index 61e0fd1..400154f 100644
--- a/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java
+++ b/src/org/openstreetmap/josm/data/osm/history/HistoryRelation.java
@@ -110,7 +110,7 @@ public class HistoryRelation extends HistoryOsmPrimitive {
      * @return the idx-th member
      * @throws IndexOutOfBoundsException if idx is out of bounds
      */
-    public RelationMemberData getRelationMember(int idx) throws IndexOutOfBoundsException {
+    public RelationMemberData getRelationMember(int idx) {
         if (idx < 0 || idx >= members.size())
             throw new IndexOutOfBoundsException(
                     MessageFormat.format("Parameter {0} not in range 0..{1}. Got ''{2}''.", "idx", members.size(), idx));
diff --git a/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java b/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java
index 564cd88..6f39831 100644
--- a/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java
+++ b/src/org/openstreetmap/josm/data/osm/history/HistoryWay.java
@@ -96,7 +96,7 @@ public class HistoryWay extends HistoryOsmPrimitive {
      * @return the idx-th node id
      * @throws IndexOutOfBoundsException if  idx < 0 || idx >= {#see {@link #getNumNodes()}
      */
-    public long getNodeId(int idx) throws IndexOutOfBoundsException {
+    public long getNodeId(int idx) {
         if (idx < 0 || idx >= nodeIds.size())
             throw new IndexOutOfBoundsException(tr("Parameter {0} not in range 0..{1}. Got ''{2}''.", "idx", nodeIds.size(), idx));
         return nodeIds.get(idx);
diff --git a/src/org/openstreetmap/josm/data/osm/history/package-info.java b/src/org/openstreetmap/josm/data/osm/history/package-info.java
new file mode 100644
index 0000000..7fa39fe
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/history/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for OSM primitives {@link org.openstreetmap.josm.data.osm.history.History history} (edition revisions).
+ */
+package org.openstreetmap.josm.data.osm.history;
diff --git a/src/org/openstreetmap/josm/data/osm/package-info.java b/src/org/openstreetmap/josm/data/osm/package-info.java
new file mode 100644
index 0000000..63ac61f
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/package-info.java
@@ -0,0 +1,15 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for OSM data:<ul>
+ * <li>{@link org.openstreetmap.josm.data.osm.IPrimitive Primitives}:
+ *     {@link org.openstreetmap.josm.data.osm.Node Node},
+ *     {@link org.openstreetmap.josm.data.osm.Way Way},
+ *     {@link org.openstreetmap.josm.data.osm.Relation Relation}</li>
+ * <li>{@link org.openstreetmap.josm.data.osm.User Users}</li>
+ * <li>{@link org.openstreetmap.josm.data.osm.Tag Tags}</li>
+ * <li>{@link org.openstreetmap.josm.data.osm.Changeset Changesets}</li>
+ * <li>Utilities classes</li>
+ * </ul>
+ */
+package org.openstreetmap.josm.data.osm;
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/package-info.java b/src/org/openstreetmap/josm/data/osm/visitor/package-info.java
new file mode 100644
index 0000000..70549b1
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/visitor/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for performing actions on OSM primitives using Visitor design pattern.
+ */
+package org.openstreetmap.josm.data.osm.visitor;
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
index a32d5e9..5ee52f2 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintSettings.java
@@ -150,7 +150,7 @@ public final class MapPaintSettings implements PreferenceChangedListener {
      * @return color for selected objects
      */
     public Color getSelectedColor(int alpha) {
-        return new Color(selectedColor.getRGB() & 0x00ffffff | (alpha << 24), true);
+        return new Color((selectedColor.getRGB() & 0x00ffffff) | (alpha << 24), true);
     }
 
     /**
@@ -175,7 +175,7 @@ public final class MapPaintSettings implements PreferenceChangedListener {
      * @return color for selected relations
      */
     public Color getRelationSelectedColor(int alpha) {
-        return new Color(relationSelectedColor.getRGB() & 0x00ffffff | (alpha << 24), true);
+        return new Color((relationSelectedColor.getRGB() & 0x00ffffff) | (alpha << 24), true);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
new file mode 100644
index 0000000..3acae15
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/RenderBenchmarkCollector.java
@@ -0,0 +1,152 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm.visitor.paint;
+
+import java.io.PrintStream;
+import java.util.List;
+import java.util.function.Supplier;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer.StyleRecord;
+import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * This class is notified of the various stages of a render pass.
+ *
+ * @author Michael Zangl
+ * @since 10697
+ */
+public class RenderBenchmarkCollector {
+    /**
+     * Notified when the renderer method starts preparing the data
+     * @param circum The current circum of the view.
+     */
+    public void renderStart(double circum) {
+        // nop
+    }
+
+    /**
+     * Notified when the renderer method starts sorting the styles
+     * @return <code>true</code> if the renderer should continue to render
+     */
+    public boolean renderSort() {
+        // nop
+        return true;
+    }
+
+    /**
+     * Notified when the renderer method starts drawing
+     * @param allStyleElems All the elements that are painted.
+     * @return <code>true</code> if the renderer should continue to render
+     */
+    public boolean renderDraw(List<StyleRecord> allStyleElems) {
+        // nop
+        return true;
+    }
+
+    /**
+     * Notified when the render method is done.
+     */
+    public void renderDone() {
+     // nop
+    }
+
+    /**
+     * A benchmark implementation that captures the times
+     * @author Michael Zangl
+     */
+    public static class CapturingBenchmark extends RenderBenchmarkCollector {
+        protected long timeStart;
+        protected long timeGenerateDone;
+        protected long timeSortingDone;
+        protected long timeFinished;
+
+        @Override
+        public void renderStart(double circum) {
+            timeStart = System.currentTimeMillis();
+            super.renderStart(circum);
+        }
+
+        @Override
+        public boolean renderSort() {
+            timeGenerateDone = System.currentTimeMillis();
+            return super.renderSort();
+        }
+
+        @Override
+        public boolean renderDraw(List<StyleRecord> allStyleElems) {
+            timeSortingDone = System.currentTimeMillis();
+            return super.renderDraw(allStyleElems);
+        }
+
+        /**
+         * Get the time needed for generating the styles
+         * @return The time in ms
+         */
+        public long getGenerateTime() {
+            return timeGenerateDone - timeStart;
+        }
+
+        /**
+         * Get the time needed for computing the draw order
+         * @return The time in ms
+         */
+        public long getSortTime() {
+            return timeSortingDone - timeGenerateDone;
+        }
+
+        @Override
+        public void renderDone() {
+            timeFinished = System.currentTimeMillis();
+            super.renderDone();
+        }
+
+        /**
+         * Get the draw time
+         * @return The time in ms
+         */
+        public long getDrawTime() {
+            return timeFinished - timeGenerateDone;
+        }
+    }
+
+    /**
+     * A special version of the benchmark class that logs the output to stderr.
+     * @author Michael Zangl
+     */
+    public static class LoggingBenchmark extends RenderBenchmarkCollector.CapturingBenchmark {
+        private final PrintStream outStream = System.err;
+        private double circum;
+
+        @Override
+        public void renderStart(double circum) {
+            this.circum = circum;
+            super.renderStart(circum);
+            outStream.print("BENCHMARK: rendering ");
+        }
+
+        @Override
+        public boolean renderDraw(List<StyleRecord> allStyleElems) {
+            boolean res = super.renderDraw(allStyleElems);
+            outStream.print("phase 1 (calculate styles): " + Utils.getDurationString(timeSortingDone - timeStart));
+            return res;
+        }
+
+        @Override
+        public void renderDone() {
+            super.renderDone();
+            outStream.println("; phase 2 (draw): " + Utils.getDurationString(timeFinished - timeGenerateDone) +
+                    "; total: " + Utils.getDurationString(timeFinished - timeStart) +
+                    " (scale: " + circum + " zoom level: " + Selector.GeneralSelector.scale2level(circum) + ')');
+        }
+    }
+
+    /**
+     * A supplier that gets the default benchmark class.
+     * @return A supplier that returns a nop or a logging benchmark.
+     */
+    public static Supplier<RenderBenchmarkCollector> defaultBenchmarkSupplier() {
+        return () -> Main.isTraceEnabled() || Main.pref.getBoolean("mappaint.render.benchmark", false)
+                ? new LoggingBenchmark() : new RenderBenchmarkCollector();
+    }
+}
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java
index 7744937..dc52af1 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/Rendering.java
@@ -6,7 +6,10 @@ import org.openstreetmap.josm.data.osm.DataSet;
 
 /**
  * <p>An object which can render data provided by a {@link DataSet}.</p>
+ * @since  4087 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface Rendering {
     /**
      * <p>Renders the OSM data in {@code data}</p>
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 bf5ddcf..55405c7 100644
--- a/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
@@ -36,6 +36,7 @@ import java.util.NoSuchElementException;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ForkJoinTask;
 import java.util.concurrent.RecursiveTask;
+import java.util.function.Supplier;
 
 import javax.swing.AbstractButton;
 import javax.swing.FocusManager;
@@ -62,7 +63,6 @@ import org.openstreetmap.josm.gui.mappaint.ElemStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.StyleElementList;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
-import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
 import org.openstreetmap.josm.gui.mappaint.styleelement.AreaElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement;
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.HorizontalTextAlignment;
@@ -191,7 +191,7 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         }
     }
 
-    private static class StyleRecord implements Comparable<StyleRecord> {
+    public static class StyleRecord implements Comparable<StyleRecord> {
         private final StyleElement style;
         private final OsmPrimitive osm;
         private final int flags;
@@ -225,9 +225,9 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 return dz;
 
             // simple node on top of icons and shapes
-            if (this.style == NodeElement.SIMPLE_NODE_ELEMSTYLE && other.style != NodeElement.SIMPLE_NODE_ELEMSTYLE)
+            if (NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(this.style) && !NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(other.style))
                 return 1;
-            if (this.style != NodeElement.SIMPLE_NODE_ELEMSTYLE && other.style == NodeElement.SIMPLE_NODE_ELEMSTYLE)
+            if (!NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(this.style) && NodeElement.SIMPLE_NODE_ELEMSTYLE.equals(other.style))
                 return -1;
 
             // newer primitives to the front
@@ -239,35 +239,16 @@ public class StyledMapRenderer extends AbstractMapRenderer {
 
             return Float.compare(this.style.objectZIndex, other.style.objectZIndex);
         }
-    }
-
-    /**
-     * Saves benchmark data for tests.
-     */
-    public static class BenchmarkData {
-        public long generateTime;
-        public long sortTime;
-        public long drawTime;
-        public Map<Class<? extends StyleElement>, Integer> styleElementCount;
-        public boolean skipDraw;
-
-        private void recordElementStats(List<StyleRecord> srs) {
-            styleElementCount = new HashMap<>();
-            for (StyleRecord r : srs) {
-                Class<? extends StyleElement> klass = r.style.getClass();
-                Integer count = styleElementCount.get(klass);
-                if (count == null) {
-                    count = 0;
-                }
-                styleElementCount.put(klass, count + 1);
-            }
 
+        /**
+         * Get the style for this style element.
+         * @return The style
+         */
+        public StyleElement getStyle() {
+            return style;
         }
     }
 
-    /* can be set by tests, if detailed benchmark data is requested */
-    public BenchmarkData benchmarkData;
-
     private static Map<Font, Boolean> IS_GLYPH_VECTOR_DOUBLE_TRANSLATION_BUG = new HashMap<>();
 
     /**
@@ -303,7 +284,9 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             GlyphVector gv = font.createGlyphVector(frc, "x");
             gv.setGlyphTransform(0, AffineTransform.getTranslateInstance(1000, 1000));
             Shape shape = gv.getGlyphOutline(0);
-            Main.trace("#10446: shape: "+shape.getBounds());
+            if (Main.isTraceEnabled()) {
+                Main.trace("#10446: shape: "+shape.getBounds());
+            }
             // x is about 1000 on normal stystems and about 2000 when the bug occurs
             int x = shape.getBounds().x;
             boolean isBug = x > 1500;
@@ -371,6 +354,8 @@ public class StyledMapRenderer extends AbstractMapRenderer {
     private boolean leftHandTraffic;
     private Object antialiasing;
 
+    private Supplier<RenderBenchmarkCollector> benchmarkFactory = RenderBenchmarkCollector.defaultBenchmarkSupplier();
+
     /**
      * Constructs a new {@code StyledMapRenderer}.
      *
@@ -1899,24 +1884,26 @@ public class StyledMapRenderer extends AbstractMapRenderer {
         }
     }
 
+    /**
+     * Sets the factory that creates the benchmark data receivers.
+     * @param benchmarkFactory The factory.
+     * @since 10697
+     */
+    public void setBenchmarkFactory(Supplier<RenderBenchmarkCollector> benchmarkFactory) {
+        this.benchmarkFactory = benchmarkFactory;
+    }
+
     @Override
     public void render(final DataSet data, boolean renderVirtualNodes, Bounds bounds) {
+        RenderBenchmarkCollector benchmark = benchmarkFactory.get();
         BBox bbox = bounds.toBBox();
         getSettings(renderVirtualNodes);
-        boolean benchmarkOutput = Main.isTraceEnabled() || Main.pref.getBoolean("mappaint.render.benchmark", false);
-        boolean benchmark = benchmarkOutput || benchmarkData != null;
 
         data.getReadLock().lock();
         try {
             highlightWaySegments = data.getHighlightedWaySegments();
 
-            long timeStart = 0, timeGenerateDone = 0, timeSortingDone = 0, timeFinished;
-            if (benchmark) {
-                timeStart = System.currentTimeMillis();
-                if (benchmarkOutput) {
-                    System.err.print("BENCHMARK: rendering ");
-                }
-            }
+            benchmark.renderStart(circum);
 
             List<Node> nodes = data.searchNodes(bbox);
             List<Way> ways = data.searchWays(bbox);
@@ -1934,25 +1921,14 @@ public class StyledMapRenderer extends AbstractMapRenderer {
             THREAD_POOL.invoke(new ComputeStyleListWorker(new CompositeList<>(nodes, ways), allStyleElems,
                     Math.max(100, (nodes.size() + ways.size()) / THREAD_POOL.getParallelism() / 3)));
 
-            if (benchmark) {
-                timeGenerateDone = System.currentTimeMillis();
-                if (benchmarkOutput) {
-                    System.err.print("phase 1 (calculate styles): " + Utils.getDurationString(timeGenerateDone - timeStart));
-                }
-                if (benchmarkData != null) {
-                    benchmarkData.generateTime = timeGenerateDone - timeStart;
-                }
+            if (!benchmark.renderSort()) {
+                return;
             }
 
             Collections.sort(allStyleElems); // TODO: try parallel sort when switching to Java 8
 
-            if (benchmarkData != null) {
-                timeSortingDone = System.currentTimeMillis();
-                benchmarkData.sortTime = timeSortingDone - timeGenerateDone;
-                if (benchmarkData.skipDraw) {
-                    benchmarkData.recordElementStats(allStyleElems);
-                    return;
-                }
+            if (!benchmark.renderDraw(allStyleElems)) {
+                return;
             }
 
             for (StyleRecord r : allStyleElems) {
@@ -1966,20 +1942,9 @@ public class StyledMapRenderer extends AbstractMapRenderer {
                 );
             }
 
-            if (benchmark) {
-                timeFinished = System.currentTimeMillis();
-                if (benchmarkData != null) {
-                    benchmarkData.drawTime = timeFinished - timeGenerateDone;
-                    benchmarkData.recordElementStats(allStyleElems);
-                }
-                if (benchmarkOutput) {
-                    System.err.println("; phase 2 (draw): " + Utils.getDurationString(timeFinished - timeGenerateDone) +
-                        "; total: " + Utils.getDurationString(timeFinished - timeStart) +
-                        " (scale: " + circum + " zoom level: " + Selector.GeneralSelector.scale2level(circum) + ')');
-                }
-            }
-
             drawVirtualNodes(data, bbox);
+
+            benchmark.renderDone();
         } finally {
             data.getReadLock().unlock();
         }
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/package-info.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/package-info.java
new file mode 100644
index 0000000..3111f66
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/package-info.java
@@ -0,0 +1,8 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for painting (rendering) OSM primitives on the map. Two renderers are builtin:
+ * {@link org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer StyledMapRenderer} and
+ * {@link org.openstreetmap.josm.data.osm.visitor.paint.WireframeMapRenderer WireframeMapRenderer}.
+ */
+package org.openstreetmap.josm.data.osm.visitor.paint;
diff --git a/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/package-info.java b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/package-info.java
new file mode 100644
index 0000000..b6dc6f5
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/package-info.java
@@ -0,0 +1,7 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for painting and caching
+ * {@link org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon Multipolygon} relations.
+ */
+package org.openstreetmap.josm.data.osm.visitor.paint.relations;
diff --git a/src/org/openstreetmap/josm/data/preferences/package-info.java b/src/org/openstreetmap/josm/data/preferences/package-info.java
new file mode 100644
index 0000000..bb65ef7
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/preferences/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for storing JOSM user preferences.
+ */
+package org.openstreetmap.josm.data.preferences;
diff --git a/src/org/openstreetmap/josm/data/projection/AbstractProjection.java b/src/org/openstreetmap/josm/data/projection/AbstractProjection.java
index 91f17c9..c9a5ebf 100644
--- a/src/org/openstreetmap/josm/data/projection/AbstractProjection.java
+++ b/src/org/openstreetmap/josm/data/projection/AbstractProjection.java
@@ -36,10 +36,18 @@ public abstract class AbstractProjection implements Projection {
 
     private volatile ProjectionBounds projectionBoundsBox;
 
+    /**
+     * Get the base ellipsoid that this projection uses.
+     * @return The {@link Ellipsoid}
+     */
     public final Ellipsoid getEllipsoid() {
         return ellps;
     }
 
+    /**
+     * Gets the datum this projection is based on.
+     * @return The datum
+     */
     public final Datum getDatum() {
         return datum;
     }
@@ -52,14 +60,26 @@ public abstract class AbstractProjection implements Projection {
         return proj;
     }
 
+    /**
+     * Gets an east offset that gets applied when converting the coordinate
+     * @return The offset to apply in meter
+     */
     public final double getFalseEasting() {
         return x0;
     }
 
+    /**
+     * Gets an north offset that gets applied when converting the coordinate
+     * @return The offset to apply in meter
+     */
     public final double getFalseNorthing() {
         return y0;
     }
 
+    /**
+     * Gets the meridian that this projection is centered on.
+     * @return The longitude of the meridian.
+     */
     public final double getCentralMeridian() {
         return lon0;
     }
@@ -75,7 +95,7 @@ public abstract class AbstractProjection implements Projection {
      * always given in meters, which means the preliminary projection result will
      * be in meters as well. This factor is used to convert to the intended units
      * of east/north coordinates (e.g. feet in the US).
-     * 
+     *
      * For geographic coordinate systems, the preliminary "projection" result will
      * be in degrees, so there is no reason to convert anything and this factor
      * will by 1 by default.
diff --git a/src/org/openstreetmap/josm/data/projection/CustomProjection.java b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
index 8ffbe0b..6574b0f 100644
--- a/src/org/openstreetmap/josm/data/projection/CustomProjection.java
+++ b/src/org/openstreetmap/josm/data/projection/CustomProjection.java
@@ -415,19 +415,19 @@ public class CustomProjection extends AbstractProjection {
             double a = parseDouble(s, Param.a.key);
             if (parameters.get(Param.es.key) != null) {
                 double es = parseDouble(parameters, Param.es.key);
-                return Ellipsoid.create_a_es(a, es);
+                return Ellipsoid.createAes(a, es);
             }
             if (parameters.get(Param.rf.key) != null) {
                 double rf = parseDouble(parameters, Param.rf.key);
-                return Ellipsoid.create_a_rf(a, rf);
+                return Ellipsoid.createArf(a, rf);
             }
             if (parameters.get(Param.f.key) != null) {
                 double f = parseDouble(parameters, Param.f.key);
-                return Ellipsoid.create_a_f(a, f);
+                return Ellipsoid.createAf(a, f);
             }
             if (parameters.get(Param.b.key) != null) {
                 double b = parseDouble(parameters, Param.b.key);
-                return Ellipsoid.create_a_b(a, b);
+                return Ellipsoid.createAb(a, b);
             }
         }
         if (parameters.containsKey(Param.a.key) ||
diff --git a/src/org/openstreetmap/josm/data/projection/Ellipsoid.java b/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
index 57035cb..4ea41db 100644
--- a/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
+++ b/src/org/openstreetmap/josm/data/projection/Ellipsoid.java
@@ -16,90 +16,90 @@ public final class Ellipsoid {
     /**
      * Airy 1830
      */
-    public static final Ellipsoid Airy = Ellipsoid.create_a_b(6377563.396, 6356256.910);
+    public static final Ellipsoid Airy = Ellipsoid.createAb(6377563.396, 6356256.910);
 
     /**
      * Modified Airy 1849
      */
-    public static final Ellipsoid AiryMod = Ellipsoid.create_a_b(6377340.189, 6356034.446);
+    public static final Ellipsoid AiryMod = Ellipsoid.createAb(6377340.189, 6356034.446);
 
     /**
      * Australian National Spheroid (Australian Natl & S. Amer. 1969)
      * same as GRS67 Modified
      */
-    public static final Ellipsoid AustSA = Ellipsoid.create_a_rf(6378160.0, 298.25);
+    public static final Ellipsoid AustSA = Ellipsoid.createArf(6378160.0, 298.25);
 
     /**
      * Bessel 1841 ellipsoid
      */
-    public static final Ellipsoid Bessel1841 = Ellipsoid.create_a_rf(6377397.155, 299.1528128);
+    public static final Ellipsoid Bessel1841 = Ellipsoid.createArf(6377397.155, 299.1528128);
 
     /**
      * Bessel 1841 (Namibia)
      */
-    public static final Ellipsoid BesselNamibia = Ellipsoid.create_a_rf(6377483.865, 299.1528128);
+    public static final Ellipsoid BesselNamibia = Ellipsoid.createArf(6377483.865, 299.1528128);
 
     /**
      * Clarke 1866 ellipsoid
      */
-    public static final Ellipsoid Clarke1866 = Ellipsoid.create_a_b(6378206.4, 6356583.8);
+    public static final Ellipsoid Clarke1866 = Ellipsoid.createAb(6378206.4, 6356583.8);
 
     /**
      * Clarke 1880 (modified)
      */
-    public static final Ellipsoid Clarke1880 = Ellipsoid.create_a_rf(6378249.145, 293.4663);
+    public static final Ellipsoid Clarke1880 = Ellipsoid.createArf(6378249.145, 293.4663);
 
     /**
      * Clarke 1880 IGN (French national geographic institute)
      */
-    public static final Ellipsoid ClarkeIGN = Ellipsoid.create_a_b(6378249.2, 6356515.0);
+    public static final Ellipsoid ClarkeIGN = Ellipsoid.createAb(6378249.2, 6356515.0);
 
     /**
      * Everest (Sabah & Sarawak)
      */
-    public static final Ellipsoid EverestSabahSarawak = Ellipsoid.create_a_rf(6377298.556, 300.8017);
+    public static final Ellipsoid EverestSabahSarawak = Ellipsoid.createArf(6377298.556, 300.8017);
 
     /**
      * GRS67 ellipsoid
      */
-    public static final Ellipsoid GRS67 = Ellipsoid.create_a_rf(6378160.0, 298.247167427);
+    public static final Ellipsoid GRS67 = Ellipsoid.createArf(6378160.0, 298.247167427);
 
     /**
      * GRS80 ellipsoid
      */
-    public static final Ellipsoid GRS80 = Ellipsoid.create_a_rf(6378137.0, 298.257222101);
+    public static final Ellipsoid GRS80 = Ellipsoid.createArf(6378137.0, 298.257222101);
 
     /**
      * Hayford's ellipsoid 1909 (ED50 system)
      * Also known as International 1924
      * Proj.4 code: intl
      */
-    public static final Ellipsoid Hayford = Ellipsoid.create_a_rf(6378388.0, 297.0);
+    public static final Ellipsoid Hayford = Ellipsoid.createArf(6378388.0, 297.0);
 
     /**
      * Helmert 1906
      */
-    public static final Ellipsoid Helmert = Ellipsoid.create_a_rf(6378200.0, 298.3);
+    public static final Ellipsoid Helmert = Ellipsoid.createArf(6378200.0, 298.3);
 
     /**
      * Krassowsky 1940 ellipsoid
      */
-    public static final Ellipsoid Krassowsky = Ellipsoid.create_a_rf(6378245.0, 298.3);
+    public static final Ellipsoid Krassowsky = Ellipsoid.createArf(6378245.0, 298.3);
 
     /**
      * WGS66 ellipsoid
      */
-    public static final Ellipsoid WGS66 = Ellipsoid.create_a_rf(6378145.0, 298.25);
+    public static final Ellipsoid WGS66 = Ellipsoid.createArf(6378145.0, 298.25);
 
     /**
      * WGS72 ellipsoid
      */
-    public static final Ellipsoid WGS72 = Ellipsoid.create_a_rf(6378135.0, 298.26);
+    public static final Ellipsoid WGS72 = Ellipsoid.createArf(6378135.0, 298.26);
 
     /**
      * WGS84 ellipsoid
      */
-    public static final Ellipsoid WGS84 = Ellipsoid.create_a_rf(6378137.0, 298.257223563);
+    public static final Ellipsoid WGS84 = Ellipsoid.createArf(6378137.0, 298.257223563);
 
     /**
      * half long axis
@@ -161,7 +161,7 @@ public final class Ellipsoid {
      * @param b semiminor radius of the ellipsoid axis (in meters)
      * @return the new ellipsoid
      */
-    public static Ellipsoid create_a_b(double a, double b) {
+    public static Ellipsoid createAb(double a, double b) {
         double e2 = (a*a - b*b) / (a*a);
         double e = Math.sqrt(e2);
         double eb2 = e2 / (1.0 - e2);
@@ -175,7 +175,7 @@ public final class Ellipsoid {
      * @param es first eccentricity squared
      * @return the new ellipsoid
      */
-    public static Ellipsoid create_a_es(double a, double es) {
+    public static Ellipsoid createAes(double a, double es) {
         double b = a * Math.sqrt(1.0 - es);
         double e = Math.sqrt(es);
         double eb2 = es / (1.0 - es);
@@ -189,7 +189,7 @@ public final class Ellipsoid {
      * @param f flattening ( = (a - b) / a)
      * @return the new ellipsoid
      */
-    public static Ellipsoid create_a_f(double a, double f) {
+    public static Ellipsoid createAf(double a, double f) {
         double b = a * (1.0 - f);
         double e2 = f * (2 - f);
         double e = Math.sqrt(e2);
@@ -204,8 +204,8 @@ public final class Ellipsoid {
      * @param rf inverse flattening
      * @return the new ellipsoid
      */
-    public static Ellipsoid create_a_rf(double a, double rf) {
-        return create_a_f(a, 1.0 / rf);
+    public static Ellipsoid createArf(double a, double rf) {
+        return createAf(a, 1.0 / rf);
     }
 
     @Override
@@ -321,7 +321,7 @@ public final class Ellipsoid {
      * @param xyz the coordinates in meters (X, Y, Z)
      * @return The corresponding latitude and longitude in degrees
      */
-    public LatLon cart2LatLon(double[] xyz) {
+    public LatLon cart2LatLon(double ... xyz) {
         return cart2LatLon(xyz, 1e-11);
     }
 
diff --git a/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java b/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java
index 49cbe02..6ea8ab2 100644
--- a/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java
+++ b/src/org/openstreetmap/josm/data/projection/ProjectionChangeListener.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.projection;
 
+ at FunctionalInterface
 public interface ProjectionChangeListener {
     void projectionChanged(Projection oldValue, Projection newValue);
 }
diff --git a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
index 0e797f5..5a140cb 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2GridShiftFile.java
@@ -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 static 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/NTV2SubGrid.java b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
index d2c576b..2654b77 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/NTV2SubGrid.java
@@ -280,7 +280,7 @@ public class NTV2SubGrid implements Serializable {
      * Set an array of Sub Grids of this sub grid
      * @param subGrid subgrids
      */
-    public void setSubGridArray(NTV2SubGrid[] subGrid) {
+    public void setSubGridArray(NTV2SubGrid ... subGrid) {
         this.subGrid = Utils.copyArray(subGrid);
     }
 
diff --git a/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java b/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java
index efd967b..65c28d7 100644
--- a/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java
+++ b/src/org/openstreetmap/josm/data/projection/datum/SevenParameterDatum.java
@@ -12,7 +12,7 @@ import org.openstreetmap.josm.data.projection.Ellipsoid;
  * - general rotation
  * - scale
  *
- * This method is described by EPSG as EPSG::9606.
+ * This method is described by EPSG as EPSG:9606.
  * Also known as Bursa-Wolf.
  */
 public class SevenParameterDatum extends AbstractDatum {
diff --git a/src/org/openstreetmap/josm/data/projection/datum/package-info.java b/src/org/openstreetmap/josm/data/projection/datum/package-info.java
new file mode 100644
index 0000000..7b777a3
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/projection/datum/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for datums used in map projections.
+ */
+package org.openstreetmap.josm.data.projection.datum;
diff --git a/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java b/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java
index 0c0e5e2..065658d 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/AbstractProj.java
@@ -136,7 +136,7 @@ public abstract class AbstractProj implements Proj {
      * @return the latitude of the meridian distance.
      * @throws RuntimeException if the itteration does not converge.
      */
-    protected final double inv_mlfn(double arg) {
+    protected final double invMlfn(double arg) {
         double s, t, phi, k = 1.0/(1.0 - e2);
         int i;
         phi = arg;
diff --git a/src/org/openstreetmap/josm/data/projection/proj/CassiniSoldner.java b/src/org/openstreetmap/josm/data/projection/proj/CassiniSoldner.java
index a472c8d..ca018c7 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/CassiniSoldner.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/CassiniSoldner.java
@@ -78,7 +78,7 @@ public class CassiniSoldner extends AbstractProj {
 
     @Override
     public double[] invproject(double x, double y) {
-        double ph1 = inv_mlfn(ml0 + y);
+        double ph1 = invMlfn(ml0 + y);
         double tn = Math.tan(ph1);
         double t = tn * tn;
         double n = Math.sin(ph1);
diff --git a/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java b/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java
index 07c4b84..9ef881d 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/ICentralMeridianProvider.java
@@ -9,7 +9,10 @@ package org.openstreetmap.josm.data.projection.proj;
  * class does not deal with it.)
  *
  * @see Proj
+ * @since  9532 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ICentralMeridianProvider {
     /**
      * Get the central meridian value as computed during initialization.
diff --git a/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java b/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java
index b2dbcfa..7e1e26a 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/IScaleFactorProvider.java
@@ -9,7 +9,10 @@ package org.openstreetmap.josm.data.projection.proj;
  * class does not deal with it.)
  *
  * @see Proj
+ * @since  9565 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface IScaleFactorProvider {
     /**
      * Get the scale factor.
diff --git a/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java b/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java
index 25fb040..f6106cf 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/ProjFactory.java
@@ -3,7 +3,14 @@ package org.openstreetmap.josm.data.projection.proj;
 
 /**
  * Factory class that provides a Proj instance.
+ * @since  5227 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ProjFactory {
+    /**
+     * Creates a Proj instance.
+     * @return a Proj instance
+     */
     Proj createInstance();
 }
diff --git a/src/org/openstreetmap/josm/data/projection/proj/Sinusoidal.java b/src/org/openstreetmap/josm/data/projection/proj/Sinusoidal.java
index 10ace9f..6b14001 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/Sinusoidal.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/Sinusoidal.java
@@ -42,7 +42,7 @@ public class Sinusoidal extends AbstractProj {
         if (spherical) {
             return new double[]{north, east / cos(north)};
         } else {
-            final double phi = inv_mlfn(north);
+            final double phi = invMlfn(north);
             double s = abs(phi);
             final double lambda;
             if (abs(s - Math.PI / 2) < 1e-10) {
diff --git a/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java b/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java
index 576e1fe..55fba67 100644
--- a/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java
+++ b/src/org/openstreetmap/josm/data/projection/proj/TransverseMercator.java
@@ -155,7 +155,7 @@ public class TransverseMercator extends AbstractProj {
 
     @Override
     public double[] invproject(double x, double y) {
-        double phi = inv_mlfn(ml0 + y);
+        double phi = invMlfn(ml0 + y);
 
         if (Math.abs(phi) >= Math.PI/2) {
             y = y < 0.0 ? -(Math.PI/2) : (Math.PI/2);
diff --git a/src/org/openstreetmap/josm/data/projection/proj/package-info.java b/src/org/openstreetmap/josm/data/projection/proj/package-info.java
new file mode 100644
index 0000000..8c3a194
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/projection/proj/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM map projections implementations.
+ */
+package org.openstreetmap.josm.data.projection.proj;
diff --git a/src/org/openstreetmap/josm/data/validation/OsmValidator.java b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
index 9fdf307..fc4da6b 100644
--- a/src/org/openstreetmap/josm/data/validation/OsmValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/OsmValidator.java
@@ -69,12 +69,16 @@ import org.openstreetmap.josm.tools.Utils;
  *
  * @author Francisco R. Santos <frsantos at gmail.com>
  */
-public class OsmValidator {
+public final class OsmValidator {
+
+    private OsmValidator() {
+        // Hide default constructor for utilities classes
+    }
 
     public static volatile ValidatorLayer errorLayer;
 
     /** The validate action */
-    public ValidateAction validateAction = new ValidateAction();
+    public static final ValidateAction validateAction = new ValidateAction();
 
     /** Grid detail, multiplier of east,north values for valuable cell sizing */
     public static double griddetail;
@@ -149,9 +153,9 @@ public class OsmValidator {
     }
 
     /**
-     * Constructs a new {@code OsmValidator}.
+     * Initializes {@code OsmValidator}.
      */
-    public OsmValidator() {
+    public static void initialize() {
         checkValidatorDir();
         initializeGridDetail();
         loadIgnoredErrors(); //FIXME: load only when needed
@@ -288,7 +292,7 @@ public class OsmValidator {
      * the original value fixed for EPSG:4326 (10000) using heuristics (that is, test&error
      * until most bugs were discovered while keeping the processing time reasonable)
      */
-    public static final void initializeGridDetail() {
+    public static void initializeGridDetail() {
         String code = Main.getProjection().toCode();
         if (Arrays.asList(ProjectionPreference.wgs84.allCodes()).contains(code)) {
             OsmValidator.griddetail = 10000;
diff --git a/src/org/openstreetmap/josm/data/validation/Test.java b/src/org/openstreetmap/josm/data/validation/Test.java
index 75524f8..c6cbff4 100644
--- a/src/org/openstreetmap/josm/data/validation/Test.java
+++ b/src/org/openstreetmap/josm/data/validation/Test.java
@@ -8,6 +8,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
+import java.util.function.Predicate;
 
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
@@ -24,7 +25,6 @@ import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
diff --git a/src/org/openstreetmap/josm/data/validation/TestError.java b/src/org/openstreetmap/josm/data/validation/TestError.java
index 4f74340..d9d86a7 100644
--- a/src/org/openstreetmap/josm/data/validation/TestError.java
+++ b/src/org/openstreetmap/josm/data/validation/TestError.java
@@ -58,8 +58,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
      * @param message The error message
      * @param description The translated description
      * @param descriptionEn The English description
-     * @param primitives The affected primitives
      * @param code The test error reference code
+     * @param primitives The affected primitives
      * @param highlighted OSM primitives to highlight
      */
     public TestError(Test tester, Severity severity, String message, String description, String descriptionEn,
@@ -79,8 +79,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
      * @param tester The tester
      * @param severity The severity of this error
      * @param message The error message
-     * @param primitives The affected primitives
      * @param code The test error reference code
+     * @param primitives The affected primitives
      * @param highlighted OSM primitives to highlight
      */
     public TestError(Test tester, Severity severity, String message, int code, Collection<? extends OsmPrimitive> primitives,
@@ -95,8 +95,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
      * @param message The error message
      * @param description The translated description
      * @param descriptionEn The English description
-     * @param primitives The affected primitives
      * @param code The test error reference code
+     * @param primitives The affected primitives
      */
     public TestError(Test tester, Severity severity, String message, String description, String descriptionEn,
             int code, Collection<? extends OsmPrimitive> primitives) {
@@ -108,8 +108,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
      * @param tester The tester
      * @param severity The severity of this error
      * @param message The error message
-     * @param primitives The affected primitives
      * @param code The test error reference code
+     * @param primitives The affected primitives
      */
     public TestError(Test tester, Severity severity, String message, int code, Collection<? extends OsmPrimitive> primitives) {
         this(tester, severity, message, null, null, code, primitives, primitives);
@@ -120,8 +120,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
      * @param tester The tester
      * @param severity The severity of this error
      * @param message The error message
-     * @param primitive The affected primitive
      * @param code The test error reference code
+     * @param primitive The affected primitive
      */
     public TestError(Test tester, Severity severity, String message, int code, OsmPrimitive primitive) {
         this(tester, severity, message, null, null, code, Collections.singletonList(primitive), Collections
@@ -135,8 +135,8 @@ public class TestError implements Comparable<TestError>, DataSetListener {
      * @param message The error message
      * @param description The translated description
      * @param descriptionEn The English description
-     * @param primitive The affected primitive
      * @param code The test error reference code
+     * @param primitive The affected primitive
      */
     public TestError(Test tester, Severity severity, String message, String description, String descriptionEn,
             int code, OsmPrimitive primitive) {
diff --git a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
index 181b60b..fc87ef0 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/DomainValidator.java
@@ -291,12 +291,14 @@ public final class DomainValidator extends AbstractValidator {
 
     // WARNING: this array MUST be sorted, otherwise it cannot be searched reliably using binary search
     private static final String[] GENERIC_TLDS = new String[] {
-        // Taken from Version 2016071000, Last Updated Sun Jul 10 07:07:02 2016 UTC
+        // Taken from Version 2016081100, Last Updated Thu Aug 11 07:07:01 2016 UTC
         "aaa", // aaa American Automobile Association, Inc.
         "aarp", // aarp AARP
+        "abarth", // abarth Fiat Chrysler Automobiles N.V.
         "abb", // abb ABB Ltd
         "abbott", // abbott Abbott Laboratories, Inc.
         "abbvie", // abbvie AbbVie Inc.
+        "abc", // abc Disney Enterprises, Inc.
         "able", // able Able Inc.
         "abogado", // abogado Top Level Domain Holdings Limited
         "abudhabi", // abudhabi Abu Dhabi Systems and Information Centre
@@ -313,6 +315,7 @@ public final class DomainValidator extends AbstractValidator {
         "aeg", // aeg Aktiebolaget Electrolux
         "aero", // aero Societe Internationale de Telecommunications Aeronautique (SITA INC USA)
         "aetna", // aetna Aetna Life Insurance Company
+        "afamilycompany", // afamilycompany Johnson Shareholdings, Inc.
         "afl", // afl Australian Football League
         "agakhan", // agakhan Fondation Aga Khan (Aga Khan Foundation)
         "agency", // agency Steel Falls, LLC
@@ -321,12 +324,18 @@ public final class DomainValidator extends AbstractValidator {
         "airforce", // airforce United TLD Holdco Ltd.
         "airtel", // airtel Bharti Airtel Limited
         "akdn", // akdn Fondation Aga Khan (Aga Khan Foundation)
+        "alfaromeo", // alfaromeo Fiat Chrysler Automobiles N.V.
         "alibaba", // alibaba Alibaba Group Holding Limited
         "alipay", // alipay Alibaba Group Holding Limited
         "allfinanz", // allfinanz Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
+        "allstate", // allstate Allstate Fire and Casualty Insurance Company
         "ally", // ally Ally Financial Inc.
         "alsace", // alsace REGION D ALSACE
         "alstom", // alstom ALSTOM
+        "americanexpress", // americanexpress American Express Travel Related Services Company, Inc.
+        "americanfamily", // americanfamily AmFam, Inc.
+        "amex", // amex American Express Travel Related Services Company, Inc.
+        "amfam", // amfam AmFam, Inc.
         "amica", // amica Amica Mutual Insurance Company
         "amsterdam", // amsterdam Gemeente Amsterdam
         "analytics", // analytics Campus IP LLC
@@ -344,6 +353,7 @@ public final class DomainValidator extends AbstractValidator {
         "arte", // arte Association Relative à la Télévision Européenne G.E.I.E.
         "asia", // asia DotAsia Organisation Ltd.
         "associates", // associates Baxter Hill, LLC
+        "athleta", // athleta The Gap, Inc.
         "attorney", // attorney United TLD Holdco, Ltd
         "auction", // auction United TLD HoldCo, Ltd.
         "audi", // audi AUDI Aktiengesellschaft
@@ -358,6 +368,8 @@ public final class DomainValidator extends AbstractValidator {
         "azure", // azure Microsoft Corporation
         "baby", // baby Johnson & Johnson Services, Inc.
         "baidu", // baidu Baidu, Inc.
+        "banamex", // banamex Citigroup Inc.
+        "bananarepublic", // bananarepublic The Gap, Inc.
         "band", // band United TLD Holdco, Ltd
         "bank", // bank fTLD Registry Services, LLC
         "bar", // bar Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
@@ -369,14 +381,17 @@ public final class DomainValidator extends AbstractValidator {
         "bauhaus", // bauhaus Werkhaus GmbH
         "bayern", // bayern Bayern Connect GmbH
         "bbc", // bbc British Broadcasting Corporation
+        "bbt", // bbt BB&T Corporation
         "bbva", // bbva BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
         "bcg", // bcg The Boston Consulting Group, Inc.
         "bcn", // bcn Municipi de Barcelona
         "beats", // beats Beats Electronics, LLC
+        "beauty", // beauty L'Oréal
         "beer", // beer Top Level Domain Holdings Limited
         "bentley", // bentley Bentley Motors Limited
         "berlin", // berlin dotBERLIN GmbH & Co. KG
         "best", // best BestTLD Pty Ltd
+        "bestbuy", // bestbuy BBY Solutions, Inc.
         "bet", // bet Afilias plc
         "bharti", // bharti Bharti Enterprises (Holding) Private Limited
         "bible", // bible American Bible Society
@@ -389,6 +404,7 @@ public final class DomainValidator extends AbstractValidator {
         "black", // black Afilias Limited
         "blackfriday", // blackfriday Uniregistry, Corp.
         "blanco", // blanco BLANCO GmbH + Co KG
+        "blockbuster", // blockbuster Dish DBS Corporation
         "blog", // blog Knock Knock WHOIS There, LLC
         "bloomberg", // bloomberg Bloomberg IP Holdings LLC
         "blue", // blue Afilias Limited
@@ -398,10 +414,12 @@ public final class DomainValidator extends AbstractValidator {
         "bnpparibas", // bnpparibas BNP Paribas
         "boats", // boats DERBoats, LLC
         "boehringer", // boehringer Boehringer Ingelheim International GmbH
+        "bofa", // bofa NMS Services, Inc.
         "bom", // bom Núcleo de Informação e Coordenação do Ponto BR - NIC.br
         "bond", // bond Bond University Limited
         "boo", // boo Charleston Road Registry Inc.
         "book", // book Amazon Registry Services, Inc.
+        "booking", // booking Booking.com B.V.
         "boots", // boots THE BOOTS COMPANY PLC
         "bosch", // bosch Robert Bosch GMBH
         "bostik", // bostik Bostik SA
@@ -425,6 +443,7 @@ public final class DomainValidator extends AbstractValidator {
         "cafe", // cafe Pioneer Canyon, LLC
         "cal", // cal Charleston Road Registry Inc.
         "call", // call Amazon Registry Services, Inc.
+        "calvinklein", // calvinklein PVH gTLD Holdings LLC
         "cam", // cam AC Webconnecting Holding B.V.
         "camera", // camera Atomic Maple, LLC
         "camp", // camp Delta Dynamite, LLC
@@ -432,6 +451,7 @@ public final class DomainValidator extends AbstractValidator {
         "canon", // canon Canon Inc.
         "capetown", // capetown ZA Central Registry NPC trading as ZA Central Registry
         "capital", // capital Delta Mill, LLC
+        "capitalone", // capitalone Capital One Financial Corporation
         "car", // car Cars Registry Limited
         "caravan", // caravan Caravan International, Inc.
         "cards", // cards Foggy Hollow, LLC
@@ -448,6 +468,7 @@ public final class DomainValidator extends AbstractValidator {
         "cba", // cba COMMONWEALTH BANK OF AUSTRALIA
         "cbn", // cbn The Christian Broadcasting Network, Inc.
         "cbre", // cbre CBRE, Inc.
+        "cbs", // cbs CBS Domains Inc.
         "ceb", // ceb The Corporate Executive Board Company
         "center", // center Tin Mill, LLC
         "ceo", // ceo CEOTLD Pty Ltd
@@ -463,10 +484,13 @@ public final class DomainValidator extends AbstractValidator {
         "chloe", // chloe Richemont DNS Inc.
         "christmas", // christmas Uniregistry, Corp.
         "chrome", // chrome Charleston Road Registry Inc.
+        "chrysler", // chrysler FCA US LLC.
         "church", // church Holly Fileds, LLC
         "cipriani", // cipriani Hotel Cipriani Srl
         "circle", // circle Amazon Registry Services, Inc.
         "cisco", // cisco Cisco Technology, Inc.
+        "citadel", // citadel Citadel Domain LLC
+        "citi", // citi Citigroup Inc.
         "citic", // citic CITIC Group Corporation
         "city", // city Snow Sky, LLC
         "cityeats", // cityeats Lifestyle Domain Holdings, Inc.
@@ -547,8 +571,12 @@ public final class DomainValidator extends AbstractValidator {
         "direct", // direct Half Trail, LLC
         "directory", // directory Extra Madison, LLC
         "discount", // discount Holly Hill, LLC
+        "discover", // discover Discover Financial Services
+        "dish", // dish Dish DBS Corporation
         "dnp", // dnp Dai Nippon Printing Co., Ltd.
         "docs", // docs Charleston Road Registry Inc.
+        "doctor", // doctor Brice Trail, LLC
+        "dodge", // dodge FCA US LLC.
         "dog", // dog Koko Mill, LLC
         "doha", // doha Communications Regulatory Authority (CRA)
         "domains", // domains Sugar Cross, LLC
@@ -557,7 +585,9 @@ public final class DomainValidator extends AbstractValidator {
         "drive", // drive Charleston Road Registry Inc.
         "dtv", // dtv Dish DBS Corporation
         "dubai", // dubai Dubai Smart Government Department
+        "duck", // duck Johnson Shareholdings, Inc.
         "dunlop", // dunlop The Goodyear Tire & Rubber Company
+        "duns", // duns The Dun & Bradstreet Corporation
         "dupont", // dupont E. I. du Pont de Nemours and Company
         "durban", // durban ZA Central Registry NPC trading as ZA Central Registry
         "dvag", // dvag Deutsche Vermögensberatung Aktiengesellschaft DVAG
@@ -579,6 +609,7 @@ public final class DomainValidator extends AbstractValidator {
         "erni", // erni ERNI Group Holding AG
         "esq", // esq Charleston Road Registry Inc.
         "estate", // estate Trixy Park, LLC
+        "esurance", // esurance Esurance Insurance Company
         "eurovision", // eurovision European Broadcasting Union (EBU)
         "eus", // eus Puntueus Fundazioa
         "events", // events Pioneer Maple, LLC
@@ -601,7 +632,10 @@ public final class DomainValidator extends AbstractValidator {
         "fast", // fast Amazon Registry Services, Inc.
         "fedex", // fedex Federal Express Corporation
         "feedback", // feedback Top Level Spectrum, Inc.
+        "ferrari", // ferrari Fiat Chrysler Automobiles N.V.
         "ferrero", // ferrero Ferrero Trading Lux S.A.
+        "fiat", // fiat Fiat Chrysler Automobiles N.V.
+        "fidelity", // fidelity Fidelity Brokerage Services LLC
         "film", // film Motion Picture Domain Registry Pty Ltd
         "final", // final Núcleo de Informação e Coordenação do Ponto BR - NIC.br
         "finance", // finance Cotton Cypress, LLC
@@ -618,7 +652,6 @@ public final class DomainValidator extends AbstractValidator {
         "flir", // flir FLIR Systems, Inc.
         "florist", // florist Half Cypress, LLC
         "flowers", // flowers Uniregistry, Corp.
-        "flsmidth", // flsmidth FLSmidth A/S
         "fly", // fly Charleston Road Registry Inc.
         "foo", // foo Charleston Road Registry Inc.
         "foodnetwork", // foodnetwork Lifestyle Domain Holdings, Inc.
@@ -636,6 +669,7 @@ public final class DomainValidator extends AbstractValidator {
         "frontier", // frontier Frontier Communications Corporation
         "ftr", // ftr Frontier Communications Corporation
         "fujitsu", // fujitsu Fujitsu Limited
+        "fujixerox", // fujixerox Xerox DNHC LLC
         "fund", // fund John Castle, LLC
         "furniture", // furniture Lone Fields, LLC
         "futbol", // futbol United TLD Holdco, Ltd.
@@ -646,6 +680,7 @@ public final class DomainValidator extends AbstractValidator {
         "gallup", // gallup Gallup, Inc.
         "game", // game Uniregistry, Corp.
         "games", // games United TLD Holdco Ltd.
+        "gap", // gap The Gap, Inc.
         "garden", // garden Top Level Domain Holdings Limited
         "gbiz", // gbiz Charleston Road Registry Inc.
         "gdn", // gdn Joint Stock Company "Navigation-information systems"
@@ -657,6 +692,7 @@ public final class DomainValidator extends AbstractValidator {
         "gifts", // gifts Goose Sky, LLC
         "gives", // gives United TLD Holdco Ltd.
         "giving", // giving Giving Limited
+        "glade", // glade Johnson Shareholdings, Inc.
         "glass", // glass Black Cover, LLC
         "gle", // gle Charleston Road Registry Inc.
         "global", // global Dot Global Domain Registry Limited
@@ -670,6 +706,7 @@ public final class DomainValidator extends AbstractValidator {
         "goldpoint", // goldpoint YODOBASHI CAMERA CO.,LTD.
         "golf", // golf Lone Falls, LLC
         "goo", // goo NTT Resonant Inc.
+        "goodhands", // goodhands Allstate Fire and Casualty Insurance Company
         "goodyear", // goodyear The Goodyear Tire & Rubber Company
         "goog", // goog Charleston Road Registry Inc.
         "google", // google Charleston Road Registry Inc.
@@ -708,22 +745,29 @@ public final class DomainValidator extends AbstractValidator {
         "holdings", // holdings John Madison, LLC
         "holiday", // holiday Goose Woods, LLC
         "homedepot", // homedepot Homer TLC, Inc.
+        "homegoods", // homegoods The TJX Companies, Inc.
         "homes", // homes DERHomes, LLC
+        "homesense", // homesense The TJX Companies, Inc.
         "honda", // honda Honda Motor Co., Ltd.
+        "honeywell", // honeywell Honeywell GTLD LLC
         "horse", // horse Top Level Domain Holdings Limited
         "host", // host DotHost Inc.
         "hosting", // hosting Uniregistry, Corp.
+        "hot", // hot Amazon Registry Services, Inc.
         "hoteles", // hoteles Travel Reservations SRL
         "hotmail", // hotmail Microsoft Corporation
         "house", // house Sugar Park, LLC
         "how", // how Charleston Road Registry Inc.
         "hsbc", // hsbc HSBC Holdings PLC
         "htc", // htc HTC corporation
+        "hughes", // hughes Hughes Satellite Systems Corporation
+        "hyatt", // hyatt Hyatt GTLD, L.L.C.
         "hyundai", // hyundai Hyundai Motor Company
         "ibm", // ibm International Business Machines Corporation
         "icbc", // icbc Industrial and Commercial Bank of China Limited
         "ice", // ice IntercontinentalExchange, Inc.
         "icu", // icu One.com A/S
+        "ieee", // ieee IEEE Global LLC
         "ifm", // ifm ifm electronic gmbh
         "iinet", // iinet Connect West Pty. Ltd.
         "ikano", // ikano Ikano S.A.
@@ -740,7 +784,9 @@ public final class DomainValidator extends AbstractValidator {
         "insurance", // insurance fTLD Registry Services LLC
         "insure", // insure Pioneer Willow, LLC
         "int", // int Internet Assigned Numbers Authority
+        "intel", // intel Intel Corporation
         "international", // international Wild Way, LLC
+        "intuit", // intuit Intuit Administrative Services, Inc.
         "investments", // investments Holly Glen, LLC
         "ipiranga", // ipiranga Ipiranga Produtos de Petroleo S.A.
         "irish", // irish Dot-Irish LLC
@@ -755,6 +801,7 @@ public final class DomainValidator extends AbstractValidator {
         "java", // java Oracle Corporation
         "jcb", // jcb JCB Co., Ltd.
         "jcp", // jcp JCP Media, Inc.
+        "jeep", // jeep FCA US LLC.
         "jetzt", // jetzt New TLD Company AB
         "jewelry", // jewelry Wild Bloom, LLC
         "jlc", // jlc Richemont DNS Inc.
@@ -768,6 +815,7 @@ public final class DomainValidator extends AbstractValidator {
         "jpmorgan", // jpmorgan JPMorgan Chase & Co.
         "jprs", // jprs Japan Registry Services Co., Ltd.
         "juegos", // juegos Uniregistry, Corp.
+        "juniper", // juniper JUNIPER NETWORKS, INC.
         "kaufen", // kaufen United TLD Holdco Ltd.
         "kddi", // kddi KDDI CORPORATION
         "kerryhotels", // kerryhotels Kerry Trading Co. Limited
@@ -790,20 +838,25 @@ public final class DomainValidator extends AbstractValidator {
         "kuokgroup", // kuokgroup Kerry Trading Co. Limited
         "kyoto", // kyoto Academic Institution: Kyoto Jyoho Gakuen
         "lacaixa", // lacaixa CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
+        "ladbrokes", // ladbrokes LADBROKES INTERNATIONAL PLC
         "lamborghini", // lamborghini Automobili Lamborghini S.p.A.
         "lamer", // lamer The Estée Lauder Companies Inc.
         "lancaster", // lancaster LANCASTER
+        "lancia", // lancia Fiat Chrysler Automobiles N.V.
+        "lancome", // lancome L'Oréal
         "land", // land Pine Moon, LLC
         "landrover", // landrover Jaguar Land Rover Ltd
         "lanxess", // lanxess LANXESS Corporation
         "lasalle", // lasalle Jones Lang LaSalle Incorporated
         "lat", // lat ECOM-LAC Federación de Latinoamérica y el Caribe para Internet y el Comercio Electrónico
+        "latino", // latino Dish DBS Corporation
         "latrobe", // latrobe La Trobe University
         "law", // law Minds + Machines Group Limited
         "lawyer", // lawyer United TLD Holdco, Ltd
         "lds", // lds IRI Domain Management, LLC
         "lease", // lease Victor Trail, LLC
         "leclerc", // leclerc A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
+        "lefrak", // lefrak LeFrak Organization, Inc.
         "legal", // legal Blue Falls, LLC
         "lego", // lego LEGO Juris A/S
         "lexus", // lexus TOYOTA MOTOR CORPORATION
@@ -815,6 +868,7 @@ public final class DomainValidator extends AbstractValidator {
         "lifestyle", // lifestyle Lifestyle Domain Holdings, Inc.
         "lighting", // lighting John McCook, LLC
         "like", // like Amazon Registry Services, Inc.
+        "lilly", // lilly Eli Lilly and Company
         "limited", // limited Big Fest, LLC
         "limo", // limo Hidden Frostbite, LLC
         "lincoln", // lincoln Ford Motor Company
@@ -828,16 +882,21 @@ public final class DomainValidator extends AbstractValidator {
         "loans", // loans June Woods, LLC
         "locker", // locker Dish DBS Corporation
         "locus", // locus Locus Analytics LLC
+        "loft", // loft Annco, Inc.
         "lol", // lol Uniregistry, Corp.
         "london", // london Dot London Domains Limited
         "lotte", // lotte Lotte Holdings Co., Ltd.
         "lotto", // lotto Afilias Limited
         "love", // love Merchant Law Group LLP
+        "lpl", // lpl LPL Holdings, Inc.
+        "lplfinancial", // lplfinancial LPL Holdings, Inc.
         "ltd", // ltd Over Corner, LLC
         "ltda", // ltda InterNetX Corp.
+        "lundbeck", // lundbeck H. Lundbeck A/S
         "lupin", // lupin LUPIN LIMITED
         "luxe", // luxe Top Level Domain Holdings Limited
         "luxury", // luxury Luxury Partners LLC
+        "macys", // macys Macys, Inc.
         "madrid", // madrid Comunidad de Madrid
         "maif", // maif Mutuelle Assurance Instituteur France (MAIF)
         "maison", // maison Victor Frostbite, LLC
@@ -849,8 +908,13 @@ public final class DomainValidator extends AbstractValidator {
         "marketing", // marketing Fern Pass, LLC
         "markets", // markets DOTMARKETS REGISTRY LTD
         "marriott", // marriott Marriott Worldwide Corporation
+        "marshalls", // marshalls The TJX Companies, Inc.
+        "maserati", // maserati Fiat Chrysler Automobiles N.V.
         "mattel", // mattel Mattel Sites, Inc.
         "mba", // mba Lone Hollow, LLC
+        "mcd", // mcd McDonald’s Corporation
+        "mcdonalds", // mcdonalds McDonald’s Corporation
+        "mckinsey", // mckinsey McKinsey Holdings, Inc.
         "med", // med Medistry LLC
         "media", // media Grand Glen, LLC
         "meet", // meet Afilias Limited
@@ -865,6 +929,7 @@ public final class DomainValidator extends AbstractValidator {
         "microsoft", // microsoft Microsoft Corporation
         "mil", // mil DoD Network Information Center
         "mini", // mini Bayerische Motoren Werke Aktiengesellschaft
+        "mint", // mint Intuit Administrative Services, Inc.
         "mit", // mit Massachusetts Institute of Technology
         "mitsubishi", // mitsubishi Mitsubishi Corporation
         "mlb", // mlb MLB Advanced Media DH, LLC
@@ -879,6 +944,7 @@ public final class DomainValidator extends AbstractValidator {
         "monash", // monash Monash University
         "money", // money Outer McCook, LLC
         "montblanc", // montblanc Richemont DNS Inc.
+        "mopar", // mopar FCA US LLC.
         "mormon", // mormon IRI Domain Management, LLC ("Applicant")
         "mortgage", // mortgage United TLD Holdco, Ltd
         "moscow", // moscow Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
@@ -886,6 +952,7 @@ public final class DomainValidator extends AbstractValidator {
         "mov", // mov Charleston Road Registry Inc.
         "movie", // movie New Frostbite, LLC
         "movistar", // movistar Telefónica S.A.
+        "msd", // msd MSD Registry Holdings, Inc.
         "mtn", // mtn MTN Dubai Limited
         "mtpc", // mtpc Mitsubishi Tanabe Pharma Corporation
         "mtr", // mtr MTR Corporation Limited
@@ -895,8 +962,10 @@ public final class DomainValidator extends AbstractValidator {
         "nadex", // nadex Nadex Domains, Inc
         "nagoya", // nagoya GMO Registry, Inc.
         "name", // name VeriSign Information Services, Inc.
+        "nationwide", // nationwide Nationwide Mutual Insurance Company
         "natura", // natura NATURA COSMÉTICOS S.A.
         "navy", // navy United TLD Holdco Ltd.
+        "nba", // nba NBA REGISTRY, LLC
         "nec", // nec NEC Corporation
         "net", // net VeriSign Global Registry Services
         "netbank", // netbank COMMONWEALTH BANK OF AUSTRALIA
@@ -928,17 +997,21 @@ public final class DomainValidator extends AbstractValidator {
         "ntt", // ntt NIPPON TELEGRAPH AND TELEPHONE CORPORATION
         "nyc", // nyc The City of New York by and through the New York City Department of Information Technology & Telecommunications
         "obi", // obi OBI Group Holding SE & Co. KGaA
+        "off", // off Johnson Shareholdings, Inc.
         "office", // office Microsoft Corporation
         "okinawa", // okinawa BusinessRalliart inc.
         "olayan", // olayan Crescent Holding GmbH
         "olayangroup", // olayangroup Crescent Holding GmbH
+        "oldnavy", // oldnavy The Gap, Inc.
         "ollo", // ollo Dish DBS Corporation
         "omega", // omega The Swatch Group Ltd
         "one", // one One.com A/S
         "ong", // ong Public Interest Registry
         "onl", // onl I-REGISTRY Ltd., Niederlassung Deutschland
         "online", // online DotOnline Inc.
+        "onyourside", // onyourside Nationwide Mutual Insurance Company
         "ooo", // ooo INFIBEAM INCORPORATION LIMITED
+        "open", // open American Express Travel Related Services Company, Inc.
         "oracle", // oracle Oracle Corporation
         "orange", // orange Orange Brand Services Limited
         "org", // org Public Interest Registry (PIR)
@@ -951,6 +1024,7 @@ public final class DomainValidator extends AbstractValidator {
         "ovh", // ovh OVH SAS
         "page", // page Charleston Road Registry Inc.
         "pamperedchef", // pamperedchef The Pampered Chef, Ltd.
+        "panasonic", // panasonic Panasonic Corporation
         "panerai", // panerai Richemont DNS Inc.
         "paris", // paris City of Paris
         "pars", // pars Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
@@ -958,8 +1032,10 @@ public final class DomainValidator extends AbstractValidator {
         "parts", // parts Sea Goodbye, LLC
         "party", // party Blue Sky Registry Limited
         "passagens", // passagens Travel Reservations SRL
+        "pay", // pay Amazon Registry Services, Inc.
         "pccw", // pccw PCCW Enterprises Limited
         "pet", // pet Afilias plc
+        "pfizer", // pfizer Pfizer Inc.
         "pharmacy", // pharmacy National Association of Boards of Pharmacy
         "philips", // philips Koninklijke Philips N.V.
         "photo", // photo Uniregistry, Corp.
@@ -987,6 +1063,7 @@ public final class DomainValidator extends AbstractValidator {
         "politie", // politie Politie Nederland
         "porn", // porn ICM Registry PN LLC
         "post", // post Universal Postal Union
+        "pramerica", // pramerica Prudential Financial, Inc.
         "praxi", // praxi Praxi S.p.A.
         "press", // press DotPress Inc.
         "prime", // prime Amazon Registry Service, Inc.
@@ -999,12 +1076,16 @@ public final class DomainValidator extends AbstractValidator {
         "properties", // properties Big Pass, LLC
         "property", // property Uniregistry, Corp.
         "protection", // protection XYZ.COM LLC
+        "pru", // pru Prudential Financial, Inc.
+        "prudential", // prudential Prudential Financial, Inc.
         "pub", // pub United TLD Holdco Ltd.
         "pwc", // pwc PricewaterhouseCoopers LLP
         "qpon", // qpon dotCOOL, Inc.
         "quebec", // quebec PointQuébec Inc
         "quest", // quest Quest ION Limited
+        "qvc", // qvc QVC, Inc.
         "racing", // racing Premier Registry Limited
+        "raid", // raid Johnson Shareholdings, Inc.
         "read", // read Amazon Registry Services, Inc.
         "realestate", // realestate dotRealEstate LLC
         "realtor", // realtor Real Estate Domains LLC
@@ -1031,6 +1112,7 @@ public final class DomainValidator extends AbstractValidator {
         "rich", // rich I-REGISTRY Ltd., Niederlassung Deutschland
         "richardli", // richardli Pacific Century Asset Management (HK) Limited
         "ricoh", // ricoh Ricoh Company, Ltd.
+        "rightathome", // rightathome Johnson Shareholdings, Inc.
         "rio", // rio Empresa Municipal de Informática SA - IPLANRIO
         "rip", // rip United TLD Holdco Ltd.
         "rocher", // rocher Ferrero Trading Lux S.A.
@@ -1069,9 +1151,11 @@ public final class DomainValidator extends AbstractValidator {
         "schule", // schule Outer Moon, LLC
         "schwarz", // schwarz Schwarz Domains und Services GmbH & Co. KG
         "science", // science dot Science Limited
+        "scjohnson", // scjohnson Johnson Shareholdings, Inc.
         "scor", // scor SCOR SE
         "scot", // scot Dot Scot Registry Limited
         "seat", // seat SEAT, S.A. (Sociedad Unipersonal)
+        "secure", // secure Amazon Registry Services, Inc.
         "security", // security XYZ.COM LLC
         "seek", // seek Seek Limited
         "select", // select iSelect Ltd
@@ -1094,6 +1178,7 @@ public final class DomainValidator extends AbstractValidator {
         "shopping", // shopping Over Keep, LLC
         "shouji", // shouji QIHOO 360 TECHNOLOGY CO. LTD.
         "show", // show Snow Beach, LLC
+        "showtime", // showtime CBS Domains Inc.
         "shriram", // shriram Shriram Capital Ltd.
         "silk", // silk Amazon Registry Service, Inc.
         "sina", // sina Sina Corporation
@@ -1103,6 +1188,8 @@ public final class DomainValidator extends AbstractValidator {
         "skin", // skin L'Oréal
         "sky", // sky Sky International AG
         "skype", // skype Microsoft Corporation
+        "sling", // sling Hughes Satellite Systems Corporation
+        "smart", // smart Smart Communications, Inc. (SMART)
         "smile", // smile Amazon Registry Services, Inc.
         "sncf", // sncf SNCF (Société Nationale des Chemins de fer Francais)
         "soccer", // soccer Foggy Shadow, LLC
@@ -1120,7 +1207,9 @@ public final class DomainValidator extends AbstractValidator {
         "spot", // spot Amazon Registry Services, Inc.
         "spreadbetting", // spreadbetting DOTSPREADBETTING REGISTRY LTD
         "srl", // srl InterNetX Corp.
+        "srt", // srt FCA US LLC.
         "stada", // stada STADA Arzneimittel AG
+        "staples", // staples Staples, Inc.
         "star", // star Star India Private Limited
         "starhub", // starhub StarHub Limited
         "statebank", // statebank STATE BANK OF INDIA
@@ -1143,6 +1232,7 @@ public final class DomainValidator extends AbstractValidator {
         "surgery", // surgery Tin Avenue, LLC
         "suzuki", // suzuki SUZUKI MOTOR CORPORATION
         "swatch", // swatch The Swatch Group Ltd
+        "swiftcover", // swiftcover Swiftcover Insurance Services Limited
         "swiss", // swiss Swiss Confederation
         "sydney", // sydney State of New South Wales, Department of Premier and Cabinet
         "symantec", // symantec Symantec Corporation
@@ -1151,6 +1241,7 @@ public final class DomainValidator extends AbstractValidator {
         "taipei", // taipei Taipei City Government
         "talk", // talk Amazon Registry Services, Inc.
         "taobao", // taobao Alibaba Group Holding Limited
+        "target", // target Target Domain Holdings, LLC
         "tatamotors", // tatamotors Tata Motors Ltd
         "tatar", // tatar Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
         "tattoo", // tattoo Uniregistry, Corp.
@@ -1170,12 +1261,16 @@ public final class DomainValidator extends AbstractValidator {
         "thd", // thd Homer TLC, Inc.
         "theater", // theater Blue Tigers, LLC
         "theatre", // theatre XYZ.COM LLC
+        "tiaa", // tiaa Teachers Insurance and Annuity Association of America
         "tickets", // tickets Accent Media Limited
         "tienda", // tienda Victor Manor, LLC
         "tiffany", // tiffany Tiffany and Company
         "tips", // tips Corn Willow, LLC
         "tires", // tires Dog Edge, LLC
         "tirol", // tirol punkt Tirol GmbH
+        "tjmaxx", // tjmaxx The TJX Companies, Inc.
+        "tjx", // tjx The TJX Companies, Inc.
+        "tkmaxx", // tkmaxx The TJX Companies, Inc.
         "tmall", // tmall Alibaba Group Holding Limited
         "today", // today Pearl Woods, LLC
         "tokyo", // tokyo GMO Registry, Inc.
@@ -1203,6 +1298,7 @@ public final class DomainValidator extends AbstractValidator {
         "tushu", // tushu Amazon Registry Services, Inc.
         "tvs", // tvs T V SUNDRAM IYENGAR  & SONS PRIVATE LIMITED
         "ubs", // ubs UBS AG
+        "uconnect", // uconnect FCA US LLC.
         "unicom", // unicom China United Network Communications Corporation Limited
         "university", // university Little Station, LLC
         "uno", // uno Dot Latin LLC
@@ -1223,10 +1319,12 @@ public final class DomainValidator extends AbstractValidator {
         "vin", // vin Holly Shadow, LLC
         "vip", // vip Minds + Machines Group Limited
         "virgin", // virgin Virgin Enterprises Limited
+        "visa", // visa Visa Worldwide Pte. Limited
         "vision", // vision Koko Station, LLC
         "vista", // vista Vistaprint Limited
         "vistaprint", // vistaprint Vistaprint Limited
         "viva", // viva Saudi Telecom Company
+        "vivo", // vivo Telefonica Brasil S.A.
         "vlaanderen", // vlaanderen DNS.be vzw
         "vodka", // vodka Top Level Domain Holdings Limited
         "volkswagen", // volkswagen Volkswagen Group of America Inc.
@@ -1258,6 +1356,7 @@ public final class DomainValidator extends AbstractValidator {
         "win", // win First Registry Limited
         "windows", // windows Microsoft Corporation
         "wine", // wine June Station, LLC
+        "winners", // winners The TJX Companies, Inc.
         "wme", // wme William Morris Endeavor Entertainment, LLC
         "wolterskluwer", // wolterskluwer Wolters Kluwer N.V.
         "woodside", // woodside Woodside Petroleum Limited
@@ -1770,7 +1869,7 @@ public final class DomainValidator extends AbstractValidator {
      * @throws IllegalArgumentException if one of the read-only tables is requested
      * @since 1.5.0
      */
-    public static synchronized void updateTLDOverride(ArrayType table, String[] tlds) {
+    public static synchronized void updateTLDOverride(ArrayType table, String ... tlds) {
         if (inUse) {
             throw new IllegalStateException("Can only invoke this method before calling getInstance");
         }
diff --git a/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java b/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java
index ef354a8..16afa15 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/RegexValidator.java
@@ -101,7 +101,7 @@ public class RegexValidator extends AbstractValidator {
      * @param regexs The set of regular expressions this validator will
      * validate against
      */
-    public RegexValidator(String[] regexs) {
+    public RegexValidator(String ... regexs) {
         this(regexs, true);
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java b/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
index 3beb455..ffc4b0a 100644
--- a/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
+++ b/src/org/openstreetmap/josm/data/validation/routines/UrlValidator.java
@@ -206,7 +206,7 @@ public class UrlValidator extends AbstractValidator {
      * Create a UrlValidator with default properties.
      */
     public UrlValidator() {
-        this(null);
+        this((String[]) null);
     }
 
     /**
@@ -217,7 +217,7 @@ public class UrlValidator extends AbstractValidator {
      *        be specified. Setting the ALLOW_ALL_SCHEMES option will
      *        ignore the contents of schemes.
      */
-    public UrlValidator(String[] schemes) {
+    public UrlValidator(String ... schemes) {
         this(schemes, 0L);
     }
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Addresses.java b/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
index 6da3735..decf61d 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
@@ -28,8 +28,7 @@ import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Performs validation tests on addresses (addr:housenumber) and associatedStreet relations.
@@ -91,17 +90,12 @@ public class Addresses extends Test {
             Severity level;
             // warning level only if several relations have different names, see #10945
             final String name = list.get(0).get("name");
-            if (name == null || Utils.filter(list, new Predicate<Relation>() {
-                @Override
-                public boolean evaluate(Relation r) {
-                    return name.equals(r.get("name"));
-                }
-            }).size() < list.size()) {
+            if (name == null || SubclassFilteredCollection.filter(list, r -> name.equals(r.get("name"))).size() < list.size()) {
                 level = Severity.WARNING;
             } else {
                 level = Severity.OTHER;
             }
-            List<OsmPrimitive> errorList = new ArrayList<OsmPrimitive>(list);
+            List<OsmPrimitive> errorList = new ArrayList<>(list);
             errorList.add(0, p);
             errors.add(new AddressError(this, MULTIPLE_STREET_RELATIONS, level, errorList,
                     tr("Multiple associatedStreet relations"), null, null));
@@ -248,7 +242,7 @@ public class Addresses extends Test {
         }
         // No street segment found near this house, report error on if the relation does not contain incomplete street ways (fix #8314)
         if (hasIncompleteWays) return;
-        List<OsmPrimitive> errorList = new ArrayList<OsmPrimitive>(street);
+        List<OsmPrimitive> errorList = new ArrayList<>(street);
         errorList.add(0, house);
         errors.add(new AddressError(this, HOUSE_NUMBER_TOO_FAR, errorList,
                 tr("House number too far from street")));
diff --git a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
index 48ce6c8..525457e 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
@@ -18,8 +18,7 @@ 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.tools.LanguageInfo;
-import org.openstreetmap.josm.tools.Predicates;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Checks for <a href="http://wiki.openstreetmap.org/wiki/Conditional_restrictions">conditional restrictions</a>
@@ -75,11 +74,20 @@ public class ConditionalKeys extends Test.TagTest {
             return false;
         }
         final String[] parts = key.replaceAll(":conditional", "").split(":");
-        return parts.length == 3 && isRestrictionType(parts[0]) && isTransportationMode(parts[1]) && isDirection(parts[2])
-                || parts.length == 1 && (isRestrictionType(parts[0]) || isTransportationMode(parts[0]))
-                || parts.length == 2 && (
-                isRestrictionType(parts[0]) && (isTransportationMode(parts[1]) || isDirection(parts[1]))
-                        || isTransportationMode(parts[0]) && isDirection(parts[1]));
+        return isKeyValid3Parts(parts) || isKeyValid1Part(parts) || isKeyValid2Parts(parts);
+    }
+
+    private static boolean isKeyValid3Parts(String ... parts) {
+        return parts.length == 3 && isRestrictionType(parts[0]) && isTransportationMode(parts[1]) && isDirection(parts[2]);
+    }
+
+    private static boolean isKeyValid2Parts(String ... parts) {
+        return parts.length == 2 && ((isRestrictionType(parts[0]) && (isTransportationMode(parts[1]) || isDirection(parts[1])))
+                                  || (isTransportationMode(parts[0]) && isDirection(parts[1])));
+    }
+
+    private static boolean isKeyValid1Part(String ... parts) {
+        return parts.length == 1 && (isRestrictionType(parts[0]) || isTransportationMode(parts[0]));
     }
 
     public boolean isValueValid(String key, String value) {
@@ -101,7 +109,13 @@ public class ConditionalKeys extends Test.TagTest {
             this.conditions = conditions;
         }
 
-        public static List<ConditionalValue> parse(String value) throws ConditionalParsingException {
+        /**
+         * Parses the condition values as string.
+         * @param value value, must match {@code <restriction-value> @ <condition>[;<restriction-value> @ <condition>]} pattern
+         * @return list of {@code ConditionalValue}s
+         * @throws ConditionalParsingException if {@code value} does not match expected pattern
+         */
+        public static List<ConditionalValue> parse(String value) {
             // <restriction-value> @ <condition>[;<restriction-value> @ <condition>]
             final List<ConditionalValue> r = new ArrayList<>();
             final String part = Pattern.compile("([^@\\p{Space}][^@]*?)"
@@ -149,7 +163,8 @@ public class ConditionalKeys extends Test.TagTest {
 
     public List<TestError> validatePrimitive(OsmPrimitive p) {
         final List<TestError> errors = new ArrayList<>();
-        for (final String key : Utils.filter(p.keySet(), Predicates.stringMatchesPattern(Pattern.compile(".*:conditional(:.*)?$")))) {
+        for (final String key : SubclassFilteredCollection.filter(p.keySet(),
+                Pattern.compile(":conditional(:.*)?$").asPredicate())) {
             if (!isKeyValid(key)) {
                 errors.add(new TestError(this, Severity.WARNING, tr("Wrong syntax in {0} key", key), 3201, p));
                 continue;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java b/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
index eee822e..987cdfd 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/CrossingWays.java
@@ -82,8 +82,8 @@ public abstract class CrossingWays extends Test {
             if (isCoastline(w1) != isCoastline(w2)) {
                 return true;
             }
-            if ((w1.hasTag(WATERWAY, "river") && w2.hasTag(WATERWAY, "riverbank"))
-                    || (w2.hasTag(WATERWAY, "river") && w1.hasTag(WATERWAY, "riverbank"))) {
+            if ((w1.hasTag(WATERWAY, "river", "stream", "canal", "drain", "ditch") && w2.hasTag(WATERWAY, "riverbank"))
+             || (w2.hasTag(WATERWAY, "river", "stream", "canal", "drain", "ditch") && w1.hasTag(WATERWAY, "riverbank"))) {
                 return true;
             }
             if (isProposedOrAbandoned(w2)) {
@@ -241,7 +241,7 @@ public abstract class CrossingWays extends Test {
                     List<Way> prims;
                     List<WaySegment> highlight;
 
-                    if (errorSegments.contains(es1) && errorSegments.contains(es2)
+                    if ((errorSegments.contains(es1) && errorSegments.contains(es2))
                             || !es1.intersects(es2)
                             || ignoreWaySegmentCombination(es1.way, es2.way)) {
                         continue;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Highways.java b/src/org/openstreetmap/josm/data/validation/tests/Highways.java
index a6634f2..7393cdd 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Highways.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Highways.java
@@ -23,7 +23,6 @@ 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;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -158,7 +157,7 @@ public class Highways extends Test {
     public static boolean isHighwayLinkOkay(final Way way) {
         final String highway = way.get("highway");
         if (highway == null || !highway.endsWith("_link")
-                || !IN_DOWNLOADED_AREA.evaluate(way.getNode(0)) || !IN_DOWNLOADED_AREA.evaluate(way.getNode(way.getNodesCount()-1))) {
+                || !IN_DOWNLOADED_AREA.test(way.getNode(0)) || !IN_DOWNLOADED_AREA.test(way.getNode(way.getNodesCount()-1))) {
             return true;
         }
 
@@ -174,12 +173,8 @@ public class Highways extends Test {
             referrers.addAll(way.lastNode().getReferrers());
         }
 
-        return Utils.exists(Utils.filteredCollection(referrers, Way.class), new Predicate<Way>() {
-            @Override
-            public boolean evaluate(final Way otherWay) {
-                return !way.equals(otherWay) && otherWay.hasTag("highway", highway, highway.replaceAll("_link$", ""));
-            }
-        });
+        return Utils.filteredCollection(referrers, Way.class).stream().anyMatch(
+                otherWay -> !way.equals(otherWay) && otherWay.hasTag("highway", highway, highway.replaceAll("_link$", "")));
     }
 
     private void testHighwayLink(final Way way) {
diff --git a/src/org/openstreetmap/josm/data/validation/tests/Lanes.java b/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
index 727ac73..cea0a36 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/Lanes.java
@@ -3,19 +3,15 @@ package org.openstreetmap.josm.data.validation.tests;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
 import java.util.Set;
-import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 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.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -43,19 +39,13 @@ 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 + '$'))));
-        keysForPattern.removeAll(Arrays.asList(BLACKLIST));
-        if (keysForPattern.isEmpty()) {
-            // nothing to check
-            return;
-        }
-        final Set<Integer> lanesCount = new HashSet<>(Utils.transform(keysForPattern, new Utils.Function<String, Integer>() {
-            @Override
-            public Integer apply(String key) {
-                return getLanesCount(p.get(key));
-            }
-        }));
+        final Set<Integer> lanesCount =
+                p.keySet().stream()
+                .filter(x -> x.endsWith(":" + lanesKey))
+                .filter(x -> !Arrays.asList(BLACKLIST).contains(x))
+                .map(key -> getLanesCount(p.get(key)))
+                .collect(Collectors.toSet());
+
         if (lanesCount.size() > 1) {
             // if not all numbers are the same
             errors.add(new TestError(this, Severity.WARNING, message, 3100, p));
diff --git a/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
index ad5afe5..7aa8b80 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.validation.tests;
 
+import static org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.FixCommand.evaluateObject;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.BufferedReader;
@@ -24,6 +25,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -64,7 +66,6 @@ import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -129,7 +130,8 @@ public class MapCSSTagChecker extends Test.TagTest {
     /**
      * Represents a fix to a validation test. The fixing {@link Command} can be obtained by {@link #createCommand(OsmPrimitive, Selector)}.
      */
-    abstract static class FixCommand {
+    @FunctionalInterface
+    interface FixCommand {
         /**
          * Creates the fixing {@link Command} for the given primitive. The {@code matchingSelector} is used to evaluate placeholders
          * (cf. {@link MapCSSTagChecker.TagCheck#insertArguments(Selector, String, OsmPrimitive)}).
@@ -137,9 +139,9 @@ public class MapCSSTagChecker extends Test.TagTest {
          * @param matchingSelector  matching selector
          * @return fix command
          */
-        abstract Command createCommand(final OsmPrimitive p, final Selector matchingSelector);
+        Command createCommand(final OsmPrimitive p, final Selector matchingSelector);
 
-        private static void checkObject(final Object obj) {
+        static void checkObject(final Object obj) {
             CheckParameterUtil.ensureThat(obj instanceof Expression || obj instanceof String,
                     "instance of Exception or String expected, but got " + obj);
         }
@@ -151,7 +153,7 @@ public class MapCSSTagChecker extends Test.TagTest {
          * @param matchingSelector matching selector
          * @return result string
          */
-        private static String evaluateObject(final Object obj, final OsmPrimitive p, final Selector matchingSelector) {
+        static String evaluateObject(final Object obj, final OsmPrimitive p, final Selector matchingSelector) {
             final String s;
             if (obj instanceof Expression) {
                 s = (String) ((Expression) obj).evaluate(new Environment(p));
@@ -172,7 +174,7 @@ public class MapCSSTagChecker extends Test.TagTest {
             checkObject(obj);
             return new FixCommand() {
                 @Override
-                Command createCommand(OsmPrimitive p, Selector matchingSelector) {
+                public Command createCommand(OsmPrimitive p, Selector matchingSelector) {
                     final Tag tag = Tag.ofString(evaluateObject(obj, p, matchingSelector));
                     return new ChangePropertyCommand(p, tag.getKey(), tag.getValue());
                 }
@@ -193,7 +195,7 @@ public class MapCSSTagChecker extends Test.TagTest {
             checkObject(obj);
             return new FixCommand() {
                 @Override
-                Command createCommand(OsmPrimitive p, Selector matchingSelector) {
+                public Command createCommand(OsmPrimitive p, Selector matchingSelector) {
                     final String key = evaluateObject(obj, p, matchingSelector);
                     return new ChangePropertyCommand(p, key, "");
                 }
@@ -214,7 +216,7 @@ public class MapCSSTagChecker extends Test.TagTest {
         static FixCommand fixChangeKey(final String oldKey, final String newKey) {
             return new FixCommand() {
                 @Override
-                Command createCommand(OsmPrimitive p, Selector matchingSelector) {
+                public Command createCommand(OsmPrimitive p, Selector matchingSelector) {
                     return new ChangePropertyKeyCommand(p,
                             TagCheck.insertArguments(matchingSelector, oldKey, p),
                             TagCheck.insertArguments(matchingSelector, newKey, p));
@@ -252,13 +254,23 @@ public class MapCSSTagChecker extends Test.TagTest {
     }
 
     public static class TagCheck implements Predicate<OsmPrimitive> {
+        /** The selector of this {@code TagCheck} */
         protected final GroupedMapCSSRule rule;
+        /** Commands to apply in order to fix a matching primitive */
         protected final List<FixCommand> fixCommands = new ArrayList<>();
+        /** Tags (or arbitraty strings) of alternatives to be presented to the user */
         protected final List<String> alternatives = new ArrayList<>();
+        /** An {@link org.openstreetmap.josm.gui.mappaint.mapcss.Instruction.AssignmentInstruction}-{@link Severity} pair.
+         * Is evaluated on the matching primitive to give the error message. Map is checked to contain exactly one element. */
         protected final Map<Instruction.AssignmentInstruction, Severity> errors = new HashMap<>();
+        /** Unit tests */
         protected final Map<String, Boolean> assertions = new HashMap<>();
+        /** MapCSS Classes to set on matching primitives */
         protected final Set<String> setClassExpressions = new HashSet<>();
+        /** Denotes whether the object should be deleted for fixing it */
         protected boolean deletion;
+        /** A string used to group similar tests */
+        protected String group;
 
         TagCheck(GroupedMapCSSRule rule) {
             this.rule = rule;
@@ -321,6 +333,8 @@ public class MapCSSTagChecker extends Test.TagTest {
                         check.assertions.put(val, Boolean.TRUE);
                     } else if ("assertNoMatch".equals(ai.key) && val != null) {
                         check.assertions.put(val, Boolean.FALSE);
+                    } else if ("group".equals(ai.key) && val != null) {
+                        check.group = val;
                     } else {
                         throw new IllegalDataException("Cannot add instruction " + ai.key + ": " + ai.val + '!');
                     }
@@ -387,7 +401,7 @@ public class MapCSSTagChecker extends Test.TagTest {
         }
 
         @Override
-        public boolean evaluate(OsmPrimitive primitive) {
+        public boolean test(OsmPrimitive primitive) {
             // Tests whether the primitive contains a deprecated tag which is represented by this MapCSSTagChecker.
             return whichSelectorMatchesPrimitive(primitive) != null;
         }
@@ -418,12 +432,8 @@ public class MapCSSTagChecker extends Test.TagTest {
         static String determineArgument(Selector.GeneralSelector matchingSelector, int index, String type, OsmPrimitive p) {
             try {
                 final Condition c = matchingSelector.getConditions().get(index);
-                final Tag tag = c instanceof Condition.KeyCondition
-                        ? ((Condition.KeyCondition) c).asTag(p)
-                        : c instanceof Condition.SimpleKeyValueCondition
-                        ? ((Condition.SimpleKeyValueCondition) c).asTag()
-                        : c instanceof Condition.KeyValueCondition
-                        ? ((Condition.KeyValueCondition) c).asTag()
+                final Tag tag = c instanceof Condition.ToTagConvertable
+                        ? ((Condition.ToTagConvertable) c).asTag(p)
                         : null;
                 if (tag == null) {
                     return null;
@@ -564,6 +574,8 @@ public class MapCSSTagChecker extends Test.TagTest {
             if (matchingSelector != null && !errors.isEmpty()) {
                 final Command fix = fixPrimitive(p);
                 final String description = getDescriptionForMatchingSelector(p, matchingSelector);
+                final String description1 = group == null ? description : group;
+                final String description2 = group == null ? null : description;
                 final List<OsmPrimitive> primitives;
                 if (env.child != null) {
                     primitives = Arrays.asList(p, env.child);
@@ -571,9 +583,10 @@ public class MapCSSTagChecker extends Test.TagTest {
                     primitives = Collections.singletonList(p);
                 }
                 if (fix != null) {
-                    return new FixableTestError(null, getSeverity(), description, null, matchingSelector.toString(), 3000, primitives, fix);
+                    return new FixableTestError(null, getSeverity(), description1, description2, matchingSelector.toString(), 3000,
+                            primitives, fix);
                 } else {
-                    return new TestError(null, getSeverity(), description, null, matchingSelector.toString(), 3000, primitives);
+                    return new TestError(null, getSeverity(), description1, description2, matchingSelector.toString(), 3000, primitives);
                 }
             } else {
                 return null;
@@ -633,14 +646,14 @@ public class MapCSSTagChecker extends Test.TagTest {
         }
 
         @Override
-        public boolean equals(Object obj) {
+        public synchronized boolean equals(Object obj) {
             return super.equals(obj)
                     || (obj instanceof TagCheck && rule.equals(((TagCheck) obj).rule))
                     || (obj instanceof GroupedMapCSSRule && rule.equals(obj));
         }
 
         @Override
-        public int hashCode() {
+        public synchronized int hashCode() {
             return Objects.hash(super.hashCode(), rule);
         }
 
@@ -785,13 +798,7 @@ public class MapCSSTagChecker extends Test.TagTest {
                 if (Main.isDebugEnabled()) {
                     Main.debug("- Errors: "+pErrors);
                 }
-                final boolean isError = Utils.exists(pErrors, new Predicate<TestError>() {
-                    @Override
-                    public boolean evaluate(TestError e) {
-                        //noinspection EqualsBetweenInconvertibleTypes
-                        return e.getTester().equals(check.rule);
-                    }
-                });
+                final boolean isError = pErrors.stream().anyMatch(e -> e.getTester().equals(check.rule));
                 if (isError != i.getValue()) {
                     final String error = MessageFormat.format("Expecting test ''{0}'' (i.e., {1}) to {2} {3} (i.e., {4})",
                             check.getMessage(p), check.rule.selectors, i.getValue() ? "match" : "not match", i.getKey(), p.getKeys());
diff --git a/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java b/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
index 72f4e33..8c8f9d7 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/OverlappingWays.java
@@ -7,7 +7,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -28,8 +27,6 @@ import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Predicates;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Tests if there are overlapping ways.
@@ -157,7 +154,7 @@ public class OverlappingWays extends Test {
             if (error.getSeverity().equals(Severity.WARNING) || error.getHighlighted().size() / error.getPrimitives().size() >= 3) {
                 boolean ignore = false;
                 for (String ignoredKey : IGNORED_KEYS.get()) {
-                    if (Utils.exists(error.getPrimitives(), Predicates.hasKey(ignoredKey))) {
+                    if (error.getPrimitives().stream().anyMatch(p -> p.hasKey(ignoredKey))) {
                         ignore = true;
                         break;
                     }
@@ -174,17 +171,14 @@ public class OverlappingWays extends Test {
 
     protected static Set<WaySegment> checkDuplicateWaySegment(Way w) {
         // test for ticket #4959
-        Set<WaySegment> segments = new TreeSet<>(new Comparator<WaySegment>() {
-            @Override
-            public int compare(WaySegment o1, WaySegment o2) {
-                final List<Node> n1 = Arrays.asList(o1.getFirstNode(), o1.getSecondNode());
-                final List<Node> n2 = Arrays.asList(o2.getFirstNode(), o2.getSecondNode());
-                Collections.sort(n1);
-                Collections.sort(n2);
-                final int first = n1.get(0).compareTo(n2.get(0));
-                final int second = n1.get(1).compareTo(n2.get(1));
-                return first != 0 ? first : second;
-            }
+        Set<WaySegment> segments = new TreeSet<>((o1, o2) -> {
+            final List<Node> n1 = Arrays.asList(o1.getFirstNode(), o1.getSecondNode());
+            final List<Node> n2 = Arrays.asList(o2.getFirstNode(), o2.getSecondNode());
+            Collections.sort(n1);
+            Collections.sort(n2);
+            final int first = n1.get(0).compareTo(n2.get(0));
+            final int second = n1.get(1).compareTo(n2.get(1));
+            return first != 0 ? first : second;
         });
         final Set<WaySegment> duplicateWaySegments = new HashSet<>();
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java b/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
index 8fd2802..745d32b 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
@@ -69,7 +69,7 @@ public class PowerLines extends Test {
                 boolean canFix = false;
                 for (Node n : w.getNodes()) {
                     if (!isPowerTower(n)) {
-                        if (!isPowerAllowed(n) && IN_DOWNLOADED_AREA.evaluate(n)) {
+                        if (!isPowerAllowed(n) && IN_DOWNLOADED_AREA.test(n)) {
                             if (!w.isFirstLastNode(n) || !isPowerStation(n)) {
                                 potentialErrors.add(new PowerLineError(this, n, w));
                                 erroneous = true;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java b/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
index b57dc9b..027ff66 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java
@@ -11,6 +11,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.DeleteCommand;
@@ -27,6 +28,7 @@ import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 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.I18n;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -254,12 +256,7 @@ public class RelationChecker extends Test {
             }
 
             // convert in localization friendly way to string of accepted types
-            String typesStr = Utils.join("/", Utils.transform(types, new Utils.Function<TaggingPresetType, Object>() {
-                @Override
-                public Object apply(TaggingPresetType x) {
-                    return tr(x.getName());
-                }
-            }));
+            String typesStr = types.stream().map(x -> tr(x.getName())).collect(Collectors.joining("/"));
 
             errors.add(new TestError(this, Severity.WARNING, ROLE_VERIF_PROBLEM_MSG,
                     tr(s, member.getType(), typesStr, rolePreset.name), s, WRONG_TYPE,
@@ -296,12 +293,7 @@ public class RelationChecker extends Test {
         // verify unwanted members
         for (String key : map.keySet()) {
             if (!allroles.containsKey(key)) {
-                String templates = Utils.join("/", Utils.transform(allroles.keySet(), new Utils.Function<String, Object>() {
-                    @Override
-                    public Object apply(String x) {
-                        return tr(x);
-                    }
-                }));
+                String templates = allroles.keySet().stream().map(I18n::tr).collect(Collectors.joining("/"));
 
                 if (!key.isEmpty()) {
                     String s = marktr("Role {0} unknown in templates {1}");
diff --git a/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java b/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
index bcb0f0f..00dfe3a 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/SimilarNamedWays.java
@@ -23,7 +23,6 @@ import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.util.ValUtil;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Checks for similar named ways, symptom of a possible typo. It uses the
@@ -157,7 +156,7 @@ public class SimilarNamedWays extends Test {
                 }
 
                 // Step 6
-                d[i][j] = Utils.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);
+                d[i][j] = Math.min(Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1), d[i - 1][j - 1] + cost);
             }
         }
 
@@ -213,6 +212,7 @@ public class SimilarNamedWays extends Test {
         return similar;
     }
 
+    @FunctionalInterface
     public interface NormalizeRule {
 
         /**
@@ -249,7 +249,7 @@ public class SimilarNamedWays extends Test {
         private final Pattern regExpr;
         private final String replacement;
 
-        public SynonymRule(String replacement, String[] words) {
+        public SynonymRule(String replacement, String ... words) {
             this.replacement = replacement.toLowerCase(Locale.ENGLISH);
             this.words = words;
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
index da8c9b5..cc8ed73 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
@@ -5,7 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagConstraints;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -597,12 +596,7 @@ public class TagChecker extends TagTest {
         testPanel.add(new JLabel(tr("Data sources ({0})", "*.cfg")), GBC.eol().insets(23, 0, 0, 0));
         testPanel.add(sourcesList, GBC.eol().fill(GridBagConstraints.HORIZONTAL).insets(23, 0, 0, 0));
 
-        ActionListener disableCheckActionListener = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                handlePrefEnable();
-            }
-        };
+        ActionListener disableCheckActionListener = e -> handlePrefEnable();
         prefCheckKeys.addActionListener(disableCheckActionListener);
         prefCheckKeysBeforeUpload.addActionListener(disableCheckActionListener);
         prefCheckComplex.addActionListener(disableCheckActionListener);
@@ -723,7 +717,7 @@ public class TagChecker extends TagTest {
             public boolean valueAll;
             public boolean valueBool;
 
-            private static Pattern getPattern(String str) throws PatternSyntaxException {
+            private static Pattern getPattern(String str) {
                 if (str.endsWith("/i"))
                     return Pattern.compile(str.substring(1, str.length()-2), Pattern.CASE_INSENSITIVE);
                 if (str.endsWith("/"))
@@ -732,7 +726,7 @@ public class TagChecker extends TagTest {
                 throw new IllegalStateException();
             }
 
-            public CheckerElement(String exp) throws PatternSyntaxException {
+            public CheckerElement(String exp) {
                 Matcher m = Pattern.compile("(.+)([!=]=)(.+)").matcher(exp);
                 m.matches();
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java b/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java
index 0ecc3e0..00dd837 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java
@@ -37,7 +37,7 @@ public class UnclosedWays extends Test {
      * A check performed by UnclosedWays test.
      * @since 6390
      */
-    private class UnclosedWaysCheck {
+    private static class UnclosedWaysCheck {
         /** The unique numeric code for this check */
         public final int code;
         /** The OSM key checked */
@@ -89,16 +89,17 @@ public class UnclosedWays extends Test {
         /**
          * Returns the test error of the given way, if any.
          * @param w The way to check
+         * @param test parent test
          * @return The test error if the way is erroneous, {@code null} otherwise
          */
-        public final TestError getTestError(Way w) {
+        public final TestError getTestError(Way w, UnclosedWays test) {
             String value = w.get(key);
             if (isValueErroneous(value)) {
                 // CHECKSTYLE.OFF: SingleSpaceSeparator
                 String  type = engMessage.contains("{0}") ? tr(engMessage, tr(value)) : tr(engMessage);
                 String etype = engMessage.contains("{0}") ? MessageFormat.format(engMessage, value) : engMessage;
                 // CHECKSTYLE.ON: SingleSpaceSeparator
-                return new TestError(UnclosedWays.this, Severity.WARNING, tr("Unclosed way"),
+                return new TestError(test, Severity.WARNING, tr("Unclosed way"),
                         type, etype, code, Arrays.asList(w),
                         // The important parts of an unclosed way are the first and
                         // the last node which should be connected, therefore we highlight them
@@ -116,7 +117,7 @@ public class UnclosedWays extends Test {
      * A check performed by UnclosedWays test where the key is treated as boolean.
      * @since 6390
      */
-    private final class UnclosedWaysBooleanCheck extends UnclosedWaysCheck {
+    private static final class UnclosedWaysBooleanCheck extends UnclosedWaysCheck {
 
         /**
          * Constructs a new {@code UnclosedWaysBooleanCheck}.
@@ -136,7 +137,7 @@ public class UnclosedWays extends Test {
         }
     }
 
-    private final UnclosedWaysCheck[] checks = {
+    private static final UnclosedWaysCheck[] checks = {
         // CHECKSTYLE.OFF: SingleSpaceSeparator
         new UnclosedWaysCheck(1101, "natural",   marktr("natural type {0}"),
                 new HashSet<>(Arrays.asList("cave", "coastline", "cliff", "tree_row", "ridge", "valley", "arete", "gorge"))),
@@ -182,7 +183,7 @@ public class UnclosedWays extends Test {
         }
 
         for (UnclosedWaysCheck c : checks) {
-            TestError error = c.getTestError(w);
+            TestError error = c.getTestError(w, this);
             if (error != null) {
                 errors.add(error);
                 return;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java b/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
index 411a734..96d45b0 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
@@ -25,6 +25,7 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.QuadBuckets;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.projection.Ellipsoid;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
@@ -388,7 +389,7 @@ public abstract class UnconnectedWays extends Test {
             // This needs to be a hash set because the searches
             // overlap a bit and can return duplicate nodes.
             nearbyNodeCache = null;
-            List<LatLon> bounds = this.getBounds(dist);
+            List<LatLon> bounds = this.getBounds(dist * (360.0d / (Ellipsoid.WGS84.a * 2 * Math.PI)));
             List<Node> foundNodes = endnodesHighway.search(new BBox(bounds.get(0), bounds.get(1)));
             foundNodes.addAll(endnodes.search(new BBox(bounds.get(0), bounds.get(1))));
 
diff --git a/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java b/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
index 23adaa0..3dee201 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/UntaggedNode.java
@@ -42,7 +42,7 @@ public class UntaggedNode extends Test implements AbstractPrimitive.KeyValueVisi
     public void visit(Node n) {
         if (n.isUsable() && !n.isTagged() && n.getReferrers().isEmpty()) {
 
-            if (!n.hasKeys() && IN_DOWNLOADED_AREA.evaluate(n)) {
+            if (!n.hasKeys() && IN_DOWNLOADED_AREA.test(n)) {
                 String msg = marktr("No tags");
                 errors.add(new TestError(this, Severity.WARNING, ERROR_MESSAGE, tr(msg), msg, UNTAGGED_NODE_BLANK, n));
                 return;
diff --git a/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java b/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
index 9d2e19b..06869a1 100644
--- a/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
+++ b/src/org/openstreetmap/josm/data/validation/tests/WayConnectedToArea.java
@@ -14,8 +14,6 @@ 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.mappaint.ElemStyles;
-import org.openstreetmap.josm.tools.Predicates;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Checks for ways connected to areas.
@@ -67,7 +65,7 @@ public class WayConnectedToArea extends Test {
     private void testForError(Way w, Node wayNode, OsmPrimitive p) {
         if (wayNode.isOutsideDownloadArea()) {
             return;
-        } else if (Utils.exists(wayNode.getReferrers(), Predicates.hasTag("route", "ferry"))) {
+        } else if (wayNode.getReferrers().stream().anyMatch(p1 -> p1.hasTag("route", "ferry"))) {
             return;
         } else if (isArea(p)) {
             addPossibleError(w, wayNode, p, p);
diff --git a/src/org/openstreetmap/josm/data/validation/tests/package-info.java b/src/org/openstreetmap/josm/data/validation/tests/package-info.java
new file mode 100644
index 0000000..7f125ec
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/validation/tests/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for JOSM data validation tests.
+ */
+package org.openstreetmap.josm.data.validation.tests;
diff --git a/src/org/openstreetmap/josm/data/validation/util/package-info.java b/src/org/openstreetmap/josm/data/validation/util/package-info.java
new file mode 100644
index 0000000..4ef6249
--- /dev/null
+++ b/src/org/openstreetmap/josm/data/validation/util/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides utilities classes for JOSM data validation.
+ */
+package org.openstreetmap.josm.data.validation.util;
diff --git a/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java b/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
index 935bd41..dab0b0e 100644
--- a/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
+++ b/src/org/openstreetmap/josm/gui/DefaultNameFormatter.java
@@ -3,7 +3,7 @@ package org.openstreetmap.josm.gui;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trc;
-import static org.openstreetmap.josm.tools.I18n.trc_lazy;
+import static org.openstreetmap.josm.tools.I18n.trcLazy;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.ComponentOrientation;
@@ -18,6 +18,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.CoordinateFormat;
@@ -41,7 +42,6 @@ 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;
-import org.openstreetmap.josm.tools.Utils.Function;
 
 /**
  * This is the default implementation of a {@link NameFormatter} for names of {@link OsmPrimitive}s
@@ -193,12 +193,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return result;
     }
 
-    private final Comparator<Node> nodeComparator = new Comparator<Node>() {
-        @Override
-        public int compare(Node n1, Node n2) {
-            return format(n1).compareTo(format(n2));
-        }
-    };
+    private final Comparator<Node> nodeComparator = (n1, n2) -> format(n1).compareTo(format(n2));
 
     @Override
     public Comparator<Node> getNodeComparator() {
@@ -288,12 +283,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return result;
     }
 
-    private final Comparator<Way> wayComparator = new Comparator<Way>() {
-        @Override
-        public int compare(Way w1, Way w2) {
-            return format(w1).compareTo(format(w2));
-        }
-    };
+    private final Comparator<Way> wayComparator = (w1, w2) -> format(w1).compareTo(format(w2));
 
     @Override
     public Comparator<Way> getWayComparator() {
@@ -348,49 +338,46 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         return result;
     }
 
-    private final Comparator<Relation> relationComparator = new Comparator<Relation>() {
-        @Override
-        public int compare(Relation r1, Relation r2) {
-            //TODO This doesn't work correctly with formatHooks
+    private final Comparator<Relation> relationComparator = (r1, r2) -> {
+        //TODO This doesn't work correctly with formatHooks
 
-            TaggingPreset preset1 = TaggingPresetNameTemplateList.getInstance().findPresetTemplate(r1);
-            TaggingPreset preset2 = TaggingPresetNameTemplateList.getInstance().findPresetTemplate(r2);
+        TaggingPreset preset1 = TaggingPresetNameTemplateList.getInstance().findPresetTemplate(r1);
+        TaggingPreset preset2 = TaggingPresetNameTemplateList.getInstance().findPresetTemplate(r2);
 
-            if (preset1 != null || preset2 != null) {
-                String name1 = formatRelationNameAndType(r1, new StringBuilder(), preset1).toString();
-                String name2 = formatRelationNameAndType(r2, new StringBuilder(), preset2).toString();
+        if (preset1 != null || preset2 != null) {
+            String name11 = formatRelationNameAndType(r1, new StringBuilder(), preset1).toString();
+            String name21 = formatRelationNameAndType(r2, new StringBuilder(), preset2).toString();
 
-                int comp = AlphanumComparator.getInstance().compare(name1, name2);
-                if (comp != 0)
-                    return comp;
-            } else {
+            int comp1 = AlphanumComparator.getInstance().compare(name11, name21);
+            if (comp1 != 0)
+                return comp1;
+        } else {
 
-                String type1 = getRelationTypeName(r1);
-                String type2 = getRelationTypeName(r2);
+            String type1 = getRelationTypeName(r1);
+            String type2 = getRelationTypeName(r2);
 
-                int comp = AlphanumComparator.getInstance().compare(type1, type2);
-                if (comp != 0)
-                    return comp;
+            int comp2 = AlphanumComparator.getInstance().compare(type1, type2);
+            if (comp2 != 0)
+                return comp2;
 
-                String name1 = getRelationName(r1);
-                String name2 = getRelationName(r2);
+            String name12 = getRelationName(r1);
+            String name22 = getRelationName(r2);
 
-                comp = AlphanumComparator.getInstance().compare(name1, name2);
-                if (comp != 0)
-                    return comp;
-            }
+            comp2 = AlphanumComparator.getInstance().compare(name12, name22);
+            if (comp2 != 0)
+                return comp2;
+        }
 
-            int comp = Integer.compare(r1.getMembersCount(), r2.getMembersCount());
-            if (comp != 0)
-                return comp;
+        int comp3 = Integer.compare(r1.getMembersCount(), r2.getMembersCount());
+        if (comp3 != 0)
+            return comp3;
 
 
-            comp = Boolean.compare(r1.hasIncompleteMembers(), r2.hasIncompleteMembers());
-            if (comp != 0)
-                return comp;
+        comp3 = Boolean.compare(r1.hasIncompleteMembers(), r2.hasIncompleteMembers());
+        if (comp3 != 0)
+            return comp3;
 
-            return Long.compare(r1.getUniqueId(), r2.getUniqueId());
-        }
+        return Long.compare(r1.getUniqueId(), r2.getUniqueId());
     };
 
     @Override
@@ -448,9 +435,9 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
         } else if (nameTag.startsWith("?") && OsmUtils.isFalse(relation.get(nameTag.substring(1)))) {
             return null;
         } else if (nameTag.startsWith("?")) {
-            return trc_lazy(nameTag, I18n.escape(relation.get(nameTag.substring(1))));
+            return trcLazy(nameTag, I18n.escape(relation.get(nameTag.substring(1))));
         } else {
-            return trc_lazy(nameTag, I18n.escape(relation.get(nameTag)));
+            return trcLazy(nameTag, I18n.escape(relation.get(nameTag)));
         }
     }
 
@@ -643,13 +630,7 @@ public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter
      * @return HTML unordered list
      */
     public String formatAsHtmlUnorderedList(Collection<? extends OsmPrimitive> primitives, int maxElements) {
-        final Collection<String> displayNames = Utils.transform(primitives, new Function<OsmPrimitive, String>() {
-
-            @Override
-            public String apply(OsmPrimitive x) {
-                return x.getDisplayName(DefaultNameFormatter.this);
-            }
-        });
+        Collection<String> displayNames = primitives.stream().map(x -> x.getDisplayName(this)).collect(Collectors.toList());
         return Utils.joinAsHtmlUnorderedList(Utils.limit(displayNames, maxElements, "..."));
     }
 
diff --git a/src/org/openstreetmap/josm/gui/ExtendedDialog.java b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
index 579429a..7dd0285 100644
--- a/src/org/openstreetmap/josm/gui/ExtendedDialog.java
+++ b/src/org/openstreetmap/josm/gui/ExtendedDialog.java
@@ -5,6 +5,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.Frame;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
@@ -129,7 +130,7 @@ public class ExtendedDialog extends JDialog {
      * @param title        The text that will be shown in the window titlebar
      * @param buttonTexts  String Array of the text that will appear on the buttons. The first button is the default one.
      */
-    public ExtendedDialog(Component parent, String title, String[] buttonTexts) {
+    public ExtendedDialog(Component parent, String title, String ... buttonTexts) {
         this(parent, title, buttonTexts, true, true);
     }
 
@@ -145,7 +146,7 @@ public class ExtendedDialog extends JDialog {
     }
 
     public ExtendedDialog(Component parent, String title, String[] buttonTexts, boolean modal, boolean disposeOnClose) {
-        super(GuiHelper.getFrameForComponent(parent), title, modal ? ModalityType.DOCUMENT_MODAL : ModalityType.MODELESS);
+        super(searchRealParent(parent), title, modal ? ModalityType.DOCUMENT_MODAL : ModalityType.MODELESS);
         this.parent = parent;
         this.modal = modal;
         bTexts = Utils.copyArray(buttonTexts);
@@ -155,12 +156,20 @@ public class ExtendedDialog extends JDialog {
         this.disposeOnClose = disposeOnClose;
     }
 
+    private static Frame searchRealParent(Component parent) {
+        if (parent == null) {
+            return null;
+        } else {
+            return GuiHelper.getFrameForComponent(parent);
+        }
+    }
+
     /**
      * Allows decorating the buttons with icons.
      * @param buttonIcons The button icons
      * @return {@code this}
      */
-    public ExtendedDialog setButtonIcons(Icon[] buttonIcons) {
+    public ExtendedDialog setButtonIcons(Icon ... buttonIcons) {
         this.bIcons = Utils.copyArray(buttonIcons);
         return this;
     }
@@ -170,7 +179,7 @@ public class ExtendedDialog extends JDialog {
      * @param buttonIcons The button icon names
      * @return {@code this}
      */
-    public ExtendedDialog setButtonIcons(String[] buttonIcons) {
+    public ExtendedDialog setButtonIcons(String ... buttonIcons) {
         bIcons = new Icon[buttonIcons.length];
         for (int i = 0; i < buttonIcons.length; ++i) {
             bIcons[i] = ImageProvider.get(buttonIcons[i]);
@@ -185,7 +194,7 @@ public class ExtendedDialog extends JDialog {
      * @param toolTipTexts the tool tip texts. Ignored, if null.
      * @return {@code this}
      */
-    public ExtendedDialog setToolTipTexts(String[] toolTipTexts) {
+    public ExtendedDialog setToolTipTexts(String ... toolTipTexts) {
         this.bToolTipTexts = Utils.copyArray(toolTipTexts);
         return this;
     }
@@ -575,12 +584,7 @@ public class ExtendedDialog extends JDialog {
 
     private void requestFocusToDefaultButton() {
         if (defaultButton != null) {
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    defaultButton.requestFocusInWindow();
-                }
-            });
+            GuiHelper.runInEDT(defaultButton::requestFocusInWindow);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/FileDrop.java b/src/org/openstreetmap/josm/gui/FileDrop.java
deleted file mode 100644
index 7bb31c2..0000000
--- a/src/org/openstreetmap/josm/gui/FileDrop.java
+++ /dev/null
@@ -1,663 +0,0 @@
-/* code from: http://iharder.sourceforge.net/current/java/filedrop/
-  (public domain) with only very small additions */
-package org.openstreetmap.josm.gui;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.Transferable;
-import java.awt.datatransfer.UnsupportedFlavorException;
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTarget;
-import java.awt.dnd.DropTargetDragEvent;
-import java.awt.dnd.DropTargetDropEvent;
-import java.awt.dnd.DropTargetEvent;
-import java.awt.dnd.DropTargetListener;
-import java.awt.dnd.InvalidDnDOperationException;
-import java.awt.event.HierarchyEvent;
-import java.awt.event.HierarchyListener;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.TooManyListenersException;
-
-import javax.swing.BorderFactory;
-import javax.swing.JComponent;
-import javax.swing.border.Border;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.OpenFileAction;
-import org.openstreetmap.josm.gui.FileDrop.TransferableObject;
-
-// CHECKSTYLE.OFF: HideUtilityClassConstructor
-
-/**
- * This class makes it easy to drag and drop files from the operating
- * system to a Java program. Any {@link java.awt.Component} can be
- * dropped onto, but only {@link javax.swing.JComponent}s will indicate
- * the drop event with a changed border.
- * <p>
- * To use this class, construct a new <tt>FileDrop</tt> by passing
- * it the target component and a <tt>Listener</tt> to receive notification
- * when file(s) have been dropped. Here is an example:
- * <p>
- * <code>
- *      JPanel myPanel = new JPanel();
- *      new FileDrop( myPanel, new FileDrop.Listener()
- *      {   public void filesDropped( java.io.File[] files )
- *          {
- *              // handle file drop
- *              ...
- *          }   // end filesDropped
- *      }); // end FileDrop.Listener
- * </code>
- * <p>
- * You can specify the border that will appear when files are being dragged by
- * calling the constructor with a {@link javax.swing.border.Border}. Only
- * <tt>JComponent</tt>s will show any indication with a border.
- * <p>
- * You can turn on some debugging features by passing a <tt>PrintStream</tt>
- * object (such as <tt>System.out</tt>) into the full constructor. A <tt>null</tt>
- * value will result in no extra debugging information being output.
- *
- * <p>I'm releasing this code into the Public Domain. Enjoy.
- * </p>
- * <p><em>Original author: Robert Harder, rharder at usa.net</em></p>
- * <p>2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.</p>
- *
- * @author  Robert Harder
- * @author  rharder at users.sf.net
- * @version 1.0.1
- * @since 1231
- */
-public class FileDrop {
-
-    // CHECKSTYLE.ON: HideUtilityClassConstructor
-
-    private Border normalBorder;
-    private DropTargetListener dropListener;
-
-    // Default border color
-    private static Color defaultBorderColor = new Color(0f, 0f, 1f, 0.25f);
-
-    /**
-     * Constructor for JOSM file drop
-     * @param c The drop target
-     */
-    public FileDrop(final Component c) {
-        this(
-                c,     // Drop target
-                BorderFactory.createMatteBorder(2, 2, 2, 2, defaultBorderColor), // Drag border
-                true, // Recursive
-                new FileDrop.Listener() {
-                    @Override
-                    public void filesDropped(File[] files) {
-                        // start asynchronous loading of files
-                        OpenFileAction.OpenFileTask task = new OpenFileAction.OpenFileTask(Arrays.asList(files), null);
-                        task.setRecordHistory(true);
-                        Main.worker.submit(task);
-                    }
-                }
-        );
-    }
-
-    /**
-     * Full constructor with a specified border and debugging optionally turned on.
-     * With Debugging turned on, more status messages will be displayed to
-     * <tt>out</tt>. A common way to use this constructor is with
-     * <tt>System.out</tt> or <tt>System.err</tt>. A <tt>null</tt> value for
-     * the parameter <tt>out</tt> will result in no debugging output.
-     *
-     * @param c Component on which files will be dropped.
-     * @param dragBorder Border to use on <tt>JComponent</tt> when dragging occurs.
-     * @param recursive Recursively set children as drop targets.
-     * @param listener Listens for <tt>filesDropped</tt>.
-     */
-    public FileDrop(
-            final Component c,
-            final Border dragBorder,
-            final boolean recursive,
-            final Listener listener) {
-
-        // Make a drop listener
-        dropListener = new DropListener(listener, dragBorder, c);
-
-        // Make the component (and possibly children) drop targets
-        makeDropTarget(c, recursive);
-    }
-
-    // BEGIN 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-    private static final String ZERO_CHAR_STRING = Character.toString((char) 0);
-
-    private static File[] createFileArray(BufferedReader bReader) {
-        try {
-            List<File> list = new ArrayList<>();
-            String line;
-            while ((line = bReader.readLine()) != null) {
-                try {
-                    // kde seems to append a 0 char to the end of the reader
-                    if (ZERO_CHAR_STRING.equals(line)) {
-                        continue;
-                    }
-
-                    list.add(new File(new URI(line)));
-                } catch (URISyntaxException ex) {
-                    Main.warn("Error with " + line + ": " + ex.getMessage());
-                }
-            }
-
-            return list.toArray(new File[list.size()]);
-        } catch (IOException ex) {
-            Main.warn("FileDrop: IOException");
-        }
-        return new File[0];
-    }
-    // END 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-
-    private void makeDropTarget(final Component c, boolean recursive) {
-        // Make drop target
-        final DropTarget dt = new DropTarget();
-        try {
-            dt.addDropTargetListener(dropListener);
-        } catch (TooManyListenersException e) {
-            Main.error(e);
-            Main.warn("FileDrop: Drop will not work due to previous error. Do you have another listener attached?");
-        }
-
-        // Listen for hierarchy changes and remove the drop target when the parent gets cleared out.
-        c.addHierarchyListener(new HierarchyListener() {
-            @Override
-            public void hierarchyChanged(HierarchyEvent evt) {
-                Main.trace("FileDrop: Hierarchy changed.");
-                Component parent = c.getParent();
-                if (parent == null) {
-                    c.setDropTarget(null);
-                    Main.trace("FileDrop: Drop target cleared from component.");
-                } else {
-                    new DropTarget(c, dropListener);
-                    Main.trace("FileDrop: Drop target added to component.");
-                }
-            }
-        });
-        if (c.getParent() != null) {
-            new DropTarget(c, dropListener);
-        }
-
-        if (recursive && (c instanceof Container)) {
-            // Get the container
-            Container cont = (Container) c;
-
-            // Get it's components
-            Component[] comps = cont.getComponents();
-
-            // Set it's components as listeners also
-            for (Component comp : comps) {
-                makeDropTarget(comp, recursive);
-            }
-        }
-    }
-
-    /**
-     * 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
-        DataFlavor[] flavors = evt.getCurrentDataFlavors();
-
-        // See if any of the flavors are a file list
-        int i = 0;
-        while (!ok && i < flavors.length) {
-            // BEGIN 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-            // Is the flavor a file list?
-            final DataFlavor curFlavor = flavors[i];
-            if (curFlavor.equals(DataFlavor.javaFileListFlavor) ||
-                    curFlavor.isRepresentationClassReader()) {
-                ok = true;
-            }
-            // END 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-            i++;
-        }
-
-        // show data flavors
-        if (flavors.length == 0) {
-            Main.trace("FileDrop: no data flavors.");
-        }
-        for (i = 0; i < flavors.length; i++) {
-            Main.trace(flavors[i].toString());
-        }
-
-        return ok;
-    }
-
-    /**
-     * Removes the drag-and-drop hooks from the component and optionally
-     * from the all children. You should call this if you add and remove
-     * components after you've set up the drag-and-drop.
-     * This will recursively unregister all components contained within
-     * <var>c</var> if <var>c</var> is a {@link java.awt.Container}.
-     *
-     * @param c The component to unregister as a drop target
-     * @return {@code true} if at least one item has been removed, {@code false} otherwise
-     */
-    public static boolean remove(Component c) {
-        return remove(c, true);
-    }
-
-    /**
-     * Removes the drag-and-drop hooks from the component and optionally
-     * from the all children. You should call this if you add and remove
-     * components after you've set up the drag-and-drop.
-     *
-     * @param c The component to unregister
-     * @param recursive Recursively unregister components within a container
-     * @return {@code true} if at least one item has been removed, {@code false} otherwise
-     */
-    public static boolean remove(Component c, boolean recursive) {
-        Main.trace("FileDrop: Removing drag-and-drop hooks.");
-        c.setDropTarget(null);
-        if (recursive && (c instanceof Container)) {
-            for (Component comp : ((Container) c).getComponents()) {
-                remove(comp, recursive);
-            }
-            return true;
-        } else
-            return false;
-    }
-
-    /* ********  I N N E R   I N T E R F A C E   L I S T E N E R  ******** */
-
-    private final class DropListener implements DropTargetListener {
-        private final Listener listener;
-        private final Border dragBorder;
-        private final Component c;
-
-        private DropListener(Listener listener, Border dragBorder, Component c) {
-            this.listener = listener;
-            this.dragBorder = dragBorder;
-            this.c = c;
-        }
-
-        @Override
-        public void dragEnter(DropTargetDragEvent evt) {
-            Main.trace("FileDrop: dragEnter event.");
-
-            // Is this an acceptable drag event?
-            if (isDragOk(evt)) {
-                // If it's a Swing component, set its border
-                if (c instanceof JComponent) {
-                   JComponent jc = (JComponent) c;
-                    normalBorder = jc.getBorder();
-                    Main.trace("FileDrop: normal border saved.");
-                    jc.setBorder(dragBorder);
-                    Main.trace("FileDrop: drag border set.");
-                }
-
-                // Acknowledge that it's okay to enter
-                evt.acceptDrag(DnDConstants.ACTION_COPY);
-                Main.trace("FileDrop: event accepted.");
-            } else {
-                // Reject the drag event
-                evt.rejectDrag();
-                Main.trace("FileDrop: event rejected.");
-            }
-        }
-
-        @Override
-        public void dragOver(DropTargetDragEvent evt) {
-            // This is called continually as long as the mouse is over the drag target.
-        }
-
-        @Override
-        public void drop(DropTargetDropEvent evt) {
-           Main.trace("FileDrop: drop event.");
-            try {
-                // Get whatever was dropped
-                Transferable tr = evt.getTransferable();
-
-                // Is it a file list?
-                if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
-
-                    // Say we'll take it.
-                    evt.acceptDrop(DnDConstants.ACTION_COPY);
-                    Main.trace("FileDrop: file list accepted.");
-
-                    // Get a useful list
-                    List<?> fileList = (List<?>) tr.getTransferData(DataFlavor.javaFileListFlavor);
-
-                    // Convert list to array
-                    final File[] files = fileList.toArray(new File[fileList.size()]);
-
-                    // Alert listener to drop.
-                    if (listener != null) {
-                        listener.filesDropped(files);
-                    }
-
-                    // Mark that drop is completed.
-                    evt.getDropTargetContext().dropComplete(true);
-                    Main.trace("FileDrop: drop complete.");
-                } else {
-                    // this section will check for a reader flavor.
-                    // Thanks, Nathan!
-                    // BEGIN 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-                    DataFlavor[] flavors = tr.getTransferDataFlavors();
-                    boolean handled = false;
-                    for (DataFlavor flavor : flavors) {
-                        if (flavor.isRepresentationClassReader()) {
-                            // Say we'll take it.
-                            evt.acceptDrop(DnDConstants.ACTION_COPY);
-                            Main.trace("FileDrop: reader accepted.");
-
-                            Reader reader = flavor.getReaderForText(tr);
-
-                            BufferedReader br = new BufferedReader(reader);
-
-                            if (listener != null) {
-                                listener.filesDropped(createFileArray(br));
-                            }
-
-                            // Mark that drop is completed.
-                            evt.getDropTargetContext().dropComplete(true);
-                            Main.trace("FileDrop: drop complete.");
-                            handled = true;
-                            break;
-                        }
-                    }
-                    if (!handled) {
-                        Main.trace("FileDrop: not a file list or reader - abort.");
-                        evt.rejectDrop();
-                    }
-                    // END 2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
-                }
-            } catch (IOException | UnsupportedFlavorException e) {
-                Main.warn("FileDrop: "+e.getClass().getSimpleName()+" - abort:");
-                Main.error(e);
-                try {
-                    evt.rejectDrop();
-                } catch (InvalidDnDOperationException ex) {
-                    // Catch InvalidDnDOperationException to fix #11259
-                    Main.error(ex);
-                }
-            } finally {
-                // If it's a Swing component, reset its border
-                if (c instanceof JComponent) {
-                   JComponent jc = (JComponent) c;
-                    jc.setBorder(normalBorder);
-                    Main.debug("FileDrop: normal border restored.");
-                }
-            }
-        }
-
-        @Override
-        public void dragExit(DropTargetEvent evt) {
-            Main.debug("FileDrop: dragExit event.");
-            // If it's a Swing component, reset its border
-            if (c instanceof JComponent) {
-                JComponent jc = (JComponent) c;
-                jc.setBorder(normalBorder);
-                Main.debug("FileDrop: normal border restored.");
-            }
-        }
-
-        @Override
-        public void dropActionChanged(DropTargetDragEvent evt) {
-            Main.debug("FileDrop: dropActionChanged event.");
-            // Is this an acceptable drag event?
-            if (isDragOk(evt)) {
-                evt.acceptDrag(DnDConstants.ACTION_COPY);
-                Main.debug("FileDrop: event accepted.");
-            } else {
-                evt.rejectDrag();
-                Main.debug("FileDrop: event rejected.");
-            }
-        }
-    }
-
-    /**
-     * Implement this inner interface to listen for when files are dropped. For example
-     * your class declaration may begin like this:
-     * <code>
-     *      public class MyClass implements FileDrop.Listener
-     *      ...
-     *      public void filesDropped( java.io.File[] files )
-     *      {
-     *          ...
-     *      }   // end filesDropped
-     *      ...
-     * </code>
-     */
-    public interface Listener {
-
-        /**
-         * This method is called when files have been successfully dropped.
-         *
-         * @param files An array of <tt>File</tt>s that were dropped.
-         */
-        void filesDropped(File[] files);
-    }
-
-    /* ********  I N N E R   C L A S S  ******** */
-
-    /**
-     * At last an easy way to encapsulate your custom objects for dragging and dropping
-     * in your Java programs!
-     * When you need to create a {@link java.awt.datatransfer.Transferable} object,
-     * use this class to wrap your object.
-     * For example:
-     * <pre><code>
-     *      ...
-     *      MyCoolClass myObj = new MyCoolClass();
-     *      Transferable xfer = new TransferableObject( myObj );
-     *      ...
-     * </code></pre>
-     * Or if you need to know when the data was actually dropped, like when you're
-     * moving data out of a list, say, you can use the {@link TransferableObject.Fetcher}
-     * inner class to return your object Just in Time.
-     * For example:
-     * <pre><code>
-     *      ...
-     *      final MyCoolClass myObj = new MyCoolClass();
-     *
-     *      TransferableObject.Fetcher fetcher = new TransferableObject.Fetcher()
-     *      {   public Object getObject() { return myObj; }
-     *      }; // end fetcher
-     *
-     *      Transferable xfer = new TransferableObject( fetcher );
-     *      ...
-     * </code></pre>
-     *
-     * The {@link java.awt.datatransfer.DataFlavor} associated with
-     * {@link TransferableObject} has the representation class
-     * <tt>net.iharder.dnd.TransferableObject.class</tt> and MIME type
-     * <tt>application/x-net.iharder.dnd.TransferableObject</tt>.
-     * This data flavor is accessible via the static
-     * {@link #DATA_FLAVOR} property.
-     *
-     *
-     * <p>I'm releasing this code into the Public Domain. Enjoy.</p>
-     *
-     * @author  Robert Harder
-     * @author  rob at iharder.net
-     * @version 1.2
-     */
-    public static class TransferableObject implements Transferable {
-
-        /**
-         * The MIME type for {@link #DATA_FLAVOR} is
-         * <tt>application/x-net.iharder.dnd.TransferableObject</tt>.
-         */
-        public static final String MIME_TYPE = "application/x-net.iharder.dnd.TransferableObject";
-
-        /**
-         * The default {@link java.awt.datatransfer.DataFlavor} for
-         * {@link TransferableObject} has the representation class
-         * <tt>net.iharder.dnd.TransferableObject.class</tt>
-         * and the MIME type
-         * <tt>application/x-net.iharder.dnd.TransferableObject</tt>.
-         */
-        public static final DataFlavor DATA_FLAVOR =
-            new DataFlavor(TransferableObject.class, MIME_TYPE);
-
-        private Fetcher fetcher;
-        private Object data;
-
-        private DataFlavor customFlavor;
-
-        /**
-         * Creates a new {@link TransferableObject} that wraps <var>data</var>.
-         * Along with the {@link #DATA_FLAVOR} associated with this class,
-         * this creates a custom data flavor with a representation class
-         * determined from <code>data.getClass()</code> and the MIME type
-         * <tt>application/x-net.iharder.dnd.TransferableObject</tt>.
-         *
-         * @param data The data to transfer
-         */
-        public TransferableObject(Object data) {
-            this.data = data;
-            this.customFlavor = new DataFlavor(data.getClass(), MIME_TYPE);
-        }
-
-        /**
-         * Creates a new {@link TransferableObject} that will return the
-         * object that is returned by <var>fetcher</var>.
-         * No custom data flavor is set other than the default
-         * {@link #DATA_FLAVOR}.
-         *
-         * @param fetcher The {@link Fetcher} that will return the data object
-         * @see Fetcher
-         */
-        public TransferableObject(Fetcher fetcher) {
-            this.fetcher = fetcher;
-        }
-
-        /**
-         * Creates a new {@link TransferableObject} that will return the
-         * object that is returned by <var>fetcher</var>.
-         * Along with the {@link #DATA_FLAVOR} associated with this class,
-         * this creates a custom data flavor with a representation class <var>dataClass</var>
-         * and the MIME type
-         * <tt>application/x-net.iharder.dnd.TransferableObject</tt>.
-         *
-         * @param dataClass The {@link java.lang.Class} to use in the custom data flavor
-         * @param fetcher The {@link Fetcher} that will return the data object
-         * @see Fetcher
-         */
-        public TransferableObject(Class<?> dataClass, Fetcher fetcher) {
-            this.fetcher = fetcher;
-            this.customFlavor = new DataFlavor(dataClass, MIME_TYPE);
-        }
-
-        /**
-         * Returns the custom {@link java.awt.datatransfer.DataFlavor} associated
-         * with the encapsulated object or <tt>null</tt> if the {@link Fetcher}
-         * constructor was used without passing a {@link java.lang.Class}.
-         *
-         * @return The custom data flavor for the encapsulated object
-         */
-        public DataFlavor getCustomDataFlavor() {
-            return customFlavor;
-        }
-
-        /* ********  T R A N S F E R A B L E   M E T H O D S  ******** */
-
-        /**
-         * Returns a two- or three-element array containing first
-         * the custom data flavor, if one was created in the constructors,
-         * second the default {@link #DATA_FLAVOR} associated with
-         * {@link TransferableObject}, and third the
-         * {@link java.awt.datatransfer.DataFlavor#stringFlavor}.
-         *
-         * @return An array of supported data flavors
-         */
-        @Override
-        public DataFlavor[] getTransferDataFlavors() {
-            if (customFlavor != null)
-                return new DataFlavor[] {
-                    customFlavor,
-                    DATA_FLAVOR,
-                    DataFlavor.stringFlavor};
-            else
-                return new DataFlavor[] {
-                    DATA_FLAVOR,
-                    DataFlavor.stringFlavor};
-        }
-
-        /**
-         * Returns the data encapsulated in this {@link TransferableObject}.
-         * If the {@link Fetcher} constructor was used, then this is when
-         * the {@link Fetcher#getObject getObject()} method will be called.
-         * If the requested data flavor is not supported, then the
-         * {@link Fetcher#getObject getObject()} method will not be called.
-         *
-         * @param flavor The data flavor for the data to return
-         * @return The dropped data
-         */
-        @Override
-        public Object getTransferData(DataFlavor flavor)
-        throws UnsupportedFlavorException, IOException {
-            // Native object
-            if (flavor.equals(DATA_FLAVOR))
-                return fetcher == null ? data : fetcher.getObject();
-
-            // String
-            if (flavor.equals(DataFlavor.stringFlavor))
-                return fetcher == null ? data.toString() : fetcher.getObject().toString();
-
-            // We can't do anything else
-            throw new UnsupportedFlavorException(flavor);
-        }
-
-        /**
-         * Returns <tt>true</tt> if <var>flavor</var> is one of the supported
-         * flavors. Flavors are supported using the <code>equals(...)</code> method.
-         *
-         * @param flavor The data flavor to check
-         * @return Whether or not the flavor is supported
-         */
-        @Override
-        public boolean isDataFlavorSupported(DataFlavor flavor) {
-            // Native object
-            if (flavor.equals(DATA_FLAVOR))
-                return true;
-
-            // String
-            if (flavor.equals(DataFlavor.stringFlavor))
-                return true;
-
-            // We can't do anything else
-            return false;
-        }
-
-        /* ********  I N N E R   I N T E R F A C E   F E T C H E R  ******** */
-
-        /**
-         * Instead of passing your data directly to the {@link TransferableObject}
-         * constructor, you may want to know exactly when your data was received
-         * in case you need to remove it from its source (or do anyting else to it).
-         * When the {@link #getTransferData getTransferData(...)} method is called
-         * on the {@link TransferableObject}, the {@link Fetcher}'s
-         * {@link #getObject getObject()} method will be called.
-         *
-         * @author Robert Harder
-         */
-        public interface Fetcher {
-            /**
-             * Return the object being encapsulated in the
-             * {@link TransferableObject}.
-             *
-             * @return The dropped object
-             */
-            Object getObject();
-        }
-    }
-}
diff --git a/src/org/openstreetmap/josm/gui/GettingStarted.java b/src/org/openstreetmap/josm/gui/GettingStarted.java
index 5ca8b19..3c05eea 100644
--- a/src/org/openstreetmap/josm/gui/GettingStarted.java
+++ b/src/org/openstreetmap/josm/gui/GettingStarted.java
@@ -5,7 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.BorderLayout;
 import java.awt.EventQueue;
-import java.awt.GraphicsEnvironment;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.io.IOException;
@@ -24,6 +23,7 @@ import javax.swing.event.HyperlinkListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.gui.datatransfer.FileTransferHandler;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreference;
 import org.openstreetmap.josm.gui.preferences.server.ProxyPreferenceListener;
 import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
@@ -124,6 +124,7 @@ public final class GettingStarted extends JPanel implements ProxyPreferenceListe
                 + "</h1><h2 align=\"center\">" + tr("Downloading \"Message of the day\"") + "</h2></html>");
         // clear the build-in command ctrl+shift+O, because it is used as shortcut in JOSM
         lg.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.SHIFT_MASK | InputEvent.CTRL_MASK), "none");
+        lg.setTransferHandler(null);
 
         JScrollPane scroller = new JScrollPane(lg);
         scroller.setViewportBorder(new EmptyBorder(10, 100, 10, 100));
@@ -131,38 +132,28 @@ public final class GettingStarted extends JPanel implements ProxyPreferenceListe
 
         getMOTD();
 
-        if (!GraphicsEnvironment.isHeadless()) {
-            new FileDrop(scroller);
-        }
+        setTransferHandler(new FileTransferHandler());
     }
 
     private void getMOTD() {
         // Asynchronously get MOTD to speed-up JOSM startup
-        Thread t = new Thread(new Runnable() {
-            @Override
-            public void run() {
-                if (!contentInitialized && Main.pref.getBoolean("help.displaymotd", true)) {
-                    try {
-                        content = new MotdContent().updateIfRequiredString();
-                        contentInitialized = true;
-                        ProxyPreference.removeProxyPreferenceListener(GettingStarted.this);
-                    } catch (IOException ex) {
-                        Main.warn(tr("Failed to read MOTD. Exception was: {0}", ex.toString()));
-                        content = "<html>" + STYLE + "<h1>" + "JOSM - " + tr("Java OpenStreetMap Editor")
-                                + "</h1>\n<h2 align=\"center\">(" + tr("Message of the day not available") + ")</h2></html>";
-                        // In case of MOTD not loaded because of proxy error, listen to preference changes to retry after update
-                        ProxyPreference.addProxyPreferenceListener(GettingStarted.this);
-                    }
+        Thread t = new Thread((Runnable) () -> {
+            if (!contentInitialized && Main.pref.getBoolean("help.displaymotd", true)) {
+                try {
+                    content = new MotdContent().updateIfRequiredString();
+                    contentInitialized = true;
+                    ProxyPreference.removeProxyPreferenceListener(this);
+                } catch (IOException ex) {
+                    Main.warn(ex, tr("Failed to read MOTD. Exception was: {0}", ex.toString()));
+                    content = "<html>" + STYLE + "<h1>" + "JOSM - " + tr("Java OpenStreetMap Editor")
+                            + "</h1>\n<h2 align=\"center\">(" + tr("Message of the day not available") + ")</h2></html>";
+                    // In case of MOTD not loaded because of proxy error, listen to preference changes to retry after update
+                    ProxyPreference.addProxyPreferenceListener(this);
                 }
+            }
 
-                if (content != null) {
-                    EventQueue.invokeLater(new Runnable() {
-                        @Override
-                        public void run() {
-                            lg.setText(fixImageLinks(content));
-                        }
-                    });
-                }
+            if (content != null) {
+                EventQueue.invokeLater(() -> lg.setText(fixImageLinks(content)));
             }
         }, "MOTD-Loader");
         t.setDaemon(true);
diff --git a/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java b/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
index a90898d..d62b418 100644
--- a/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
+++ b/src/org/openstreetmap/josm/gui/HelpAwareOptionPane.java
@@ -151,11 +151,7 @@ public final class HelpAwareOptionPane {
                 }
                 b.setFocusable(true);
                 b.setEnabled(spec.isEnabled());
-                spec.addChangeListener(new ChangeListener() {
-                    @Override public void stateChanged(ChangeEvent e) {
-                        b.setEnabled(spec.isEnabled());
-                    }
-                });
+                spec.addChangeListener(e -> b.setEnabled(spec.isEnabled()));
                 buttons.add(b);
             }
         }
@@ -352,11 +348,6 @@ public final class HelpAwareOptionPane {
      */
     public static void showMessageDialogInEDT(final Component parentComponent, final Object msg, final String title,
             final int messageType, final String helpTopic) {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                showOptionDialog(parentComponent, msg, title, messageType, null, null, null, helpTopic);
-            }
-        });
+        GuiHelper.runInEDT(() -> showOptionDialog(parentComponent, msg, title, messageType, null, null, null, helpTopic));
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/ImageryMenu.java b/src/org/openstreetmap/josm/gui/ImageryMenu.java
index 7f67482..a2cc270 100644
--- a/src/org/openstreetmap/josm/gui/ImageryMenu.java
+++ b/src/org/openstreetmap/josm/gui/ImageryMenu.java
@@ -10,7 +10,6 @@ import java.awt.MenuComponent;
 import java.awt.event.ActionEvent;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
@@ -53,12 +52,8 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
      * ImageryInfo objects are normally sorted by country code first
      * (for the preferences). We don't want this in the imagery menu.
      */
-    public static final Comparator<ImageryInfo> alphabeticImageryComparator = new Comparator<ImageryInfo>() {
-        @Override
-        public int compare(ImageryInfo ii1, ImageryInfo ii2) {
-            return ii1.getName().toLowerCase(Locale.ENGLISH).compareTo(ii2.getName().toLowerCase(Locale.ENGLISH));
-        }
-    };
+    public static final Comparator<ImageryInfo> alphabeticImageryComparator =
+            (ii1, ii2) -> ii1.getName().toLowerCase(Locale.ENGLISH).compareTo(ii2.getName().toLowerCase(Locale.ENGLISH));
 
     private final transient Action offsetAction = new JosmAction(
             tr("Imagery offset"), "mapmode/adjustimg", tr("Adjust imagery offset"), null, false, false) {
@@ -153,7 +148,7 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
 
         // for each configured ImageryInfo, add a menu entry.
         final List<ImageryInfo> savedLayers = new ArrayList<>(ImageryLayerInfo.instance.getLayers());
-        Collections.sort(savedLayers, alphabeticImageryComparator);
+        savedLayers.sort(alphabeticImageryComparator);
         for (final ImageryInfo u : savedLayers) {
             addDynamic(new AddImageryLayerAction(u));
         }
@@ -187,7 +182,7 @@ public class ImageryMenu extends JMenu implements LayerChangeListener {
                 }
             }
             if (!inViewLayers.isEmpty()) {
-                Collections.sort(inViewLayers, alphabeticImageryComparator);
+                inViewLayers.sort(alphabeticImageryComparator);
                 addDynamicSeparator();
                 for (ImageryInfo i : inViewLayers) {
                     addDynamic(new AddImageryLayerAction(i));
diff --git a/src/org/openstreetmap/josm/gui/MainApplication.java b/src/org/openstreetmap/josm/gui/MainApplication.java
index 15dd555..b65e16c 100644
--- a/src/org/openstreetmap/josm/gui/MainApplication.java
+++ b/src/org/openstreetmap/josm/gui/MainApplication.java
@@ -33,7 +33,6 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.Callable;
 
 import javax.swing.JOptionPane;
 import javax.swing.RepaintManager;
@@ -242,7 +241,7 @@ public class MainApplication extends Main {
      * @param args command-line arguments array
      * @return command-line argument map
      */
-    public static Map<Option, Collection<String>> buildCommandLineArgumentMap(String[] args) {
+    public static Map<Option, Collection<String>> buildCommandLineArgumentMap(String ... args) {
 
         List<LongOpt> los = new ArrayList<>();
         for (Option o : Option.values()) {
@@ -298,7 +297,6 @@ public class MainApplication extends Main {
      */
     public static void main(final String[] argArray) {
         I18n.init();
-        Main.checkJavaVersion();
 
         // construct argument table
         Map<Option, Collection<String>> args = null;
@@ -425,20 +423,10 @@ public class MainApplication extends Main {
         ProxySelector.setDefault(proxySelector);
         OAuthAccessTokenHolder.getInstance().init(Main.pref, CredentialsManager.getInstance());
 
-        final SplashScreen splash = GuiHelper.runInEDTAndWaitAndReturn(new Callable<SplashScreen>() {
-            @Override
-            public SplashScreen call() {
-                return new SplashScreen();
-            }
-        });
+        final SplashScreen splash = GuiHelper.runInEDTAndWaitAndReturn(SplashScreen::new);
         final SplashScreen.SplashProgressMonitor monitor = splash.getProgressMonitor();
         monitor.beginTask(tr("Initializing"));
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                splash.setVisible(Main.pref.getBoolean("draw.splashscreen", true));
-            }
-        });
+        GuiHelper.runInEDT(() -> splash.setVisible(Main.pref.getBoolean("draw.splashscreen", true)));
         Main.setInitStatusListener(new InitStatusListener() {
 
             @Override
@@ -473,13 +461,10 @@ public class MainApplication extends Main {
         }
 
         // Wait for splash disappearance (fix #9714)
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                splash.setVisible(false);
-                splash.dispose();
-                mainFrame.setVisible(true);
-            }
+        GuiHelper.runInEDTAndWait(() -> {
+            splash.setVisible(false);
+            splash.dispose();
+            mainFrame.setVisible(true);
         });
 
         Main.MasterWindowListener.setup();
@@ -549,7 +534,7 @@ public class MainApplication extends Main {
                 try {
                     Main.setOffline(OnlineResource.valueOf(s.toUpperCase(Locale.ENGLISH)));
                 } catch (IllegalArgumentException e) {
-                    Main.error(tr("''{0}'' is not a valid value for argument ''{1}''. Possible values are {2}, possibly delimited by commas.",
+                    Main.error(e, tr("''{0}'' is not a valid value for argument ''{1}''. Possible values are {2}, possibly delimited by commas.",
                             s.toUpperCase(Locale.ENGLISH), Option.OFFLINE.getName(), Arrays.toString(OnlineResource.values())));
                     System.exit(1);
                     return;
@@ -570,47 +555,45 @@ public class MainApplication extends Main {
      */
     private static void checkIPv6() {
         if ("auto".equals(Main.pref.get("prefer.ipv6", "auto"))) {
-             new Thread(new Runnable() { /* this may take some time (DNS, Connect) */
-                @Override
-                public void run() {
-                    boolean hasv6 = false;
-                    boolean wasv6 = Main.pref.getBoolean("validated.ipv6", false);
-                    try {
-                        /* Use the check result from last run of the software, as after the test, value
-                           changes have no effect anymore */
-                        if (wasv6) {
-                            Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
-                        }
-                        for (InetAddress a : InetAddress.getAllByName("josm.openstreetmap.de")) {
-                            if (a instanceof Inet6Address) {
-                                if (a.isReachable(1000)) {
-                                    /* be sure it REALLY works */
-                                    Socket s = new Socket();
-                                    s.connect(new InetSocketAddress(a, 80), 1000);
-                                    s.close();
-                                    Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
-                                    if (!wasv6) {
-                                        Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
-                                    } else {
-                                        Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4."));
-                                    }
-                                    hasv6 = true;
+            new Thread((Runnable) () -> { /* this may take some time (DNS, Connect) */
+                boolean hasv6 = false;
+                boolean wasv6 = Main.pref.getBoolean("validated.ipv6", false);
+                try {
+                    /* Use the check result from last run of the software, as after the test, value
+                       changes have no effect anymore */
+                    if (wasv6) {
+                        Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
+                    }
+                    for (InetAddress a : InetAddress.getAllByName("josm.openstreetmap.de")) {
+                        if (a instanceof Inet6Address) {
+                            if (a.isReachable(1000)) {
+                                /* be sure it REALLY works */
+                                Socket s = new Socket();
+                                s.connect(new InetSocketAddress(a, 80), 1000);
+                                s.close();
+                                Utils.updateSystemProperty("java.net.preferIPv6Addresses", "true");
+                                if (!wasv6) {
+                                    Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4 after next restart."));
+                                } else {
+                                    Main.info(tr("Detected useable IPv6 network, prefering IPv6 over IPv4."));
                                 }
-                                break; /* we're done */
+                                hasv6 = true;
                             }
-                        }
-                    } catch (IOException | SecurityException e) {
-                        if (Main.isDebugEnabled()) {
-                            Main.debug("Exception while checking IPv6 connectivity: "+e);
+                            break; /* we're done */
                         }
                     }
-                    if (wasv6 && !hasv6) {
-                        Main.info(tr("Detected no useable IPv6 network, prefering IPv4 over IPv6 after next restart."));
-                        Main.pref.put("validated.ipv6", hasv6); // be sure it is stored before the restart!
-                        new RestartAction().actionPerformed(null);
+                } catch (IOException | SecurityException e) {
+                    if (Main.isDebugEnabled()) {
+                        Main.debug("Exception while checking IPv6 connectivity: "+e);
                     }
-                    Main.pref.put("validated.ipv6", hasv6);
+                    Main.trace(e);
+                }
+                if (wasv6 && !hasv6) {
+                    Main.info(tr("Detected no useable IPv6 network, prefering IPv4 over IPv6 after next restart."));
+                    Main.pref.put("validated.ipv6", hasv6); // be sure it is stored before the restart!
+                    new RestartAction().actionPerformed(null);
                 }
+                Main.pref.put("validated.ipv6", hasv6);
             }, "IPv6-checker").start();
         }
     }
@@ -698,7 +681,7 @@ public class MainApplication extends Main {
                     ));
         }
 
-        private boolean handleNetworkErrors() {
+        private static boolean handleNetworkErrors() {
             boolean condition = !NETWORK_ERRORS.isEmpty();
             if (condition) {
                 Set<String> errors = new TreeSet<>();
diff --git a/src/org/openstreetmap/josm/gui/MainFrame.java b/src/org/openstreetmap/josm/gui/MainFrame.java
index 7b5a654..9b7e351 100644
--- a/src/org/openstreetmap/josm/gui/MainFrame.java
+++ b/src/org/openstreetmap/josm/gui/MainFrame.java
@@ -13,7 +13,6 @@ import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
-import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.LinkedList;
 import java.util.List;
@@ -26,8 +25,6 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
-import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
-import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.LayerStateChangeListener;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -39,21 +36,13 @@ import org.openstreetmap.josm.tools.WindowGeometry;
  * @since 10340
  */
 public class MainFrame extends JFrame {
-    private final transient LayerStateChangeListener updateTitleOnLayerStateChange = new LayerStateChangeListener() {
-        @Override
-        public void uploadDiscouragedChanged(OsmDataLayer layer, boolean newValue) {
-            onLayerChange(layer);
-        }
-    };
+    private final transient LayerStateChangeListener updateTitleOnLayerStateChange = (layer, newValue) -> onLayerChange(layer);
 
-    private final transient PropertyChangeListener updateTitleOnSaveChange = new PropertyChangeListener() {
-        @Override
-        public void propertyChange(PropertyChangeEvent evt) {
-            if (evt.getPropertyName().equals(OsmDataLayer.REQUIRES_SAVE_TO_DISK_PROP)
-                    || evt.getPropertyName().equals(OsmDataLayer.REQUIRES_UPLOAD_TO_SERVER_PROP)) {
-                OsmDataLayer layer = (OsmDataLayer) evt.getSource();
-                onLayerChange(layer);
-            }
+    private final transient PropertyChangeListener updateTitleOnSaveChange = evt -> {
+        if (evt.getPropertyName().equals(OsmDataLayer.REQUIRES_SAVE_TO_DISK_PROP)
+                || evt.getPropertyName().equals(OsmDataLayer.REQUIRES_UPLOAD_TO_SERVER_PROP)) {
+            OsmDataLayer layer = (OsmDataLayer) evt.getSource();
+            onLayerChange(layer);
         }
     };
 
@@ -101,19 +90,14 @@ public class MainFrame extends JFrame {
         setIconImages(l);
         addWindowListener(new WindowAdapter() {
             @Override
-            public void windowClosing(final WindowEvent arg0) {
+            public void windowClosing(final WindowEvent evt) {
                 Main.exitJosm(true, 0);
             }
         });
         setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
 
         // This listener is never removed, since the main frame exists forever.
-        Main.getLayerManager().addActiveLayerChangeListener(new ActiveLayerChangeListener() {
-            @Override
-            public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-                refreshTitle();
-            }
-        });
+        Main.getLayerManager().addActiveLayerChangeListener(e -> refreshTitle());
         Main.getLayerManager().addLayerChangeListener(new ManageLayerListeners(), true);
 
         refreshTitle();
diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
index cd9f8b4..4783813 100644
--- a/src/org/openstreetmap/josm/gui/MainMenu.java
+++ b/src/org/openstreetmap/josm/gui/MainMenu.java
@@ -73,6 +73,7 @@ import org.openstreetmap.josm.actions.OrthogonalizeAction;
 import org.openstreetmap.josm.actions.OrthogonalizeAction.Undo;
 import org.openstreetmap.josm.actions.OverpassDownloadAction;
 import org.openstreetmap.josm.actions.PasteAction;
+import org.openstreetmap.josm.actions.PasteAtSourcePositionAction;
 import org.openstreetmap.josm.actions.PasteTagsAction;
 import org.openstreetmap.josm.actions.PreferenceToggleAction;
 import org.openstreetmap.josm.actions.PreferencesAction;
@@ -112,8 +113,6 @@ import org.openstreetmap.josm.actions.audio.AudioPlayPauseAction;
 import org.openstreetmap.josm.actions.audio.AudioPrevAction;
 import org.openstreetmap.josm.actions.audio.AudioSlowerAction;
 import org.openstreetmap.josm.actions.search.SearchAction;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.gui.dialogs.MenuItemSearchDialog;
 import org.openstreetmap.josm.gui.io.RecentlyOpenedFilesMenu;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
@@ -196,6 +195,8 @@ public class MainMenu extends JMenuBar {
     public final JosmAction copyCoordinates = new CopyCoordinatesAction();
     /** Edit / Paste */
     public final PasteAction paste = new PasteAction();
+    /** Edit / Paste at source */
+    private final PasteAtSourcePositionAction pasteAtSource = new PasteAtSourcePositionAction();
     /** Edit / Paste Tags */
     public final PasteTagsAction pasteTags = new PasteTagsAction();
     /** Edit / Duplicate */
@@ -681,6 +682,7 @@ public class MainMenu extends JMenuBar {
         add(editMenu, copy);
         add(editMenu, copyCoordinates, true);
         add(editMenu, paste);
+        add(editMenu, pasteAtSource, true);
         add(editMenu, pasteTags);
         add(editMenu, duplicate);
         add(editMenu, delete);
@@ -802,12 +804,9 @@ public class MainMenu extends JMenuBar {
             showAudioMenu(true);
         }
 
-        Main.pref.addPreferenceChangeListener(new PreferenceChangedListener() {
-            @Override
-            public void preferenceChanged(PreferenceChangeEvent e) {
-                if ("audio.menuinvisible".equals(e.getKey())) {
-                    showAudioMenu(!Boolean.parseBoolean(e.getNewValue().toString()));
-                }
+        Main.pref.addPreferenceChangeListener(e -> {
+            if ("audio.menuinvisible".equals(e.getKey())) {
+                showAudioMenu(!Boolean.parseBoolean(e.getNewValue().toString()));
             }
         });
 
diff --git a/src/org/openstreetmap/josm/gui/MainPanel.java b/src/org/openstreetmap/josm/gui/MainPanel.java
index f7ffd64..2798eb7 100644
--- a/src/org/openstreetmap/josm/gui/MainPanel.java
+++ b/src/org/openstreetmap/josm/gui/MainPanel.java
@@ -162,11 +162,6 @@ public class MainPanel extends JPanel {
                 updateContent(false);
             }
         });
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                updateContent(!layerManager.getLayers().isEmpty());
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> updateContent(!layerManager.getLayers().isEmpty()));
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/MapFrame.java b/src/org/openstreetmap/josm/gui/MapFrame.java
index e3ab5cc..54d8c2d 100644
--- a/src/org/openstreetmap/josm/gui/MapFrame.java
+++ b/src/org/openstreetmap/josm/gui/MapFrame.java
@@ -8,13 +8,10 @@ import java.awt.Component;
 import java.awt.Container;
 import java.awt.Dimension;
 import java.awt.Font;
-import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.awt.event.MouseWheelEvent;
-import java.awt.event.MouseWheelListener;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -53,8 +50,6 @@ import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.actions.mapmode.ParallelWayAction;
 import org.openstreetmap.josm.actions.mapmode.SelectAction;
 import org.openstreetmap.josm.actions.mapmode.ZoomAction;
-import org.openstreetmap.josm.data.Preferences;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.gui.dialogs.ChangesetDialog;
@@ -196,9 +191,6 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
         setLayout(new BorderLayout());
 
         mapView = new MapView(Main.getLayerManager(), contentPane, viewportData);
-        if (!GraphicsEnvironment.isHeadless()) {
-            new FileDrop(mapView);
-        }
 
         splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true);
 
@@ -500,21 +492,13 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
          */
         if (Main.pref.getBoolean("sidetoolbar.scrollable", true)) {
             final ScrollViewport svp = new ScrollViewport(sideToolBar, ScrollViewport.VERTICAL_DIRECTION);
-            svp.addMouseWheelListener(new MouseWheelListener() {
-                @Override
-                public void mouseWheelMoved(MouseWheelEvent e) {
-                    svp.scroll(0, e.getUnitsToScroll() * 5);
-                }
-            });
+            svp.addMouseWheelListener(e -> svp.scroll(0, e.getUnitsToScroll() * 5));
             sideToolBar = svp;
         }
         sideToolBar.setVisible(Main.pref.getBoolean("sidetoolbar.visible", true));
-        sidetoolbarPreferencesChangedListener = new Preferences.PreferenceChangedListener() {
-            @Override
-            public void preferenceChanged(PreferenceChangeEvent e) {
-                if ("sidetoolbar.visible".equals(e.getKey())) {
-                    sideToolBar.setVisible(Main.pref.getBoolean("sidetoolbar.visible"));
-                }
+        sidetoolbarPreferencesChangedListener = e -> {
+            if ("sidetoolbar.visible".equals(e.getKey())) {
+                sideToolBar.setVisible(Main.pref.getBoolean("sidetoolbar.visible"));
             }
         };
         Main.pref.addPreferenceChangeListener(sidetoolbarPreferencesChangedListener);
@@ -718,7 +702,9 @@ public class MapFrame extends JPanel implements Destroyable, ActiveLayerChangeLi
 
     /**
      * Interface to notify listeners of the change of the mapMode.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface MapModeChangeListener {
         /**
          * Trigerred when map mode changes.
diff --git a/src/org/openstreetmap/josm/gui/MapFrameListener.java b/src/org/openstreetmap/josm/gui/MapFrameListener.java
index fd4c719..63eff86 100644
--- a/src/org/openstreetmap/josm/gui/MapFrameListener.java
+++ b/src/org/openstreetmap/josm/gui/MapFrameListener.java
@@ -4,7 +4,9 @@ package org.openstreetmap.josm.gui;
 /**
  * Listener notified of MapFrame changes.
  * @since 5957
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface MapFrameListener {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/MapMover.java b/src/org/openstreetmap/josm/gui/MapMover.java
index 0905833..1fd5943 100644
--- a/src/org/openstreetmap/josm/gui/MapMover.java
+++ b/src/org/openstreetmap/josm/gui/MapMover.java
@@ -182,8 +182,8 @@ public class MapMover extends MouseAdapter implements Destroyable {
     public void mousePressed(MouseEvent e) {
         int offMask = MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON2_DOWN_MASK;
         int macMouseMask = MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON1_DOWN_MASK;
-        if (e.getButton() == MouseEvent.BUTTON3 && (e.getModifiersEx() & offMask) == 0 ||
-                Main.isPlatformOsx() && e.getModifiersEx() == macMouseMask) {
+        if ((e.getButton() == MouseEvent.BUTTON3 && (e.getModifiersEx() & offMask) == 0) ||
+                (Main.isPlatformOsx() && e.getModifiersEx() == macMouseMask)) {
             startMovement(e);
         }
     }
@@ -193,7 +193,7 @@ public class MapMover extends MouseAdapter implements Destroyable {
      */
     @Override
     public void mouseReleased(MouseEvent e) {
-        if (e.getButton() == MouseEvent.BUTTON3 || Main.isPlatformOsx() && e.getButton() == MouseEvent.BUTTON1) {
+        if (e.getButton() == MouseEvent.BUTTON3 || (Main.isPlatformOsx() && e.getButton() == MouseEvent.BUTTON1)) {
             endMovement();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/MapStatus.java b/src/org/openstreetmap/josm/gui/MapStatus.java
index 7f7ab79..50ef27c 100644
--- a/src/org/openstreetmap/josm/gui/MapStatus.java
+++ b/src/org/openstreetmap/josm/gui/MapStatus.java
@@ -1,8 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui;
 
-import static org.openstreetmap.josm.data.osm.OsmPrimitive.isSelectablePredicate;
-import static org.openstreetmap.josm.data.osm.OsmPrimitive.isUsablePredicate;
 import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.marktr;
 import static org.openstreetmap.josm.tools.I18n.tr;
@@ -77,7 +75,6 @@ import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicate;
 
 /**
  * A component that manages some status information display about the map.
@@ -293,12 +290,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
                     // Popup Information
                     // display them if the middle mouse button is pressed and keep them until the mouse is moved
                     if (middleMouseDown || isAtOldPosition) {
-                        Collection<OsmPrimitive> osms = mv.getAllNearest(ms.mousePos, new Predicate<OsmPrimitive>() {
-                            @Override
-                            public boolean evaluate(OsmPrimitive o) {
-                                return isUsablePredicate.evaluate(o) && isSelectablePredicate.evaluate(o);
-                            }
-                        });
+                        Collection<OsmPrimitive> osms = mv.getAllNearest(ms.mousePos, OsmPrimitive::isSelectable);
 
                         final JPanel c = new JPanel(new GridBagLayout());
                         final JLabel lbl = new JLabel(
@@ -445,7 +437,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
          * @param ms mouse state
          */
         private void statusBarElementUpdate(MouseState ms) {
-            final OsmPrimitive osmNearest = mv.getNearestNodeOrWay(ms.mousePos, isUsablePredicate, false);
+            final OsmPrimitive osmNearest = mv.getNearestNodeOrWay(ms.mousePos, OsmPrimitive::isUsable, false);
             if (osmNearest != null) {
                 nameText.setText(osmNearest.getDisplayName(DefaultNameFormatter.getInstance()));
             } else {
@@ -504,12 +496,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
                 return;
             final Popup staticPopup = popup;
             popup = null;
-            EventQueue.invokeLater(new Runnable() {
-               @Override
-               public void run() {
-                    staticPopup.hide();
-                }
-            });
+            EventQueue.invokeLater(staticPopup::hide);
         }
 
         /**
@@ -523,21 +510,13 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
             if (this.popup != null) {
                 // If an old popup exists, remove it when the new popup has been drawn to keep flickering to a minimum
                 final Popup staticOldPopup = this.popup;
-                EventQueue.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        staticPopup.show();
-                        staticOldPopup.hide();
-                    }
+                EventQueue.invokeLater(() -> {
+                    staticPopup.show();
+                    staticOldPopup.hide();
                 });
             } else {
                 // There is no old popup
-                EventQueue.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        staticPopup.show();
-                    }
-                });
+                EventQueue.invokeLater(staticPopup::show);
             }
             this.popupLabels = lbls;
             this.popup = newPopup;
@@ -692,22 +671,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
         }
     }
 
-    private final transient AWTEventListener awtListener = new AWTEventListener() {
-         @Override
-         public void eventDispatched(AWTEvent event) {
-            if (event instanceof InputEvent &&
-                    ((InputEvent) event).getComponent() == mv) {
-                synchronized (collector) {
-                    int modifiers = ((InputEvent) event).getModifiersEx();
-                    Point mousePos = null;
-                    if (event instanceof MouseEvent) {
-                        mousePos = ((MouseEvent) event).getPoint();
-                    }
-                    collector.updateMousePosition(mousePos, modifiers);
-                }
-            }
-        }
-    };
+    private final transient AWTEventListener awtListener;
 
     private final transient MouseMotionListener mouseMotionListener = new MouseMotionListener() {
         @Override
@@ -736,12 +700,12 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
     };
 
     private void registerListeners() {
-        // Listen to keyboard/mouse events for pressing/releasing alt key and
-        // inform the collector.
+        // Listen to keyboard/mouse events for pressing/releasing alt key and inform the collector.
         try {
             Toolkit.getDefaultToolkit().addAWTEventListener(awtListener,
                     AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
         } catch (SecurityException ex) {
+            Main.trace(ex);
             mv.addMouseMotionListener(mouseMotionListener);
             mv.addKeyListener(keyAdapter);
         }
@@ -752,9 +716,7 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
             Toolkit.getDefaultToolkit().removeAWTEventListener(awtListener);
         } catch (SecurityException e) {
             // Don't care, awtListener probably wasn't registered anyway
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         mv.removeMouseMotionListener(mouseMotionListener);
         mv.removeKeyListener(keyAdapter);
@@ -843,6 +805,19 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
     public MapStatus(final MapFrame mapFrame) {
         this.mv = mapFrame.mapView;
         this.collector = new Collector(mapFrame);
+        this.awtListener = event -> {
+            if (event instanceof InputEvent &&
+                    ((InputEvent) event).getComponent() == mv) {
+                synchronized (collector) {
+                    int modifiers = ((InputEvent) event).getModifiersEx();
+                    Point mousePos = null;
+                    if (event instanceof MouseEvent) {
+                        mousePos = ((MouseEvent) event).getPoint();
+                    }
+                    collector.updateMousePosition(mousePos, modifiers);
+                }
+            }
+        };
 
         // Context menu of status bar
         setComponentPopupMenu(new MapStatusPopupMenu());
@@ -1009,12 +984,9 @@ public final class MapStatus extends JPanel implements Helpful, Destroyable, Pre
         statusText.remove(entry);
         statusText.add(entry);
 
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                helpText.setText(text);
-                helpText.setToolTipText(text);
-            }
+        GuiHelper.runInEDT(() -> {
+            helpText.setText(text);
+            helpText.setToolTipText(text);
         });
     }
 
diff --git a/src/org/openstreetmap/josm/gui/MapView.java b/src/org/openstreetmap/josm/gui/MapView.java
index da3079e..63e4bb4 100644
--- a/src/org/openstreetmap/josm/gui/MapView.java
+++ b/src/org/openstreetmap/josm/gui/MapView.java
@@ -29,6 +29,7 @@ import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TreeSet;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.swing.AbstractButton;
@@ -47,11 +48,11 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.osm.DataSet;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
 import org.openstreetmap.josm.gui.MapViewState.MapViewRectangle;
+import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
 import org.openstreetmap.josm.gui.layer.AbstractMapViewPaintable;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
@@ -130,6 +131,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * @deprecated Use {@link ActiveLayerChangeListener} instead.
      */
     @Deprecated
+    @FunctionalInterface
     public interface EditLayerChangeListener {
 
         /**
@@ -148,7 +150,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
     private class LayerInvalidatedListener implements PaintableInvalidationListener {
         private boolean ignoreRepaint;
         @Override
-        public void paintablInvalidated(PaintableInvalidationEvent event) {
+        public void paintableInvalidated(PaintableInvalidationEvent event) {
             ignoreRepaint = true;
             repaint();
         }
@@ -187,11 +189,11 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
     /**
      * This class is an adapter for the old layer change interface.
-     * <p>
-     * New implementations should use {@link org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener}
      * @author Michael Zangl
      * @since 10271
+     * @deprecated New implementations should use {@link org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener}
      */
+    @Deprecated
     protected static class LayerChangeAdapter implements ActiveLayerChangeListener, LayerManager.LayerChangeListener {
 
         private final LayerChangeListener wrapped;
@@ -264,11 +266,11 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
     /**
      * This class is an adapter for the old layer change interface.
-     * <p>
-     * New implementations should use {@link org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener}
      * @author Michael Zangl
      * @since 10271
+     * @deprecated New implementations should use {@link org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener}
      */
+    @Deprecated
     protected static class EditLayerChangeAdapter implements ActiveLayerChangeListener {
 
         private final EditLayerChangeListener wrapped;
@@ -323,8 +325,8 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * @since 10474
      */
     private static class WarningLayerPainter implements LayerPainter {
-        boolean warningPrinted = false;
-        private Layer layer;
+        boolean warningPrinted;
+        private final Layer layer;
 
         WarningLayerPainter(Layer layer) {
             this.layer = layer;
@@ -359,17 +361,13 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             Main.getLayerManager().removeLayerChangeListener(adapter);
         } catch (IllegalArgumentException e) {
             // Ignored in old implementation
-            if (Main.isDebugEnabled()) {
-                Main.debug(e.getMessage());
-            }
+            Main.debug(e);
         }
         try {
             Main.getLayerManager().removeActiveLayerChangeListener(adapter);
         } catch (IllegalArgumentException e) {
             // Ignored in old implementation
-            if (Main.isDebugEnabled()) {
-                Main.debug(e.getMessage());
-            }
+            Main.debug(e);
         }
     }
 
@@ -387,9 +385,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             Main.getLayerManager().removeActiveLayerChangeListener(new EditLayerChangeAdapter(listener));
         } catch (IllegalArgumentException e) {
             // Ignored in old implementation
-            if (Main.isDebugEnabled()) {
-                Main.debug(e.getMessage());
-            }
+            Main.debug(e);
         }
     }
 
@@ -576,9 +572,10 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
             setFocusTraversalKeysEnabled(false);
         }
 
-        for (JComponent c : getMapNavigationComponents(MapView.this)) {
+        for (JComponent c : getMapNavigationComponents(this)) {
             add(c);
         }
+        setTransferHandler(new OsmTransferHandler());
     }
 
     /**
@@ -671,7 +668,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * @return true if the active data layer (edit layer) is drawable, false otherwise
      */
     public boolean isActiveLayerDrawable() {
-         return getEditLayer() != null;
+         return layerManager.getEditLayer() != null;
     }
 
     /**
@@ -680,7 +677,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * @return true if the active data layer (edit layer) is visible, false otherwise
      */
     public boolean isActiveLayerVisible() {
-        OsmDataLayer e = getEditLayer();
+        OsmDataLayer e = layerManager.getEditLayer();
         return e != null && e.isVisible();
     }
 
@@ -919,11 +916,61 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
 
         synchronized (temporaryLayers) {
             for (MapViewPaintable mvp : temporaryLayers) {
-                mvp.paint(tempG, this, box);
+                try {
+                    mvp.paint(tempG, this, box);
+                } catch (RuntimeException e) {
+                    throw BugReport.intercept(e).put("mvp", mvp);
+                }
             }
         }
 
         // draw world borders
+        try {
+            drawWorldBorders(tempG);
+        } catch (RuntimeException e) {
+            throw BugReport.intercept(e).put("bounds", getProjection()::getWorldBoundsLatLon);
+        }
+
+        if (Main.isDisplayingMapView() && Main.map.filterDialog != null) {
+            Main.map.filterDialog.drawOSDText(tempG);
+        }
+
+        if (playHeadMarker != null) {
+            playHeadMarker.paint(tempG, this);
+        }
+
+        try {
+            g.drawImage(offscreenBuffer, 0, 0, null);
+        } catch (ClassCastException e) {
+            // See #11002 and duplicate tickets. On Linux with Java >= 8 Many users face this error here:
+            //
+            // java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData
+            //   at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:145)
+            //   at sun.java2d.xr.XrSwToPMBlit.Blit(XRPMBlitLoops.java:353)
+            //   at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:959)
+            //   at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:577)
+            //   at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:67)
+            //   at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)
+            //   at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
+            //   at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
+            //   at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3296)
+            //   at org.openstreetmap.josm.gui.MapView.paint(MapView.java:834)
+            //
+            // It seems to be this JDK bug, but Oracle does not seem to be fixing it:
+            // https://bugs.openjdk.java.net/browse/JDK-7172749
+            //
+            // According to bug reports it can happen for a variety of reasons such as:
+            // - long period of time
+            // - change of screen resolution
+            // - addition/removal of a secondary monitor
+            //
+            // But the application seems to work fine after, so let's just log the error
+            Main.error(e);
+        }
+        super.paint(g);
+    }
+
+    private void drawWorldBorders(Graphics2D tempG) {
         tempG.setColor(Color.WHITE);
         Bounds b = getProjection().getWorldBoundsLatLon();
         double lat = b.getMinLat();
@@ -966,44 +1013,6 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
         final Area viewport = new Area(new Rectangle(-1, -1, w + 2, h + 2));
         border.intersect(viewport);
         tempG.draw(border);
-
-        if (Main.isDisplayingMapView() && Main.map.filterDialog != null) {
-            Main.map.filterDialog.drawOSDText(tempG);
-        }
-
-        if (playHeadMarker != null) {
-            playHeadMarker.paint(tempG, this);
-        }
-
-        try {
-            g.drawImage(offscreenBuffer, 0, 0, null);
-        } catch (ClassCastException e) {
-            // See #11002 and duplicate tickets. On Linux with Java >= 8 Many users face this error here:
-            //
-            // java.lang.ClassCastException: sun.awt.image.BufImgSurfaceData cannot be cast to sun.java2d.xr.XRSurfaceData
-            //   at sun.java2d.xr.XRPMBlitLoops.cacheToTmpSurface(XRPMBlitLoops.java:145)
-            //   at sun.java2d.xr.XrSwToPMBlit.Blit(XRPMBlitLoops.java:353)
-            //   at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:959)
-            //   at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:577)
-            //   at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:67)
-            //   at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)
-            //   at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
-            //   at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
-            //   at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3296)
-            //   at org.openstreetmap.josm.gui.MapView.paint(MapView.java:834)
-            //
-            // It seems to be this JDK bug, but Oracle does not seem to be fixing it:
-            // https://bugs.openjdk.java.net/browse/JDK-7172749
-            //
-            // According to bug reports it can happen for a variety of reasons such as:
-            // - long period of time
-            // - change of screen resolution
-            // - addition/removal of a secondary monitor
-            //
-            // But the application seems to work fine after, so let's just log the error
-            Main.error(e);
-        }
-        super.paint(g);
     }
 
     /**
@@ -1251,12 +1260,7 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
         }
     }
 
-    private final transient SelectionChangedListener repaintSelectionChangedListener = new SelectionChangedListener() {
-        @Override
-        public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-            repaint();
-        }
-    };
+    private final transient SelectionChangedListener repaintSelectionChangedListener = newSelection -> repaint();
 
     /**
      * Destroy this map view panel. Should be called once when it is not needed any more.
@@ -1282,17 +1286,17 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * @return A String of sources separated by ';'
      */
     public String getLayerInformationForSourceTag() {
-        final Collection<String> layerInfo = new ArrayList<>();
-        if (!getLayersOfType(GpxLayer.class).isEmpty()) {
+        final Set<String> layerInfo = new TreeSet<>();
+        if (!layerManager.getLayersOfType(GpxLayer.class).isEmpty()) {
             // no i18n for international values
             layerInfo.add("survey");
         }
-        for (final GeoImageLayer i : getLayersOfType(GeoImageLayer.class)) {
+        for (final GeoImageLayer i : layerManager.getLayersOfType(GeoImageLayer.class)) {
             if (i.isVisible()) {
                 layerInfo.add(i.getName());
             }
         }
-        for (final ImageryLayer i : getLayersOfType(ImageryLayer.class)) {
+        for (final ImageryLayer i : layerManager.getLayersOfType(ImageryLayer.class)) {
             if (i.isVisible()) {
                 layerInfo.add(ImageryInfo.ImageryType.BING.equals(i.getInfo().getImageryType()) ? "Bing" : i.getName());
             }
@@ -1305,7 +1309,9 @@ LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
      * <p>
      * This is the only safe method to find changes to the map view, since many components call MapView.repaint() directly.
      * @author Michael Zangl
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface RepaintListener {
         /**
          * Called when any repaint method is called (using default arguments if required).
diff --git a/src/org/openstreetmap/josm/gui/MapViewState.java b/src/org/openstreetmap/josm/gui/MapViewState.java
index 3167680..f7dcd8d 100644
--- a/src/org/openstreetmap/josm/gui/MapViewState.java
+++ b/src/org/openstreetmap/josm/gui/MapViewState.java
@@ -7,6 +7,7 @@ import java.awt.Rectangle;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.geom.Point2D.Double;
+import java.awt.geom.Rectangle2D;
 
 import javax.swing.JComponent;
 
@@ -17,6 +18,7 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 /**
  * This class represents a state of the {@link MapView}.
@@ -96,7 +98,11 @@ public final class MapViewState {
             topLeftInWindow.y += component.getY();
             component = component.getParent();
         }
-        topLeftOnScreen = position.getLocationOnScreen();
+        try {
+            topLeftOnScreen = position.getLocationOnScreen();
+        } catch (RuntimeException e) {
+            throw BugReport.intercept(e).put("position", position).put("parent", position::getParent);
+        }
     }
 
     private MapViewState(Projection projection, MapViewState mapViewState) {
@@ -138,6 +144,16 @@ public final class MapViewState {
     }
 
     /**
+     * Gets the {@link MapViewPoint} for the given {@link LatLon} coordinate.
+     * @param latlon the position
+     * @return The point for that position.
+     * @since 10651
+     */
+    public MapViewPoint getPointFor(LatLon latlon) {
+        return getPointFor(getProjection().latlon2eastNorth(latlon));
+    }
+
+    /**
      * Gets a rectangle representing the whole view area.
      * @return The rectangle.
      */
@@ -345,6 +361,16 @@ public final class MapViewState {
         public LatLon getLatLon() {
             return projection.eastNorth2latlon(getEastNorth());
         }
+
+        /**
+         * Add the given offset to this point
+         * @param en The offset in east/north space.
+         * @return The new point
+         * @since 10651
+         */
+        public MapViewPoint add(EastNorth en) {
+            return new MapViewEastNorthPoint(getEastNorth().add(en));
+        }
     }
 
     private class MapViewViewPoint extends MapViewPoint {
@@ -449,6 +475,19 @@ public final class MapViewState {
         public Bounds getLatLonBoundsBox() {
             return projection.getLatLonBoundsBox(getProjectionBounds());
         }
+
+        /**
+         * Gets this rectangle on the screen.
+         * @return The rectangle.
+         * @since 10651
+         */
+        public Rectangle2D getInView() {
+            double x1 = p1.getInViewX();
+            double y1 = p1.getInViewY();
+            double x2 = p2.getInViewX();
+            double y2 = p2.getInViewY();
+            return new Rectangle2D.Double(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));
+        }
     }
 
 }
diff --git a/src/org/openstreetmap/josm/gui/NavigatableComponent.java b/src/org/openstreetmap/josm/gui/NavigatableComponent.java
index 3fcd541..7e4d6e7 100644
--- a/src/org/openstreetmap/josm/gui/NavigatableComponent.java
+++ b/src/org/openstreetmap/josm/gui/NavigatableComponent.java
@@ -25,6 +25,7 @@ import java.util.Set;
 import java.util.Stack;
 import java.util.TreeMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Predicate;
 import java.util.zip.CRC32;
 
 import javax.swing.JComponent;
@@ -50,7 +51,6 @@ import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.DoubleProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.projection.Projection;
-import org.openstreetmap.josm.data.projection.ProjectionChangeListener;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.help.Helpful;
 import org.openstreetmap.josm.gui.layer.NativeScaleLayer;
@@ -59,7 +59,6 @@ import org.openstreetmap.josm.gui.layer.NativeScaleLayer.ScaleList;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.util.CursorManager;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -73,7 +72,9 @@ public class NavigatableComponent extends JComponent implements Helpful {
 
     /**
      * Interface to notify listeners of the change of the zoom area.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface ZoomChangeListener {
         /**
          * Method called when the zoom area has changed.
@@ -81,17 +82,14 @@ public class NavigatableComponent extends JComponent implements Helpful {
         void zoomChanged();
     }
 
-    public transient Predicate<OsmPrimitive> isSelectablePredicate = new Predicate<OsmPrimitive>() {
-        @Override
-        public boolean evaluate(OsmPrimitive prim) {
-            if (!prim.isSelectable()) return false;
-            // if it isn't displayed on screen, you cannot click on it
-            MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock();
-            try {
-                return !MapPaintStyles.getStyles().get(prim, getDist100Pixel(), NavigatableComponent.this).isEmpty();
-            } finally {
-                MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock();
-            }
+    public transient Predicate<OsmPrimitive> isSelectablePredicate = prim -> {
+        if (!prim.isSelectable()) return false;
+        // if it isn't displayed on screen, you cannot click on it
+        MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock();
+        try {
+            return !MapPaintStyles.getStyles().get(prim, getDist100Pixel(), this).isEmpty();
+        } finally {
+            MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock();
         }
     };
 
@@ -140,13 +138,10 @@ public class NavigatableComponent extends JComponent implements Helpful {
 
     // The only events that may move/resize this map view are window movements or changes to the map view size.
     // We can clean this up more by only recalculating the state on repaint.
-    private final transient HierarchyListener hierarchyListener = new HierarchyListener() {
-        @Override
-        public void hierarchyChanged(HierarchyEvent e) {
-            long interestingFlags = HierarchyEvent.ANCESTOR_MOVED | HierarchyEvent.SHOWING_CHANGED;
-            if ((e.getChangeFlags() & interestingFlags) != 0) {
-                updateLocationState();
-            }
+    private final transient HierarchyListener hierarchyListener = e -> {
+        long interestingFlags = HierarchyEvent.ANCESTOR_MOVED | HierarchyEvent.SHOWING_CHANGED;
+        if ((e.getChangeFlags() & interestingFlags) != 0) {
+            updateLocationState();
         }
     };
 
@@ -178,12 +173,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
         setLayout(null);
         state = MapViewState.createDefaultState(getWidth(), getHeight());
         // uses weak link.
-        Main.addProjectionChangeListener(new ProjectionChangeListener() {
-            @Override
-            public void projectionChanged(Projection oldValue, Projection newValue) {
-                fixProjection();
-            }
-        });
+        Main.addProjectionChangeListener((oldValue, newValue) -> fixProjection());
     }
 
     @Override
@@ -827,7 +817,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
             snapDistanceSq *= snapDistanceSq;
 
             for (Node n : ds.searchNodes(getBBox(p, PROP_SNAP_DISTANCE.get()))) {
-                if (predicate.evaluate(n)
+                if (predicate.test(n)
                         && (dist = getPoint2D(n).distanceSq(p)) < snapDistanceSq) {
                     List<Node> nlist;
                     if (nearestMap.containsKey(dist)) {
@@ -1036,7 +1026,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
             snapDistanceSq *= snapDistanceSq;
 
             for (Way w : ds.searchWays(getBBox(p, Main.pref.getInteger("mappaint.segment.snap-distance", 10)))) {
-                if (!predicate.evaluate(w)) {
+                if (!predicate.test(w)) {
                     continue;
                 }
                 Node lastN = null;
@@ -1480,7 +1470,7 @@ public class NavigatableComponent extends JComponent implements Helpful {
         Set<OsmPrimitive> parentRelations = new HashSet<>();
         for (OsmPrimitive o : nearestList) {
             for (OsmPrimitive r : o.getReferrers()) {
-                if (r instanceof Relation && predicate.evaluate(r)) {
+                if (r instanceof Relation && predicate.test(r)) {
                     parentRelations.add(r);
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/NotificationManager.java b/src/org/openstreetmap/josm/gui/NotificationManager.java
index f8c1f23..49291a2 100644
--- a/src/org/openstreetmap/josm/gui/NotificationManager.java
+++ b/src/org/openstreetmap/josm/gui/NotificationManager.java
@@ -153,7 +153,10 @@ class NotificationManager {
             hideTimer.stop();
             if (currentNotificationPanel != null) {
                 currentNotificationPanel.setVisible(false);
-                ((JFrame) Main.parent).getLayeredPane().remove(currentNotificationPanel);
+                JFrame parent = (JFrame) Main.parent;
+                if (parent != null) {
+                    parent.getLayeredPane().remove(currentNotificationPanel);
+                }
                 currentNotificationPanel = null;
             }
             pauseTimer.restart();
@@ -217,12 +220,7 @@ class NotificationManager {
                 btnHelp.addActionListener(new AbstractAction() {
                     @Override
                     public void actionPerformed(ActionEvent e) {
-                        SwingUtilities.invokeLater(new Runnable() {
-                            @Override
-                            public void run() {
-                                HelpBrowser.setUrlForHelpTopic(note.getHelpTopic());
-                            }
-                        });
+                        SwingUtilities.invokeLater(() -> HelpBrowser.setUrlForHelpTopic(note.getHelpTopic()));
                     }
                 });
                 btnHelp.setOpaque(false);
diff --git a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
index 8e91f3d..3a3fbdd 100644
--- a/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
+++ b/src/org/openstreetmap/josm/gui/PleaseWaitRunnable.java
@@ -95,12 +95,7 @@ public abstract class PleaseWaitRunnable implements Runnable, CancelListener {
                     if (EventQueue.isDispatchThread()) {
                         finish();
                     } else {
-                        EventQueue.invokeAndWait(new Runnable() {
-                            @Override
-                            public void run() {
-                                finish();
-                            }
-                        });
+                        EventQueue.invokeAndWait(this::finish);
                     }
                 }
             } finally {
@@ -113,26 +108,18 @@ public abstract class PleaseWaitRunnable implements Runnable, CancelListener {
                 if (EventQueue.isDispatchThread()) {
                     afterFinish();
                 } else {
-                    EventQueue.invokeAndWait(new Runnable() {
-                        @Override
-                        public void run() {
-                            afterFinish();
-                        }
-                    });
+                    EventQueue.invokeAndWait(this::afterFinish);
                 }
             }
         } catch (final RuntimeException |
                 OsmTransferException | IOException | SAXException | InvocationTargetException | InterruptedException e) {
             if (!ignoreException) {
                 // Exception has to thrown in EDT to be shown to user
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (e instanceof RuntimeException) {
-                            BugReportExceptionHandler.handleException(e);
-                        } else {
-                            ExceptionDialogUtil.explainException(e);
-                        }
+                SwingUtilities.invokeLater(() -> {
+                    if (e instanceof RuntimeException) {
+                        BugReportExceptionHandler.handleException(e);
+                    } else {
+                        ExceptionDialogUtil.explainException(e);
                     }
                 });
             }
@@ -149,12 +136,7 @@ public abstract class PleaseWaitRunnable implements Runnable, CancelListener {
     @Override
     public final void run() {
         if (EventQueue.isDispatchThread()) {
-            new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    doRealRun();
-                }
-            }, getClass().getName()).start();
+            new Thread((Runnable) this::doRealRun, getClass().getName()).start();
         } else {
             doRealRun();
         }
diff --git a/src/org/openstreetmap/josm/gui/ScrollViewport.java b/src/org/openstreetmap/josm/gui/ScrollViewport.java
index b1672f5..0291021 100644
--- a/src/org/openstreetmap/josm/gui/ScrollViewport.java
+++ b/src/org/openstreetmap/josm/gui/ScrollViewport.java
@@ -5,8 +5,6 @@ import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.Point;
 import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
 import java.awt.event.MouseAdapter;
@@ -69,12 +67,7 @@ public class ScrollViewport extends JPanel {
 
     private final List<JButton> buttons = new ArrayList<>();
 
-    private final Timer timer = new Timer(100, new ActionListener() {
-        @Override
-        public void actionPerformed(ActionEvent arg0) {
-            ScrollViewport.this.scroll();
-        }
-    });
+    private final Timer timer = new Timer(100, evt -> scroll());
 
     private int scrollDirection = NO_SCROLL;
 
diff --git a/src/org/openstreetmap/josm/gui/SelectionManager.java b/src/org/openstreetmap/josm/gui/SelectionManager.java
index 046e3be..445e491 100644
--- a/src/org/openstreetmap/josm/gui/SelectionManager.java
+++ b/src/org/openstreetmap/josm/gui/SelectionManager.java
@@ -171,12 +171,7 @@ public class SelectionManager implements MouseListener, MouseMotionListener, Pro
         eventSource.addMouseListener(this);
         eventSource.addMouseMotionListener(this);
         selectionEndedListener.addPropertyChangeListener(this);
-        eventSource.addPropertyChangeListener("scale", new PropertyChangeListener() {
-            @Override
-            public void propertyChange(PropertyChangeEvent evt) {
-                abortSelecting();
-            }
-        });
+        eventSource.addPropertyChangeListener("scale", evt -> abortSelecting());
         eventSource.addTemporaryLayer(selectionHintLayer);
     }
 
@@ -391,7 +386,7 @@ public class SelectionManager implements MouseListener, MouseMotionListener, Pro
 
         if (clicked) {
             Point center = new Point(selectionResult.xpoints[0], selectionResult.ypoints[0]);
-            OsmPrimitive osm = nc.getNearestNodeOrWay(center, OsmPrimitive.isSelectablePredicate, false);
+            OsmPrimitive osm = nc.getNearestNodeOrWay(center, OsmPrimitive::isSelectable, false);
             if (osm != null) {
                 selection.add(osm);
             }
diff --git a/src/org/openstreetmap/josm/gui/SideButton.java b/src/org/openstreetmap/josm/gui/SideButton.java
index 682cbce..3fd47e3 100644
--- a/src/org/openstreetmap/josm/gui/SideButton.java
+++ b/src/org/openstreetmap/josm/gui/SideButton.java
@@ -6,7 +6,6 @@ import java.awt.Color;
 import java.awt.Image;
 import java.awt.Insets;
 import java.awt.event.ActionListener;
-import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 
 import javax.swing.Action;
@@ -84,12 +83,9 @@ public class SideButton extends JButton implements Destroyable {
         // need to listen for changes, so that putValue() that are called after the
         // SideButton is constructed get the proper icon size
         if (action != null) {
-            propertyChangeListener = new PropertyChangeListener() {
-                @Override
-                public void propertyChange(PropertyChangeEvent evt) {
-                    if (javax.swing.Action.SMALL_ICON.equals(evt.getPropertyName())) {
-                        fixIcon(null);
-                    }
+            propertyChangeListener = evt -> {
+                if (Action.SMALL_ICON.equals(evt.getPropertyName())) {
+                    fixIcon(null);
                 }
             };
             action.addPropertyChangeListener(propertyChangeListener);
diff --git a/src/org/openstreetmap/josm/gui/SplashScreen.java b/src/org/openstreetmap/josm/gui/SplashScreen.java
index 6d4f98b..2b20b6a 100644
--- a/src/org/openstreetmap/josm/gui/SplashScreen.java
+++ b/src/org/openstreetmap/josm/gui/SplashScreen.java
@@ -37,7 +37,6 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
 
@@ -118,12 +117,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
 
     @Override
     public void stateChanged(ChangeEvent ignore) {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                progressRenderer.setTasks(progressMonitor.toString());
-            }
-        });
+        GuiHelper.runInEDT(() -> progressRenderer.setTasks(progressMonitor.toString()));
     }
 
     /**
@@ -221,7 +215,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
 
         @Override
         public void beginTask(String title) {
-            if (title != null) {
+            if (title != null && !title.isEmpty()) {
                 if (Main.isDebugEnabled()) {
                     Main.debug(title);
                 }
@@ -263,7 +257,12 @@ public class SplashScreen extends JFrame implements ChangeListener {
 
         @Override
         public ProgressMonitor createSubTaskMonitor(int ticks, boolean internal) {
-            return latestSubtask;
+            if (latestSubtask != null) {
+                return latestSubtask;
+            } else {
+                // subTask has not been called before, such as for plugin update, #11874
+                return this;
+            }
         }
 
         /**
@@ -280,7 +279,7 @@ public class SplashScreen extends JFrame implements ChangeListener {
          * @param title the task title
          */
         public void finishTask(String title) {
-            final Task task = Utils.find(tasks, Predicates.<Task>equalTo(new MeasurableTask(title)));
+            final Task task = Utils.find(tasks, new MeasurableTask(title)::equals);
             if (task instanceof MeasurableTask) {
                 ((MeasurableTask) task).finish();
                 if (Main.isDebugEnabled()) {
diff --git a/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java b/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
index 213edcb..c9d8b22 100644
--- a/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
+++ b/src/org/openstreetmap/josm/gui/bbox/SlippyMapBBoxChooser.java
@@ -30,8 +30,6 @@ import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
 import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
-import org.openstreetmap.gui.jmapviewer.tilesources.MapQuestOpenAerialTileSource;
-import org.openstreetmap.gui.jmapviewer.tilesources.MapQuestOsmTileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.OsmTileSource;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
@@ -46,6 +44,7 @@ import org.openstreetmap.josm.gui.layer.TMSLayer;
 
 public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
 
+    @FunctionalInterface
     public interface TileSourceProvider {
         List<TileSource> getTileSources();
     }
@@ -59,8 +58,6 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
             // Urls that already exist in the slippymap chooser and shouldn't be copied from TMS layer list
             existingSlippyMapUrls.add("https://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png");      // Mapnik
             existingSlippyMapUrls.add("http://tile.opencyclemap.org/cycle/{zoom}/{x}/{y}.png"); // Cyclemap
-            existingSlippyMapUrls.add("http://otile{switch:1,2,3,4}.mqcdn.com/tiles/1.0.0/osm/{zoom}/{x}/{y}.png"); // MapQuest-OSM
-            existingSlippyMapUrls.add("http://oatile{switch:1,2,3,4}.mqcdn.com/tiles/1.0.0/sat/{zoom}/{x}/{y}.png"); // MapQuest Open Aerial
         }
 
         @Override
@@ -77,6 +74,7 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
                         sources.add(source);
                     }
                 } catch (IllegalArgumentException ex) {
+                    Main.warn(ex);
                     if (ex.getMessage() != null && !ex.getMessage().isEmpty()) {
                         JOptionPane.showMessageDialog(Main.parent,
                                 ex.getMessage(), tr("Warning"),
@@ -98,16 +96,9 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
 
     private static CopyOnWriteArrayList<TileSourceProvider> providers = new CopyOnWriteArrayList<>();
     static {
-        addTileSourceProvider(new TileSourceProvider() {
-            @Override
-            public List<TileSource> getTileSources() {
-                return Arrays.<TileSource>asList(
-                        new OsmTileSource.Mapnik(),
-                        new OsmTileSource.CycleMap(),
-                        new MapQuestOsmTileSource(),
-                        new MapQuestOpenAerialTileSource());
-            }
-        });
+        addTileSourceProvider(() -> Arrays.<TileSource>asList(
+                new OsmTileSource.Mapnik(),
+                new OsmTileSource.CycleMap()));
         addTileSourceProvider(new TMSTileSourceProvider());
     }
 
@@ -181,7 +172,7 @@ public class SlippyMapBBoxChooser extends JMapViewer implements BBoxChooser {
         new SlippyMapControler(this, this);
     }
 
-    private List<TileSource> getAllTileSources() {
+    private static List<TileSource> getAllTileSources() {
         List<TileSource> tileSources = new ArrayList<>();
         for (TileSourceProvider provider: providers) {
             tileSources.addAll(provider.getTileSources());
diff --git a/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java b/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
index f16b864..83bab67 100644
--- a/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
+++ b/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
@@ -683,7 +683,7 @@ public class TileSelectionBBoxChooser extends JPanel implements BBoxChooser {
             repaint();
         }
 
-        protected Point getTopLeftCoordinates() {
+        private Point getTopLeftCoordinates() {
             return new Point(center.x - (getWidth() / 2), center.y - (getHeight() / 2));
         }
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/package-info.java b/src/org/openstreetmap/josm/gui/conflict/package-info.java
new file mode 100644
index 0000000..f4af7e5
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/conflict/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for displaying conflicts between OSM primitives.
+ */
+package org.openstreetmap.josm.gui.conflict;
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java b/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java
index cb8528d..f57207b 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ComparePairType.java
@@ -32,7 +32,7 @@ public enum ComparePairType {
     private final String displayName;
     private ListRole[] participatingRoles;
 
-    ComparePairType(String displayName, ListRole[] participatingRoles) {
+    ComparePairType(String displayName, ListRole ... participatingRoles) {
         this.displayName = displayName;
         this.participatingRoles = Utils.copyArray(participatingRoles);
     }
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java b/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
index f84b3c3..a36cee3 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
@@ -272,7 +272,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
         fireStateChanged();
     }
 
-    protected void copyToTop(ListRole role, int[] rows) {
+    protected void copyToTop(ListRole role, int ... rows) {
         copy(role, rows, 0);
         mergedEntriesSelectionModel.setSelectionInterval(0, rows.length -1);
     }
@@ -284,7 +284,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      *
      * @param rows the indices
      */
-    public void copyMyToTop(int[] rows) {
+    public void copyMyToTop(int ... rows) {
         copyToTop(MY_ENTRIES, rows);
     }
 
@@ -295,7 +295,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      *
      * @param rows the indices
      */
-    public void copyTheirToTop(int[] rows) {
+    public void copyTheirToTop(int ... rows) {
         copyToTop(THEIR_ENTRIES, rows);
     }
 
@@ -308,7 +308,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      * @param rows the indices
      */
 
-    public void copyToEnd(ListRole source, int[] rows) {
+    public void copyToEnd(ListRole source, int ... rows) {
         copy(source, rows, getMergedEntriesSize());
         mergedEntriesSelectionModel.setSelectionInterval(getMergedEntriesSize()-rows.length, getMergedEntriesSize() -1);
 
@@ -321,7 +321,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      *
      * @param rows the indices
      */
-    public void copyMyToEnd(int[] rows) {
+    public void copyMyToEnd(int ... rows) {
         copyToEnd(MY_ENTRIES, rows);
     }
 
@@ -332,7 +332,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      *
      * @param rows the indices
      */
-    public void copyTheirToEnd(int[] rows) {
+    public void copyTheirToEnd(int ... rows) {
         copyToEnd(THEIR_ENTRIES, rows);
     }
 
@@ -490,7 +490,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      * @param rows the indices
      *
      */
-    public void moveUpMerged(int[] rows) {
+    public void moveUpMerged(int ... rows) {
         if (rows == null || rows.length == 0)
             return;
         if (rows[0] == 0)
@@ -515,7 +515,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      *
      * @param rows the indices
      */
-    public void moveDownMerged(int[] rows) {
+    public void moveDownMerged(int ... rows) {
         if (rows == null || rows.length == 0)
             return;
         List<T> mergedEntries = getMergedEntries();
@@ -541,7 +541,7 @@ public abstract class ListMergeModel<T extends PrimitiveId> extends ChangeNotifi
      *
      * @param rows the indices
      */
-    public void removeMerged(int[] rows) {
+    public void removeMerged(int ... rows) {
         if (rows == null || rows.length == 0)
             return;
 
diff --git a/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java b/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
index 8d093c9..d4eb184 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/ListMerger.java
@@ -805,16 +805,11 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
          */
         public void adapt(final JToggleButton btn) {
             btn.addItemListener(this);
-            addPropertyChangeListener(
-                    new PropertyChangeListener() {
-                        @Override
-                        public void propertyChange(PropertyChangeEvent evt) {
-                            if (evt.getPropertyName().equals(PROP_SELECTED)) {
-                                btn.setSelected((Boolean) evt.getNewValue());
-                            }
-                        }
+            addPropertyChangeListener(evt -> {
+                    if (evt.getPropertyName().equals(PROP_SELECTED)) {
+                        btn.setSelected((Boolean) evt.getNewValue());
                     }
-            );
+                });
         }
 
         @Override
@@ -932,6 +927,7 @@ public abstract class ListMerger<T extends PrimitiveId> extends JPanel implement
         return null;
     }
 
+    @Override
     public void decideRemaining(MergeDecisionType decision) {
         if (!model.isFrozen()) {
             model.copyAll(MergeDecisionType.KEEP_MINE.equals(decision) ? ListRole.MY_ENTRIES : ListRole.THEIR_ENTRIES);
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 8fc1d8f..0ef62c3 100644
--- a/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
+++ b/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
@@ -237,7 +237,7 @@ public class TagMerger extends JPanel implements IConflictResolver {
         return model;
     }
 
-    private void selectNextConflict(int[] rows) {
+    private void selectNextConflict(int ... rows) {
         int max = rows[0];
         for (int row: rows) {
             if (row > max) {
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
index 1a1b582..3cc5032 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
@@ -21,9 +21,11 @@ import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
+import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -41,15 +43,13 @@ 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.gui.SideButton;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 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.StreamUtils;
 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;
 
 /**
@@ -97,11 +97,7 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     @Deprecated
     public static synchronized CombinePrimitiveResolverDialog getInstance() {
         if (instance == null) {
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override public void run() {
-                    instance = new CombinePrimitiveResolverDialog(Main.parent);
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> instance = new CombinePrimitiveResolverDialog(Main.parent));
         }
         return instance;
     }
@@ -116,7 +112,7 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     /** the private help action */
     private ContextSensitiveHelpAction helpAction;
     /** the apply button */
-    private SideButton btnApply;
+    private JButton btnApply;
 
     /**
      * Replies the target primitive the collection of primitives is merged
@@ -135,14 +131,12 @@ public class CombinePrimitiveResolverDialog extends JDialog {
      */
     public void setTargetPrimitive(final OsmPrimitive primitive) {
         this.targetPrimitive = primitive;
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                updateTitle();
-                if (primitive instanceof Way) {
-                    pnlRelationMemberConflictResolver.initForWayCombining();
-                } else if (primitive instanceof Node) {
-                    pnlRelationMemberConflictResolver.initForNodeMerging();
-                }
+        GuiHelper.runInEDTAndWait(() -> {
+            updateTitle();
+            if (primitive instanceof Way) {
+                pnlRelationMemberConflictResolver.initForWayCombining();
+            } else if (primitive instanceof Node) {
+                pnlRelationMemberConflictResolver.initForNodeMerging();
             }
         });
     }
@@ -198,17 +192,17 @@ public class CombinePrimitiveResolverDialog extends JDialog {
         ApplyAction applyAction = buildApplyAction();
         pnlTagConflictResolver.getModel().addPropertyChangeListener(applyAction);
         pnlRelationMemberConflictResolver.getModel().addPropertyChangeListener(applyAction);
-        btnApply = new SideButton(applyAction);
+        btnApply = new JButton(applyAction);
         btnApply.setFocusable(true);
         pnl.add(btnApply);
 
         // -- cancel button
         CancelAction cancelAction = new CancelAction();
-        pnl.add(new SideButton(cancelAction));
+        pnl.add(new JButton(cancelAction));
 
         // -- help button
         helpAction = new ContextSensitiveHelpAction();
-        pnl.add(new SideButton(helpAction));
+        pnl.add(new JButton(helpAction));
 
         return pnl;
     }
@@ -574,19 +568,8 @@ public class CombinePrimitiveResolverDialog extends JDialog {
     protected static void informAboutTagConflicts(
             final Collection<? extends OsmPrimitive> primitives,
             final TagCollection normalizedTags) throws UserCancelException {
-        String conflicts = Utils.joinAsHtmlUnorderedList(Utils.transform(normalizedTags.getKeysWithMultipleValues(),
-                new Function<String, String>() {
-            @Override
-            public String apply(String key) {
-                return tr("{0} ({1})", key, Utils.join(tr(", "), Utils.transform(normalizedTags.getValues(key),
-                        new Function<String, String>() {
-                    @Override
-                    public String apply(String x) {
-                        return x == null || x.isEmpty() ? tr("<i>missing</i>") : x;
-                    }
-                })));
-            }
-        }));
+        String conflicts = normalizedTags.getKeysWithMultipleValues().stream().map(
+                key -> getKeyDescription(key, normalizedTags)).collect(StreamUtils.toHtmlList());
         String msg = /* for correct i18n of plural forms - see #9110 */ trn("You are about to combine {0} objects, "
                 + "but the following tags are used conflictingly:<br/>{1}"
                 + "If these objects are combined, the resulting object may have unwanted tags.<br/>"
@@ -609,4 +592,12 @@ public class CombinePrimitiveResolverDialog extends JDialog {
             throw new UserCancelException();
         }
     }
+
+    private static String getKeyDescription(String key, TagCollection normalizedTags) {
+        String values = normalizedTags.getValues(key)
+                .stream()
+                .map(x -> (x == null || x.isEmpty()) ? tr("<i>missing</i>") : x)
+                .collect(Collectors.joining(tr(", ")));
+        return tr("{0} ({1})", key, values);
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
index d42707e..a76cd01 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/MultiValueCellEditor.java
@@ -8,7 +8,6 @@ import java.awt.Font;
 import java.awt.event.FocusAdapter;
 import java.awt.event.FocusEvent;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.awt.event.KeyEvent;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -91,22 +90,24 @@ public class MultiValueCellEditor extends AbstractCellEditor implements TableCel
         editor = new JosmComboBox<Object>(editorModel) {
             @Override
             public void processKeyEvent(KeyEvent e) {
-                int keyCode = e.getKeyCode();
-                if (e.getID() == KeyEvent.KEY_PRESSED && keyCode == KeyEvent.VK_ENTER) {
-                    fireGotoNextDecision();
-                } else if (e.getID() == KeyEvent.KEY_PRESSED && keyCode == KeyEvent.VK_TAB) {
-                    if (e.isShiftDown()) {
-                        fireGotoPreviousDecision();
-                    } else {
+                if (e.getID() == KeyEvent.KEY_PRESSED) {
+                    int keyCode = e.getKeyCode();
+                    if (keyCode == KeyEvent.VK_ENTER) {
                         fireGotoNextDecision();
+                    } else if (keyCode == KeyEvent.VK_TAB) {
+                        if (e.isShiftDown()) {
+                            fireGotoPreviousDecision();
+                        } else {
+                            fireGotoNextDecision();
+                        }
+                    } else if (keyCode == KeyEvent.VK_DELETE || keyCode == KeyEvent.VK_BACK_SPACE) {
+                        if (editorModel.getIndexOf(MultiValueDecisionType.KEEP_NONE) > 0) {
+                            editorModel.setSelectedItem(MultiValueDecisionType.KEEP_NONE);
+                            fireGotoNextDecision();
+                        }
+                    } else if (keyCode == KeyEvent.VK_ESCAPE) {
+                        cancelCellEditing();
                     }
-                } else if (e.getID() == KeyEvent.KEY_PRESSED && keyCode == KeyEvent.VK_DELETE || keyCode == KeyEvent.VK_BACK_SPACE) {
-                    if (editorModel.getIndexOf(MultiValueDecisionType.KEEP_NONE) > 0) {
-                        editorModel.setSelectedItem(MultiValueDecisionType.KEEP_NONE);
-                        fireGotoNextDecision();
-                    }
-                } else if (e.getID() == KeyEvent.KEY_PRESSED && keyCode == KeyEvent.VK_ESCAPE) {
-                    cancelCellEditing();
                 }
                 super.processKeyEvent(e);
             }
@@ -119,15 +120,10 @@ public class MultiValueCellEditor extends AbstractCellEditor implements TableCel
                     }
                 }
         );
-        editor.addItemListener(
-                new ItemListener() {
-                    @Override
-                    public void itemStateChanged(ItemEvent e) {
-                        if (e.getStateChange() == ItemEvent.SELECTED)
-                            fireEditingStopped();
-                    }
-                }
-        );
+        editor.addItemListener(e -> {
+            if (e.getStateChange() == ItemEvent.SELECTED)
+                fireEditingStopped();
+        });
         editor.setRenderer(new EditorCellRenderer());
         listeners = new CopyOnWriteArrayList<>();
     }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
index 38cf3ea..6b4cc6c 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/PasteTagsConflictResolverDialog.java
@@ -155,8 +155,8 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
             Map<OsmPrimitiveType, Integer> targetStatistics) {
         mode = Mode.RESOLVING_ONE_TAGCOLLECTION_ONLY;
         tagsForAllPrimitives = tagsForAllPrimitives == null ? new TagCollection() : tagsForAllPrimitives;
-        sourceStatistics = sourceStatistics == null ? new HashMap<OsmPrimitiveType, Integer>() : sourceStatistics;
-        targetStatistics = targetStatistics == null ? new HashMap<OsmPrimitiveType, Integer>() : targetStatistics;
+        sourceStatistics = sourceStatistics == null ? new HashMap<>() : sourceStatistics;
+        targetStatistics = targetStatistics == null ? new HashMap<>() : targetStatistics;
 
         // init the resolver
         //
@@ -289,17 +289,13 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
             setVisible(false);
         }
 
-        protected void updateEnabledState() {
+        void updateEnabledState() {
             if (mode == null) {
                 setEnabled(false);
             } else if (mode.equals(Mode.RESOLVING_ONE_TAGCOLLECTION_ONLY)) {
                 setEnabled(allPrimitivesResolver.getModel().isResolvedCompletely());
             } else {
-                boolean enabled = true;
-                for (TagConflictResolver val: resolvers.values()) {
-                    enabled &= val.getModel().isResolvedCompletely();
-                }
-                setEnabled(enabled);
+                setEnabled(resolvers.values().stream().allMatch(val -> val.getModel().isResolvedCompletely()));
             }
         }
 
@@ -345,8 +341,7 @@ public class PasteTagsConflictResolverDialog extends JDialog implements Property
                 TagConflictResolver resolver = (TagConflictResolver) tpResolvers.getComponentAt(i);
                 if (model == resolver.getModel()) {
                     tpResolvers.setIconAt(i,
-                            (Boolean) evt.getNewValue() ? iconResolved : iconUnresolved
-
+                            (Integer) evt.getNewValue() == 0 ? iconResolved : iconUnresolved
                     );
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java
index 67324b8..dd75a9b 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictDecisionEditor.java
@@ -2,8 +2,6 @@
 package org.openstreetmap.josm.gui.conflict.tags;
 
 import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.util.EventObject;
 
 import javax.swing.JTable;
@@ -37,12 +35,7 @@ public class RelationMemberConflictDecisionEditor extends JosmComboBox<RelationM
     /* --------------------------------------------------------------------------------- */
     @Override
     public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
-        addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                stopCellEditing();
-            }
-        });
+        addActionListener(e -> stopCellEditing());
         setSelectedItem(value);
         this.originalValue = (RelationMemberConflictDecisionType) value;
         return this;
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
index 3876ccd..8320c00 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverColumnModel.java
@@ -28,14 +28,9 @@ public class RelationMemberConflictResolverColumnModel extends DefaultTableColum
         }
     };
 
-    private final transient TableCellRenderer tableRenderer = new TableCellRenderer() {
-        @Override
-        public Component getTableCellRendererComponent(JTable table, Object value,
-                boolean isSelected, boolean hasFocus, int row, int column) {
-            return setColors(defaultTableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
-                    table, isSelected, row);
-        }
-    };
+    private final transient TableCellRenderer tableRenderer = (table, value, isSelected, hasFocus, row, column)
+            -> setColors(defaultTableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
+            table, isSelected, row);
 
     private static Component setColors(Component comp, JTable table, boolean isSelected, int row) {
         RelationMemberConflictResolverModel model = (RelationMemberConflictResolverModel) table.getModel();
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
index acc04cd..d83b326 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
@@ -19,13 +19,12 @@ import javax.swing.table.DefaultTableModel;
 
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 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.
@@ -161,7 +160,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
     public void populate(Collection<Relation> relations, Collection<? extends OsmPrimitive> memberPrimitives) {
         decisions.clear();
         relations = relations == null ? Collections.<Relation>emptyList() : relations;
-        memberPrimitives = memberPrimitives == null ? new LinkedList<OsmPrimitive>() : memberPrimitives;
+        memberPrimitives = memberPrimitives == null ? new LinkedList<>() : memberPrimitives;
         for (Relation r : relations) {
             for (OsmPrimitive p: memberPrimitives) {
                 populate(r, p);
@@ -179,7 +178,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
      * @param references the references. Empty list assumed if null.
      */
     public void populate(Collection<RelationToChildReference> references) {
-        references = references == null ? new LinkedList<RelationToChildReference>() : references;
+        references = references == null ? new LinkedList<>() : references;
         decisions.clear();
         this.relations = new HashSet<>(references.size());
         final Collection<OsmPrimitive> primitives = new HashSet<>();
@@ -200,7 +199,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
      */
     public void prepareDefaultRelationDecisions() {
 
-        if (Utils.forAll(primitives, OsmPrimitive.nodePredicate)) {
+        if (primitives.stream().allMatch(Node.class::isInstance)) {
             final Collection<OsmPrimitive> primitivesInDecisions = new HashSet<>();
             for (final RelationMemberConflictDecision i : decisions) {
                 primitivesInDecisions.add(i.getOriginalPrimitive());
@@ -234,12 +233,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
                 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();
-                    }
-                })) {
+                while (iterators.stream().allMatch(Iterator::hasNext)) {
                     final List<RelationMemberConflictDecision> decisions = new ArrayList<>();
                     final Collection<String> roles = new HashSet<>();
                     final Collection<Integer> indices = new TreeSet<>();
@@ -309,11 +303,7 @@ public class RelationMemberConflictResolverModel extends DefaultTableModel {
      */
     public void refresh() {
         updateNumConflicts();
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                fireTableDataChanged();
-            }
-        });
+        GuiHelper.runInEDTAndWait(this::fireTableDataChanged);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
index 71ad6a8..9621eaf 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolver.java
@@ -12,8 +12,6 @@ import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
 
@@ -55,25 +53,15 @@ public class TagConflictResolver extends JPanel {
         gc.weighty = 0.0;
         pnl.add(cbShowTagsWithConflictsOnly, gc);
         pnl.add(cbShowTagsWithMultiValuesOnly, gc);
-        cbShowTagsWithConflictsOnly.addChangeListener(
-                new ChangeListener() {
-                    @Override
-                    public void stateChanged(ChangeEvent e) {
-                        model.setShowTagsWithConflictsOnly(cbShowTagsWithConflictsOnly.isSelected());
-                        cbShowTagsWithMultiValuesOnly.setEnabled(cbShowTagsWithConflictsOnly.isSelected());
-                    }
-                }
-        );
+        cbShowTagsWithConflictsOnly.addChangeListener(e -> {
+                model.setShowTagsWithConflictsOnly(cbShowTagsWithConflictsOnly.isSelected());
+                cbShowTagsWithMultiValuesOnly.setEnabled(cbShowTagsWithConflictsOnly.isSelected());
+        });
         cbShowTagsWithConflictsOnly.setSelected(
                 Main.pref.getBoolean(getClass().getName() + ".showTagsWithConflictsOnly", false)
         );
         cbShowTagsWithMultiValuesOnly.addChangeListener(
-                new ChangeListener() {
-                    @Override
-                    public void stateChanged(ChangeEvent e) {
-                        model.setShowTagsWithMultiValuesOnly(cbShowTagsWithMultiValuesOnly.isSelected());
-                    }
-                }
+                e -> model.setShowTagsWithMultiValuesOnly(cbShowTagsWithMultiValuesOnly.isSelected())
         );
         cbShowTagsWithMultiValuesOnly.setSelected(
                 Main.pref.getBoolean(getClass().getName() + ".showTagsWithMultiValuesOnly", false)
diff --git a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
index e283bc7..a347d4c 100644
--- a/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
+++ b/src/org/openstreetmap/josm/gui/conflict/tags/TagConflictResolverModel.java
@@ -4,8 +4,6 @@ package org.openstreetmap.josm.gui.conflict.tags;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -23,7 +21,7 @@ public class TagConflictResolverModel extends DefaultTableModel {
 
     private transient TagCollection tags;
     private List<String> displayedKeys;
-    private Set<String> keysWithConflicts;
+    private Set<String> keysWithConflicts = new HashSet<>();
     private transient Map<String, MultiValueResolutionDecision> decisions;
     private int numConflicts;
     private final PropertyChangeSupport support;
@@ -55,28 +53,17 @@ public class TagConflictResolverModel extends DefaultTableModel {
     }
 
     protected void refreshNumConflicts() {
-        int count = 0;
-        for (MultiValueResolutionDecision d : decisions.values()) {
-            if (!d.isDecided()) {
-                count++;
-            }
-        }
-        setNumConflicts(count);
+        setNumConflicts((int) decisions.values().stream().filter(d -> !d.isDecided()).count());
     }
 
     protected void sort() {
-        Collections.sort(
-                displayedKeys,
-                new Comparator<String>() {
-                    @Override
-                    public int compare(String key1, String key2) {
-                        if (decisions.get(key1).isDecided() && !decisions.get(key2).isDecided())
-                            return 1;
-                        else if (!decisions.get(key1).isDecided() && decisions.get(key2).isDecided())
-                            return -1;
-                        return key1.compareTo(key2);
-                    }
-                }
+        displayedKeys.sort((key1, key2) -> {
+                if (decisions.get(key1).isDecided() && !decisions.get(key2).isDecided())
+                    return 1;
+                else if (!decisions.get(key1).isDecided() && decisions.get(key2).isDecided())
+                    return -1;
+                return key1.compareTo(key2);
+            }
         );
     }
 
@@ -114,11 +101,7 @@ public class TagConflictResolverModel extends DefaultTableModel {
         displayedKeys.addAll(keys);
         refreshNumConflicts();
         sort();
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                fireTableDataChanged();
-            }
-        });
+        GuiHelper.runInEDTAndWait(this::fireTableDataChanged);
     }
 
     /**
@@ -132,7 +115,9 @@ public class TagConflictResolverModel extends DefaultTableModel {
         CheckParameterUtil.ensureParameterNotNull(tags, "tags");
         this.tags = tags;
         displayedKeys = new ArrayList<>();
-        this.keysWithConflicts = keysWithConflicts == null ? new HashSet<String>() : keysWithConflicts;
+        if (keysWithConflicts != null) {
+            this.keysWithConflicts.addAll(keysWithConflicts);
+        }
         decisions = new HashMap<>();
         rebuild();
     }
@@ -183,11 +168,7 @@ public class TagConflictResolverModel extends DefaultTableModel {
             default: // Do nothing
             }
         }
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                fireTableDataChanged();
-            }
-        });
+        GuiHelper.runInEDTAndWait(this::fireTableDataChanged);
         refreshNumConflicts();
     }
 
@@ -197,13 +178,21 @@ public class TagConflictResolverModel extends DefaultTableModel {
      * @return true if each {@link MultiValueResolutionDecision} is decided; false otherwise
      */
     public boolean isResolvedCompletely() {
-        return numConflicts == 0 && keysWithConflicts != null && keysWithConflicts.isEmpty();
+        return numConflicts == 0;
     }
 
+    /**
+     * Gets the number of reamining conflicts.
+     * @return The number
+     */
     public int getNumConflicts() {
         return numConflicts;
     }
 
+    /**
+     * Gets the number of decisions the user can take
+     * @return The number of decisions
+     */
     public int getNumDecisions() {
         return decisions == null ? 0 : decisions.size();
     }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java b/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
new file mode 100644
index 0000000..daa70ff
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/ClipboardUtils.java
@@ -0,0 +1,150 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import java.awt.GraphicsEnvironment;
+import java.awt.HeadlessException;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.Utils;
+
+/**
+ * This is a utility class that provides methods useful for general data transfer support.
+ *
+ * @author Michael Zangl
+ * @since 10604
+ */
+public final class ClipboardUtils {
+    private static final class DoNothingClipboardOwner implements ClipboardOwner {
+        @Override
+        public void lostOwnership(Clipboard clpbrd, Transferable t) {
+            // Do nothing
+        }
+    }
+
+    private static Clipboard clipboard;
+
+    private ClipboardUtils() {
+    }
+
+    /**
+     * This method should be used from all of JOSM to access the clipboard.
+     * <p>
+     * It will default to the system clipboard except for cases where that clipboard is not accessible.
+     * @return A clipboard.
+     * @see #getClipboardContent()
+     */
+    public static synchronized Clipboard getClipboard() {
+        // Might be unsupported in some more cases, we need a fake clipboard then.
+        if (clipboard == null) {
+            try {
+                clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+            } catch (HeadlessException e) {
+                Main.warn("Headless. Using fake clipboard.", e);
+                clipboard = new Clipboard("fake");
+            }
+        }
+        return clipboard;
+    }
+
+    /**
+     * Gets the singleton instance of the system selection as a <code>Clipboard</code> object.
+     * This allows an application to read and modify the current, system-wide selection.
+     * @return the system selection as a <code>Clipboard</code>, or <code>null</code> if the native platform does not
+     *         support a system selection <code>Clipboard</code> or if GraphicsEnvironment.isHeadless() returns true
+     * @see Toolkit#getSystemSelection
+     */
+    public static Clipboard getSystemSelection() {
+        if (GraphicsEnvironment.isHeadless()) {
+            return null;
+        } else {
+            return Toolkit.getDefaultToolkit().getSystemSelection();
+        }
+    }
+
+    /**
+     * Gets the clipboard content as string.
+     * @return the content if available, <code>null</code> otherwise.
+     */
+    public static String getClipboardStringContent() {
+        try {
+            Transferable t = getClipboardContent();
+            if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
+                return (String) t.getTransferData(DataFlavor.stringFlavor);
+            }
+        } catch (UnsupportedFlavorException | IOException ex) {
+            Main.error(ex);
+        }
+        return null;
+    }
+
+    /**
+     * Extracts clipboard content as {@code Transferable} object. Using this method avoids some problems on some platforms.
+     * @return The content or <code>null</code> if it is not available
+     */
+    public static synchronized Transferable getClipboardContent() {
+        return getClipboardContent(getClipboard());
+    }
+
+    /**
+     * Extracts clipboard content as {@code Transferable} object. Using this method avoids some problems on some platforms.
+     * @param clipboard clipboard from which contents are retrieved
+     * @return clipboard contents if available, {@code null} otherwise.
+     */
+    public static Transferable getClipboardContent(Clipboard clipboard) {
+        Transferable t = null;
+        for (int tries = 0; t == null && tries < 10; tries++) {
+            try {
+                t = clipboard.getContents(null);
+            } catch (IllegalStateException e) {
+                // Clipboard currently unavailable.
+                // On some platforms, the system clipboard is unavailable while it is accessed by another application.
+                Main.trace("Clipboard unavailable.", e);
+                try {
+                    Thread.sleep(1);
+                } catch (InterruptedException ex) {
+                    Main.warn(ex, "InterruptedException in " + Utils.class.getSimpleName()
+                            + " while getting clipboard content");
+                }
+            } catch (NullPointerException e) {
+                // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
+                Main.error(e);
+            }
+        }
+        return t;
+    }
+
+    /**
+     * Copy the given string to the clipboard.
+     * @param s The string to copy.
+     * @return True if the  copy was successful
+     */
+    public static boolean copyString(String s) {
+        return copy(new StringSelection(s));
+    }
+
+    /**
+     * Copies the given transferable to the clipboard. Handles state problems that occur on some platforms.
+     * @param transferable The transferable to copy.
+     * @return True if the copy was successful
+     */
+    public static boolean copy(final Transferable transferable) {
+        return GuiHelper.runInEDTAndWaitAndReturn(() -> {
+            try {
+                getClipboard().setContents(transferable, new DoNothingClipboardOwner());
+                return true;
+            } catch (IllegalStateException ex) {
+                Main.error(ex);
+                return false;
+            }
+        });
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/FileTransferHandler.java b/src/org/openstreetmap/josm/gui/datatransfer/FileTransferHandler.java
new file mode 100644
index 0000000..2274dfe
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/FileTransferHandler.java
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import javax.swing.JComponent;
+import javax.swing.TransferHandler;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.datatransfer.importers.FilePaster;
+
+/**
+ * This transfer handler allows to drop files to open them.
+ *
+ * @author Michael Zangl
+ * @since 10620
+ */
+public class FileTransferHandler extends TransferHandler {
+
+    private static final FilePaster filePaster = new FilePaster();
+
+    @Override
+    public int getSourceActions(JComponent c) {
+        return COPY;
+    }
+
+    @Override
+    public boolean canImport(TransferSupport support) {
+        return filePaster.supports(support);
+    }
+
+    @Override
+    public boolean importData(TransferSupport support) {
+        try {
+            if (filePaster.supports(support)) {
+                return filePaster.importData(support, null, null);
+            }
+        } catch (UnsupportedFlavorException | IOException e) {
+            Main.warn(e, "Error while importing file.");
+        }
+        return super.importData(support);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/LayerTransferable.java b/src/org/openstreetmap/josm/gui/datatransfer/LayerTransferable.java
new file mode 100644
index 0000000..6ecc485
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/LayerTransferable.java
@@ -0,0 +1,97 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager;
+
+/**
+ * This class allows to transfer multiple layers in the current JOSM instance.
+ * @author Michael Zangl
+ * @since 10605
+ */
+public class LayerTransferable implements Transferable {
+
+    /**
+     * A wrapper for a collection of {@link Layer}.
+     */
+    public static class Data {
+        private final LayerManager manager;
+        private final List<Layer> layers;
+
+        /**
+         * Create a new data object
+         * @param manager The layer manager the layers are from.
+         * @param layers The layers.
+         */
+        public Data(LayerManager manager, List<Layer> layers) {
+            super();
+            this.manager = manager;
+            this.layers = new ArrayList<>(layers);
+        }
+
+        /**
+         * Gets the layer manager the layers belong to.
+         * @return The layer manager. It may be <code>null</code>
+         */
+        public LayerManager getManager() {
+            return manager;
+        }
+
+        /**
+         * Gets the list of layers that were copied.
+         * @return The layers.
+         */
+        public List<Layer> getLayers() {
+            return Collections.unmodifiableList(layers);
+        }
+
+        @Override
+        public String toString() {
+            return "Data [layers=" + layers + ']';
+        }
+    }
+
+    /**
+     * Data flavor for {@link Layer}s which are wrapped in {@link Data}.
+     */
+    public static final DataFlavor LAYER_DATA = new DataFlavor(
+            DataFlavor.javaJVMLocalObjectMimeType + ";class=" + Data.class.getName(), "Layers");
+
+    private final Data data;
+
+    /**
+     * Create a new data object
+     * @param manager The layer manager the layers are from.
+     * @param layers The layers.
+     */
+    public LayerTransferable(LayerManager manager, List<Layer> layers) {
+        this.data = new Data(manager, layers);
+    }
+
+    @Override
+    public DataFlavor[] getTransferDataFlavors() {
+        return new DataFlavor[] {LAYER_DATA};
+    }
+
+    @Override
+    public boolean isDataFlavorSupported(DataFlavor flavor) {
+        return LAYER_DATA.equals(flavor);
+    }
+
+    @Override
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+        if (!isDataFlavorSupported(flavor)) {
+            throw new UnsupportedFlavorException(flavor);
+        } else {
+            return data;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java b/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
new file mode 100644
index 0000000..fdc8b89
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/OsmTransferHandler.java
@@ -0,0 +1,128 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.swing.TransferHandler;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.datatransfer.importers.AbstractOsmDataPaster;
+import org.openstreetmap.josm.gui.datatransfer.importers.FilePaster;
+import org.openstreetmap.josm.gui.datatransfer.importers.PrimitiveDataPaster;
+import org.openstreetmap.josm.gui.datatransfer.importers.PrimitiveTagTransferPaster;
+import org.openstreetmap.josm.gui.datatransfer.importers.TagTransferPaster;
+import org.openstreetmap.josm.gui.datatransfer.importers.TextTagPaster;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * This transfer hanlder provides the ability to transfer OSM data. It allows you to receive files, primitives or tags.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public class OsmTransferHandler extends TransferHandler {
+
+    private static final Collection<AbstractOsmDataPaster> SUPPORTED = Arrays.asList(
+            new FilePaster(), new PrimitiveDataPaster(),
+            new PrimitiveTagTransferPaster(),
+            new TagTransferPaster(), new TextTagPaster());
+
+    @Override
+    public boolean canImport(TransferSupport support) {
+        // import everything for now, only support copy.
+        for (AbstractOsmDataPaster df : SUPPORTED) {
+            if (df.supports(support)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean importData(TransferSupport support) {
+        return importData(support, Main.getLayerManager().getEditLayer(), null);
+    }
+
+    private boolean importData(TransferSupport support, OsmDataLayer layer, EastNorth center) {
+        for (AbstractOsmDataPaster df : SUPPORTED) {
+            if (df.supports(support)) {
+                try {
+                    if (df.importData(support, layer, center)) {
+                        return true;
+                    }
+                } catch (UnsupportedFlavorException | IOException e) {
+                    Main.warn(e);
+                }
+            }
+        }
+        return super.importData(support);
+    }
+
+    private boolean importTags(TransferSupport support, Collection<? extends OsmPrimitive> primitives) {
+        for (AbstractOsmDataPaster df : SUPPORTED) {
+            if (df.supports(support)) {
+                try {
+                    if (df.importTagsOn(support, primitives)) {
+                        return true;
+                    }
+                } catch (UnsupportedFlavorException | IOException e) {
+                    Main.warn(e);
+                }
+            }
+        }
+        return super.importData(support);
+    }
+
+    /**
+     * Paste the current clipboard current at the given position
+     * @param editLayer The layer to paste on.
+     * @param mPosition The position to paste at. If it is <code>null</code>, the original position will be used.
+     */
+    public void pasteOn(OsmDataLayer editLayer, EastNorth mPosition) {
+        Transferable transferable = ClipboardUtils.getClipboard().getContents(null);
+        pasteOn(editLayer, mPosition, transferable);
+    }
+
+    /**
+     * Paste the given clipboard current at the given position
+     * @param editLayer The layer to paste on.
+     * @param mPosition The position to paste at. If it is <code>null</code>, the original position will be used.
+     * @param transferable The transferable to use.
+     */
+    public void pasteOn(OsmDataLayer editLayer, EastNorth mPosition, Transferable transferable) {
+        importData(new TransferSupport(Main.panel, transferable), editLayer, mPosition);
+    }
+
+    /**
+     * Paste the given tags on the primitives.
+     * @param primitives The primitives to paste on.
+     */
+    public void pasteTags(Collection<? extends OsmPrimitive> primitives) {
+        Transferable transferable = ClipboardUtils.getClipboard().getContents(null);
+        importTags(new TransferSupport(Main.panel, transferable), primitives);
+    }
+
+    /**
+     * Check if any primitive data or any other supported data is available in the clipboard.
+     * @return <code>true</code> if any flavor is supported.
+     */
+    public boolean isDataAvailable() {
+        try {
+            Collection<DataFlavor> available = Arrays.asList(ClipboardUtils.getClipboard().getAvailableDataFlavors());
+            for (AbstractOsmDataPaster s : SUPPORTED) {
+                if (s.supports(available)) {
+                    return true;
+                }
+            }
+        } catch (IllegalStateException e) {
+            Main.debug(e);
+        }
+        return false;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java b/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java
index cd91a24..8d6c9a0 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferable.java
@@ -4,92 +4,96 @@ package org.openstreetmap.josm.gui.datatransfer;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
-import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Arrays;
+import java.util.List;
 
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveData;
-import org.openstreetmap.josm.gui.DefaultNameFormatter;
-import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.gui.datatransfer.data.OsmLayerTransferData;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTagTransferData;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
- * Transferable objects for {@link PrimitiveData}.
+ * Transferable objects for {@link PrimitiveTransferData} objects
  * @since 9369
+ * @since 10604 Complete rework
  */
 public class PrimitiveTransferable implements Transferable {
 
     /**
-     * A wrapper for a collection of {@link PrimitiveData}.
+     * The flavors that are available for normal primitives.
      */
-    public static final class Data implements Serializable {
-        private static final long serialVersionUID = -1485089993600213704L;
-        private final Collection<PrimitiveData> primitiveData;
-
-        private Data(Collection<PrimitiveData> primitiveData) {
-            CheckParameterUtil.ensureThat(primitiveData instanceof Serializable, "primitiveData must be instanceof Serializable");
-            this.primitiveData = primitiveData;
-        }
-
-        /**
-         * Returns the contained {@link PrimitiveData}
-         * @return the contained {@link PrimitiveData}
-         */
-        public Collection<PrimitiveData> getPrimitiveData() {
-            return primitiveData;
-        }
-    }
+    private static final List<DataFlavor> PRIMITIVE_FLAVORS = Arrays.asList(PrimitiveTransferData.DATA_FLAVOR,
+            TagTransferData.FLAVOR, DataFlavor.stringFlavor);
+    private final PrimitiveTransferData primitives;
+    private OsmDataLayer sourceLayer;
 
     /**
-     * Data flavor for {@link PrimitiveData} which is wrapped in {@link Data}.
+     * Constructs a new {@code PrimitiveTransferable}.
+     * @param primitives collection of OSM primitives
      */
-    public static final DataFlavor PRIMITIVE_DATA = new DataFlavor(Data.class, Data.class.getName());
-    private final Collection<? extends OsmPrimitive> primitives;
+    public PrimitiveTransferable(PrimitiveTransferData primitives) {
+        this(primitives, null);
+    }
 
     /**
      * Constructs a new {@code PrimitiveTransferable}.
      * @param primitives collection of OSM primitives
+     * @param sourceLayer The layer the primitives are copied from
      */
-    public PrimitiveTransferable(Collection<? extends OsmPrimitive> primitives) {
+    public PrimitiveTransferable(PrimitiveTransferData primitives, OsmDataLayer sourceLayer) {
         this.primitives = primitives;
+        this.sourceLayer = sourceLayer;
     }
 
     @Override
     public DataFlavor[] getTransferDataFlavors() {
-        return new DataFlavor[]{PRIMITIVE_DATA, DataFlavor.stringFlavor};
+        ArrayList<DataFlavor> flavors = new ArrayList<>(PRIMITIVE_FLAVORS);
+        if (sourceLayer != null) {
+            flavors.addAll(OsmLayerTransferData.FLAVORS);
+        }
+        return flavors.toArray(new DataFlavor[flavors.size()]);
     }
 
     @Override
     public boolean isDataFlavorSupported(DataFlavor flavor) {
-        return flavor == PRIMITIVE_DATA;
+        DataFlavor[] flavors = getTransferDataFlavors();
+        for (DataFlavor f : flavors) {
+            if (flavor.equals(f)) {
+                return true;
+            }
+        }
+        return false;
     }
 
     @Override
     public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
         if (DataFlavor.stringFlavor.equals(flavor)) {
             return getStringData();
-        } else if (PRIMITIVE_DATA.equals(flavor)) {
-            return getPrimitiveData();
+        } else if (PrimitiveTransferData.DATA_FLAVOR.equals(flavor)) {
+            return primitives;
+        } else if (PrimitiveTagTransferData.FLAVOR.equals(flavor)) {
+            return new PrimitiveTagTransferData(primitives);
+        } else if (TagTransferData.FLAVOR.equals(flavor)) {
+            return new TagTransferData(primitives.getDirectlyAdded());
+        } else if (sourceLayer != null && OsmLayerTransferData.FLAVORS.contains(flavor)) {
+            return new OsmLayerTransferData(null, sourceLayer);
+        } else {
+            throw new UnsupportedFlavorException(flavor);
         }
-        throw new UnsupportedFlavorException(flavor);
     }
 
     protected String getStringData() {
         final StringBuilder sb = new StringBuilder();
-        for (OsmPrimitive primitive : primitives) {
-            sb.append(primitive.getType())
-              .append(' ').append(primitive.getUniqueId())
-              .append(" # ").append(primitive.getDisplayName(DefaultNameFormatter.getInstance()))
-              .append('\n');
+        for (PrimitiveData primitive : primitives.getAll()) {
+            if (sb.length() > 0) {
+                sb.append("\n");
+            }
+            sb.append(OsmPrimitiveType.from(primitive).getAPIName()).append(' ').append(primitive.getId());
         }
         return sb.toString().replace("\u200E", "").replace("\u200F", "");
     }
-
-    protected Data getPrimitiveData() {
-        final Collection<PrimitiveData> r = new ArrayList<>(primitives.size());
-        for (OsmPrimitive primitive : primitives) {
-            r.add(primitive.save());
-        }
-        return new Data(r);
-    }
 }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java b/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
index 46dc5d2..f7b78c1 100644
--- a/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
+++ b/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java
@@ -6,11 +6,16 @@ import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
 
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -36,14 +41,27 @@ public class RelationMemberTransferable implements Transferable {
          * @return the contained {@link RelationMemberData}
          */
         public Collection<RelationMemberData> getRelationMemberData() {
-            return relationMemberDatas;
+            return Collections.unmodifiableCollection(relationMemberDatas);
+        }
+
+        /**
+         * Gets the Data for the given list of members.
+         * @param members The collection. The order is preserved.
+         * @return The data.
+         */
+        public static Data getData(Collection<RelationMember> members) {
+            final Collection<RelationMemberData> r = new ArrayList<>(members.size());
+            for (RelationMember member : members) {
+                r.add(new RelationMemberData(member.getRole(), member.getType(), member.getUniqueId()));
+            }
+            return new Data(r);
         }
     }
 
     /**
      * Data flavor for {@link RelationMemberData} which is wrapped in {@link Data}.
      */
-    public static final DataFlavor RELATION_MEMBER_DATA = new DataFlavor(Data.class, Data.class.getName());
+    public static final DataFlavor RELATION_MEMBER_DATA = new DataFlavor(Data.class, "Relation member");
     private final Collection<RelationMember> members;
 
     /**
@@ -51,17 +69,17 @@ public class RelationMemberTransferable implements Transferable {
      * @param members list of relation members
      */
     public RelationMemberTransferable(Collection<RelationMember> members) {
-        this.members = members;
+        this.members = new ArrayList<>(members);
     }
 
     @Override
     public DataFlavor[] getTransferDataFlavors() {
-        return new DataFlavor[]{RELATION_MEMBER_DATA, DataFlavor.stringFlavor};
+        return new DataFlavor[]{RELATION_MEMBER_DATA, PrimitiveTransferData.DATA_FLAVOR, DataFlavor.stringFlavor};
     }
 
     @Override
     public boolean isDataFlavorSupported(DataFlavor flavor) {
-        return flavor == RELATION_MEMBER_DATA;
+        return Arrays.asList(getTransferDataFlavors()).contains(flavor);
     }
 
     @Override
@@ -70,10 +88,20 @@ public class RelationMemberTransferable implements Transferable {
             return getStringData();
         } else if (RELATION_MEMBER_DATA.equals(flavor)) {
             return getRelationMemberData();
+        } else if (PrimitiveTransferData.DATA_FLAVOR.equals(flavor)) {
+            return getPrimitiveData();
         }
         throw new UnsupportedFlavorException(flavor);
     }
 
+    private PrimitiveTransferData getPrimitiveData() {
+        Collection<OsmPrimitive> primitives = new HashSet<>();
+        for (RelationMember member : members) {
+            primitives.add(member.getMember());
+        }
+        return PrimitiveTransferData.getData(primitives);
+    }
+
     protected String getStringData() {
         final StringBuilder sb = new StringBuilder();
         for (RelationMember member : members) {
@@ -87,10 +115,6 @@ public class RelationMemberTransferable implements Transferable {
     }
 
     protected Data getRelationMemberData() {
-        final Collection<RelationMemberData> r = new ArrayList<>(members.size());
-        for (RelationMember member : members) {
-            r.add(new RelationMemberData(member.getRole(), member.getType(), member.getUniqueId()));
-        }
-        return new Data(r);
+        return Data.getData(members);
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/SingleLayerTransferable.java b/src/org/openstreetmap/josm/gui/datatransfer/SingleLayerTransferable.java
new file mode 100644
index 0000000..fa8a4d1
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/SingleLayerTransferable.java
@@ -0,0 +1,56 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.List;
+
+import org.openstreetmap.josm.gui.datatransfer.data.LayerTransferData;
+import org.openstreetmap.josm.gui.datatransfer.data.OsmLayerTransferData;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * This class handles the transfer of a layer inside this JOSM instance.
+ * @author Michael Zangl
+ * @since 10605
+ */
+public class SingleLayerTransferable implements Transferable {
+    private final LayerTransferData data;
+
+    /**
+     * Create a new {@link SingleLayerTransferable}
+     * @param manager The manager the layer belongs to
+     * @param layer The layer that is transfered.
+     */
+    public SingleLayerTransferable(LayerManager manager, Layer layer) {
+        if (layer instanceof OsmDataLayer) {
+            this.data = new OsmLayerTransferData(manager, (OsmDataLayer) layer);
+        } else {
+            this.data = new LayerTransferData(manager, layer);
+        }
+    }
+
+    @Override
+    public DataFlavor[] getTransferDataFlavors() {
+        List<DataFlavor> flavors = data.getSupportedFlavors();
+        return flavors.toArray(new DataFlavor[flavors.size()]);
+    }
+
+    @Override
+    public boolean isDataFlavorSupported(DataFlavor flavor) {
+        return data.getSupportedFlavors().contains(flavor);
+    }
+
+    @Override
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+        if (isDataFlavorSupported(flavor)) {
+            return data;
+        } else {
+            throw new UnsupportedFlavorException(flavor);
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/TagTransferable.java b/src/org/openstreetmap/josm/gui/datatransfer/TagTransferable.java
new file mode 100644
index 0000000..48668a4
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/TagTransferable.java
@@ -0,0 +1,62 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.Map.Entry;
+import java.util.stream.Stream;
+
+import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
+
+/**
+ * This is a transferable that only transfers the tags.
+ * @author Michael Zangl
+ * @since 10637
+ */
+public class TagTransferable implements Transferable {
+    private TagTransferData data;
+
+    /**
+     * Transfer the tag transfer data.
+     * @param data The data.
+     */
+    public TagTransferable(TagTransferData data) {
+        this.data = data;
+    }
+
+    @Override
+    public DataFlavor[] getTransferDataFlavors() {
+        return new DataFlavor[] {TagTransferData.FLAVOR, DataFlavor.stringFlavor};
+    }
+
+    @Override
+    public boolean isDataFlavorSupported(DataFlavor flavor) {
+        return Stream.of(getTransferDataFlavors()).anyMatch(f -> f.equals(flavor));
+    }
+
+    @Override
+    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+        if (DataFlavor.stringFlavor.equals(flavor)) {
+            return getStringData();
+        } else if (TagTransferData.FLAVOR.equals(flavor)) {
+            return data;
+        } else {
+            throw new UnsupportedFlavorException(flavor);
+        }
+    }
+
+    private String getStringData() {
+        StringBuilder string = new StringBuilder();
+        for (Entry<String, String> e : data.getTags().entrySet()) {
+            if (string.length() > 0) {
+                string.append('\n');
+            }
+            string.append(e.getKey());
+            string.append('=');
+            string.append(e.getValue());
+        }
+        return string.toString();
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/LayerTransferData.java b/src/org/openstreetmap/josm/gui/datatransfer/data/LayerTransferData.java
new file mode 100644
index 0000000..130fc65
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/data/LayerTransferData.java
@@ -0,0 +1,62 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+import java.awt.datatransfer.DataFlavor;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.openstreetmap.josm.gui.datatransfer.LayerTransferable;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager;
+
+/**
+ * This transferable implements a layer transfer.
+ * @author Michael Zangl
+ * @since 10605
+ */
+public class LayerTransferData extends LayerTransferable.Data {
+    /**
+     * This is a data flavor for all layer types
+     */
+    public static final DataFlavor FLAVOR = new DataFlavor(
+            DataFlavor.javaJVMLocalObjectMimeType + ";class=" + LayerTransferData.class.getName(), "Layer");
+
+    /**
+     * The flavors that are supported by this data type.
+     */
+    private static final List<DataFlavor> FLAVORS = Arrays.asList(LayerTransferData.FLAVOR, LayerTransferable.LAYER_DATA);
+
+    private final Layer layer;
+
+    /**
+     * Create a new transfer data for the given layer
+     * @param layerManager The layer manager that the layer is moved in. May be <code>null</code>
+     * @param layer The layer
+     */
+    public LayerTransferData(LayerManager layerManager, Layer layer) {
+        super(layerManager, Collections.singletonList(layer));
+        this.layer = layer;
+    }
+
+    /**
+     * Gets the layer to be transfered.
+     * @return The layer
+     */
+    public Layer getLayer() {
+        return layer;
+    }
+
+    /**
+     * Gets a list of flavors supported by this data.
+     * @return The flavors.
+     */
+    public List<DataFlavor> getSupportedFlavors() {
+        return Collections.unmodifiableList(FLAVORS);
+    }
+
+    @Override
+    public String toString() {
+        return "LayerTransferData [layer=" + layer + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/OsmLayerTransferData.java b/src/org/openstreetmap/josm/gui/datatransfer/data/OsmLayerTransferData.java
new file mode 100644
index 0000000..b086d78
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/data/OsmLayerTransferData.java
@@ -0,0 +1,63 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+import java.awt.datatransfer.DataFlavor;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.openstreetmap.josm.gui.datatransfer.LayerTransferable;
+import org.openstreetmap.josm.gui.layer.LayerManager;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * A special form of {@link LayerTransferData} that ensures you that the layer is an OSM data layer
+ * @author Michael Zangl
+ * @since 10605
+ */
+public class OsmLayerTransferData extends LayerTransferData {
+
+    /**
+     * This is a data flavor specific for OSM data layers.
+     * @see LayerTransferData#FLAVOR
+     * @see #FLAVORS
+     */
+    public static final DataFlavor OSM_FLAVOR = new DataFlavor(
+            DataFlavor.javaJVMLocalObjectMimeType + ";class=" + LayerTransferData.class.getName(), "Layer");
+
+    /**
+     * The flavors that are supported by this data type.
+     */
+    public static final List<DataFlavor> FLAVORS = Collections
+            .unmodifiableList(Arrays.asList(OSM_FLAVOR, LayerTransferData.FLAVOR, LayerTransferable.LAYER_DATA));
+
+    private final OsmDataLayer osmLayer;
+
+    /**
+     * Create a new {@link OsmLayerTransferData} object
+     * @param layerManager The layer manager
+     * @param layer The layer that is moved.
+     */
+    public OsmLayerTransferData(LayerManager layerManager, OsmDataLayer layer) {
+        super(layerManager, layer);
+        osmLayer = layer;
+    }
+
+    /**
+     * Gets the OSM data layer.
+     * @return The layer
+     */
+    public OsmDataLayer getOsmLayer() {
+        return osmLayer;
+    }
+
+    @Override
+    public List<DataFlavor> getSupportedFlavors() {
+        return FLAVORS;
+    }
+
+    @Override
+    public String toString() {
+        return "OsmLayerTransferData [osmLayer=" + osmLayer + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferData.java b/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferData.java
new file mode 100644
index 0000000..3bbf215
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferData.java
@@ -0,0 +1,90 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.Map;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.TagCollection;
+
+/**
+ * This is a variant of {@link TagTransferData} that holds tags that were copied from a collection of primitives.
+ * @author Michael Zangl
+ * @since 10737
+ */
+public class PrimitiveTagTransferData implements Serializable {
+
+    private static final long serialVersionUID = 1;
+
+    /**
+     * This is a data flavor added
+     */
+    public static final DataFlavor FLAVOR = new DataFlavor(TagTransferData.class, "OSM Primitive Tags");
+
+    private final EnumMap<OsmPrimitiveType, TagCollection> tags = new EnumMap<>(OsmPrimitiveType.class);
+    private final EnumMap<OsmPrimitiveType, Integer> counts = new EnumMap<>(OsmPrimitiveType.class);
+
+    /**
+     * Create a new {@link PrimitiveTagTransferData}
+     * @param source The primitives to initialize this object with.
+     */
+    public PrimitiveTagTransferData(Collection<? extends PrimitiveData> source) {
+        for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
+            tags.put(type, new TagCollection());
+        }
+
+        for (PrimitiveData primitive : source) {
+            tags.get(primitive.getType()).add(TagCollection.from(primitive));
+            counts.merge(primitive.getType(), 1, (a, b) -> a + b);
+        }
+    }
+
+    /**
+     * Create a new {@link PrimitiveTagTransferData}
+     * @param data The primitives to initialize this object with.
+     */
+    public PrimitiveTagTransferData(PrimitiveTransferData data) {
+        this(data.getDirectlyAdded());
+    }
+
+    /**
+     * 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
+     */
+    public boolean isHeterogeneousSource() {
+        return counts.size() > 1;
+    }
+
+    /**
+     * Gets the tags used for this primitive type.
+     * @param type The primitive type
+     * @return The tags as collection. Empty if no such type was copied
+     */
+    public TagCollection getForPrimitives(OsmPrimitiveType type) {
+        return tags.get(type);
+    }
+
+    /**
+     * Gets the number of source primitives for the given type.
+     * @param type The type
+     * @return The number of source primitives of that type
+     */
+    public int getSourcePrimitiveCount(OsmPrimitiveType type) {
+        return counts.getOrDefault(type, 0);
+    }
+
+    /**
+     * Gets the statistics of the source primitive counts. May contain no entries for unused types.
+     * @return The statistics as map
+     */
+    public Map<OsmPrimitiveType, Integer> getStatistics() {
+        return Collections.unmodifiableMap(counts);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java b/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java
new file mode 100644
index 0000000..1acd354
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTransferData.java
@@ -0,0 +1,159 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Queue;
+
+import org.openstreetmap.josm.data.ProjectionBounds;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.NodeData;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+
+/**
+ * A list of primitives that are transfered. The list allows you to implicitly add primitives.
+ * It distinguishes between primitives that were directly added and implicitly added ones.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public final class PrimitiveTransferData implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * The data flavor used to represent this class.
+     */
+    public static final DataFlavor DATA_FLAVOR = new DataFlavor(PrimitiveTransferData.class, "OSM Primitives");
+
+    private static final class GetReferences implements ReferenceGetter {
+        @Override
+        public Collection<? extends OsmPrimitive> getReferredPrimitives(OsmPrimitive primitive) {
+            if (primitive instanceof Way) {
+                return ((Way) primitive).getNodes();
+            } else if (primitive instanceof Relation) {
+                return ((Relation) primitive).getMemberPrimitives();
+            } else {
+                return Collections.emptyList();
+            }
+        }
+    }
+
+    @FunctionalInterface
+    private interface ReferenceGetter {
+        Collection<? extends OsmPrimitive> getReferredPrimitives(OsmPrimitive primitive);
+    }
+
+    private final ArrayList<PrimitiveData> direct;
+    private final ArrayList<PrimitiveData> referenced;
+
+    /**
+     * Create the new transfer data.
+     * @param primitives The primitives to transfer
+     * @param referencedGetter A function that allows to get the primitives referenced by the primitives variable.
+     * It will be queried recursively.
+     */
+    private PrimitiveTransferData(Collection<? extends OsmPrimitive> primitives, ReferenceGetter referencedGetter) {
+        // convert to hash set first to remove duplicates
+        HashSet<OsmPrimitive> visited = new HashSet<>(primitives);
+        this.direct = new ArrayList<>(visited.size());
+
+        this.referenced = new ArrayList<>();
+        Queue<OsmPrimitive> toCheck = new LinkedList<>();
+        for (OsmPrimitive p : visited) {
+            direct.add(p.save());
+            toCheck.addAll(referencedGetter.getReferredPrimitives(p));
+        }
+        while (!toCheck.isEmpty()) {
+            OsmPrimitive p = toCheck.poll();
+            if (visited.add(p)) {
+                referenced.add(p.save());
+                toCheck.addAll(referencedGetter.getReferredPrimitives(p));
+            }
+        }
+    }
+
+    /**
+     * Gets all primitives directly added.
+     * @return The primitives
+     */
+    public Collection<PrimitiveData> getDirectlyAdded() {
+        return Collections.unmodifiableList(direct);
+    }
+
+    /**
+     * Gets all primitives that were added because they were referenced.
+     * @return The primitives
+     */
+    public Collection<PrimitiveData> getReferenced() {
+        return Collections.unmodifiableList(referenced);
+    }
+
+    /**
+     * Gets a List of all primitives added to this set.
+     * @return That list.
+     */
+    public Collection<PrimitiveData> getAll() {
+        ArrayList<PrimitiveData> list = new ArrayList<>();
+        list.addAll(direct);
+        list.addAll(referenced);
+        return list;
+    }
+
+    /**
+     * Creates a new {@link PrimitiveTransferData} object that only contains the primitives.
+     * @param primitives The primitives to contain.
+     * @return That set.
+     */
+    public static PrimitiveTransferData getData(Collection<? extends OsmPrimitive> primitives) {
+        return new PrimitiveTransferData(primitives, primitive -> Collections.emptyList());
+    }
+
+    /**
+     * Creates a new {@link PrimitiveTransferData} object that contains the primitives and all references.
+     * @param primitives The primitives to contain.
+     * @return That set.
+     */
+    public static PrimitiveTransferData getDataWithReferences(Collection<? extends OsmPrimitive> primitives) {
+        return new PrimitiveTransferData(primitives, new GetReferences());
+    }
+
+    /**
+     * Compute the center of all nodes.
+     * @return The center or null if this buffer has no location.
+     */
+    public EastNorth getCenter() {
+        BoundingXYVisitor visitor = new BoundingXYVisitor();
+        for (PrimitiveData pd : getAll()) {
+            if (pd instanceof NodeData && !pd.isIncomplete()) {
+                visitor.visit(((NodeData) pd).getEastNorth());
+            }
+        }
+        ProjectionBounds bounds = visitor.getBounds();
+        if (bounds == null) {
+            return null;
+        } else {
+            return bounds.getCenter();
+        }
+    }
+
+    /**
+     * Tests wheter this set contains any primitives that have invalid data.
+     * @return <code>true</code> if invalid data is contained in this set.
+     */
+    public boolean hasIncompleteData() {
+        for (PrimitiveData pd : getAll()) {
+            if (pd.isIncomplete()) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/TagTransferData.java b/src/org/openstreetmap/josm/gui/datatransfer/data/TagTransferData.java
new file mode 100644
index 0000000..6bc5e58
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/data/TagTransferData.java
@@ -0,0 +1,57 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+import java.awt.datatransfer.DataFlavor;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import org.openstreetmap.josm.data.osm.TagMap;
+import org.openstreetmap.josm.data.osm.Tagged;
+
+/**
+ * This is a special transfer type that only transfers tag data.
+ * <p>
+ * It contains all tags contained in the selection that was copied. For conflicting tags, any of the values may be used.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public class TagTransferData implements Serializable {
+
+    private static final long serialVersionUID = 1;
+
+    /**
+     * This is a data flavor added
+     */
+    public static final DataFlavor FLAVOR = new DataFlavor(TagTransferData.class, "OSM Tags");
+
+    private final TagMap tags = new TagMap();
+
+    /**
+     * Creates a new {@link TagTransferData} object for the given objects.
+     * @param tagged The tags to transfer.
+     */
+    public TagTransferData(Collection<? extends Tagged> tagged) {
+        for (Tagged t : tagged) {
+            tags.putAll(t.getKeys());
+        }
+    }
+
+    /**
+     * Create a new {@link TagTransferData} object with the given tags.
+     * @param tags The tags.
+     * @since 10637
+     */
+    public TagTransferData(Map<String, String> tags) {
+        this.tags.putAll(tags);
+    }
+
+    /**
+     * Gets all tags contained in this data.
+     * @return The tags.
+     */
+    public Map<String, String> getTags() {
+        return Collections.unmodifiableMap(tags);
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/data/package-info.java b/src/org/openstreetmap/josm/gui/datatransfer/data/package-info.java
new file mode 100644
index 0000000..47c2418
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/data/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for defining the serializable data transferred using cut/copy/paste operations.
+ */
+package org.openstreetmap.josm.gui.datatransfer.data;
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractOsmDataPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractOsmDataPaster.java
new file mode 100644
index 0000000..f9aa4c3
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractOsmDataPaster.java
@@ -0,0 +1,80 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.Collection;
+
+import javax.swing.TransferHandler;
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * This is an abstract class that helps implementing the transfer support required by swing.
+ * <p>
+ * It implements a mechanism to import a given data flavor into the current OSM data layer.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public abstract class AbstractOsmDataPaster {
+    protected final DataFlavor df;
+
+    /**
+     * Create a new {@link AbstractOsmDataPaster}
+     * @param df The data flavor that this support supports.
+     */
+    protected AbstractOsmDataPaster(DataFlavor df) {
+        this.df = df;
+    }
+
+    /**
+     * Checks if this supports importing the given transfer support.
+     * @param support The support that should be supported.
+     * @return True if we support that transfer.
+     */
+    public boolean supports(TransferSupport support) {
+        return support.isDataFlavorSupported(df) && isCopy(support);
+    }
+
+    /**
+     * Checks if this supports any of the available flavors.
+     * @param available The flavors that should be supported
+     * @return True if any of them is supported.
+     */
+    public boolean supports(Collection<DataFlavor> available) {
+        return available.contains(df);
+    }
+
+    private static boolean isCopy(TransferSupport support) {
+        return !support.isDrop() || (TransferHandler.COPY & support.getSourceDropActions()) == TransferHandler.COPY;
+    }
+
+    /**
+     * Attempts to import the given transfer data.
+     * @param support The transfer support to import from.
+     * @param layer The layer to paste at.
+     * @param pasteAt The position to paste at.
+     * @return <code>true</code> if the import was successful.
+     * @throws UnsupportedFlavorException if the requested data flavor is not supported
+     * @throws IOException if an I/O error occurs
+     */
+    public abstract boolean importData(TransferSupport support, OsmDataLayer layer, EastNorth pasteAt)
+            throws UnsupportedFlavorException, IOException;
+
+    /**
+     * Imports only if this import changes the tags only. Does nothing if more than tags would be changed.
+     * @param support The support
+     * @param selection The primitives to apply on.
+     * @return <code>true</code> if an import was done.
+     * @throws UnsupportedFlavorException if the requested data flavor is not supported
+     * @throws IOException if an I/O error occurs
+     */
+    public boolean importTagsOn(TransferSupport support, Collection<? extends OsmPrimitive> selection)
+            throws UnsupportedFlavorException, IOException {
+        return false;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java
new file mode 100644
index 0000000..fc476f6
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/AbstractTagPaster.java
@@ -0,0 +1,79 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import static org.openstreetmap.josm.tools.I18n.trn;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.tools.I18n;
+
+/**
+ * This transfer support allows us to transfer tags to the selected primitives
+ * @author Michael Zangl
+ * @since 10604
+ */
+public abstract class AbstractTagPaster extends AbstractOsmDataPaster {
+
+    AbstractTagPaster(DataFlavor df) {
+        super(df);
+    }
+
+    @Override
+    public boolean importData(TransferSupport support, OsmDataLayer layer, EastNorth pasteAt)
+            throws UnsupportedFlavorException, IOException {
+        Collection<OsmPrimitive> selection = layer.data.getSelected();
+        if (selection.isEmpty()) {
+            return false;
+        }
+
+        return importTagsOn(support, selection);
+    }
+
+    @Override
+    public boolean importTagsOn(TransferSupport support, Collection<? extends OsmPrimitive> selection)
+            throws UnsupportedFlavorException, IOException {
+        ChangePropertyCommand command = new ChangePropertyCommand(selection, getTags(support));
+        commitCommands(selection, Collections.singletonList(command));
+        return true;
+    }
+
+    /**
+     * Create and execute SequenceCommand with descriptive title
+     * @param selection selected primitives
+     * @param commands the commands to perform in a sequential command
+     * @since 10737
+     */
+    protected static void commitCommands(Collection<? extends OsmPrimitive> selection, List<Command> commands) {
+        if (!commands.isEmpty()) {
+            String title1 = trn("Pasting {0} tag", "Pasting {0} tags", commands.size(), commands.size());
+            String title2 = trn("to {0} object", "to {0} objects", selection.size(), selection.size());
+            @I18n.QuirkyPluralString
+            final String title = title1 + ' ' + title2;
+            Main.main.undoRedo.add(new SequenceCommand(title, commands));
+        }
+    }
+
+    /**
+     * Gets the tags that should be pasted.
+     * @param support The TransferSupport to get the tags from.
+     * @return The tags
+     * @throws UnsupportedFlavorException if the requested data flavor is not supported
+     * @throws IOException if an I/O error occurs
+     */
+    protected abstract Map<String, String> getTags(TransferSupport support) throws UnsupportedFlavorException, IOException;
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java
new file mode 100644
index 0000000..c808915
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java
@@ -0,0 +1,40 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.OpenFileAction;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * This transfer support allows us to import a file that is dropped / copied on to the map.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public final class FilePaster extends AbstractOsmDataPaster {
+    /**
+     * Create a new {@link FilePaster}
+     */
+    public FilePaster() {
+        super(DataFlavor.javaFileListFlavor);
+    }
+
+    @Override
+    public boolean importData(TransferSupport support, OsmDataLayer layer, EastNorth pasteAt)
+            throws UnsupportedFlavorException, IOException {
+        @SuppressWarnings("unchecked")
+        List<File> files = (List<File>) support.getTransferable().getTransferData(df);
+        OpenFileAction.OpenFileTask task = new OpenFileAction.OpenFileTask(files, null);
+        task.setRecordHistory(true);
+        Main.worker.submit(task);
+        return true;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
new file mode 100644
index 0000000..804b209
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveDataPaster.java
@@ -0,0 +1,140 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.AddPrimitivesCommand;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.osm.NodeData;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.RelationData;
+import org.openstreetmap.josm.data.osm.RelationMemberData;
+import org.openstreetmap.josm.data.osm.WayData;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * This transfer support allows us to transfer primitives. This is the default paste action when primitives were copied.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public final class PrimitiveDataPaster extends AbstractOsmDataPaster {
+    /**
+     * Create a new {@link PrimitiveDataPaster}
+     */
+    public PrimitiveDataPaster() {
+        super(PrimitiveTransferData.DATA_FLAVOR);
+    }
+
+    @Override
+    public boolean importData(TransferSupport support, final OsmDataLayer layer, EastNorth pasteAt)
+            throws UnsupportedFlavorException, IOException {
+        PrimitiveTransferData pasteBuffer = (PrimitiveTransferData) support.getTransferable().getTransferData(df);
+        // Allow to cancel paste if there are incomplete primitives
+        if (pasteBuffer.hasIncompleteData() && !confirmDeleteIncomplete()) {
+            return false;
+        }
+
+        EastNorth center = pasteBuffer.getCenter();
+        EastNorth offset = center == null || pasteAt == null ? new EastNorth(0, 0) : pasteAt.subtract(center);
+
+        AddPrimitivesCommand command = createNewPrimitives(pasteBuffer, offset, layer);
+
+        /* Now execute the commands to add the duplicated contents of the paste buffer to the map */
+        Main.main.undoRedo.add(command);
+        return true;
+    }
+
+    private static AddPrimitivesCommand createNewPrimitives(PrimitiveTransferData pasteBuffer, EastNorth offset, OsmDataLayer layer) {
+        // Make a copy of pasteBuffer and map from old id to copied data id
+        List<PrimitiveData> bufferCopy = new ArrayList<>();
+        List<PrimitiveData> toSelect = new ArrayList<>();
+        EnumMap<OsmPrimitiveType, Map<Long, Long>> newIds = generateNewPrimitives(pasteBuffer, bufferCopy, toSelect);
+
+        // Update references in copied buffer
+        for (PrimitiveData data : bufferCopy) {
+            if (data instanceof NodeData) {
+                NodeData nodeData = (NodeData) data;
+                nodeData.setEastNorth(nodeData.getEastNorth().add(offset));
+            } else if (data instanceof WayData) {
+                updateNodes(newIds.get(OsmPrimitiveType.NODE), data);
+            } else if (data instanceof RelationData) {
+                updateMembers(newIds, data);
+            }
+        }
+        return new AddPrimitivesCommand(bufferCopy, toSelect, layer);
+    }
+
+    private static EnumMap<OsmPrimitiveType, Map<Long, Long>> generateNewPrimitives(PrimitiveTransferData pasteBuffer,
+            List<PrimitiveData> bufferCopy, List<PrimitiveData> toSelect) {
+        EnumMap<OsmPrimitiveType, Map<Long, Long>> newIds = new EnumMap<>(OsmPrimitiveType.class);
+        newIds.put(OsmPrimitiveType.NODE, new HashMap<Long, Long>());
+        newIds.put(OsmPrimitiveType.WAY, new HashMap<Long, Long>());
+        newIds.put(OsmPrimitiveType.RELATION, new HashMap<Long, Long>());
+
+        for (PrimitiveData data : pasteBuffer.getAll()) {
+            if (data.isIncomplete()) {
+                continue;
+            }
+            PrimitiveData copy = data.makeCopy();
+            // don't know why this is reset, but we need it to not crash on copying incomplete nodes.
+            boolean wasIncomplete = copy.isIncomplete();
+            copy.clearOsmMetadata();
+            copy.setIncomplete(wasIncomplete);
+            newIds.get(data.getType()).put(data.getUniqueId(), copy.getUniqueId());
+
+            bufferCopy.add(copy);
+            if (pasteBuffer.getDirectlyAdded().contains(data)) {
+                toSelect.add(copy);
+            }
+        }
+        return newIds;
+    }
+
+    private static void updateMembers(EnumMap<OsmPrimitiveType, Map<Long, Long>> newIds, PrimitiveData data) {
+        List<RelationMemberData> newMembers = new ArrayList<>();
+        for (RelationMemberData member : ((RelationData) data).getMembers()) {
+            OsmPrimitiveType memberType = member.getMemberType();
+            Long newId = newIds.get(memberType).get(member.getMemberId());
+            if (newId != null) {
+                newMembers.add(new RelationMemberData(member.getRole(), memberType, newId));
+            }
+        }
+        ((RelationData) data).setMembers(newMembers);
+    }
+
+    private static void updateNodes(Map<Long, Long> newNodeIds, PrimitiveData data) {
+        List<Long> newNodes = new ArrayList<>();
+        for (Long oldNodeId : ((WayData) data).getNodes()) {
+            Long newNodeId = newNodeIds.get(oldNodeId);
+            if (newNodeId != null) {
+                newNodes.add(newNodeId);
+            }
+        }
+        ((WayData) data).setNodes(newNodes);
+    }
+
+    private static boolean confirmDeleteIncomplete() {
+        ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Delete incomplete members?"),
+                new String[] {tr("Paste without incomplete members"), tr("Cancel")});
+        ed.setButtonIcons(new String[] {"dialogs/relation/deletemembers", "cancel"});
+        ed.setContent(tr(
+                "The copied data contains incomplete objects.  " + "When pasting the incomplete objects are removed.  "
+                        + "Do you want to paste the data without the incomplete objects?"));
+        ed.showDialog();
+        return ed.getValue() == 1;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveTagTransferPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveTagTransferPaster.java
new file mode 100644
index 0000000..264789d
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/PrimitiveTagTransferPaster.java
@@ -0,0 +1,205 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+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.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.data.osm.TagMap;
+import org.openstreetmap.josm.gui.conflict.tags.PasteTagsConflictResolverDialog;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTagTransferData;
+
+/**
+ * This class helps pasting tags form other primitives. It handles resolving conflicts.
+ * @author Michael Zangl
+ * @since 10737
+ */
+public class PrimitiveTagTransferPaster extends AbstractTagPaster {
+    /**
+     * Create a new {@link PrimitiveTagTransferPaster}
+     */
+    public PrimitiveTagTransferPaster() {
+        super(PrimitiveTagTransferData.FLAVOR);
+    }
+
+    @Override
+    public boolean importTagsOn(TransferSupport support, Collection<? extends OsmPrimitive> selection)
+            throws UnsupportedFlavorException, IOException {
+        PrimitiveTagTransferData data = (PrimitiveTagTransferData) support.getTransferable().getTransferData(df);
+
+        TagPasteSupport tagPaster = new TagPasteSupport(data, selection);
+        List<Command> commands = new ArrayList<>();
+        for (Tag tag : tagPaster.execute()) {
+            commands.add(new ChangePropertyCommand(selection, tag.getKey(), "".equals(tag.getValue()) ? null : tag.getValue()));
+        }
+        commitCommands(selection, commands);
+        return true;
+    }
+
+    @Override
+    protected Map<String, String> getTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
+        PrimitiveTagTransferData data = (PrimitiveTagTransferData) support.getTransferable().getTransferData(df);
+
+        TagPasteSupport tagPaster = new TagPasteSupport(data, Arrays.asList(new Node()));
+        return new TagMap(tagPaster.execute());
+    }
+
+    private static class TagPasteSupport {
+        private final PrimitiveTagTransferData data;
+        private final Collection<? extends IPrimitive> selection;
+        private final List<Tag> tags = new ArrayList<>();
+
+        /**
+         * Constructs a new {@code TagPasteSupport}.
+         * @param data source tags to paste
+         * @param selection target primitives
+         */
+        TagPasteSupport(PrimitiveTagTransferData data, Collection<? extends IPrimitive> selection) {
+            super();
+            this.data = data;
+            this.selection = selection;
+        }
+
+        /**
+         * Pastes the tags from a homogeneous source (the selection consisting
+         * of one type of {@link OsmPrimitive}s only).
+         *
+         * Tags from a homogeneous source can be pasted to a heterogeneous target. All target primitives,
+         * regardless of their type, receive the same tags.
+         */
+        protected void pasteFromHomogeneousSource() {
+            TagCollection tc = null;
+            for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
+                TagCollection tc1 = data.getForPrimitives(type);
+                if (!tc1.isEmpty()) {
+                    tc = tc1;
+                }
+            }
+            if (tc == null)
+                // no tags found to paste. Abort.
+                return;
+
+            if (!tc.isApplicableToPrimitive()) {
+                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(Main.parent);
+                dialog.populate(tc, data.getStatistics(), getTargetStatistics());
+                dialog.setVisible(true);
+                if (dialog.isCanceled())
+                    return;
+                buildTags(dialog.getResolution());
+            } else {
+                // no conflicts in the source tags to resolve. Just apply the tags to the target primitives
+                buildTags(tc);
+            }
+        }
+
+        /**
+         * Replies true if this a heterogeneous source can be pasted without conflict to targets
+         *
+         * @return true if this a heterogeneous source can be pasted without conflicts to targets
+         */
+        protected boolean canPasteFromHeterogeneousSourceWithoutConflict() {
+            for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
+                if (hasTargetPrimitives(type)) {
+                    TagCollection tc = data.getForPrimitives(type);
+                    if (!tc.isEmpty() && !tc.isApplicableToPrimitive())
+                        return false;
+                }
+            }
+            return true;
+        }
+
+        /**
+         * Pastes the tags in the current selection of the paste buffer to a set of target primitives.
+         */
+        protected void pasteFromHeterogeneousSource() {
+            if (canPasteFromHeterogeneousSourceWithoutConflict()) {
+                for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
+                    if (!data.getForPrimitives(type).isEmpty() && hasTargetPrimitives(type)) {
+                        buildTags(data.getForPrimitives(type));
+                    }
+                }
+            } else {
+                PasteTagsConflictResolverDialog dialog = new PasteTagsConflictResolverDialog(Main.parent);
+                dialog.populate(
+                        data.getForPrimitives(OsmPrimitiveType.NODE),
+                        data.getForPrimitives(OsmPrimitiveType.WAY),
+                        data.getForPrimitives(OsmPrimitiveType.RELATION),
+                        data.getStatistics(),
+                        getTargetStatistics()
+                );
+                dialog.setVisible(true);
+                if (dialog.isCanceled())
+                    return;
+                for (OsmPrimitiveType type : OsmPrimitiveType.dataValues()) {
+                    if (!data.getForPrimitives(type).isEmpty() && hasTargetPrimitives(type)) {
+                        buildTags(dialog.getResolution(type));
+                    }
+                }
+            }
+        }
+
+        protected Map<OsmPrimitiveType, Integer> getTargetStatistics() {
+            Map<OsmPrimitiveType, Integer> ret = new EnumMap<>(OsmPrimitiveType.class);
+            for (OsmPrimitiveType type: OsmPrimitiveType.dataValues()) {
+                int count = (int) selection.stream().filter(p -> type == p.getType()).count();
+                if (count > 0) {
+                    ret.put(type, count);
+                }
+            }
+            return ret;
+        }
+
+        /**
+         * Replies true if there is at least one primitive of type <code>type</code>
+         * is in the target collection
+         *
+         * @param type  the type to look for
+         * @return true if there is at least one primitive of type <code>type</code> in the collection
+         * <code>selection</code>
+         */
+        protected boolean hasTargetPrimitives(OsmPrimitiveType type) {
+            return selection.stream().anyMatch(p -> type == p.getType());
+        }
+
+        protected void buildTags(TagCollection tc) {
+            for (String key : tc.getKeys()) {
+                tags.add(new Tag(key, tc.getValues(key).iterator().next()));
+            }
+        }
+
+        /**
+         * Performs the paste operation.
+         * @return list of tags
+         */
+        public List<Tag> execute() {
+            tags.clear();
+            if (data.isHeterogeneousSource()) {
+                pasteFromHeterogeneousSource();
+            } else {
+                pasteFromHomogeneousSource();
+            }
+            return tags;
+        }
+
+        @Override
+        public String toString() {
+            return "PasteSupport [data=" + data + ", selection=" + selection + ']';
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/TagTransferPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/TagTransferPaster.java
new file mode 100644
index 0000000..9c48ccd
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/TagTransferPaster.java
@@ -0,0 +1,30 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
+
+/**
+ * This transfer support allows us to transfer tags from the copied primitives on to the selected ones.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public final class TagTransferPaster extends AbstractTagPaster {
+    /**
+     * Create a new {@link TagTransferPaster}
+     */
+    public TagTransferPaster() {
+        super(TagTransferData.FLAVOR);
+    }
+
+    @Override
+    protected Map<String, String> getTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
+        TagTransferData data = (TagTransferData) support.getTransferable().getTransferData(df);
+        return data.getTags();
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
new file mode 100644
index 0000000..404cc32
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
@@ -0,0 +1,62 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.importers;
+
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.swing.TransferHandler.TransferSupport;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.TextTagParser;
+
+/**
+ * This transfer support allows us to import tags from the text that was copied to the clipboard.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public final class TextTagPaster extends AbstractTagPaster {
+    private static final String help = ht("/Action/PasteTags");
+
+    /**
+     * Create a new {@link TextTagPaster}
+     */
+    public TextTagPaster() {
+        super(DataFlavor.stringFlavor);
+    }
+
+    @Override
+    public boolean supports(TransferSupport support) {
+        try {
+            return super.supports(support) && containsValidTags(support);
+        } catch (UnsupportedFlavorException | IOException e) {
+            Main.warn(e);
+            return false;
+        }
+    }
+
+    private boolean containsValidTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
+        Map<String, String> tags = getTagsImpl(support);
+        return tags != null && !tags.isEmpty();
+    }
+
+    @Override
+    protected Map<String, String> getTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
+        Map<String, String> tags = getTagsImpl(support);
+        if (tags == null || tags.isEmpty()) {
+            TextTagParser.showBadBufferMessage(help);
+            throw new IOException("Invalid tags to paste.");
+        }
+        if (!TextTagParser.validateTags(tags)) {
+            throw new IOException("Tags to paste are not valid.");
+        }
+        return tags;
+    }
+
+    private Map<String, String> getTagsImpl(TransferSupport support) throws UnsupportedFlavorException, IOException {
+        return TextTagParser.readTagsFromText((String) support.getTransferable().getTransferData(df));
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/importers/package-info.java b/src/org/openstreetmap/josm/gui/datatransfer/importers/package-info.java
new file mode 100644
index 0000000..d687e16
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/importers/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for the transfer support controllers allowing cut/copy/paste operations.
+ */
+package org.openstreetmap.josm.gui.datatransfer.importers;
diff --git a/src/org/openstreetmap/josm/gui/datatransfer/package-info.java b/src/org/openstreetmap/josm/gui/datatransfer/package-info.java
new file mode 100644
index 0000000..9ecb1c1
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/datatransfer/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for transferring data using cut/copy/paste operations.
+ */
+package org.openstreetmap.josm.gui.datatransfer;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
index e882c95..681af62 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
@@ -482,7 +482,7 @@ public class ChangesetDialog extends ToggleDialog {
             // Hide implicit public constructor for utility classes
         }
 
-        protected static void launchChangesetManager(Collection<Integer> toSelect) {
+        private static void launchChangesetManager(Collection<Integer> toSelect) {
             ChangesetCacheManager cm = ChangesetCacheManager.getInstance();
             if (cm.isVisible()) {
                 cm.setExtendedState(Frame.NORMAL);
@@ -521,37 +521,29 @@ public class ChangesetDialog extends ToggleDialog {
                 future = Main.worker.submit(new PostDownloadHandler(task, task.download()));
             }
 
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    // first, wait for the download task to finish, if a download task was launched
-                    if (future != null) {
-                        try {
-                            future.get();
-                        } catch (InterruptedException e) {
-                            Main.warn("InterruptedException in "+getClass().getSimpleName()+" while downloading changeset header");
-                        } catch (ExecutionException e) {
-                            Main.error(e);
-                            BugReportExceptionHandler.handleException(e.getCause());
-                            return;
-                        }
+            Runnable r = () -> {
+                // first, wait for the download task to finish, if a download task was launched
+                if (future != null) {
+                    try {
+                        future.get();
+                    } catch (InterruptedException e1) {
+                        Main.warn(e1, "InterruptedException in ChangesetDialog while downloading changeset header");
+                    } catch (ExecutionException e2) {
+                        Main.error(e2);
+                        BugReportExceptionHandler.handleException(e2.getCause());
+                        return;
                     }
-                    if (task != null) {
-                        if (task.isCanceled())
-                            // don't launch the changeset manager if the download task was canceled
-                            return;
-                        if (task.isFailed()) {
-                            toDownload.clear();
-                        }
+                }
+                if (task != null) {
+                    if (task.isCanceled())
+                        // don't launch the changeset manager if the download task was canceled
+                        return;
+                    if (task.isFailed()) {
+                        toDownload.clear();
                     }
-                    // launch the task
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            launchChangesetManager(sel);
-                        }
-                    });
                 }
+                // launch the task
+                GuiHelper.runInEDT(() -> launchChangesetManager(sel));
             };
             Main.worker.submit(r);
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
index 8cb5934..c803b2e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/CommandStackDialog.java
@@ -48,7 +48,6 @@ import org.openstreetmap.josm.tools.FilteredCollection;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -189,13 +188,6 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
     }
 
     /**
-     * Interface to provide a callback for enabled state update.
-     */
-    protected interface IEnabledStateUpdating {
-        void updateEnabledState();
-    }
-
-    /**
      * Wires updater for enabled state to the events. Also updates dialog title if needed.
      * @param updater updater
      * @param tree tree on which wire updater
@@ -203,12 +195,7 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
     protected void wireUpdateEnabledStateUpdater(final IEnabledStateUpdating updater, JTree tree) {
         addShowNotifyListener(updater);
 
-        tree.addTreeSelectionListener(new TreeSelectionListener() {
-            @Override
-            public void valueChanged(TreeSelectionEvent e) {
-                updater.updateEnabledState();
-            }
-        });
+        tree.addTreeSelectionListener(e -> updater.updateEnabledState());
 
         tree.getModel().addTreeModelListener(new TreeModelListener() {
             @Override
@@ -348,12 +335,9 @@ public class CommandStackDialog extends ToggleDialog implements CommandQueueList
         final OsmDataLayer currentLayer = Main.getLayerManager().getEditLayer();
         return new FilteredCollection<>(
                 c.getParticipatingPrimitives(),
-                new Predicate<OsmPrimitive>() {
-                    @Override
-                    public boolean evaluate(OsmPrimitive o) {
-                        OsmPrimitive p = currentLayer.data.getPrimitiveById(o);
-                        return p != null && p.isUsable();
-                    }
+                o -> {
+                    OsmPrimitive p = currentLayer.data.getPrimitiveById(o);
+                    return p != null && p.isUsable();
                 }
         );
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
index a58dacf..21530f9 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
@@ -115,19 +115,14 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
     /**
      * builds the GUI
      */
-    protected void build() {
+    private void build() {
         model = new ConflictListModel();
 
         lstConflicts = new JList<>(model);
         lstConflicts.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         lstConflicts.setCellRenderer(new OsmPrimitivRenderer());
         lstConflicts.addMouseListener(new MouseEventHandler());
-        addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                Main.map.mapView.repaint();
-            }
-        });
+        addListSelectionListener(e -> Main.map.mapView.repaint());
 
         SideButton btnResolve = new SideButton(actResolve);
         addListSelectionListener(actResolve);
@@ -235,12 +230,9 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
     public void refreshView() {
         OsmDataLayer editLayer = Main.getLayerManager().getEditLayer();
         conflicts = editLayer == null ? new ConflictCollection() : editLayer.getConflicts();
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                model.fireContentChanged();
-                updateTitle();
-            }
+        GuiHelper.runInEDT(() -> {
+            model.fireContentChanged();
+            updateTitle();
         });
     }
 
@@ -596,22 +588,19 @@ public final class ConflictDialog extends ToggleDialog implements ActiveLayerCha
                             null /* no specific help */
                     )
             };
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    HelpAwareOptionPane.showOptionDialog(
-                            Main.parent,
-                            sb.toString(),
-                            tr("Conflicts detected"),
-                            JOptionPane.WARNING_MESSAGE,
-                            null, /* no icon */
-                            options,
-                            options[0],
-                            ht("/Concepts/Conflict#WarningAboutDetectedConflicts")
-                    );
-                    unfurlDialog();
-                    Main.map.repaint();
-                }
+            GuiHelper.runInEDT(() -> {
+                HelpAwareOptionPane.showOptionDialog(
+                        Main.parent,
+                        sb.toString(),
+                        tr("Conflicts detected"),
+                        JOptionPane.WARNING_MESSAGE,
+                        null, /* no icon */
+                        options,
+                        options[0],
+                        ht("/Concepts/Conflict#WarningAboutDetectedConflicts")
+                );
+                unfurlDialog();
+                Main.map.repaint();
             });
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java b/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
index 4e4a590..c97792c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
@@ -13,13 +13,13 @@ import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import javax.swing.AbstractAction;
+import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
@@ -36,7 +36,6 @@ import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.RelationToChildReference;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
-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.util.GuiHelper;
@@ -70,7 +69,7 @@ public class DeleteFromRelationConfirmationDialog extends JDialog implements Tab
     private RelationMemberTableModel model;
     private final HtmlPanel htmlPanel = new HtmlPanel();
     private boolean canceled;
-    private final SideButton btnOK = new SideButton(new OKAction());
+    private final JButton btnOK = new JButton(new OKAction());
 
     protected JPanel buildRelationMemberTablePanel() {
         JTable table = new JTable(model, new RelationMemberTableColumnModel());
@@ -83,8 +82,8 @@ public class DeleteFromRelationConfirmationDialog extends JDialog implements Tab
         JPanel pnl = new JPanel(new FlowLayout());
         pnl.add(btnOK);
         btnOK.setFocusable(true);
-        pnl.add(new SideButton(new CancelAction()));
-        pnl.add(new SideButton(new ContextSensitiveHelpAction(ht("/Action/Delete#DeleteFromRelations"))));
+        pnl.add(new JButton(new CancelAction()));
+        pnl.add(new JButton(new ContextSensitiveHelpAction(ht("/Action/Delete#DeleteFromRelations"))));
         return pnl;
     }
 
@@ -201,19 +200,17 @@ public class DeleteFromRelationConfirmationDialog extends JDialog implements Tab
         }
 
         protected void sort() {
-            Collections.sort(
-                    data,
-                    new Comparator<RelationToChildReference>() {
-                        private NameFormatter nf = DefaultNameFormatter.getInstance();
-                        @Override
-                        public int compare(RelationToChildReference o1, RelationToChildReference o2) {
-                            int cmp = o1.getChild().getDisplayName(nf).compareTo(o2.getChild().getDisplayName(nf));
-                            if (cmp != 0) return cmp;
-                            cmp = o1.getParent().getDisplayName(nf).compareTo(o2.getParent().getDisplayName(nf));
-                            if (cmp != 0) return cmp;
-                            return Integer.compare(o1.getPosition(), o2.getPosition());
-                        }
+            data.sort(new Comparator<RelationToChildReference>() {
+                    private NameFormatter nf = DefaultNameFormatter.getInstance();
+                    @Override
+                    public int compare(RelationToChildReference o1, RelationToChildReference o2) {
+                        int cmp = o1.getChild().getDisplayName(nf).compareTo(o2.getChild().getDisplayName(nf));
+                        if (cmp != 0) return cmp;
+                        cmp = o1.getParent().getDisplayName(nf).compareTo(o2.getParent().getDisplayName(nf));
+                        if (cmp != 0) return cmp;
+                        return Integer.compare(o1.getPosition(), o2.getPosition());
                     }
+                }
             );
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
index 3ebf398..721e1db 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
@@ -275,12 +275,8 @@ public class FilterDialog extends ToggleDialog implements DataSetListener {
     }
 
     public void updateDialogHeader() {
-        SwingUtilities.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                setTitle(tr("Filter Hidden:{0} Disabled:{1}", filterModel.disabledAndHiddenCount, filterModel.disabledCount));
-            }
-        });
+        SwingUtilities.invokeLater(() -> setTitle(
+                tr("Filter Hidden:{0} Disabled:{1}", filterModel.disabledAndHiddenCount, filterModel.disabledCount)));
     }
 
     public void drawOSDText(Graphics2D g) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
index ac59460..a12170c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
@@ -63,6 +63,7 @@ public class FilterTableModel extends AbstractTableModel {
             try {
                 filterMatcher.add(filter);
             } catch (ParseError e) {
+                Main.error(e);
                 JOptionPane.showMessageDialog(
                         Main.parent,
                         tr("<html>Error in filter <code>{0}</code>:<br>{1}", Utils.shortenString(filter.text, 80), e.getMessage()),
diff --git a/src/org/openstreetmap/josm/gui/dialogs/IEnabledStateUpdating.java b/src/org/openstreetmap/josm/gui/dialogs/IEnabledStateUpdating.java
new file mode 100644
index 0000000..1557c99
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/dialogs/IEnabledStateUpdating.java
@@ -0,0 +1,15 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs;
+
+/**
+ * To be implemented by actions for which their enabled state depends on another model.
+ * @since 10600 (refactoring to new package, functional interface)
+ */
+ at FunctionalInterface
+public interface IEnabledStateUpdating {
+
+    /**
+     * Called after the layer model has changed.
+     */
+    void updateEnabledState();
+}
diff --git a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
index a83517a..bc62e2c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
@@ -9,7 +9,6 @@ import java.awt.GridBagLayout;
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -20,8 +19,6 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTabbedPane;
 import javax.swing.SingleSelectionModel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -77,27 +74,19 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
 
         final JPanel pMapPaint = new JPanel();
         tabs.addTab(tr("map style"), pMapPaint);
-        tabs.getModel().addChangeListener(new ChangeListener() {
-
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                if (!mappaintTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 1) {
-                    mappaintTabLoaded = true;
-                    genericMonospacePanel(pMapPaint, buildMapPaintText());
-                }
+        tabs.getModel().addChangeListener(e -> {
+            if (!mappaintTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 1) {
+                mappaintTabLoaded = true;
+                genericMonospacePanel(pMapPaint, buildMapPaintText());
             }
         });
 
         final JPanel pEditCounts = new JPanel();
         tabs.addTab(tr("edit counts"), pEditCounts);
-        tabs.getModel().addChangeListener(new ChangeListener() {
-
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                if (!editcountTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 2) {
-                    editcountTabLoaded = true;
-                    genericMonospacePanel(pEditCounts, buildListOfEditorsText(primitives));
-                }
+        tabs.getModel().addChangeListener(e -> {
+            if (!editcountTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 2) {
+                editcountTabLoaded = true;
+                genericMonospacePanel(pEditCounts, buildListOfEditorsText(primitives));
             }
         });
 
@@ -110,13 +99,14 @@ public class InspectPrimitiveDialog extends ExtendedDialog {
         jte.setFont(GuiHelper.getMonospacedFont(jte));
         jte.setEditable(false);
         jte.append(s);
+        jte.setCaretPosition(0);
         p.add(new JScrollPane(jte), GBC.std().fill());
         return p;
     }
 
     protected static String buildDataText(OsmDataLayer layer, List<OsmPrimitive> primitives) {
         InspectPrimitiveDataText dt = new InspectPrimitiveDataText(layer);
-        Collections.sort(primitives, new OsmPrimitiveComparator());
+        primitives.sort(new OsmPrimitiveComparator());
         for (OsmPrimitive o : primitives) {
             dt.addPrimitive(o);
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
index 940fd27..bb144a3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LatLonDialog.java
@@ -21,8 +21,6 @@ import javax.swing.JPanel;
 import javax.swing.JSeparator;
 import javax.swing.JTabbedPane;
 import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
@@ -166,14 +164,11 @@ public class LatLonDialog extends ExtendedDialog {
         tabs = new JTabbedPane();
         tabs.addTab(tr("Lat/Lon"), buildLatLon());
         tabs.addTab(tr("East/North"), buildEastNorth());
-        tabs.getModel().addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                switch (tabs.getModel().getSelectedIndex()) {
-                    case 0: parseLatLonUserInput(); break;
-                    case 1: parseEastNorthUserInput(); break;
-                    default: throw new AssertionError();
-                }
+        tabs.getModel().addChangeListener(e -> {
+            switch (tabs.getModel().getSelectedIndex()) {
+                case 0: parseLatLonUserInput(); break;
+                case 1: parseEastNorthUserInput(); break;
+                default: throw new AssertionError();
             }
         });
         setContent(tabs, false);
@@ -240,6 +235,7 @@ public class LatLonDialog extends ExtendedDialog {
                 latLon = null;
             }
         } catch (IllegalArgumentException e) {
+            Main.trace(e);
             latLon = null;
         }
         if (latLon == null) {
@@ -258,6 +254,7 @@ public class LatLonDialog extends ExtendedDialog {
         try {
             en = parseEastNorth(tfEastNorth.getText());
         } catch (IllegalArgumentException e) {
+            Main.trace(e);
             en = null;
         }
         if (en == null) {
diff --git a/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
index dadfdb3..2b7798b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
@@ -7,6 +7,7 @@ import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.Font;
+import java.awt.GraphicsEnvironment;
 import java.awt.Point;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
@@ -24,6 +25,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import javax.swing.AbstractAction;
 import javax.swing.DefaultCellEditor;
 import javax.swing.DefaultListSelectionModel;
+import javax.swing.DropMode;
 import javax.swing.ImageIcon;
 import javax.swing.JCheckBox;
 import javax.swing.JComponent;
@@ -35,9 +37,6 @@ import javax.swing.ListSelectionModel;
 import javax.swing.UIManager;
 import javax.swing.event.ListDataEvent;
 import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellRenderer;
@@ -51,7 +50,7 @@ import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.layer.ActivateLayerAction;
 import org.openstreetmap.josm.gui.dialogs.layer.DeleteLayerAction;
 import org.openstreetmap.josm.gui.dialogs.layer.DuplicateAction;
-import org.openstreetmap.josm.gui.dialogs.layer.IEnabledStateUpdating;
+import org.openstreetmap.josm.gui.dialogs.layer.LayerListTransferHandler;
 import org.openstreetmap.josm.gui.dialogs.layer.LayerVisibilityAction;
 import org.openstreetmap.josm.gui.dialogs.layer.MergeAction;
 import org.openstreetmap.josm.gui.dialogs.layer.MoveDownAction;
@@ -360,14 +359,7 @@ public class LayerListDialog extends ToggleDialog {
      * @param listSelectionModel  the source emitting {@link ListSelectionEvent}s
      */
     protected void adaptTo(final IEnabledStateUpdating listener, ListSelectionModel listSelectionModel) {
-        listSelectionModel.addListSelectionListener(
-                new ListSelectionListener() {
-                    @Override
-                    public void valueChanged(ListSelectionEvent e) {
-                        listener.updateEnabledState();
-                    }
-                }
-                );
+        listSelectionModel.addListSelectionListener(e -> listener.updateEnabledState());
     }
 
     /**
@@ -379,14 +371,7 @@ public class LayerListDialog extends ToggleDialog {
      * @param listModel the source emitting {@link ListDataEvent}s
      */
     protected void adaptTo(final IEnabledStateUpdating listener, LayerListModel listModel) {
-        listModel.addTableModelListener(
-                new TableModelListener() {
-                    @Override
-                    public void tableChanged(TableModelEvent e) {
-                        listener.updateEnabledState();
-                    }
-                }
-                );
+        listModel.addTableModelListener(e -> listener.updateEnabledState());
     }
 
     @Override
@@ -700,7 +685,7 @@ public class LayerListDialog extends ToggleDialog {
          * @param layer the layer at this index
          * @see LayerListModelListener#makeVisible(int, Layer)
          */
-        protected void fireMakeVisible(int index, Layer layer) {
+        private void fireMakeVisible(int index, Layer layer) {
             for (LayerListModelListener listener : listeners) {
                 listener.makeVisible(index, layer);
             }
@@ -711,7 +696,7 @@ public class LayerListDialog extends ToggleDialog {
          *
          * @see LayerListModelListener#refresh()
          */
-        protected void fireRefresh() {
+        private void fireRefresh() {
             for (LayerListModelListener listener : listeners) {
                 listener.refresh();
             }
@@ -906,7 +891,7 @@ public class LayerListDialog extends ToggleDialog {
         /**
          * Make sure the first of the selected layers is visible in the views of this model.
          */
-        protected void ensureSelectedIsVisible() {
+        private void ensureSelectedIsVisible() {
             int index = selectionModel.getMinSelectionIndex();
             if (index < 0)
                 return;
@@ -955,7 +940,7 @@ public class LayerListDialog extends ToggleDialog {
          * Ensures that at least one layer is selected in the layer dialog
          *
          */
-        protected void ensureActiveSelected() {
+        private void ensureActiveSelected() {
             List<Layer> layers = getLayers();
             if (layers.isEmpty())
                 return;
@@ -977,22 +962,10 @@ public class LayerListDialog extends ToggleDialog {
          *
          * @return the active layer. null, if no active layer is available
          */
-        protected Layer getActiveLayer() {
+        private Layer getActiveLayer() {
             return getLayerManager().getActiveLayer();
         }
 
-        /**
-         * Replies the scale layer. null, if no active layer is available.
-         *
-         * @return the scale layer. null, if no active layer is available
-         * @deprecated Deprecated since it is unused in JOSM and does not really belong here. Can be removed soon (August 2016).
-         *             You can directly query MapView.
-         */
-        @Deprecated
-        protected NativeScaleLayer getNativeScaleLayer() {
-            return Main.isDisplayingMapView() ? Main.map.mapView.getNativeScaleLayer() : null;
-        }
-
         /* ------------------------------------------------------------------------------ */
         /* Interface TableModel                                                           */
         /* ------------------------------------------------------------------------------ */
@@ -1104,7 +1077,7 @@ public class LayerListDialog extends ToggleDialog {
 
         @Override
         public void layerOrderChanged(LayerOrderChangeEvent e) {
-            // ignored for now, since only we change layer order.
+            fireTableDataChanged();
         }
 
         /* ------------------------------------------------------------------------------ */
@@ -1130,6 +1103,11 @@ public class LayerListDialog extends ToggleDialog {
         LayerList(LayerListModel dataModel) {
             super(dataModel);
             dataModel.setLayerList(this);
+            if (!GraphicsEnvironment.isHeadless()) {
+                setDragEnabled(true);
+            }
+            setDropMode(DropMode.INSERT_ROWS);
+            setTransferHandler(new LayerListTransferHandler());
         }
 
         public void scrollToVisible(int row, int col) {
@@ -1141,6 +1119,11 @@ public class LayerListDialog extends ToggleDialog {
             rect.setLocation(rect.x - pt.x, rect.y - pt.y);
             viewport.scrollRectToVisible(rect);
         }
+
+        @Override
+        public LayerListModel getModel() {
+            return (LayerListModel) super.getModel();
+        }
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
index 5192081..350df80 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
@@ -12,7 +12,6 @@ import java.awt.Insets;
 import java.awt.Point;
 import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 import java.io.BufferedInputStream;
@@ -49,8 +48,6 @@ import javax.swing.SwingConstants;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.border.EmptyBorder;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.filechooser.FileFilter;
@@ -138,12 +135,7 @@ public class MapPaintDialog extends ToggleDialog {
                 downAction.updateEnabledState();
             }
         });
-        cbWireframe.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                Main.main.menu.wireFrameToggleAction.actionPerformed(null);
-            }
-        });
+        cbWireframe.addActionListener(e -> Main.main.menu.wireFrameToggleAction.actionPerformed(null));
         cbWireframe.setBorder(new EmptyBorder(new Insets(1, 1, 1, 1)));
 
         tblStyles = new StylesTable(model);
@@ -440,20 +432,12 @@ public class MapPaintDialog extends ToggleDialog {
         public void actionPerformed(ActionEvent e) {
             final int[] rows = tblStyles.getSelectedRows();
             MapPaintStyles.reloadStyles(rows);
-            Main.worker.submit(new Runnable() {
-                @Override
-                public void run() {
-                    SwingUtilities.invokeLater(new Runnable() {
-                        @Override
-                        public void run() {
-                            selectionModel.clearSelection();
-                            for (int r: rows) {
-                                selectionModel.addSelectionInterval(r, r);
-                            }
-                        }
-                    });
+            Main.worker.submit(() -> SwingUtilities.invokeLater(() -> {
+                selectionModel.clearSelection();
+                for (int r: rows) {
+                    selectionModel.addSelectionInterval(r, r);
                 }
-            });
+            }));
         }
     }
 
@@ -530,16 +514,13 @@ public class MapPaintDialog extends ToggleDialog {
 
             @Override
             protected void finish() {
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (!error && !canceled) {
-                            SourceEntry se = new SourceEntry(s);
-                            se.url = file.getPath();
-                            MapPaintStyles.addStyle(se);
-                            tblStyles.getSelectionModel().setSelectionInterval(model.getRowCount() - 1, model.getRowCount() - 1);
-                            model.ensureSelectedIsVisible();
-                        }
+                SwingUtilities.invokeLater(() -> {
+                    if (!error && !canceled) {
+                        SourceEntry se = new SourceEntry(s);
+                        se.url = file.getPath();
+                        MapPaintStyles.addStyle(se);
+                        tblStyles.getSelectionModel().setSelectionInterval(model.getRowCount() - 1, model.getRowCount() - 1);
+                        model.ensureSelectedIsVisible();
                     }
                 });
             }
@@ -593,21 +574,18 @@ public class MapPaintDialog extends ToggleDialog {
             lblSource.setFont(lblSource.getFont().deriveFont(Font.PLAIN));
             tabs.setTabComponentAt(3, lblSource);
 
-            tabs.getModel().addChangeListener(new ChangeListener() {
-                @Override
-                public void stateChanged(ChangeEvent e) {
-                    if (!errorsTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 1) {
-                        errorsTabLoaded = true;
-                        buildErrorsOrWarningPanel(s.getErrors(), pErrors);
-                    }
-                    if (!warningsTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 2) {
-                        warningsTabLoaded = true;
-                        buildErrorsOrWarningPanel(s.getWarnings(), pWarnings);
-                    }
-                    if (!sourceTabLoaded && ((SingleSelectionModel) e.getSource()).getSelectedIndex() == 3) {
-                        sourceTabLoaded = true;
-                        buildSourcePanel(s, pSource);
-                    }
+            tabs.getModel().addChangeListener(e1 -> {
+                if (!errorsTabLoaded && ((SingleSelectionModel) e1.getSource()).getSelectedIndex() == 1) {
+                    errorsTabLoaded = true;
+                    buildErrorsOrWarningPanel(s.getErrors(), pErrors);
+                }
+                if (!warningsTabLoaded && ((SingleSelectionModel) e1.getSource()).getSelectedIndex() == 2) {
+                    warningsTabLoaded = true;
+                    buildErrorsOrWarningPanel(s.getWarnings(), pWarnings);
+                }
+                if (!sourceTabLoaded && ((SingleSelectionModel) e1.getSource()).getSelectedIndex() == 3) {
+                    sourceTabLoaded = true;
+                    buildSourcePanel(s, pSource);
                 }
             });
             info.setContent(tabs, false);
@@ -677,8 +655,10 @@ public class MapPaintDialog extends ToggleDialog {
                     s.closeSourceInputStream(is);
                 }
             } catch (IOException ex) {
+                Main.error(ex);
                 txtSource.append("<ERROR: failed to read file!>");
             }
+            txtSource.setCaretPosition(0);
         }
 
         private <T> void buildErrorsOrWarningPanel(Collection<T> items, JPanel p) {
@@ -689,6 +669,7 @@ public class MapPaintDialog extends ToggleDialog {
             for (T t : items) {
                 txtErrors.append(t.toString() + '\n');
             }
+            txtErrors.setCaretPosition(0);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
index 594fd21..bae3404 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MenuItemSearchDialog.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 
 import javax.swing.DefaultListCellRenderer;
@@ -30,12 +29,7 @@ public final class MenuItemSearchDialog extends ExtendedDialog {
     private MenuItemSearchDialog(MainMenu menu) {
         super(Main.parent, tr("Search menu items"), new String[]{tr("Select"), tr("Cancel")});
         this.selector = new Selector(menu);
-        this.selector.setDblClickListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                buttonAction(0, null);
-            }
-        });
+        this.selector.setDblClickListener(e -> buttonAction(0, null));
         setContent(selector, false);
         setPreferredSize(new Dimension(600, 300));
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java b/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
index d6dbd1c..f0c7dd5 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/MinimapDialog.java
@@ -11,7 +11,6 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
-import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.bbox.BBoxChooser;
 import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
 
@@ -20,21 +19,29 @@ import org.openstreetmap.josm.gui.bbox.SlippyMapBBoxChooser;
  */
 public class MinimapDialog extends ToggleDialog implements NavigatableComponent.ZoomChangeListener, PropertyChangeListener {
 
-    protected final SlippyMapBBoxChooser slippyMap = new SlippyMapBBoxChooser();
-    protected boolean skipEvents;
+    private SlippyMapBBoxChooser slippyMap;
+    private boolean skipEvents;
 
     /**
      * Constructs a new {@code MinimapDialog}.
      */
     public MinimapDialog() {
         super(tr("Mini map"), "minimap", tr("Displays a small map of the current edit location"), null, 150);
-        createLayout(slippyMap, false, Collections.<SideButton>emptyList());
+    }
+
+    private synchronized void initialize() {
+        if (slippyMap != null) {
+            return;
+        }
+        slippyMap = new SlippyMapBBoxChooser();
+        createLayout(slippyMap, false, Collections.emptyList());
         slippyMap.setSizeButtonVisible(false);
         slippyMap.addPropertyChangeListener(BBoxChooser.BBOX_PROP, this);
     }
 
     @Override
     public void showDialog() {
+        initialize();
         NavigatableComponent.addZoomChangeListener(this);
         super.showDialog();
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
index c543630..aa1a53e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/NotesDialog.java
@@ -26,8 +26,6 @@ import javax.swing.JScrollPane;
 import javax.swing.ListCellRenderer;
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingUtilities;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.DownloadNotesInViewAction;
@@ -86,14 +84,11 @@ public class NotesDialog extends ToggleDialog implements LayerChangeListener {
         displayList = new JList<>(model);
         displayList.setCellRenderer(new NoteRenderer());
         displayList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        displayList.addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                if (noteData != null) { //happens when layer is deleted while note selected
-                    noteData.setSelectedNote(displayList.getSelectedValue());
-                }
-                updateButtonStates();
+        displayList.addListSelectionListener(e -> {
+            if (noteData != null) { //happens when layer is deleted while note selected
+                noteData.setSelectedNote(displayList.getSelectedValue());
             }
+            updateButtonStates();
         });
         displayList.addMouseListener(new MouseAdapter() {
             //center view on selected note on double click
diff --git a/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java b/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
index ea87e40..8c1ceba 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java
@@ -6,18 +6,16 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.BorderFactory;
 import javax.swing.GroupLayout;
@@ -33,6 +31,7 @@ import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
@@ -52,7 +51,7 @@ public class OsmIdSelectionDialog extends ExtendedDialog implements WindowListen
     protected final HistoryComboBox cbId = new HistoryComboBox();
     protected final transient GroupLayout layout = new GroupLayout(panel);
 
-    public OsmIdSelectionDialog(Component parent, String title, String[] buttonTexts) {
+    public OsmIdSelectionDialog(Component parent, String title, String ... buttonTexts) {
         super(parent, title, buttonTexts);
     }
 
@@ -103,12 +102,9 @@ public class OsmIdSelectionDialog extends ExtendedDialog implements WindowListen
         HtmlPanel help = new HtmlPanel(help1 + "<br/>" + help2 + "<br/><br/>" + help3);
         help.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
 
-        cbType.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                tfId.setType(cbType.getType());
-                tfId.performValidation();
-            }
+        cbType.addItemListener(e -> {
+            tfId.setType(cbType.getType());
+            tfId.performValidation();
         });
 
         final GroupLayout.SequentialGroup sequentialGroup = layout.createSequentialGroup()
@@ -201,24 +197,15 @@ public class OsmIdSelectionDialog extends ExtendedDialog implements WindowListen
     }
 
     protected void tryToPasteFromClipboard(OsmIdTextField tfId, OsmPrimitiveTypesComboBox cbType) {
-        String buf = Utils.getClipboardContent();
+        String buf = ClipboardUtils.getClipboardStringContent();
         if (buf == null || buf.isEmpty()) return;
         if (buf.length() > Main.pref.getInteger("downloadprimitive.max-autopaste-length", 2000)) return;
         final List<SimplePrimitiveId> ids = SimplePrimitiveId.fuzzyParse(buf);
         if (!ids.isEmpty()) {
-            final String parsedText = Utils.join(", ", Utils.transform(ids, new Utils.Function<SimplePrimitiveId, String>() {
-                @Override
-                public String apply(SimplePrimitiveId x) {
-                    return x.getType().getAPIName().charAt(0) + String.valueOf(x.getUniqueId());
-                }
-            }));
+            final String parsedText = ids.stream().map(x -> x.getType().getAPIName().charAt(0) + String.valueOf(x.getUniqueId()))
+                    .collect(Collectors.joining(", "));
             tfId.tryToPasteFrom(parsedText);
-            final Set<OsmPrimitiveType> types = EnumSet.copyOf(Utils.transform(ids, new Utils.Function<SimplePrimitiveId, OsmPrimitiveType>() {
-                @Override
-                public OsmPrimitiveType apply(SimplePrimitiveId x) {
-                    return x.getType();
-                }
-            }));
+            final Set<OsmPrimitiveType> types = ids.stream().map(SimplePrimitiveId::getType).collect(Collectors.toSet());
             if (types.size() == 1) {
                 // select corresponding type
                 cbType.setSelectedItem(types.iterator().next());
diff --git a/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
index 1d21f39..a1c433d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
@@ -8,8 +8,6 @@ import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,8 +28,6 @@ import javax.swing.JPopupMenu;
 import javax.swing.JScrollPane;
 import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
@@ -82,9 +78,8 @@ import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * A dialog showing all known relations, with buttons to add, edit, and delete them.
@@ -161,12 +156,7 @@ public class RelationListDialog extends ToggleDialog
 
         filter = setupFilter();
 
-        displaylist.addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                updateActionsRelationLists();
-            }
-        });
+        displaylist.addListSelectionListener(e -> updateActionsRelationLists());
 
         // Setup popup menu handler
         setupPopupMenuHandler();
@@ -308,12 +298,7 @@ public class RelationListDialog extends ToggleDialog
         final JosmTextField f = new DisableShortcutsOnFocusGainedTextField();
         f.setToolTipText(tr("Relation list filter"));
         final CompileSearchTextDecorator decorator = CompileSearchTextDecorator.decorate(f);
-        f.addPropertyChangeListener("filter", new PropertyChangeListener() {
-            @Override
-            public void propertyChange(PropertyChangeEvent evt) {
-                model.setFilter(decorator.getMatch());
-            }
-        });
+        f.addPropertyChangeListener("filter", evt -> model.setFilter(decorator.getMatch()));
         return f;
     }
 
@@ -409,10 +394,7 @@ public class RelationListDialog extends ToggleDialog
         }
 
         public void sort() {
-            Collections.sort(
-                    relations,
-                    DefaultNameFormatter.getInstance().getRelationComparator()
-                    );
+            relations.sort(DefaultNameFormatter.getInstance().getRelationComparator());
         }
 
         private boolean isValid(Relation r) {
@@ -505,12 +487,7 @@ public class RelationListDialog extends ToggleDialog
 
         private void updateFilteredRelations() {
             if (filter != null) {
-                filteredRelations = new ArrayList<>(Utils.filter(relations, new Predicate<Relation>() {
-                    @Override
-                    public boolean evaluate(Relation r) {
-                        return filter.match(r);
-                    }
-                }));
+                filteredRelations = new ArrayList<>(SubclassFilteredCollection.filter(relations, filter::match));
             } else if (filteredRelations != null) {
                 filteredRelations = null;
             }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
index 3f56870..436b3ab 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
@@ -69,6 +69,7 @@ import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 import org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
@@ -123,21 +124,11 @@ public class SelectionListDialog extends ToggleDialog {
 
         // the select action
         final SideButton selectButton = new SideButton(actSelect);
-        selectButton.createArrow(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                SelectionHistoryPopup.launch(selectButton, model.getSelectionHistory());
-            }
-        });
+        selectButton.createArrow(e -> SelectionHistoryPopup.launch(selectButton, model.getSelectionHistory()));
 
         // the search button
         final SideButton searchButton = new SideButton(actSearch);
-        searchButton.createArrow(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                SearchPopupMenu.launch(searchButton);
-            }
-        });
+        searchButton.createArrow(e -> SearchPopupMenu.launch(searchButton));
 
         createLayout(lstPrimitives, true, Arrays.asList(new SideButton[] {
             selectButton, searchButton, new SideButton(actShowHistory)
@@ -162,12 +153,9 @@ public class SelectionListDialog extends ToggleDialog {
         popupMenu = new ListPopupMenu(lstPrimitives);
         popupMenuHandler = setupPopupMenuHandler();
 
-        lstPrimitives.addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                actZoomToListSelection.valueChanged(e);
-                popupMenuHandler.setPrimitives(model.getSelected());
-            }
+        lstPrimitives.addListSelectionListener(e -> {
+            actZoomToListSelection.valueChanged(e);
+            popupMenuHandler.setPrimitives(model.getSelected());
         });
 
         lstPrimitives.addMouseListener(new MouseEventHandler());
@@ -639,7 +627,7 @@ public class SelectionListDialog extends ToggleDialog {
                             }
                         }
                         Main.map.statusLine.setDist(
-                                new SubclassFilteredCollection<OsmPrimitive, Way>(selection, OsmPrimitive.wayPredicate));
+                                new SubclassFilteredCollection<OsmPrimitive, Way>(selection, Way.class::isInstance));
                     }
                 }
             });
@@ -668,9 +656,9 @@ public class SelectionListDialog extends ToggleDialog {
          * Sorts the current elements in the selection
          */
         public synchronized void sort() {
-            if (this.selection.size() <= Main.pref.getInteger("selection.no_sort_above", 100000)) {
-                boolean quick = this.selection.size() > Main.pref.getInteger("selection.fast_sort_above", 10000);
-                Collections.sort(this.selection, new OsmPrimitiveComparator(quick, false));
+            if (selection.size() <= Main.pref.getInteger("selection.no_sort_above", 100000)) {
+                boolean quick = selection.size() > Main.pref.getInteger("selection.fast_sort_above", 10000);
+                selection.sort(new OsmPrimitiveComparator(quick, false));
             }
         }
 
@@ -880,7 +868,7 @@ public class SelectionListDialog extends ToggleDialog {
 
         @Override
         protected Transferable createTransferable(JComponent c) {
-            return new PrimitiveTransferable(getSelectedPrimitives());
+            return new PrimitiveTransferable(PrimitiveTransferData.getData(getSelectedPrimitives()));
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
index 18f3f09..0631c68 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
@@ -17,7 +17,6 @@ import java.awt.Rectangle;
 import java.awt.Toolkit;
 import java.awt.event.AWTEventListener;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
 import java.awt.event.MouseEvent;
@@ -110,6 +109,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
                 return super.parse(s);
             } catch (IllegalArgumentException e) {
                 // Legacy settings
+                Main.trace(e);
                 return Boolean.parseBoolean(s) ? ButtonHidingType.DYNAMIC : ButtonHidingType.ALWAYS_SHOWN;
             }
         }
@@ -512,6 +512,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
         /** the contextual menu **/
         private DialogPopupMenu popupMenu;
 
+        @SuppressWarnings("unchecked")
         public TitleBar(String toggleDialogName, String iconName) {
             setLayout(new GridBagLayout());
 
@@ -543,16 +544,11 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
                 ? /* ICON(misc/)*/ "buttonhide" :  /* ICON(misc/)*/ "buttonshow"));
             buttonsHide.setToolTipText(tr("Toggle dynamic buttons"));
             buttonsHide.setBorder(BorderFactory.createEmptyBorder());
-            buttonsHide.addActionListener(
-                    new ActionListener() {
-                        @Override
-                        public void actionPerformed(ActionEvent e) {
-                            JRadioButtonMenuItem item = (buttonHiding == ButtonHidingType.DYNAMIC) ? alwaysShown : dynamic;
-                            item.setSelected(true);
-                            item.getAction().actionPerformed(null);
-                        }
-                    }
-                    );
+            buttonsHide.addActionListener(e -> {
+                JRadioButtonMenuItem item = (buttonHiding == ButtonHidingType.DYNAMIC) ? alwaysShown : dynamic;
+                item.setSelected(true);
+                item.getAction().actionPerformed(null);
+            });
             add(buttonsHide);
 
             // show the pref button if applicable
@@ -560,21 +556,15 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
                 JButton pref = new JButton(ImageProvider.get("preference", ImageProvider.ImageSizes.SMALLICON));
                 pref.setToolTipText(tr("Open preferences for this panel"));
                 pref.setBorder(BorderFactory.createEmptyBorder());
-                pref.addActionListener(
-                        new ActionListener() {
-                            @Override
-                            @SuppressWarnings("unchecked")
-                            public void actionPerformed(ActionEvent e) {
-                                final PreferenceDialog p = new PreferenceDialog(Main.parent);
-                                if (TabPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
-                                    p.selectPreferencesTabByClass((Class<? extends TabPreferenceSetting>) preferenceClass);
-                                } else if (SubPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
-                                    p.selectSubPreferencesTabByClass((Class<? extends SubPreferenceSetting>) preferenceClass);
-                                }
-                                p.setVisible(true);
-                            }
-                        }
-                        );
+                pref.addActionListener(e -> {
+                    final PreferenceDialog p = new PreferenceDialog(Main.parent);
+                    if (TabPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
+                        p.selectPreferencesTabByClass((Class<? extends TabPreferenceSetting>) preferenceClass);
+                    } else if (SubPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
+                        p.selectSubPreferencesTabByClass((Class<? extends SubPreferenceSetting>) preferenceClass);
+                    }
+                    p.setVisible(true);
+                });
                 add(pref);
             }
 
@@ -582,31 +572,21 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
             JButton sticky = new JButton(ImageProvider.get("misc", "sticky"));
             sticky.setToolTipText(tr("Undock the panel"));
             sticky.setBorder(BorderFactory.createEmptyBorder());
-            sticky.addActionListener(
-                    new ActionListener() {
-                        @Override
-                        public void actionPerformed(ActionEvent e) {
-                            detach();
-                            dialogsPanel.reconstruct(Action.ELEMENT_SHRINKS, null);
-                        }
-                    }
-                    );
+            sticky.addActionListener(e -> {
+                detach();
+                dialogsPanel.reconstruct(Action.ELEMENT_SHRINKS, null);
+            });
             add(sticky);
 
             // show the close button
             JButton close = new JButton(ImageProvider.get("misc", "close"));
             close.setToolTipText(tr("Close this panel. You can reopen it with the buttons in the left toolbar."));
             close.setBorder(BorderFactory.createEmptyBorder());
-            close.addActionListener(
-                    new ActionListener() {
-                        @Override
-                        public void actionPerformed(ActionEvent e) {
-                            hideDialog();
-                            dialogsPanel.reconstruct(Action.ELEMENT_SHRINKS, null);
-                            hideNotify();
-                        }
-                    }
-                    );
+            close.addActionListener(e -> {
+                hideDialog();
+                dialogsPanel.reconstruct(Action.ELEMENT_SHRINKS, null);
+                hideNotify();
+            });
             add(close);
             setToolTipText(tr("Click to minimize/maximize the panel content"));
             setTitle(toggleDialogName);
@@ -719,6 +699,7 @@ public class ToggleDialog extends JPanel implements ShowHideButtonListener, Help
             try {
                 new WindowGeometry(preferencePrefix+".geometry").applySafe(this);
             } catch (WindowGeometryException e) {
+                Main.debug(e);
                 ToggleDialog.this.setPreferredSize(ToggleDialog.this.getDefaultDetachedSize());
                 pack();
                 setLocationRelativeTo(Main.parent);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
index 8d0d0af..de4c0e4 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
@@ -128,14 +128,11 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
      */
     public void refresh(Collection<? extends OsmPrimitive> fromPrimitives) {
         model.populate(fromPrimitives);
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (model.getRowCount() != 0) {
-                    setTitle(trn("{0} Author", "{0} Authors", model.getRowCount(), model.getRowCount()));
-                } else {
-                    setTitle(tr("Authors"));
-                }
+        GuiHelper.runInEDT(() -> {
+            if (model.getRowCount() != 0) {
+                setTitle(trn("{0} Author", "{0} Authors", model.getRowCount(), model.getRowCount()));
+            } else {
+                setTitle(tr("Authors"));
             }
         });
     }
@@ -319,12 +316,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
                 }
             }
             Collections.sort(data);
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    fireTableDataChanged();
-                }
-            });
+            GuiHelper.runInEDTAndWait(this::fireTableDataChanged);
         }
 
         @Override
@@ -350,7 +342,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
             return false;
         }
 
-        public void selectPrimitivesOwnedBy(int[] rows) {
+        public void selectPrimitivesOwnedBy(int ... rows) {
             Set<User> users = new HashSet<>();
             for (int index: rows) {
                 users.add(data.get(index).user);
@@ -365,7 +357,7 @@ public class UserListDialog extends ToggleDialog implements SelectionChangedList
             Main.getLayerManager().getEditDataSet().setSelected(byUser);
         }
 
-        public List<User> getSelectedUsers(int[] rows) {
+        public List<User> getSelectedUsers(int ... rows) {
             List<User> ret = new LinkedList<>();
             if (rows == null || rows.length == 0)
                 return ret;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
index 28febcc..a3e121a 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
@@ -134,7 +134,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
 
         buttons.add(lookupButton);
 
-        buttons.add(new SideButton(Main.main.validator.validateAction));
+        buttons.add(new SideButton(OsmValidator.validateAction));
 
         fixButton = new SideButton(new AbstractAction() {
             {
@@ -472,7 +472,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
 
             boolean isDblClick = isDoubleClick(e);
 
-            Collection<OsmPrimitive> sel = isDblClick ? new HashSet<OsmPrimitive>(40) : null;
+            Collection<OsmPrimitive> sel = isDblClick ? new HashSet<>(40) : null;
 
             boolean hasFixes = setSelection(sel, isDblClick);
             fixButton.setEnabled(hasFixes);
@@ -575,7 +575,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
 
         FixTask(Collection<TestError> testErrors) {
             super(tr("Fixing errors ..."), false /* don't ignore exceptions */);
-            this.testErrors = testErrors == null ? new ArrayList<TestError>() : testErrors;
+            this.testErrors = testErrors == null ? new ArrayList<>() : testErrors;
         }
 
         @Override
@@ -592,12 +592,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
             if (error.isFixable()) {
                 final Command fixCommand = error.getFix();
                 if (fixCommand != null) {
-                    SwingUtilities.invokeAndWait(new Runnable() {
-                        @Override
-                        public void run() {
-                            Main.main.undoRedo.addNoRedraw(fixCommand);
-                        }
-                    });
+                    SwingUtilities.invokeAndWait(() -> Main.main.undoRedo.addNoRedraw(fixCommand));
                 }
                 // It is wanted to ignore an error if it said fixable, even if fixCommand was null
                 // This is to fix #5764 and #5773:
@@ -613,12 +608,7 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
                 monitor.setTicksCount(testErrors.size());
                 final DataSet ds = Main.getLayerManager().getEditDataSet();
                 int i = 0;
-                SwingUtilities.invokeAndWait(new Runnable() {
-                    @Override
-                    public void run() {
-                        ds.beginUpdate();
-                    }
-                });
+                SwingUtilities.invokeAndWait(ds::beginUpdate);
                 try {
                     for (TestError error: testErrors) {
                         i++;
@@ -629,26 +619,17 @@ public class ValidatorDialog extends ToggleDialog implements SelectionChangedLis
                         monitor.worked(1);
                     }
                 } finally {
-                    SwingUtilities.invokeAndWait(new Runnable() {
-                        @Override
-                        public void run() {
-                            ds.endUpdate();
-                        }
-                    });
+                    SwingUtilities.invokeAndWait(ds::endUpdate);
                 }
                 monitor.subTask(tr("Updating map ..."));
-                SwingUtilities.invokeAndWait(new Runnable() {
-                    @Override
-                    public void run() {
-                        Main.main.undoRedo.afterAdd();
-                        Main.map.repaint();
-                        tree.resetErrors();
-                        ds.fireSelectionChanged();
-                    }
+                SwingUtilities.invokeAndWait(() -> {
+                    Main.main.undoRedo.afterAdd();
+                    Main.map.repaint();
+                    tree.resetErrors();
+                    ds.fireSelectionChanged();
                 });
             } catch (InterruptedException | InvocationTargetException e) {
-                // FIXME: signature of realRun should have a generic checked exception we
-                // could throw here
+                // FIXME: signature of realRun should have a generic checked exception we could throw here
                 throw new RuntimeException(e);
             } finally {
                 monitor.finishTask();
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java
index b2f6f5f..21623ea 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetAware.java
@@ -6,7 +6,9 @@ import org.openstreetmap.josm.data.osm.Changeset;
 /**
  * Super interface of changeset-aware components.
  * @since 9493
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ChangesetAware {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
index b4ccde9..63e4880 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
@@ -392,6 +392,7 @@ public class ChangesetCacheManager extends JFrame {
                         ChangesetCacheManager.getInstance().runDownloadTask(new ChangesetQueryTask(parent, query));
                     }
                 } catch (IllegalStateException e) {
+                    Main.error(e);
                     JOptionPane.showMessageDialog(parent, e.getMessage(), tr("Error"), JOptionPane.ERROR_MESSAGE);
                 }
             }
@@ -652,12 +653,7 @@ public class ChangesetCacheManager extends JFrame {
         final int idx = model.getSelectionModel().getMinSelectionIndex();
         if (idx < 0)
             return;
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                tblChangesets.scrollRectToVisible(tblChangesets.getCellRect(idx, 0, true));
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> tblChangesets.scrollRectToVisible(tblChangesets.getCellRect(idx, 0, true)));
         repaint();
     }
 
@@ -701,13 +697,10 @@ public class ChangesetCacheManager extends JFrame {
      */
     public void runDownloadTask(final AbstractChangesetDownloadTask task) {
         Main.worker.submit(new PostDownloadHandler(task, task.download()));
-        Main.worker.submit(new Runnable() {
-            @Override
-            public void run() {
-                if (task.isCanceled() || task.isFailed())
-                    return;
-                setSelectedChangesets(task.getDownloadedData());
-            }
+        Main.worker.submit(() -> {
+            if (task.isCanceled() || task.isFailed())
+                return;
+            setSelectedChangesets(task.getDownloadedData());
         });
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
index 7dbb8c7..2cde882 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
@@ -5,7 +5,6 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
@@ -104,21 +103,13 @@ public class ChangesetCacheManagerModel extends AbstractTableModel implements Ch
      * @param selected the collection of changesets to select. Ignored if empty.
      */
     public void setSelectedChangesets(Collection<Changeset> selected) {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                selectionModel.clearSelection();
-            }
-        });
+        GuiHelper.runInEDTAndWait(selectionModel::clearSelection);
         if (selected == null || selected.isEmpty())
             return;
         for (Changeset cs: selected) {
             final int idx = data.indexOf(cs);
             if (idx >= 0) {
-                GuiHelper.runInEDTAndWait(new Runnable() {
-                    @Override public void run() {
-                        selectionModel.addSelectionInterval(idx, idx);
-                    }
-                });
+                GuiHelper.runInEDTAndWait(() -> selectionModel.addSelectionInterval(idx, idx));
             }
         }
     }
@@ -159,16 +150,7 @@ public class ChangesetCacheManagerModel extends AbstractTableModel implements Ch
     }
 
     protected void sort() {
-        Collections.sort(
-                this.data,
-                new Comparator<Changeset>() {
-                    @Override public int compare(Changeset o1, Changeset o2) {
-                        if (o1.getId() < o2.getId()) return 1;
-                        if (o1.getId() == o2.getId()) return 0;
-                        return -1;
-                    }
-                }
-        );
+        data.sort(Comparator.comparingInt(Changeset::getId).reversed());
     }
 
     /* ------------------------------------------------------------------------------ */
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
index b60bfe7..ce84b1d 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
@@ -16,6 +16,7 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
@@ -52,7 +53,6 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
 /**
@@ -232,20 +232,10 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
                         if (h == null) {
                             continue;
                         }
-                        GuiHelper.runInEDT(new Runnable() {
-                            @Override
-                            public void run() {
-                                HistoryBrowserDialogManager.getInstance().show(h);
-                            }
-                        });
+                        GuiHelper.runInEDT(() -> HistoryBrowserDialogManager.getInstance().show(h));
                     }
                 } catch (final RuntimeException e) {
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            BugReportExceptionHandler.handleException(e);
-                        }
-                    });
+                    GuiHelper.runInEDT(() -> BugReportExceptionHandler.handleException(e));
                 }
             }
         }
@@ -309,13 +299,8 @@ public class ChangesetContentPanel extends JPanel implements PropertyChangeListe
 
         @Override
         public void actionPerformed(ActionEvent arg0) {
-            final List<PrimitiveId> primitiveIds = new ArrayList<>(Utils.transform(
-                    model.getSelectedPrimitives(), new Utils.Function<HistoryOsmPrimitive, PrimitiveId>() {
-                        @Override
-                        public PrimitiveId apply(HistoryOsmPrimitive x) {
-                            return x.getPrimitiveId();
-                        }
-                    }));
+            final List<PrimitiveId> primitiveIds = model.getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
+                    .collect(Collectors.toList());
             Main.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
index 8b3f29c..a846162 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
@@ -2,8 +2,6 @@
 package org.openstreetmap.josm.gui.dialogs.changeset;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -80,35 +78,30 @@ public class ChangesetContentTableModel extends AbstractTableModel {
     }
 
     protected void sort() {
-        Collections.sort(
-                data,
-                new Comparator<ChangesetDataSetEntry>() {
-                    @Override
-                    public int compare(ChangesetDataSetEntry c1, ChangesetDataSetEntry c2) {
-                        if (c1.getModificationType().equals(c2.getModificationType())) {
-                            long id1 = c1.getPrimitive().getId();
-                            long id2 = c2.getPrimitive().getId();
-
-                            if (id1 == id2)
-                                return 0;
-                            else if (id1 < id2)
-                                return -1;
-                            return 1;
-                        }
-                        switch(c1.getModificationType()) {
-                        case CREATED: return -1;
-                        case UPDATED:
-                            switch(c2.getModificationType()) {
-                            case CREATED: return 1;
-                            default: return -1;
-                            }
-                        case DELETED:
-                            return 1;
-                        }
-                        // should not happen
+        data.sort((c1, c2) -> {
+                if (c1.getModificationType().equals(c2.getModificationType())) {
+                    long id1 = c1.getPrimitive().getId();
+                    long id2 = c2.getPrimitive().getId();
+
+                    if (id1 == id2)
                         return 0;
+                    else if (id1 < id2)
+                        return -1;
+                    return 1;
+                }
+                switch(c1.getModificationType()) {
+                case CREATED: return -1;
+                case UPDATED:
+                    switch(c2.getModificationType()) {
+                    case CREATED: return 1;
+                    default: return -1;
                     }
+                case DELETED:
+                    return 1;
                 }
+                // should not happen
+                return 0;
+            }
         );
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
index 13f4e03..6a24509 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java
@@ -115,12 +115,9 @@ public class ChangesetDiscussionPanel extends JPanel implements PropertyChangeLi
     private Component buildDiscussionPanel() {
         JPanel pnl = new JPanel(new BorderLayout());
         table = new JTable(model, new ChangesetDiscussionTableColumnModel());
-        table.getColumnModel().getColumn(2).addPropertyChangeListener(new PropertyChangeListener() {
-            @Override
-            public void propertyChange(PropertyChangeEvent evt) {
-                if ("width".equals(evt.getPropertyName())) {
-                    updateRowHeights();
-                }
+        table.getColumnModel().getColumn(2).addPropertyChangeListener(evt -> {
+            if ("width".equals(evt.getPropertyName())) {
+                updateRowHeights();
             }
         });
         pnl.add(new JScrollPane(table), BorderLayout.CENTER);
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
index 6422385..6f89f5c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.gui.dialogs.changeset;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
@@ -140,17 +139,7 @@ public class ChangesetListModel extends DefaultListModel<Changeset> implements C
     }
 
     protected void sort() {
-        Collections.sort(
-                data,
-                new Comparator<Changeset>() {
-                    @Override
-                    public int compare(Changeset cs1, Changeset cs2) {
-                        if (cs1.getId() > cs2.getId()) return -1;
-                        if (cs1.getId() == cs2.getId()) return 0;
-                        return 1;
-                    }
-                }
-        );
+        data.sort(Comparator.comparingInt(Changeset::getId).reversed());
     }
 
     /**
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 bda2dd4..3496a83 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/AdvancedChangesetQueryPanel.java
@@ -1074,9 +1074,7 @@ public class AdvancedChangesetQueryPanel extends JPanel {
                     return df.parse(getComponent().getText());
                 } catch (ParseException e) {
                     // Try next format
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                 }
             }
             return null;
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 104ddca..9a276f4 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/BasicChangesetQueryPanel.java
@@ -194,7 +194,7 @@ public class BasicChangesetQueryPanel extends JPanel {
             try {
                 q = BasicQuery.valueOf(BasicQuery.class, value);
             } catch (IllegalArgumentException e) {
-                Main.warn(tr("Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default query.",
+                Main.warn(e, tr("Unexpected value for preference ''{0}'', got ''{1}''. Resetting to default query.",
                         "changeset-query.basic.query", value));
                 q = BasicQuery.MOST_RECENT_CHANGESETS;
             }
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 bf9bf00..d76c9ea 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/ChangesetQueryDialog.java
@@ -22,6 +22,7 @@ import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 import javax.swing.KeyStroke;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -191,6 +192,7 @@ public class ChangesetQueryDialog extends JDialog {
                 setCanceled(false);
                 setVisible(false);
             } catch (IllegalStateException e) {
+                Main.error(e);
                 JOptionPane.showMessageDialog(ChangesetQueryDialog.this, e.getMessage(), tr("Error"), JOptionPane.ERROR_MESSAGE);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
index 2b8316b..0fbc5c8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/changeset/query/UrlBasedQueryPanel.java
@@ -18,7 +18,6 @@ import javax.swing.JPanel;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.event.HyperlinkEvent;
-import javax.swing.event.HyperlinkListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
@@ -85,17 +84,12 @@ public class UrlBasedQueryPanel extends JPanel {
                         + "host, port and path of the URL entered below.", apiUrl)
                         + "</body></html>"
         );
-        pnl.getEditorPane().addHyperlinkListener(
-                new HyperlinkListener() {
-                    @Override
-                    public void hyperlinkUpdate(HyperlinkEvent e) {
-                        if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
-                            tfUrl.setText(e.getDescription());
-                            tfUrl.requestFocusInWindow();
-                        }
-                    }
+        pnl.getEditorPane().addHyperlinkListener(e -> {
+                if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
+                    tfUrl.setText(e.getDescription());
+                    tfUrl.requestFocusInWindow();
                 }
-        );
+            });
         return pnl;
     }
 
@@ -139,7 +133,7 @@ public class UrlBasedQueryPanel extends JPanel {
         try {
             return ChangesetQuery.buildFromUrlQuery(url.getQuery());
         } catch (ChangesetQueryUrlException e) {
-            Main.warn(e.getMessage());
+            Main.warn(e);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java
index 0698a22..eba51fc 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/ActivateLayerAction.java
@@ -9,6 +9,7 @@ import java.util.List;
 
 import javax.swing.AbstractAction;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -86,18 +87,15 @@ implements IEnabledStateUpdating, ActiveLayerChangeListener, MultikeyShortcutAct
 
     @Override
     public void updateEnabledState() {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                if (layer == null) {
-                    if (model.getSelectedLayers().size() != 1) {
-                        setEnabled(false);
-                        return;
-                    }
-                    setEnabled(!isActiveLayer(model.getSelectedLayers().get(0)));
-                } else {
-                    setEnabled(!isActiveLayer(layer));
+        GuiHelper.runInEDTAndWait(() -> {
+            if (layer == null) {
+                if (model.getSelectedLayers().size() != 1) {
+                    setEnabled(false);
+                    return;
                 }
+                setEnabled(!isActiveLayer(model.getSelectedLayers().get(0)));
+            } else {
+                setEnabled(!isActiveLayer(layer));
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java
index a809e2e..d3849f3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java
@@ -11,6 +11,7 @@ import javax.swing.AbstractAction;
 import javax.swing.JMenuItem;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.Layer;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
index 4adbefe..83a8ab7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
@@ -4,13 +4,12 @@ package org.openstreetmap.josm.gui.dialogs.layer;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.List;
 
 import javax.swing.AbstractAction;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -19,7 +18,7 @@ import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
- * The action to merge the currently selected layer into another layer.
+ * The action to duplicate the given selected layer into another layer.
  */
 public final class DuplicateAction extends AbstractAction implements IEnabledStateUpdating {
     private transient Layer layer;
@@ -51,24 +50,10 @@ public final class DuplicateAction extends AbstractAction implements IEnabledSta
         updateEnabledState();
     }
 
-    private void duplicate(Layer layer) {
-        if (!Main.isDisplayingMapView())
-            return;
-
-        List<String> layerNames = new ArrayList<>();
-        for (Layer l: Main.getLayerManager().getLayers()) {
-            layerNames.add(l.getName());
-        }
+    private static void duplicate(Layer layer) {
         if (layer instanceof OsmDataLayer) {
+            String newName = LayerListTransferHandler.suggestNewLayerName(layer.getName(), Main.getLayerManager().getLayers());
             OsmDataLayer oldLayer = (OsmDataLayer) layer;
-            // Translators: "Copy of {layer name}"
-            String newName = tr("Copy of {0}", oldLayer.getName());
-            int i = 2;
-            while (layerNames.contains(newName)) {
-                // Translators: "Copy {number} of {layer name}"
-                newName = tr("Copy {1} of {0}", oldLayer.getName(), i);
-                i++;
-            }
             Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(oldLayer.data), newName, null));
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/IEnabledStateUpdating.java b/src/org/openstreetmap/josm/gui/dialogs/layer/IEnabledStateUpdating.java
deleted file mode 100644
index d27b403..0000000
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/IEnabledStateUpdating.java
+++ /dev/null
@@ -1,13 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.gui.dialogs.layer;
-
-/**
- * To be implemented by actions for which their enabled state depends on another model.
- */
-public interface IEnabledStateUpdating {
-
-    /**
-     * Called after the layer model has changed.
-     */
-    void updateEnabledState();
-}
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
new file mode 100644
index 0000000..f363ed4
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerListTransferHandler.java
@@ -0,0 +1,175 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.layer;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.TransferHandler;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.datatransfer.LayerTransferable;
+import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+
+/**
+ * This class allows the user to transfer layers using drag+drop.
+ * <p>
+ * It supports copy (duplication) of layers, simple moves and linking layers to a new layer manager.
+ *
+ * @author Michael Zangl
+ * @since 10605
+ */
+public class LayerListTransferHandler extends TransferHandler {
+    @Override
+    public int getSourceActions(JComponent c) {
+        // we know that the source is a layer list, so don't check c.
+        LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
+        if (tableModel.getSelectedLayers().isEmpty()) {
+            return 0;
+        }
+        int actions = MOVE;
+        if (onlyDataLayersSelected(tableModel)) {
+            actions |= COPY;
+        }
+        return actions /* soon: | LINK*/;
+    }
+
+    private static boolean onlyDataLayersSelected(LayerListModel tableModel) {
+        for (Layer l : tableModel.getSelectedLayers()) {
+            if (!(l instanceof OsmDataLayer)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    @Override
+    protected Transferable createTransferable(JComponent c) {
+        LayerListModel tableModel = (LayerListModel) ((JTable) c).getModel();
+        return new LayerTransferable(tableModel.getLayerManager(), tableModel.getSelectedLayers());
+    }
+
+    @Override
+    public boolean canImport(TransferSupport support) {
+        if (support.isDrop()) {
+            support.setShowDropLocation(true);
+        }
+
+        if (!support.isDataFlavorSupported(LayerTransferable.LAYER_DATA)) {
+            return false;
+        }
+
+        if (support.getDropAction() == LINK) {
+            // cannot link yet.
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public boolean importData(TransferSupport support) {
+        try {
+            LayerListModel tableModel = (LayerListModel) ((JTable) support.getComponent()).getModel();
+
+            LayerTransferable.Data layers = (LayerTransferable.Data) support.getTransferable()
+                    .getTransferData(LayerTransferable.LAYER_DATA);
+
+            int dropLocation;
+            if (support.isDrop()) {
+                JTable.DropLocation dl = (JTable.DropLocation) support.getDropLocation();
+                dropLocation = dl.getRow();
+            } else {
+                dropLocation = layers.getLayers().get(0).getDefaultLayerPosition().getPosition(layers.getManager());
+            }
+
+            boolean isSameLayerManager = tableModel.getLayerManager() == layers.getManager();
+
+            if (support.getDropAction() == MOVE && isSameLayerManager) {
+                for (Layer layer : layers.getLayers()) {
+                    boolean wasBeforeInsert = layers.getManager().getLayers().indexOf(layer) <= dropLocation;
+                    if (wasBeforeInsert) {
+                        // need to move insertion point one down to preserve order
+                        dropLocation--;
+                    }
+                    layers.getManager().moveLayer(layer, dropLocation);
+                    dropLocation++;
+                }
+            } else {
+                List<Layer> layersToUse = layers.getLayers();
+                if (support.getDropAction() == COPY) {
+                    layersToUse = createCopy(layersToUse, layers.getManager().getLayers());
+                }
+                for (Layer layer : layersToUse) {
+                    layers.getManager().addLayer(layer);
+                    layers.getManager().moveLayer(layer, dropLocation);
+                    dropLocation++;
+                }
+            }
+
+            return true;
+        } catch (UnsupportedFlavorException e) {
+            Main.warn("Flavor not supported", e);
+            return false;
+        } catch (IOException e) {
+            Main.warn("Error while pasting layer", e);
+            return false;
+        }
+    }
+
+    private static List<Layer> createCopy(List<Layer> layersToUse, List<Layer> namesToAvoid) {
+        Collection<String> layerNames = getNames(namesToAvoid);
+        ArrayList<Layer> layers = new ArrayList<>();
+        for (Layer layer : layersToUse) {
+            if (layer instanceof OsmDataLayer) {
+                String newName = suggestNewLayerName(layer.getName(), layerNames);
+                OsmDataLayer newLayer = new OsmDataLayer(new DataSet(((OsmDataLayer) layer).data), newName, null);
+                layers.add(newLayer);
+                layerNames.add(newName);
+            }
+        }
+        return layers;
+    }
+
+    /**
+     * Suggests a new name in the form "copy of name"
+     * @param name The base name
+     * @param namesToAvoid The list of layers to use to avoid duplicate names.
+     * @return The new name
+     */
+    public static String suggestNewLayerName(String name, List<Layer> namesToAvoid) {
+        Collection<String> layerNames = getNames(namesToAvoid);
+
+        return suggestNewLayerName(name, layerNames);
+    }
+
+    private static List<String> getNames(List<Layer> namesToAvoid) {
+        List<String> layerNames = new ArrayList<>();
+        for (Layer l: namesToAvoid) {
+            layerNames.add(l.getName());
+        }
+        return layerNames;
+    }
+
+    private static String suggestNewLayerName(String name, Collection<String> layerNames) {
+        // Translators: "Copy of {layer name}"
+        String newName = tr("Copy of {0}", name);
+        int i = 2;
+        while (layerNames.contains(newName)) {
+            // Translators: "Copy {number} of {layer name}"
+            newName = tr("Copy {1} of {0}", name, i);
+            i++;
+        }
+        return newName;
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
index 1c8a58f..664b9a3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
@@ -19,15 +19,15 @@ import javax.swing.JMenuItem;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.JSlider;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.SideButton;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Utils;
@@ -66,12 +66,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
         putValue(SHORT_DESCRIPTION, tr("Change visibility of the selected layer."));
 
         visibilityCheckbox = new JCheckBox(tr("Show layer"));
-        visibilityCheckbox.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                setVisibleFlag(visibilityCheckbox.isSelected());
-            }
-        });
+        visibilityCheckbox.addChangeListener(e -> setVisibleFlag(visibilityCheckbox.isSelected()));
         content.add(visibilityCheckbox, GBC.eop());
 
         addSlider(content, opacitySlider);
@@ -87,7 +82,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
         sliders.add(slider);
     }
 
-    protected void setVisibleFlag(boolean visible) {
+    void setVisibleFlag(boolean visible) {
         for (Layer l : model.getSelectedLayers()) {
             l.setVisible(visible);
         }
@@ -106,7 +101,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
         }
     }
 
-    protected void updateValues() {
+    void updateValues() {
         List<Layer> layers = model.getSelectedLayers();
 
         visibilityCheckbox.setEnabled(!layers.isEmpty());
@@ -175,12 +170,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
             setMajorTickSpacing(tick);
             setPaintTicks(true);
 
-            addChangeListener(new ChangeListener() {
-                @Override
-                public void stateChanged(ChangeEvent e) {
-                    onStateChanged();
-                }
-            });
+            addChangeListener(e -> onStateChanged());
         }
 
         /**
@@ -306,7 +296,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
      * This slider allows you to change the gamma value of a layer.
      *
      * @author Michael Zangl
-     * @see ImageryLayer#setGamma(double)
+     * @see ImageryFilterSettings#setGamma(double)
      */
     private class GammaFilterSlider extends FilterSlider<ImageryLayer> {
 
@@ -320,13 +310,13 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
 
         @Override
         protected void updateSliderWhileEnabled(Collection<? extends Layer> usedLayers, boolean allHidden) {
-            double gamma = ((ImageryLayer) usedLayers.iterator().next()).getGamma();
+            double gamma = ((ImageryLayer) usedLayers.iterator().next()).getFilterSettings().getGamma();
             setRealValue(mapGammaToInterval(gamma));
         }
 
         @Override
         protected void applyValueToLayer(ImageryLayer layer) {
-            layer.setGamma(mapIntervalToGamma(getRealValue()));
+            layer.getFilterSettings().setGamma(mapIntervalToGamma(getRealValue()));
         }
 
         @Override
@@ -365,7 +355,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
      * This slider allows you to change the sharpness of a layer.
      *
      * @author Michael Zangl
-     * @see ImageryLayer#setSharpenLevel(double)
+     * @see ImageryFilterSettings#setSharpenLevel(double)
      */
     private class SharpnessSlider extends FilterSlider<ImageryLayer> {
 
@@ -379,12 +369,12 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
 
         @Override
         protected void updateSliderWhileEnabled(Collection<? extends Layer> usedLayers, boolean allHidden) {
-            setRealValue(((ImageryLayer) usedLayers.iterator().next()).getSharpenLevel());
+            setRealValue(((ImageryLayer) usedLayers.iterator().next()).getFilterSettings().getSharpenLevel());
         }
 
         @Override
         protected void applyValueToLayer(ImageryLayer layer) {
-            layer.setSharpenLevel(getRealValue());
+            layer.getFilterSettings().setSharpenLevel(getRealValue());
         }
 
         @Override
@@ -402,7 +392,7 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
      * This slider allows you to change the colorfulness of a layer.
      *
      * @author Michael Zangl
-     * @see ImageryLayer#setColorfulness(double)
+     * @see ImageryFilterSettings#setColorfulness(double)
      */
     private class ColorfulnessSlider extends FilterSlider<ImageryLayer> {
 
@@ -416,12 +406,12 @@ public final class LayerVisibilityAction extends AbstractAction implements IEnab
 
         @Override
         protected void updateSliderWhileEnabled(Collection<? extends Layer> usedLayers, boolean allHidden) {
-            setRealValue(((ImageryLayer) usedLayers.iterator().next()).getColorfulness());
+            setRealValue(((ImageryLayer) usedLayers.iterator().next()).getFilterSettings().getColorfulness());
         }
 
         @Override
         protected void applyValueToLayer(ImageryLayer layer) {
-            layer.setColorfulness(getRealValue());
+            layer.getFilterSettings().setColorfulness(getRealValue());
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
index e0cf5bd..d6d354e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/MergeAction.java
@@ -11,6 +11,7 @@ import javax.swing.AbstractAction;
 import javax.swing.JMenuItem;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.layer.Layer;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java
index bceaef7..7ddeba7 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/MoveDownAction.java
@@ -7,6 +7,7 @@ import java.awt.event.ActionEvent;
 
 import javax.swing.AbstractAction;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.tools.ImageProvider;
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java
index b89d04b..e148f9b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/MoveUpAction.java
@@ -7,6 +7,7 @@ import java.awt.event.ActionEvent;
 
 import javax.swing.AbstractAction;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.tools.ImageProvider;
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java b/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java
index 2b66cf6..bfcd8ab 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java
@@ -12,6 +12,7 @@ import java.util.List;
 import javax.swing.AbstractAction;
 import javax.swing.JMenuItem;
 
+import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog.LayerListModel;
 import org.openstreetmap.josm.gui.help.HelpUtil;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
index 4b96ea6..70c3a4f 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
@@ -13,8 +13,6 @@ import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -22,7 +20,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -86,6 +83,7 @@ import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
 import org.openstreetmap.josm.gui.SideButton;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.help.HelpUtil;
@@ -106,7 +104,6 @@ import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -317,16 +314,13 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
         tagTable.getSelectionModel().addListSelectionListener(removeHiddenSelection);
         tagRowSorter.addRowSorterListener(removeHiddenSelection);
         tagRowSorter.setComparator(0, AlphanumComparator.getInstance());
-        tagRowSorter.setComparator(1, new Comparator<Object>() {
-            @Override
-            public int compare(Object o1, Object o2) {
-                if (o1 instanceof Map && o2 instanceof Map) {
-                    final String v1 = ((Map) o1).size() == 1 ? (String) ((Map) o1).keySet().iterator().next() : tr("<different>");
-                    final String v2 = ((Map) o2).size() == 1 ? (String) ((Map) o2).keySet().iterator().next() : tr("<different>");
-                    return AlphanumComparator.getInstance().compare(v1, v2);
-                } else {
-                    return AlphanumComparator.getInstance().compare(String.valueOf(o1), String.valueOf(o2));
-                }
+        tagRowSorter.setComparator(1, (o1, o2) -> {
+            if (o1 instanceof Map && o2 instanceof Map) {
+                final String v1 = ((Map) o1).size() == 1 ? (String) ((Map) o1).keySet().iterator().next() : tr("<different>");
+                final String v2 = ((Map) o2).size() == 1 ? (String) ((Map) o2).keySet().iterator().next() : tr("<different>");
+                return AlphanumComparator.getInstance().compare(v1, v2);
+            } else {
+                return AlphanumComparator.getInstance().compare(String.valueOf(o1), String.valueOf(o2));
             }
         });
     }
@@ -543,12 +537,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
         final JosmTextField f = new DisableShortcutsOnFocusGainedTextField();
         f.setToolTipText(tr("Tag filter"));
         final CompileSearchTextDecorator decorator = CompileSearchTextDecorator.decorate(f);
-        f.addPropertyChangeListener("filter", new PropertyChangeListener() {
-            @Override
-            public void propertyChange(PropertyChangeEvent evt) {
-                setFilter(decorator.getMatch());
-            }
-        });
+        f.addPropertyChangeListener("filter", evt -> setFilter(decorator.getMatch()));
         return f;
     }
 
@@ -711,12 +700,9 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
         }
 
         List<Relation> sortedRelations = new ArrayList<>(roles.keySet());
-        Collections.sort(sortedRelations, new Comparator<Relation>() {
-            @Override
-            public int compare(Relation o1, Relation o2) {
-                int comp = Boolean.compare(o1.isDisabledAndHidden(), o2.isDisabledAndHidden());
-                return comp != 0 ? comp : DefaultNameFormatter.getInstance().getRelationComparator().compare(o1, o2);
-            }
+        sortedRelations.sort((o1, o2) -> {
+            int comp = Boolean.compare(o1.isDisabledAndHidden(), o2.isDisabledAndHidden());
+            return comp != 0 ? comp : DefaultNameFormatter.getInstance().getRelationComparator().compare(o1, o2);
         });
 
         for (Relation r: sortedRelations) {
@@ -769,7 +755,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
     /* ---------------------------------------------------------------------------------- */
     @Override
     public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-        if (e.getSource().getEditLayer() != null) {
+        if (e.getSource().getEditLayer() == null) {
             editHelper.saveTagsIfNeeded();
         }
         // it is time to save history of tags
@@ -890,11 +876,11 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
         private final List<RelationMember> role = new ArrayList<>();
         private Set<OsmPrimitive> members = new HashSet<>();
         private List<Integer> position = new ArrayList<>();
-        private Iterable<OsmPrimitive> selection;
+        private Collection<OsmPrimitive> selection;
         private String positionString;
         private String roleString;
 
-        MemberInfo(Iterable<OsmPrimitive> selection) {
+        MemberInfo(Collection<OsmPrimitive> selection) {
             this.selection = selection;
         }
 
@@ -908,7 +894,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             if (positionString == null) {
                 positionString = Utils.getPositionListString(position);
                 // if not all objects from the selection are member of this relation
-                if (Utils.exists(selection, Predicates.not(Predicates.inCollection(members)))) {
+                if (selection.stream().anyMatch(p -> !members.contains(p))) {
                     positionString += ",\u2717";
                 }
                 members = null;
@@ -970,7 +956,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
             updateEnabledState();
         }
 
-        protected void deleteTags(int[] rows) {
+        protected void deleteTags(int ... rows) {
             // convert list of rows to HashMap (and find gap for nextKey)
             Map<String, String> tags = new HashMap<>(rows.length);
             int nextKeyIndex = rows[0];
@@ -1173,46 +1159,44 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                     uris.add(new URI(String.format("%sMap_Features", base)));
                 }
 
-                Main.worker.execute(new Runnable() {
-                    @Override public void run() {
-                        try {
-                            // find a page that actually exists in the wiki
-                            HttpClient.Response conn;
-                            for (URI u : uris) {
-                                conn = HttpClient.create(u.toURL(), "HEAD").connect();
+                Main.worker.execute(() -> {
+                    try {
+                        // find a page that actually exists in the wiki
+                        HttpClient.Response conn;
+                        for (URI u : uris) {
+                            conn = HttpClient.create(u.toURL(), "HEAD").connect();
+
+                            if (conn.getResponseCode() != 200) {
+                                conn.disconnect();
+                            } else {
+                                long osize = conn.getContentLength();
+                                if (osize > -1) {
+                                    conn.disconnect();
 
-                                if (conn.getResponseCode() != 200) {
+                                    final URI newURI = new URI(u.toString()
+                                            .replace("=", "%3D") /* do not URLencode whole string! */
+                                            .replaceFirst("/wiki/", "/w/index.php?redirect=no&title=")
+                                    );
+                                    conn = HttpClient.create(newURI.toURL(), "HEAD").connect();
+                                }
+
+                                /* redirect pages have different content length, but retrieving a "nonredirect"
+                                 *  page using index.php and the direct-link method gives slightly different
+                                 *  content lengths, so we have to be fuzzy.. (this is UGLY, recode if u know better)
+                                 */
+                                if (conn.getContentLength() != -1 && osize > -1 && Math.abs(conn.getContentLength() - osize) > 200) {
+                                    Main.info("{0} is a mediawiki redirect", u);
                                     conn.disconnect();
                                 } else {
-                                    long osize = conn.getContentLength();
-                                    if (osize > -1) {
-                                        conn.disconnect();
-
-                                        final URI newURI = new URI(u.toString()
-                                                .replace("=", "%3D") /* do not URLencode whole string! */
-                                                .replaceFirst("/wiki/", "/w/index.php?redirect=no&title=")
-                                        );
-                                        conn = HttpClient.create(newURI.toURL(), "HEAD").connect();
-                                    }
-
-                                    /* redirect pages have different content length, but retrieving a "nonredirect"
-                                     *  page using index.php and the direct-link method gives slightly different
-                                     *  content lengths, so we have to be fuzzy.. (this is UGLY, recode if u know better)
-                                     */
-                                    if (conn.getContentLength() != -1 && osize > -1 && Math.abs(conn.getContentLength() - osize) > 200) {
-                                        Main.info("{0} is a mediawiki redirect", u);
-                                        conn.disconnect();
-                                    } else {
-                                        conn.disconnect();
-
-                                        OpenBrowser.displayUrl(u.toString());
-                                        break;
-                                    }
+                                    conn.disconnect();
+
+                                    OpenBrowser.displayUrl(u.toString());
+                                    break;
                                 }
                             }
-                        } catch (URISyntaxException | IOException e) {
-                            Main.error(e);
                         }
+                    } catch (URISyntaxException | IOException e1) {
+                        Main.error(e1);
                     }
                 });
             } catch (URISyntaxException e1) {
@@ -1264,7 +1248,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                 return;
             String key = editHelper.getDataKey(tagTable.getSelectedRow());
             Collection<OsmPrimitive> sel = Main.main.getInProgressSelection();
-            String clipboard = Utils.getClipboardContent();
+            String clipboard = ClipboardUtils.getClipboardStringContent();
             if (sel.isEmpty() || clipboard == null)
                 return;
             Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, Utils.strip(clipboard)));
@@ -1294,7 +1278,7 @@ implements SelectionChangedListener, ActiveLayerChangeListener, DataSetListenerA
                 }
             }
             if (!values.isEmpty()) {
-                Utils.copyToClipboard(Utils.join("\n", values));
+                ClipboardUtils.copyString(Utils.join("\n", values));
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
index b00d0ce..62220d8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
@@ -16,7 +16,6 @@ import java.awt.GridBagLayout;
 import java.awt.datatransfer.Clipboard;
 import java.awt.datatransfer.Transferable;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.FocusAdapter;
 import java.awt.event.FocusEvent;
 import java.awt.event.InputEvent;
@@ -76,6 +75,7 @@ import org.openstreetmap.josm.data.preferences.EnumProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
@@ -106,12 +106,8 @@ public class TagEditHelper {
     private String changedKey;
     private String objKey;
 
-    private final Comparator<AutoCompletionListItem> defaultACItemComparator = new Comparator<AutoCompletionListItem>() {
-        @Override
-        public int compare(AutoCompletionListItem o1, AutoCompletionListItem o2) {
-            return String.CASE_INSENSITIVE_ORDER.compare(o1.getValue(), o2.getValue());
-        }
-    };
+    private final Comparator<AutoCompletionListItem> defaultACItemComparator =
+            (o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getValue(), o2.getValue());
 
     private String lastAddKey;
     private String lastAddValue;
@@ -363,20 +359,7 @@ public class TagEditHelper {
     protected class EditTagDialog extends AbstractTagsDialog implements IEditTagDialog {
         private final String key;
         private final transient Map<String, Integer> m;
-
-        private final transient Comparator<AutoCompletionListItem> usedValuesAwareComparator = new Comparator<AutoCompletionListItem>() {
-                @Override
-                public int compare(AutoCompletionListItem o1, AutoCompletionListItem o2) {
-                    boolean c1 = m.containsKey(o1.getValue());
-                    boolean c2 = m.containsKey(o2.getValue());
-                    if (c1 == c2)
-                        return String.CASE_INSENSITIVE_ORDER.compare(o1.getValue(), o2.getValue());
-                    else if (c1)
-                        return -1;
-                    else
-                        return +1;
-                }
-            };
+        private final transient Comparator<AutoCompletionListItem> usedValuesAwareComparator;
 
         private final transient ListCellRenderer<AutoCompletionListItem> cellRenderer = new ListCellRenderer<AutoCompletionListItem>() {
             private final DefaultListCellRenderer def = new DefaultListCellRenderer();
@@ -407,6 +390,17 @@ public class TagEditHelper {
             this.key = key;
             this.m = map;
 
+            usedValuesAwareComparator = (o1, o2) -> {
+                boolean c1 = m.containsKey(o1.getValue());
+                boolean c2 = m.containsKey(o2.getValue());
+                if (c1 == c2)
+                    return String.CASE_INSENSITIVE_ORDER.compare(o1.getValue(), o2.getValue());
+                else if (c1)
+                    return -1;
+                else
+                    return +1;
+            };
+
             JPanel mainPanel = new JPanel(new BorderLayout());
 
             String msg = "<html>"+trn("This will change {0} object.",
@@ -420,7 +414,7 @@ public class TagEditHelper {
 
             AutoCompletionManager autocomplete = Main.getLayerManager().getEditLayer().data.getAutoCompletionManager();
             List<AutoCompletionListItem> keyList = autocomplete.getKeys();
-            Collections.sort(keyList, defaultACItemComparator);
+            keyList.sort(defaultACItemComparator);
 
             keys = new AutoCompletingComboBox(key);
             keys.setPossibleACItems(keyList);
@@ -433,7 +427,7 @@ public class TagEditHelper {
             p.add(keys, GBC.eol().fill(GBC.HORIZONTAL));
 
             List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
-            Collections.sort(valueList, usedValuesAwareComparator);
+            valueList.sort(usedValuesAwareComparator);
 
             final String selection = m.size() != 1 ? tr("<different>") : m.entrySet().iterator().next().getKey();
 
@@ -448,12 +442,7 @@ public class TagEditHelper {
             p.add(new JLabel(tr("Value")), GBC.std());
             p.add(Box.createHorizontalStrut(10), GBC.std());
             p.add(values, GBC.eol().fill(GBC.HORIZONTAL));
-            values.getEditor().addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    buttonAction(0, null); // emulate OK button click
-                }
-            });
+            values.getEditor().addActionListener(e -> buttonAction(0, null));
             addFocusAdapter(autocomplete, usedValuesAwareComparator);
 
             setContent(mainPanel, false);
@@ -478,12 +467,12 @@ public class TagEditHelper {
         @Override
         public void performTagEdit() {
             String value = Tag.removeWhiteSpaces(values.getEditor().getItem().toString());
-            value = Normalizer.normalize(value, java.text.Normalizer.Form.NFC);
+            value = Normalizer.normalize(value, Normalizer.Form.NFC);
             if (value.isEmpty()) {
                 value = null; // delete the key
             }
             String newkey = Tag.removeWhiteSpaces(keys.getEditor().getItem().toString());
-            newkey = Normalizer.normalize(newkey, java.text.Normalizer.Form.NFC);
+            newkey = Normalizer.normalize(newkey, Normalizer.Form.NFC);
             if (newkey.isEmpty()) {
                 newkey = key;
                 value = null; // delete the key instead
@@ -539,7 +528,7 @@ public class TagEditHelper {
         protected AutoCompletingComboBox keys;
         protected AutoCompletingComboBox values;
 
-        AbstractTagsDialog(Component parent, String title, String[] buttonTexts) {
+        AbstractTagsDialog(Component parent, String title, String ... buttonTexts) {
             super(parent, title, buttonTexts);
             addMouseListener(new PopupMenuLauncher(popupMenu));
         }
@@ -583,9 +572,9 @@ public class TagEditHelper {
 
         private void selectACComboBoxSavingUnixBuffer(AutoCompletingComboBox cb) {
             // select combobox with saving unix system selection (middle mouse paste)
-            Clipboard sysSel = GuiHelper.getSystemSelection();
+            Clipboard sysSel = ClipboardUtils.getSystemSelection();
             if (sysSel != null) {
-                Transferable old = Utils.getTransferableContent(sysSel);
+                Transferable old = ClipboardUtils.getClipboardContent(sysSel);
                 cb.requestFocusInWindow();
                 cb.getEditor().selectAll();
                 if (old != null) {
@@ -622,7 +611,7 @@ public class TagEditHelper {
                    String key = keys.getEditor().getItem().toString();
 
                    List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
-                   Collections.sort(valueList, comparator);
+                   valueList.sort(comparator);
                    if (Main.isTraceEnabled()) {
                        Main.trace("Focus gained by {0}, e={1}", values, e);
                    }
@@ -697,7 +686,7 @@ public class TagEditHelper {
                 }
             }
 
-            Collections.sort(keyList, defaultACItemComparator);
+            keyList.sort(defaultACItemComparator);
             keys.setPossibleACItems(keyList);
             keys.setEditable(true);
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
index a81baa5..7f3a822 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
@@ -419,12 +419,7 @@ public class ChildRelationBrowser extends JPanel {
                     mergeDataSet(dataSet);
                     refreshView(r);
                 }
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        Main.map.repaint();
-                    }
-                });
+                SwingUtilities.invokeLater(Main.map::repaint);
             } catch (OsmTransferException e) {
                 if (canceled) {
                     Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
index e9a00e6..14182a3 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationMemberTask.java
@@ -132,16 +132,10 @@ public class DownloadRelationMemberTask extends PleaseWaitRunnable {
                 objectReader = null;
             }
 
-            SwingUtilities.invokeLater(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            curLayer.mergeFrom(dataSet);
-                            curLayer.onPostDownloadFromServer();
-                        }
-                    }
-            );
-
+            SwingUtilities.invokeLater(() -> {
+                curLayer.mergeFrom(dataSet);
+                curLayer.onPostDownloadFromServer();
+            });
         } catch (OsmTransferException e) {
             if (canceled) {
                 Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
index 8657874..83b1c9e 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
@@ -97,16 +97,11 @@ public class DownloadRelationTask extends PleaseWaitRunnable {
                 getProgressMonitor().worked(1);
             }
 
-            SwingUtilities.invokeAndWait(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            layer.mergeFrom(allDownloads);
-                            layer.onPostDownloadFromServer();
-                            Main.map.repaint();
-                        }
-                    }
-            );
+            SwingUtilities.invokeAndWait(() -> {
+                layer.mergeFrom(allDownloads);
+                layer.onPostDownloadFromServer();
+                Main.map.repaint();
+            });
         } catch (OsmTransferException | InvocationTargetException | InterruptedException e) {
             if (canceled) {
                 Main.warn(tr("Ignoring exception because task was canceled. Exception: {0}", e.toString()));
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
index 47b563a..07b751b 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
@@ -11,6 +11,8 @@ import java.awt.GraphicsEnvironment;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Window;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.FlavorListener;
 import java.awt.event.ActionEvent;
 import java.awt.event.FocusAdapter;
 import java.awt.event.FocusEvent;
@@ -44,10 +46,6 @@ import javax.swing.JTabbedPane;
 import javax.swing.JTable;
 import javax.swing.JToolBar;
 import javax.swing.KeyStroke;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
@@ -61,6 +59,7 @@ import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.MainMenu;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.relation.actions.AddSelectedAfterSelection;
 import org.openstreetmap.josm.gui.dialogs.relation.actions.AddSelectedAtEndAction;
 import org.openstreetmap.josm.gui.dialogs.relation.actions.AddSelectedAtStartAction;
@@ -152,6 +151,10 @@ public class GenericRelationEditor extends RelationEditor {
      * Action for performing the {@link CancelAction}
      */
     private final CancelAction cancelAction;
+    /**
+     * A list of listeners that need to be notified on clipboard content changes.
+     */
+    private final ArrayList<FlavorListener> clipboardListeners = new ArrayList<>();
 
     /**
      * Creates a new relation editor for the given relation. The relation will be saved if the user
@@ -224,19 +227,14 @@ public class GenericRelationEditor extends RelationEditor {
         referrerBrowser = new ReferringRelationsBrowser(getLayer(), referrerModel);
         tabbedPane.add(tr("Parent Relations"), referrerBrowser);
         tabbedPane.add(tr("Child Relations"), new ChildRelationBrowser(getLayer(), relation));
-        tabbedPane.addChangeListener(
-                new ChangeListener() {
-                    @Override
-                    public void stateChanged(ChangeEvent e) {
-                        JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource();
-                        int index = sourceTabbedPane.getSelectedIndex();
-                        String title = sourceTabbedPane.getTitleAt(index);
-                        if (title.equals(tr("Parent Relations"))) {
-                            referrerBrowser.init();
-                        }
-                    }
-                }
-        );
+        tabbedPane.addChangeListener(e -> {
+            JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource();
+            int index = sourceTabbedPane.getSelectedIndex();
+            String title = sourceTabbedPane.getTitleAt(index);
+            if (title.equals(tr("Parent Relations"))) {
+                referrerBrowser.init();
+            }
+        });
 
         refreshAction = new RefreshAction(memberTable, memberTableModel, tagEditorPanel.getModel(), getLayer(), this);
         applyAction = new ApplyAction(memberTable, memberTableModel, tagEditorPanel.getModel(), getLayer(), this);
@@ -273,7 +271,7 @@ public class GenericRelationEditor extends RelationEditor {
                 getRootPane(), memberTable, selectionTable);
         // CHECKSTYLE.ON: LineLength
 
-        registerCopyPasteAction(new PasteMembersAction(memberTableModel, getLayer(), this) {
+        registerCopyPasteAction(new PasteMembersAction(memberTable, getLayer(), this) {
             @Override
             public void actionPerformed(ActionEvent e) {
                 super.actionPerformed(e);
@@ -479,12 +477,7 @@ public class GenericRelationEditor extends RelationEditor {
         tfRole.getDocument().addDocumentListener(setRoleAction);
         tfRole.addActionListener(setRoleAction);
         memberTableModel.getSelectionModel().addListSelectionListener(
-                new ListSelectionListener() {
-                    @Override
-                    public void valueChanged(ListSelectionEvent e) {
-                        tfRole.setEnabled(memberTable.getSelectedRowCount() > 0);
-                    }
-                }
+                e -> tfRole.setEnabled(memberTable.getSelectedRowCount() > 0)
         );
         tfRole.setEnabled(memberTable.getSelectedRowCount() > 0);
         JButton btnApply = new JButton(setRoleAction);
@@ -738,10 +731,14 @@ public class GenericRelationEditor extends RelationEditor {
 
     @Override
     public void setVisible(boolean visible) {
+        if (isVisible() == visible) {
+            return;
+        }
         if (visible) {
             tagEditorPanel.initAutoCompletion(getLayer());
         }
         super.setVisible(visible);
+        Clipboard clipboard = ClipboardUtils.getClipboard();
         if (visible) {
             leftButtonToolbar.sortBelowButton.setVisible(ExpertToggleAction.isExpert());
             RelationDialogManager.getRelationDialogManager().positionOnScreen(this);
@@ -749,6 +746,9 @@ public class GenericRelationEditor extends RelationEditor {
                 windowMenuItem = addToWindowMenu(this, getLayer().getName());
             }
             tagEditorPanel.requestFocusInWindow();
+            for (FlavorListener listener : clipboardListeners) {
+                clipboard.addFlavorListener(listener);
+            }
         } else {
             // make sure all registered listeners are unregistered
             //
@@ -760,6 +760,9 @@ public class GenericRelationEditor extends RelationEditor {
                 Main.main.menu.windowMenu.remove(windowMenuItem);
                 windowMenuItem = null;
             }
+            for (FlavorListener listener : clipboardListeners) {
+                clipboard.removeFlavorListener(listener);
+            }
             dispose();
         }
     }
@@ -823,7 +826,7 @@ public class GenericRelationEditor extends RelationEditor {
         }
     }
 
-    private static void registerCopyPasteAction(AbstractAction action, Object actionName, KeyStroke shortcut,
+    private void registerCopyPasteAction(AbstractAction action, Object actionName, KeyStroke shortcut,
             JRootPane rootPane, JTable... tables) {
         int mods = shortcut.getModifiers();
         int code = shortcut.getKeyCode();
@@ -840,6 +843,9 @@ public class GenericRelationEditor extends RelationEditor {
             table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(shortcut, actionName);
             table.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(shortcut, actionName);
         }
+        if (action instanceof FlavorListener) {
+            clipboardListeners.add((FlavorListener) action);
+        }
     }
 
     /**
@@ -931,6 +937,7 @@ public class GenericRelationEditor extends RelationEditor {
             }
             return modified ? new ChangeCommand(orig, relation) : null;
         } catch (AddAbortException ign) {
+            Main.trace(ign);
             return null;
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java b/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
index c1f5f35..af3eaec 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/IMemberModelListener.java
@@ -1,6 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.dialogs.relation;
 
+ at FunctionalInterface
 public interface IMemberModelListener {
     void makeMemberVisible(int index);
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
index 324d3ff..b302240 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
@@ -6,10 +6,10 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Dimension;
 import java.awt.GraphicsEnvironment;
 import java.awt.event.ActionEvent;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
 
 import javax.swing.AbstractAction;
 import javax.swing.DropMode;
@@ -70,7 +70,9 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
         if (!GraphicsEnvironment.isHeadless()) {
             setTransferHandler(new MemberTransferHandler());
             setFillsViewportHeight(true); // allow drop on empty table
-            setDragEnabled(true);
+            if (!GraphicsEnvironment.isHeadless()) {
+                setDragEnabled(true);
+            }
             setDropMode(DropMode.INSERT_ROWS);
         }
     }
@@ -85,6 +87,7 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
         JPopupMenu menu = super.buildPopupMenu();
         zoomToGap = new ZoomToGapAction();
         registerListeners();
+        menu.addSeparator();
         getSelectionModel().addListSelectionListener(zoomToGap);
         menu.add(zoomToGap);
         menu.addSeparator();
@@ -103,26 +106,20 @@ public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
         scrollRectToVisible(getCellRect(index, 0, true));
     }
 
-    private transient ListSelectionListener highlighterListener = new ListSelectionListener() {
-        @Override
-        public void valueChanged(ListSelectionEvent lse) {
-            if (Main.isDisplayingMapView()) {
-                Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
-                final List<OsmPrimitive> toHighlight = new ArrayList<>();
-                for (RelationMember r: sel) {
-                    if (r.getMember().isUsable()) {
-                        toHighlight.add(r.getMember());
-                    }
+    private transient ListSelectionListener highlighterListener = lse -> {
+        if (Main.isDisplayingMapView()) {
+            Collection<RelationMember> sel = getMemberTableModel().getSelectedMembers();
+            final Set<OsmPrimitive> toHighlight = new HashSet<>();
+            for (RelationMember r: sel) {
+                if (r.getMember().isUsable()) {
+                    toHighlight.add(r.getMember());
                 }
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (Main.isDisplayingMapView() && highlightHelper.highlightOnly(toHighlight)) {
-                            Main.map.mapView.repaint();
-                        }
-                    }
-                });
             }
+            SwingUtilities.invokeLater(() -> {
+                if (Main.isDisplayingMapView() && highlightHelper.highlightOnly(toHighlight)) {
+                    Main.map.mapView.repaint();
+                }
+            });
         }
     };
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
index d72479f..3ba7711 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.gui.dialogs.relation;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.BitSet;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.EnumSet;
@@ -44,6 +45,7 @@ import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 public class MemberTableModel extends AbstractTableModel
 implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPrimitivesTableModel {
@@ -121,12 +123,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     public void dataChanged(DataChangedEvent event) {
         // just trigger a repaint - the display name of the relation members may have changed
         Collection<RelationMember> sel = getSelectedMembers();
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                fireTableDataChanged();
-            }
-        });
+        GuiHelper.runInEDT(this::fireTableDataChanged);
         setSelectedMembers(sel);
     }
 
@@ -258,7 +255,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         return members.get(idx).getMember();
     }
 
-    public void moveUp(int[] selectedRows) {
+    public void moveUp(int ... selectedRows) {
         if (!canMoveUp(selectedRows))
             return;
 
@@ -271,15 +268,17 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         fireTableDataChanged();
         getSelectionModel().setValueIsAdjusting(true);
         getSelectionModel().clearSelection();
+        BitSet selected = new BitSet();
         for (int row : selectedRows) {
             row--;
-            getSelectionModel().addSelectionInterval(row, row);
+            selected.set(row);
         }
+        addToSelectedMembers(selected);
         getSelectionModel().setValueIsAdjusting(false);
         fireMakeMemberVisible(selectedRows[0] - 1);
     }
 
-    public void moveDown(int[] selectedRows) {
+    public void moveDown(int ... selectedRows) {
         if (!canMoveDown(selectedRows))
             return;
 
@@ -294,15 +293,17 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         getSelectionModel();
         getSelectionModel().setValueIsAdjusting(true);
         getSelectionModel().clearSelection();
+        BitSet selected = new BitSet();
         for (int row : selectedRows) {
             row++;
-            getSelectionModel().addSelectionInterval(row, row);
+            selected.set(row);
         }
+        addToSelectedMembers(selected);
         getSelectionModel().setValueIsAdjusting(false);
         fireMakeMemberVisible(selectedRows[0] + 1);
     }
 
-    public void remove(int[] selectedRows) {
+    public void remove(int ... selectedRows) {
         if (!canRemove(selectedRows))
             return;
         int offset = 0;
@@ -316,21 +317,21 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         fireTableDataChanged();
     }
 
-    public boolean canMoveUp(int[] rows) {
+    public boolean canMoveUp(int ... rows) {
         if (rows == null || rows.length == 0)
             return false;
         Arrays.sort(rows);
         return rows[0] > 0 && !members.isEmpty();
     }
 
-    public boolean canMoveDown(int[] rows) {
+    public boolean canMoveDown(int ... rows) {
         if (rows == null || rows.length == 0)
             return false;
         Arrays.sort(rows);
         return !members.isEmpty() && rows[rows.length - 1] < members.size() - 1;
     }
 
-    public boolean canRemove(int[] rows) {
+    public boolean canRemove(int ... rows) {
         if (rows == null || rows.length == 0)
             return false;
         return true;
@@ -479,9 +480,7 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
             members.add(idx++, member);
         }
         invalidateConnectionType();
-        final List<Integer> selection = getSelectedIndices();
         fireTableRowsInserted(index, idx - 1);
-        setSelectedMembersIdx(selection);
     }
 
     public void addMembersAtBeginning(List<? extends OsmPrimitive> primitives) {
@@ -536,9 +535,11 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
             members.add(row, newMember);
         }
         fireTableDataChanged();
+        BitSet selected = new BitSet();
         for (int row : idx) {
-            getSelectionModel().addSelectionInterval(row, row);
+            selected.set(row);
         }
+        addToSelectedMembers(selected);
     }
 
     /**
@@ -622,9 +623,11 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         //
         getSelectionModel().setValueIsAdjusting(true);
         getSelectionModel().clearSelection();
+        BitSet selected = new BitSet();
         for (int row : selectedIndices) {
-            getSelectionModel().addSelectionInterval(row, row);
+            selected.set(row);
         }
+        addToSelectedMembers(selected);
         getSelectionModel().setValueIsAdjusting(false);
         // make the first selected member visible
         //
@@ -634,12 +637,41 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     }
 
     /**
-     * Replies true if the index-th relation members referrs
+     * Add one or more members indices to the selection.
+     * Detect groups of consecutive indices.
+     * Only one costly call of addSelectionInterval is performed for each group
+
+     * @param selectedIndices selected indices as a bitset
+     * @return number of groups
+     */
+    private int addToSelectedMembers(BitSet selectedIndices) {
+        if (selectedIndices == null || selectedIndices.isEmpty()) {
+            return 0;
+        }
+        // select the members
+        //
+        int start = selectedIndices.nextSetBit(0);
+        int end;
+        int steps = 0;
+        int last = selectedIndices.length();
+        while (start >= 0) {
+            end = selectedIndices.nextClearBit(start);
+            steps++;
+            getSelectionModel().addSelectionInterval(start, end-1);
+            start = selectedIndices.nextSetBit(end);
+            if (start < 0 || end == last)
+                break;
+        }
+        return steps;
+    }
+
+    /**
+     * Replies true if the index-th relation members refers
      * to an editable relation, i.e. a relation which is not
      * incomplete.
      *
      * @param index the index
-     * @return true, if the index-th relation members referrs
+     * @return true, if the index-th relation members refers
      * to an editable relation, i.e. a relation which is not
      * incomplete
      */
@@ -700,12 +732,14 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
         if (primitives == null) return;
         getSelectionModel().setValueIsAdjusting(true);
         getSelectionModel().clearSelection();
+        BitSet selected = new BitSet();
         for (int i = 0; i < members.size(); i++) {
             RelationMember m = members.get(i);
             if (primitives.contains(m.getMember())) {
-                this.getSelectionModel().addSelectionInterval(i, i);
+                selected.set(i);
             }
         }
+        addToSelectedMembers(selected);
         getSelectionModel().setValueIsAdjusting(false);
         if (!getSelectedIndices().isEmpty()) {
             fireMakeMemberVisible(getSelectedIndices().get(0));
@@ -773,10 +807,14 @@ implements TableModelListener, SelectionChangedListener, DataSetListener, OsmPri
     }
 
     WayConnectionType getWayConnection(int i) {
-        if (connectionType == null) {
-            connectionType = wayConnectionTypeCalculator.updateLinks(members);
+        try {
+            if (connectionType == null) {
+                connectionType = wayConnectionTypeCalculator.updateLinks(members);
+            }
+            return connectionType.get(i);
+        } catch (RuntimeException e) {
+            throw BugReport.intercept(e).put("i", i).put("members", members).put("relation", relation);
         }
-        return connectionType.get(i);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
index 99fef5f..df89571 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTransferHandler.java
@@ -16,13 +16,18 @@ import javax.swing.TransferHandler;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
-import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
 import org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable;
-import org.openstreetmap.josm.tools.Utils.Function;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 
-class MemberTransferHandler extends TransferHandler {
+/**
+ * A transfer handler that helps with importing / exporting members for relations.
+ * @author Michael Zangl
+ * @since 10604
+ */
+public class MemberTransferHandler extends TransferHandler {
 
     @Override
     public int getSourceActions(JComponent c) {
@@ -37,71 +42,83 @@ class MemberTransferHandler extends TransferHandler {
 
     @Override
     public boolean canImport(TransferSupport support) {
-        support.setShowDropLocation(true);
+        if (support.isDrop()) {
+            support.setShowDropLocation(true);
+        }
         return support.isDataFlavorSupported(RelationMemberTransferable.RELATION_MEMBER_DATA)
-                || support.isDataFlavorSupported(PrimitiveTransferable.PRIMITIVE_DATA);
+                || support.isDataFlavorSupported(PrimitiveTransferData.DATA_FLAVOR);
     }
 
     @Override
     public boolean importData(TransferSupport support) {
-        final MemberTable destination = (MemberTable) support.getComponent();
-        final int insertRow = ((JTable.DropLocation) support.getDropLocation()).getRow();
+        MemberTable destination = (MemberTable) support.getComponent();
+        int insertRow = computeInsertionRow(support, destination);
+
+        return importDataAt(support, destination, insertRow);
+    }
+
+    private static int computeInsertionRow(TransferSupport support, MemberTable destination) {
+        final int insertRow;
+        if (support.isDrop()) {
+            insertRow = ((JTable.DropLocation) support.getDropLocation()).getRow();
+        } else {
+            int selection = destination.getSelectedRow();
+            if (selection < 0) {
+                // no selection, add at the end.
+                insertRow = destination.getRowCount();
+            } else {
+                insertRow = selection;
+            }
+        }
+        return insertRow;
+    }
 
+    private boolean importDataAt(TransferSupport support, MemberTable destination, int insertRow) {
         try {
             if (support.isDataFlavorSupported(RelationMemberTransferable.RELATION_MEMBER_DATA)) {
                 importRelationMemberData(support, destination, insertRow);
-            } else if (support.isDataFlavorSupported(PrimitiveTransferable.PRIMITIVE_DATA)) {
+                return true;
+            } else if (support.isDataFlavorSupported(PrimitiveTransferData.DATA_FLAVOR)) {
                 importPrimitiveData(support, destination, insertRow);
+                return true;
+            } else {
+                return false;
             }
         } catch (IOException | UnsupportedFlavorException e) {
             Main.warn(e);
             return false;
         }
-
-        return true;
     }
 
     protected void importRelationMemberData(TransferSupport support, final MemberTable destination, int insertRow)
             throws UnsupportedFlavorException, IOException {
         final RelationMemberTransferable.Data memberData = (RelationMemberTransferable.Data)
                 support.getTransferable().getTransferData(RelationMemberTransferable.RELATION_MEMBER_DATA);
-        importData(destination, insertRow, memberData.getRelationMemberData(), new Function<RelationMemberData, RelationMember>() {
+        importData(destination, insertRow, memberData.getRelationMemberData(), new AbstractRelationMemberConverter<RelationMemberData>() {
             @Override
-            public RelationMember apply(RelationMemberData member) {
-                final OsmPrimitive p = destination.getLayer().data.getPrimitiveById(member.getUniqueId(), member.getType());
-                if (p == null) {
-                    Main.warn(tr("Cannot add {0} since it is not part of dataset", member));
-                    return null;
-                } else {
-                    return new RelationMember(member.getRole(), p);
-                }
+            protected RelationMember getMember(MemberTable destination, RelationMemberData data, OsmPrimitive p) {
+                return new RelationMember(data.getRole(), p);
             }
         });
     }
 
     protected void importPrimitiveData(TransferSupport support, final MemberTable destination, int insertRow)
             throws UnsupportedFlavorException, IOException {
-        final PrimitiveTransferable.Data data = (PrimitiveTransferable.Data)
-                support.getTransferable().getTransferData(PrimitiveTransferable.PRIMITIVE_DATA);
-        importData(destination, insertRow, data.getPrimitiveData(), new Function<PrimitiveData, RelationMember>() {
+        final PrimitiveTransferData data = (PrimitiveTransferData)
+                support.getTransferable().getTransferData(PrimitiveTransferData.DATA_FLAVOR);
+        importData(destination, insertRow, data.getDirectlyAdded(), new AbstractRelationMemberConverter<PrimitiveData>() {
             @Override
-            public RelationMember apply(PrimitiveData data) {
-                final OsmPrimitive p = destination.getLayer().data.getPrimitiveById(data);
-                if (p == null) {
-                    Main.warn(tr("Cannot add {0} since it is not part of dataset", data));
-                    return null;
-                } else {
-                    return destination.getMemberTableModel().getRelationMemberForPrimitive(p);
-                }
+            protected RelationMember getMember(MemberTable destination, PrimitiveData data, OsmPrimitive p) {
+                return destination.getMemberTableModel().getRelationMemberForPrimitive(p);
             }
         });
     }
 
-    protected <T> void importData(MemberTable destination, int insertRow,
-                                  Collection<T> memberData, Function<T, RelationMember> toMemberFunction) {
+    protected <T extends PrimitiveId> void importData(MemberTable destination, int insertRow,
+                                  Collection<T> memberData, AbstractRelationMemberConverter<T> toMemberFunction) {
         final Collection<RelationMember> membersToAdd = new ArrayList<>(memberData.size());
-        for (T i : memberData) {
-            final RelationMember member = toMemberFunction.apply(i);
+        for (T data : memberData) {
+            final RelationMember member = toMemberFunction.importPrimitive(destination, data);
             if (member != null) {
                 membersToAdd.add(member);
             }
@@ -119,4 +136,18 @@ class MemberTransferHandler extends TransferHandler {
         model.remove(source.getSelectedRows());
         model.selectionChanged(null);
     }
+
+    private abstract static class AbstractRelationMemberConverter<T extends PrimitiveId> {
+        protected RelationMember importPrimitive(MemberTable destination, T data) {
+            final OsmPrimitive p = destination.getLayer().data.getPrimitiveById(data);
+            if (p == null) {
+                Main.warn(tr("Cannot add {0} since it is not part of dataset", data));
+                return null;
+            } else {
+                return getMember(destination, data, p);
+            }
+        }
+
+        protected abstract RelationMember getMember(MemberTable destination, T data, OsmPrimitive p);
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
index 31449bf..7e47bc0 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java
@@ -164,17 +164,9 @@ public class ParentRelationLoadingTask extends PleaseWaitRunnable {
 
                 // copy the merged layer's data source info
                 getLayer().data.dataSources.addAll(referrers.dataSources);
-                // FIXME: this is necessary because there are  dialogs listening
+                // FIXME: this is necessary because there are dialogs listening
                 // for DataChangeEvents which manipulate Swing components on this thread.
-                //
-                SwingUtilities.invokeLater(
-                        new Runnable() {
-                            @Override
-                            public void run() {
-                                getLayer().onPostDownloadFromServer();
-                            }
-                        }
-                );
+                SwingUtilities.invokeLater(getLayer()::onPostDownloadFromServer);
 
                 if (visitor.getConflicts().isEmpty())
                     return;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
index 1b3a9c3..4c18f86 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java
@@ -109,16 +109,11 @@ public class ReferringRelationsBrowser extends JPanel {
                     full,
                     new PleaseWaitProgressMonitor(tr("Loading parent relations"))
             );
-            task.setContinuation(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            if (task.isCanceled() || task.hasError())
-                                return;
-                            model.populate(task.getParents());
-                        }
-                    }
-            );
+            task.setContinuation(() -> {
+                    if (task.isCanceled() || task.hasError())
+                        return;
+                    model.populate(task.getParents());
+                });
             Main.worker.submit(task);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
index 7fdf872..9eff2ea 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java
@@ -140,14 +140,7 @@ public class RelationTree extends JTree {
                 Main.getLayerManager().getEditLayer().getConflicts().add(visitor.getConflicts());
             }
             final RelationTreeModel model = (RelationTreeModel) getModel();
-            SwingUtilities.invokeLater(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            model.refreshNode(path);
-                        }
-                    }
-            );
+            SwingUtilities.invokeLater(() -> model.refreshNode(path));
         }
 
         @Override
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CopyMembersAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CopyMembersAction.java
index 952e554..8b8ba36 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CopyMembersAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/CopyMembersAction.java
@@ -4,8 +4,9 @@ package org.openstreetmap.josm.gui.dialogs.relation.actions;
 import java.awt.event.ActionEvent;
 import java.util.Collection;
 
-import org.openstreetmap.josm.actions.CopyAction;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -28,9 +29,10 @@ public class CopyMembersAction extends AddFromSelectionAction {
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        final Collection<OsmPrimitive> primitives = memberTableModel.getSelectedChildPrimitives();
-        if (!primitives.isEmpty()) {
-            CopyAction.copy(layer, primitives);
+        final Collection<RelationMember> members = memberTableModel.getSelectedMembers();
+
+        if (!members.isEmpty()) {
+            ClipboardUtils.copy(new RelationMemberTransferable(members));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
index eaa08d2..2cf4c16 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersAction.java
@@ -1,81 +1,51 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.dialogs.relation.actions;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
+import java.awt.datatransfer.FlavorEvent;
+import java.awt.datatransfer.FlavorListener;
 import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.List;
 
-import javax.swing.JOptionPane;
+import javax.swing.TransferHandler.TransferSupport;
 
-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.PrimitiveData;
-import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.AddAbortException;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
-import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
+import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
+import org.openstreetmap.josm.gui.dialogs.relation.MemberTransferHandler;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
 /**
  * Paste members.
  * @since 9496
  */
-public class PasteMembersAction extends AddFromSelectionAction {
+public class PasteMembersAction extends AddFromSelectionAction implements FlavorListener {
 
     /**
      * Constructs a new {@code PasteMembersAction}.
-     * @param memberTableModel member table model
+     * @param memberTable member table
      * @param layer OSM data layer
      * @param editor relation editor
      */
-    public PasteMembersAction(MemberTableModel memberTableModel, OsmDataLayer layer, IRelationEditor editor) {
-        super(null, memberTableModel, null, null, null, layer, editor);
+    public PasteMembersAction(MemberTable memberTable, OsmDataLayer layer, IRelationEditor editor) {
+        super(memberTable, null, null, null, null, layer, editor);
+        updateEnabledState();
     }
 
     @Override
     public void actionPerformed(ActionEvent e) {
-        try {
-            List<PrimitiveData> primitives = Main.pasteBuffer.getDirectlyAdded();
-            DataSet ds = layer.data;
-            List<OsmPrimitive> toAdd = new ArrayList<>();
-            boolean hasNewInOtherLayer = false;
-
-            for (PrimitiveData primitive: primitives) {
-                OsmPrimitive primitiveInDs = ds.getPrimitiveById(primitive);
-                if (primitiveInDs != null) {
-                    toAdd.add(primitiveInDs);
-                } else if (!primitive.isNew()) {
-                    OsmPrimitive p = primitive.getType().newInstance(primitive.getUniqueId(), true);
-                    ds.addPrimitive(p);
-                    toAdd.add(p);
-                } else {
-                    hasNewInOtherLayer = true;
-                    break;
-                }
-            }
-
-            if (hasNewInOtherLayer) {
-                JOptionPane.showMessageDialog(Main.parent,
-                        tr("Members from paste buffer cannot be added because they are not included in current layer"));
-                return;
-            }
-
-            toAdd = filterConfirmedPrimitives(toAdd);
-            int index = memberTableModel.getSelectionModel().getMaxSelectionIndex();
-            if (index == -1) {
-                index = memberTableModel.getRowCount() - 1;
-            }
-            memberTableModel.addMembersAfterIdx(toAdd, index);
+        new MemberTransferHandler().importData(getSupport());
+    }
 
-        } catch (AddAbortException ex) {
-            Main.trace(ex);
-        }
+    private TransferSupport getSupport() {
+        return new TransferSupport(memberTable, ClipboardUtils.getClipboard().getContents(null));
     }
 
     @Override
     protected void updateEnabledState() {
-        // Do nothing
+        setEnabled(new MemberTransferHandler().canImport(getSupport()));
+    }
+
+    @Override
+    public void flavorsChanged(FlavorEvent e) {
+        updateEnabledState();
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
index d7371ec..7e3fca2 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
@@ -20,9 +20,9 @@ import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
+import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
-import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -80,13 +80,8 @@ abstract class SavingAction extends AbstractRelationEditorAction {
             RelationDialogManager.getRelationDialogManager().updateContext(
                     layer, editor.getRelation(), (RelationEditor) editor);
         }
-        SwingUtilities.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                // Relation list gets update in EDT so selecting my be postponed to following EDT run
-                Main.map.relationListDialog.selectRelation(newRelation);
-            }
-        });
+        // Relation list gets update in EDT so selecting my be postponed to following EDT run
+        SwingUtilities.invokeLater(() -> Main.map.relationListDialog.selectRelation(newRelation));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/actions/package-info.java b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/package-info.java
new file mode 100644
index 0000000..6076a93
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/actions/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for relation editor actions.
+ */
+package org.openstreetmap.josm.gui.dialogs.relation.actions;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
index ec04ba2..41df31f 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
@@ -3,8 +3,6 @@ package org.openstreetmap.josm.gui.dialogs.relation.sort;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -65,19 +63,16 @@ public class RelationSorter {
 
         @Override
         public List<RelationMember> sortMembers(List<RelationMember> list) {
-            Collections.sort(list, new Comparator<RelationMember>() {
-                @Override
-                public int compare(RelationMember a, RelationMember b) {
-                    final int houseNumber = AlphanumComparator.getInstance().compare(
-                            a.getMember().get("addr:housenumber"),
-                            b.getMember().get("addr:housenumber"));
-                    if (houseNumber != 0) {
-                        return houseNumber;
-                    }
-                    final String aDisplayName = a.getMember().getDisplayName(DefaultNameFormatter.getInstance());
-                    final String bDisplayName = b.getMember().getDisplayName(DefaultNameFormatter.getInstance());
-                    return AlphanumComparator.getInstance().compare(aDisplayName, bDisplayName);
+            list.sort((a, b) -> {
+                final int houseNumber = AlphanumComparator.getInstance().compare(
+                        a.getMember().get("addr:housenumber"),
+                        b.getMember().get("addr:housenumber"));
+                if (houseNumber != 0) {
+                    return houseNumber;
                 }
+                final String aDisplayName = a.getMember().getDisplayName(DefaultNameFormatter.getInstance());
+                final String bDisplayName = b.getMember().getDisplayName(DefaultNameFormatter.getInstance());
+                return AlphanumComparator.getInstance().compare(aDisplayName, bDisplayName);
             });
             return list;
         }
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
index dfa048d..d2f5c8c 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
@@ -12,6 +12,7 @@ import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
 
 public class WayConnectionTypeCalculator {
 
@@ -40,71 +41,94 @@ public class WayConnectionTypeCalculator {
         WayConnectionType lastWct = null;
 
         for (int i = 0; i < members.size(); ++i) {
-            final RelationMember m = members.get(i);
-            if (!m.isWay() || m.getWay() == null || m.getWay().isIncomplete()) {
+            try {
+                lastWct = updateLinksFor(con, lastWct, i);
+            } catch (RuntimeException e) {
+                int index = i;
+                throw BugReport.intercept(e).put("i", i).put("member", () -> members.get(index)).put("con", con);
+            }
+        }
+        makeLoopIfNeeded(con, members.size()-1);
+
+        return con;
+    }
+
+    private WayConnectionType updateLinksFor(final List<WayConnectionType> con, WayConnectionType lastWct, int i) {
+        final RelationMember m = members.get(i);
+        if (isNoHandleableWay(m)) {
+            if (i > 0) {
+                makeLoopIfNeeded(con, i-1);
+            }
+            con.set(i, new WayConnectionType());
+            firstGroupIdx = i;
+        } else {
+            WayConnectionType wct = computeNextWayConnection(con, lastWct, i, m);
+
+            if (!wct.linkPrev) {
                 if (i > 0) {
                     makeLoopIfNeeded(con, i-1);
                 }
-                con.set(i, new WayConnectionType());
                 firstGroupIdx = i;
-                continue;
             }
+            lastWct = wct;
+        }
+        return lastWct;
+    }
 
-            WayConnectionType wct = new WayConnectionType(false);
-            wct.linkPrev = i > 0 && con.get(i-1) != null && con.get(i-1).isValid();
-            wct.direction = NONE;
+    private static boolean isNoHandleableWay(final RelationMember m) {
+        return !m.isWay() || m.getWay() == null || m.getWay().isIncomplete();
+    }
 
-            if (RelationSortUtils.isOneway(m)) {
-                if (lastWct != null && lastWct.isOnewayTail) {
-                    wct.isOnewayHead = true;
-                }
-                if (lastBackwardWay == UNCONNECTED && lastForwardWay == UNCONNECTED) { //Beginning of new oneway
-                    wct.isOnewayHead = true;
-                    lastForwardWay = i-1;
-                    lastBackwardWay = i-1;
-                    onewayBeginning = true;
-                }
-            }
+    private WayConnectionType computeNextWayConnection(final List<WayConnectionType> con, WayConnectionType lastWct, int i,
+            final RelationMember m) {
+        WayConnectionType wct = new WayConnectionType(false);
+        wct.linkPrev = i > 0 && con.get(i-1) != null && con.get(i-1).isValid();
+        wct.direction = NONE;
 
-            if (wct.linkPrev) {
-                if (lastBackwardWay != UNCONNECTED && lastForwardWay != UNCONNECTED) {
-                    determineOnewayConnectionType(con, m, i, wct);
-                    if (!wct.linkPrev) {
-                        firstGroupIdx = i;
-                    }
-                }
+        if (RelationSortUtils.isOneway(m)) {
+            handleOneway(lastWct, i, wct);
+        }
 
-                if (!RelationSortUtils.isOneway(m) && lastWct != null) {
-                    wct.direction = determineDirection(i-1, lastWct.direction, i);
-                    wct.linkPrev = wct.direction != NONE;
+        if (wct.linkPrev) {
+            if (lastBackwardWay != UNCONNECTED && lastForwardWay != UNCONNECTED) {
+                determineOnewayConnectionType(con, m, i, wct);
+                if (!wct.linkPrev) {
+                    firstGroupIdx = i;
                 }
             }
 
-            if (!wct.linkPrev) {
-                wct.direction = determineDirectionOfFirst(i, m);
-                if (RelationSortUtils.isOneway(m)) {
-                    wct.isOnewayLoopForwardPart = true;
-                    lastForwardWay = i;
-                }
+            if (!RelationSortUtils.isOneway(m) && lastWct != null) {
+                wct.direction = determineDirection(i-1, lastWct.direction, i);
+                wct.linkPrev = wct.direction != NONE;
             }
+        }
 
-            wct.linkNext = false;
-            if (lastWct != null) {
-                lastWct.linkNext = wct.linkPrev;
+        if (!wct.linkPrev) {
+            wct.direction = determineDirectionOfFirst(i, m);
+            if (RelationSortUtils.isOneway(m)) {
+                wct.isOnewayLoopForwardPart = true;
+                lastForwardWay = i;
             }
-            con.set(i, wct);
-            lastWct = wct;
+        }
 
-            if (!wct.linkPrev) {
-                if (i > 0) {
-                    makeLoopIfNeeded(con, i-1);
-                }
-                firstGroupIdx = i;
-            }
+        wct.linkNext = false;
+        if (lastWct != null) {
+            lastWct.linkNext = wct.linkPrev;
         }
-        makeLoopIfNeeded(con, members.size()-1);
+        con.set(i, wct);
+        return wct;
+    }
 
-        return con;
+    private void handleOneway(WayConnectionType lastWct, int i, WayConnectionType wct) {
+        if (lastWct != null && lastWct.isOnewayTail) {
+            wct.isOnewayHead = true;
+        }
+        if (lastBackwardWay == UNCONNECTED && lastForwardWay == UNCONNECTED) { //Beginning of new oneway
+            wct.isOnewayHead = true;
+            lastForwardWay = i-1;
+            lastBackwardWay = i-1;
+            onewayBeginning = true;
+        }
     }
 
     private int firstGroupIdx;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/package-info.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/package-info.java
new file mode 100644
index 0000000..8fb7bf8
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for sorting relations.
+ */
+package org.openstreetmap.josm.gui.dialogs.relation.sort;
diff --git a/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java b/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
index 163819b..fd212c8 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
@@ -16,6 +16,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import javax.swing.JTree;
 import javax.swing.ToolTipManager;
@@ -35,9 +36,6 @@ import org.openstreetmap.josm.gui.preferences.validator.ValidatorPreference;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.MultiMap;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Predicates;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * A panel that displays the error tree. The selection manager
@@ -146,12 +144,7 @@ public class ValidatorTreePanel extends JTree implements Destroyable {
         final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
 
         if (errors == null || errors.isEmpty()) {
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    valTreeModel.setRoot(rootNode);
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> valTreeModel.setRoot(rootNode));
             return;
         }
         // Sort validation errors - #8517
@@ -352,7 +345,7 @@ public class ValidatorTreePanel extends JTree implements Destroyable {
      */
     public void selectRelatedErrors(final Collection<OsmPrimitive> primitives) {
         final Collection<TreePath> paths = new ArrayList<>();
-        walkAndSelectRelatedErrors(new TreePath(getRoot()), Predicates.inCollection(new HashSet<>(primitives)), paths);
+        walkAndSelectRelatedErrors(new TreePath(getRoot()), new HashSet<>(primitives)::contains, paths);
         getSelectionModel().clearSelection();
         for (TreePath path : paths) {
             expandPath(path);
@@ -368,7 +361,7 @@ public class ValidatorTreePanel extends JTree implements Destroyable {
                     && ((DefaultMutableTreeNode) child).getUserObject() instanceof TestError) {
                 final TestError error = (TestError) ((DefaultMutableTreeNode) child).getUserObject();
                 if (error.getPrimitives() != null) {
-                    if (Utils.exists(error.getPrimitives(), isRelevant)) {
+                    if (error.getPrimitives().stream().anyMatch(isRelevant)) {
                         paths.add(p.pathByAddingChild(child));
                     }
                 }
diff --git a/src/org/openstreetmap/josm/gui/download/BookmarkList.java b/src/org/openstreetmap/josm/gui/download/BookmarkList.java
index 1e6ee0e..f39245c 100644
--- a/src/org/openstreetmap/josm/gui/download/BookmarkList.java
+++ b/src/org/openstreetmap/josm/gui/download/BookmarkList.java
@@ -147,7 +147,7 @@ public class BookmarkList extends JList<BookmarkList.Bookmark> {
                 try {
                     bookmarks.add(new Bookmark(entry));
                 } catch (IllegalArgumentException e) {
-                    Main.error(tr("Error reading bookmark entry: %s", e.getMessage()));
+                    Main.error(e, tr("Error reading bookmark entry: %s", e.getMessage()));
                 }
             }
             Collections.sort(bookmarks);
diff --git a/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java b/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
index d947460..a44f4a5 100644
--- a/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
@@ -109,13 +109,10 @@ public class BookmarkSelection implements DownloadSelection {
         GridBagConstraints gc = new GridBagConstraints();
 
         bookmarks = new BookmarkList();
-        bookmarks.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                Bookmark b = bookmarks.getSelectedValue();
-                if (b != null && gui != null) {
-                    gui.boundingBoxChanged(b.getArea(), BookmarkSelection.this);
-                }
+        bookmarks.getSelectionModel().addListSelectionListener(e -> {
+            Bookmark b = bookmarks.getSelectedValue();
+            if (b != null && gui != null) {
+                gui.boundingBoxChanged(b.getArea(), this);
             }
         });
         bookmarks.addMouseListener(new DoubleClickAdapter());
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
index c937092..8bd2e67 100644
--- a/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
+++ b/src/org/openstreetmap/josm/gui/download/DownloadDialog.java
@@ -13,7 +13,6 @@ import java.awt.Font;
 import java.awt.Graphics;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowAdapter;
@@ -31,13 +30,13 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 import javax.swing.KeyStroke;
-import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -47,7 +46,6 @@ import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.OsmUrlToBounds;
-import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
 
 /**
@@ -93,13 +91,8 @@ public class DownloadDialog extends JDialog {
     protected final JPanel buildMainPanel() {
         JPanel pnl = new JPanel(new GridBagLayout());
 
-        final ChangeListener checkboxChangeListener = new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                // size check depends on selected data source
-                updateSizeCheck();
-            }
-        };
+        // size check depends on selected data source
+        final ChangeListener checkboxChangeListener = e -> updateSizeCheck();
 
         // adding the download tasks
         pnl.add(new JLabel(tr("Data Sources and Types:")), GBC.std().insets(5, 5, 1, 5));
@@ -144,6 +137,7 @@ public class DownloadDialog extends JDialog {
         try {
             tpDownloadAreaSelectors.setSelectedIndex(Main.pref.getInteger("download.tab", 0));
         } catch (IndexOutOfBoundsException ex) {
+            Main.trace(ex);
             Main.pref.putInteger("download.tab", 0);
         }
 
@@ -158,12 +152,7 @@ public class DownloadDialog extends JDialog {
         cbStartup.setToolTipText(
                 tr("<html>Autostart ''Download from OSM'' dialog every time JOSM is started.<br>" +
                         "You can open it manually from File menu or toolbar.</html>"));
-        cbStartup.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                 Main.pref.put("download.autorun", cbStartup.isSelected());
-            }
-        });
+        cbStartup.addActionListener(e -> Main.pref.put("download.autorun", cbStartup.isSelected()));
 
         pnl.add(cbNewLayer, GBC.std().anchor(GBC.WEST).insets(5, 5, 5, 5));
         pnl.add(cbStartup, GBC.std().anchor(GBC.WEST).insets(15, 5, 5, 5));
@@ -242,7 +231,7 @@ public class DownloadDialog extends JDialog {
         getRootPane().getActionMap().put("checkClipboardContents", new AbstractAction() {
             @Override
             public void actionPerformed(ActionEvent e) {
-                String clip = Utils.getClipboardContent();
+                String clip = ClipboardUtils.getClipboardStringContent();
                 if (clip == null) {
                     return;
                 }
@@ -256,7 +245,7 @@ public class DownloadDialog extends JDialog {
         restoreSettings();
     }
 
-    private void updateSizeCheck() {
+    protected void updateSizeCheck() {
         boolean isAreaTooLarge = false;
         if (currentBounds == null) {
             sizeCheck.setText(tr("No area selected yet"));
@@ -268,6 +257,10 @@ public class DownloadDialog extends JDialog {
             // see max_request_area in https://github.com/openstreetmap/openstreetmap-website/blob/master/config/example.application.yml
             isAreaTooLarge = currentBounds.getArea() > Main.pref.getDouble("osm-server.max-request-area", 0.25);
         }
+        displaySizeCheckResult(isAreaTooLarge);
+    }
+
+    protected void displaySizeCheckResult(boolean isAreaTooLarge) {
         if (isAreaTooLarge) {
             sizeCheck.setText(tr("Download area too large; will probably be rejected by server"));
             sizeCheck.setForeground(Color.red);
diff --git a/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java b/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java
index a5487c8..c7c2cc4 100644
--- a/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java
+++ b/src/org/openstreetmap/josm/gui/download/DownloadObjectDialog.java
@@ -4,8 +4,6 @@ package org.openstreetmap.josm.gui.download;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Component;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.awt.event.WindowEvent;
 import java.util.Arrays;
 import java.util.Collection;
@@ -69,14 +67,9 @@ public class DownloadObjectDialog extends OsmIdSelectionDialog {
         fullRel.setToolTipText(tr("Select if the members of a relation should be downloaded as well"));
         fullRel.setSelected(Main.pref.getBoolean("downloadprimitive.full", true));
 
-        cbType.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                referrers.setText(cbType.getType() == OsmPrimitiveType.NODE
-                        ? tr("Download referrers (parent relations and ways)")
-                        : tr("Download referrers (parent relations)"));
-            }
-        });
+        cbType.addItemListener(e -> referrers.setText(cbType.getType() == OsmPrimitiveType.NODE
+                ? tr("Download referrers (parent relations and ways)")
+                : tr("Download referrers (parent relations)")));
 
         return Arrays.<Component>asList(referrers, fullRel, newLayer);
     }
diff --git a/src/org/openstreetmap/josm/gui/download/PlaceSelection.java b/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
index ca1941c..db93adc 100644
--- a/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
+++ b/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
@@ -383,18 +383,13 @@ public class PlaceSelection implements DownloadSelection {
             } catch (SAXParseException e) {
                 if (!canceled) {
                     // Nominatim sometimes returns garbage, see #5934, #10643
-                    Main.warn(tr("Error occured with query ''{0}'': ''{1}''", urlString, e.getMessage()));
-                    GuiHelper.runInEDTAndWait(new Runnable() {
-                        @Override
-                        public void run() {
-                            HelpAwareOptionPane.showOptionDialog(
-                                    Main.parent,
-                                    tr("Name server returned invalid data. Please try again."),
-                                    tr("Bad response"),
-                                    JOptionPane.WARNING_MESSAGE, null
-                            );
-                        }
-                    });
+                    Main.warn(e, tr("Error occured with query ''{0}'': ''{1}''", urlString, e.getMessage()));
+                    GuiHelper.runInEDTAndWait(() -> HelpAwareOptionPane.showOptionDialog(
+                            Main.parent,
+                            tr("Name server returned invalid data. Please try again."),
+                            tr("Bad response"),
+                            JOptionPane.WARNING_MESSAGE, null
+                    ));
                 }
             } catch (IOException | ParserConfigurationException e) {
                 if (!canceled) {
diff --git a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
index 5d882cd..b7ec99a 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
@@ -113,15 +113,11 @@ public class HelpBrowser extends JDialog implements IHelpBrowser {
      */
     public static void setUrlForHelpTopic(final String helpTopic) {
         final HelpBrowser browser = getInstance();
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                browser.openHelpTopic(helpTopic);
-                browser.setVisible(true);
-                browser.toFront();
-            }
-        };
-        SwingUtilities.invokeLater(r);
+        SwingUtilities.invokeLater(() -> {
+            browser.openHelpTopic(helpTopic);
+            browser.setVisible(true);
+            browser.toFront();
+        });
     }
 
     /**
@@ -304,14 +300,17 @@ public class HelpBrowser extends JDialog implements IHelpBrowser {
         try {
             content = reader.fetchHelpTopicContent(url, true);
         } catch (MissingHelpContentException e) {
+            Main.trace(e);
             url = getHelpTopicUrl(buildAbsoluteHelpTopic(relativeHelpTopic, LocaleType.BASELANGUAGE));
             try {
                 content = reader.fetchHelpTopicContent(url, true);
             } catch (MissingHelpContentException e1) {
+                Main.trace(e1);
                 url = getHelpTopicUrl(buildAbsoluteHelpTopic(relativeHelpTopic, LocaleType.ENGLISH));
                 try {
                     content = reader.fetchHelpTopicContent(url, true);
                 } catch (MissingHelpContentException e2) {
+                    Main.debug(e2);
                     this.url = url;
                     handleMissingHelpContent(relativeHelpTopic);
                     return;
@@ -347,6 +346,7 @@ public class HelpBrowser extends JDialog implements IHelpBrowser {
         try {
             content = reader.fetchHelpTopicContent(url, true);
         } catch (MissingHelpContentException e) {
+            Main.debug(e);
             this.url = url;
             handleMissingHelpContent(absoluteHelpTopic);
             return;
diff --git a/src/org/openstreetmap/josm/gui/help/Helpful.java b/src/org/openstreetmap/josm/gui/help/Helpful.java
index c3bf92a..1528189 100644
--- a/src/org/openstreetmap/josm/gui/help/Helpful.java
+++ b/src/org/openstreetmap/josm/gui/help/Helpful.java
@@ -4,7 +4,9 @@ package org.openstreetmap.josm.gui.help;
 /**
  * Anything on which we can provide help.
  * @since 2252
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface Helpful {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
index 2baea5b..afe5651 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowser.java
@@ -10,8 +10,6 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.JTabbedPane;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -79,13 +77,10 @@ public class HistoryBrowser extends JPanel {
         JPanel pnl = new JPanel(new BorderLayout());
         pnl.add(tpViewers, BorderLayout.CENTER);
 
-        tpViewers.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                if (tpViewers.getSelectedComponent() == coordinateInfoViewer) {
-                    // while building the component size is not yet known, thus panning does not give reasonable results
-                    coordinateInfoViewer.setDisplayToFitMapMarkers();
-                }
+        tpViewers.addChangeListener(e -> {
+            if (tpViewers.getSelectedComponent() == coordinateInfoViewer) {
+                // while building the component size is not yet known, thus panning does not give reasonable results
+                coordinateInfoViewer.setDisplayToFitMapMarkers();
             }
         });
 
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
index 73cdcfc..220fe1e 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java
@@ -13,6 +13,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.function.Predicate;
 
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
@@ -25,8 +26,7 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.WindowGeometry;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
@@ -67,7 +67,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
         return dialogs.containsKey(id);
     }
 
-    protected void show(long id, HistoryBrowserDialog dialog) {
+    private void show(long id, HistoryBrowserDialog dialog) {
         if (dialogs.values().contains(dialog)) {
             show(id);
         } else {
@@ -77,13 +77,13 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
         }
     }
 
-    protected void show(long id) {
+    private void show(long id) {
         if (dialogs.keySet().contains(id)) {
             dialogs.get(id).toFront();
         }
     }
 
-    protected boolean hasDialogWithCloseUpperLeftCorner(Point p) {
+    private boolean hasDialogWithCloseUpperLeftCorner(Point p) {
         for (HistoryBrowserDialog dialog: dialogs.values()) {
             Point corner = dialog.getLocation();
             if (p.x >= corner.x -5 && corner.x + 5 >= p.x
@@ -93,7 +93,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
         return false;
     }
 
-    protected void placeOnScreen(HistoryBrowserDialog dialog) {
+    private void placeOnScreen(HistoryBrowserDialog dialog) {
         WindowGeometry geometry = new WindowGeometry(WINDOW_GEOMETRY_PREF, WindowGeometry.centerOnScreen(new Dimension(850, 500)));
         geometry.applySafe(dialog);
         Point p = dialog.getLocation();
@@ -176,7 +176,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
      * @param primitives The primitive(s) for which history will be displayed
      */
     public void showHistory(final Collection<? extends PrimitiveId> primitives) {
-        final Collection<? extends PrimitiveId> notNewPrimitives = Utils.filter(primitives, notNewPredicate);
+        final Collection<? extends PrimitiveId> notNewPrimitives = SubclassFilteredCollection.filter(primitives, notNewPredicate);
         if (notNewPrimitives.isEmpty()) {
             JOptionPane.showMessageDialog(
                     Main.parent,
@@ -186,7 +186,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
             return;
         }
 
-        Collection<? extends PrimitiveId> toLoad = Utils.filter(primitives, unloadedHistoryPredicate);
+        Collection<? extends PrimitiveId> toLoad = SubclassFilteredCollection.filter(primitives, unloadedHistoryPredicate);
         if (!toLoad.isEmpty()) {
             HistoryLoadTask task = new HistoryLoadTask();
             for (PrimitiveId p : notNewPrimitives) {
@@ -195,26 +195,17 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
             Main.worker.submit(task);
         }
 
-        Runnable r = new Runnable() {
-
-            @Override
-            public void run() {
-                try {
-                    for (PrimitiveId p : notNewPrimitives) {
-                        final History h = HistoryDataSet.getInstance().getHistory(p);
-                        if (h == null) {
-                            continue;
-                        }
-                        SwingUtilities.invokeLater(new Runnable() {
-                            @Override
-                            public void run() {
-                                show(h);
-                            }
-                        });
+        Runnable r = () -> {
+            try {
+                for (PrimitiveId p : notNewPrimitives) {
+                    final History h = HistoryDataSet.getInstance().getHistory(p);
+                    if (h == null) {
+                        continue;
                     }
-                } catch (final RuntimeException e) {
-                    BugReportExceptionHandler.handleException(e);
+                    SwingUtilities.invokeLater(() -> show(h));
                 }
+            } catch (final RuntimeException e) {
+                BugReportExceptionHandler.handleException(e);
             }
         };
         Main.worker.submit(r);
@@ -225,7 +216,7 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
         private HistoryDataSet hds = HistoryDataSet.getInstance();
 
         @Override
-        public boolean evaluate(PrimitiveId p) {
+        public boolean test(PrimitiveId p) {
             History h = hds.getHistory(p);
             if (h == null)
                 // reload if the history is not in the cache yet
@@ -236,11 +227,5 @@ public final class HistoryBrowserDialogManager implements LayerChangeListener {
         }
     };
 
-    private final Predicate<PrimitiveId> notNewPredicate = new Predicate<PrimitiveId>() {
-
-        @Override
-        public boolean evaluate(PrimitiveId p) {
-            return !p.isNew();
-        }
-    };
+    private final Predicate<PrimitiveId> notNewPredicate = p -> !p.isNew();
 }
diff --git a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
index b2f4144..639ecbe 100644
--- a/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
+++ b/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java
@@ -143,6 +143,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
         try {
             HistoryOsmPrimitive.forOsmPrimitive(primitive);
         } catch (IllegalArgumentException ign) {
+            Main.trace(ign);
             return false;
         }
 
@@ -580,6 +581,16 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
 
         @Override
         public Object getValueAt(int row, int column) {
+            return getKeyAt(row);
+        }
+
+        /**
+         * Get the key for the given row.
+         * @param row The row
+         * @return The key in that row.
+         * @since 10637
+         */
+        public String getKeyAt(int row) {
             return keys.get(row);
         }
 
@@ -635,7 +646,7 @@ public class HistoryBrowserModel extends ChangeNotifier implements ActiveLayerCh
 
         @Override
         public int getColumnCount() {
-            return 1;
+            return 2;
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/history/NodeListViewer.java b/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
index d3c7f7b..799e426 100644
--- a/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
+++ b/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
@@ -297,20 +297,12 @@ public class NodeListViewer extends JPanel {
             if (HistoryDataSet.getInstance().getHistory(primitiveId) == null) {
                 Main.worker.submit(new HistoryLoadTask().add(primitiveId));
             }
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    final History h = HistoryDataSet.getInstance().getHistory(primitiveId);
-                    if (h == null)
-                        return;
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override public void run() {
-                            HistoryBrowserDialogManager.getInstance().show(h);
-                        }
-                    });
-                }
-            };
-            Main.worker.submit(r);
+            Main.worker.submit(() -> {
+                final History h = HistoryDataSet.getInstance().getHistory(primitiveId);
+                if (h == null)
+                    return;
+                GuiHelper.runInEDT(() -> HistoryBrowserDialogManager.getInstance().show(h));
+            });
         }
 
         public void updateEnabledState() {
diff --git a/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java b/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java
index 00fa272..aa6ce6a 100644
--- a/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java
+++ b/src/org/openstreetmap/josm/gui/history/SelectionSynchronizer.java
@@ -12,6 +12,7 @@ import javax.swing.event.ListSelectionListener;
 public class SelectionSynchronizer implements ListSelectionListener {
 
     private final Set<ListSelectionModel> participants;
+    private boolean preventRecursion;
 
     /**
      * Constructs a new {@code SelectionSynchronizer}.
@@ -31,6 +32,10 @@ public class SelectionSynchronizer implements ListSelectionListener {
 
     @Override
     public void valueChanged(ListSelectionEvent e) {
+        if (preventRecursion) {
+            return;
+        }
+        preventRecursion = true;
         DefaultListSelectionModel referenceModel = (DefaultListSelectionModel) e.getSource();
         int i = referenceModel.getMinSelectionIndex();
         for (ListSelectionModel model : participants) {
@@ -39,5 +44,6 @@ public class SelectionSynchronizer implements ListSelectionListener {
             }
             model.setSelectionInterval(i, i);
         }
+        preventRecursion = false;
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java b/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java
new file mode 100644
index 0000000..26d135a
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/history/TagInfoTransferHandler.java
@@ -0,0 +1,47 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.history;
+
+import java.awt.datatransfer.Clipboard;
+
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.TransferHandler;
+import javax.swing.table.TableModel;
+
+import org.openstreetmap.josm.data.osm.TagMap;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.datatransfer.TagTransferable;
+import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
+import org.openstreetmap.josm.gui.history.HistoryBrowserModel.TagTableModel;
+
+/**
+ * This transfer handler allows to select and copy tags from a table with the {@link TagTableColumnModel}.
+ * @author Michael Zangl
+ * @since 10637
+ */
+public class TagInfoTransferHandler extends TransferHandler {
+
+    @Override
+    public void exportToClipboard(JComponent comp, Clipboard clip, int action) {
+        if (comp instanceof JTable) {
+            TableModel model = ((JTable) comp).getModel();
+            if (model instanceof TagTableModel) {
+                exportFromModel((JTable) comp, (TagTableModel) model);
+            }
+        }
+    }
+
+    private static void exportFromModel(JTable comp, TagTableModel model) {
+        int[] selected = comp.getSelectedRows();
+        TagMap tags = new TagMap();
+        for (int row : selected) {
+            String key = model.getKeyAt(row);
+            String value = model.getValue(key);
+            if (value != null) {
+                tags.put(key, value);
+            }
+        }
+        TagTransferData data = new TagTransferData(tags);
+        ClipboardUtils.copy(new TagTransferable(data));
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java b/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
index d354dde..7aef483 100644
--- a/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
+++ b/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
@@ -1,6 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.history;
 
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 
@@ -15,6 +18,30 @@ import javax.swing.ListSelectionModel;
  *
  */
 public class TagInfoViewer extends HistoryViewerPanel {
+    private static final class RepaintOnFocusChange implements FocusListener {
+        @Override
+        public void focusLost(FocusEvent e) {
+            repaintSelected(e);
+        }
+
+        @Override
+        public void focusGained(FocusEvent e) {
+            repaintSelected(e);
+        }
+
+        private static void repaintSelected(FocusEvent e) {
+            // we would only need the selected rows, but this is easier:
+            e.getComponent().repaint();
+        }
+    }
+
+    /**
+     * Constructs a new {@code TagInfoViewer}.
+     * @param model The history browsing model
+     */
+    public TagInfoViewer(HistoryBrowserModel model) {
+        super(model);
+    }
 
     @Override
     protected JTable buildReferenceTable() {
@@ -23,8 +50,7 @@ public class TagInfoViewer extends HistoryViewerPanel {
                 new TagTableColumnModel()
         );
         table.setName("table.referencetagtable");
-        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        selectionSynchronizer.participateInSynchronizedSelection(table.getSelectionModel());
+        setUpDataTransfer(table);
         return table;
     }
 
@@ -35,16 +61,14 @@ public class TagInfoViewer extends HistoryViewerPanel {
                 new TagTableColumnModel()
         );
         table.setName("table.currenttagtable");
-        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-        selectionSynchronizer.participateInSynchronizedSelection(table.getSelectionModel());
+        setUpDataTransfer(table);
         return table;
     }
 
-    /**
-     * Constructs a new {@code TagInfoViewer}.
-     * @param model The history browsing model
-     */
-    public TagInfoViewer(HistoryBrowserModel model) {
-        super(model);
+    private void setUpDataTransfer(JTable table) {
+        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        selectionSynchronizer.participateInSynchronizedSelection(table.getSelectionModel());
+        table.setTransferHandler(new TagInfoTransferHandler());
+        table.addFocusListener(new RepaintOnFocusChange());
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java b/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
index a773cae..8eb243f 100644
--- a/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
+++ b/src/org/openstreetmap/josm/gui/history/TagTableCellRenderer.java
@@ -16,7 +16,14 @@ import org.openstreetmap.josm.gui.util.GuiHelper;
  *
  */
 public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
-    public static final Color BGCOLOR_SELECTED = new Color(143, 170, 255);
+    /**
+     * The background color for a selected row that has the focus.
+     */
+    public static final Color BGCOLOR_SELECTED_FOCUS = new Color(0xff8faaff);
+    /**
+     * The background color for a selected row while the table is not focused.
+     */
+    public static final Color BGCOLOR_SELECTED = new Color(0xffafc2ff);
 
     /**
      * Constructs a new {@code TagTableCellRenderer}.
@@ -25,19 +32,24 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         setOpaque(true);
     }
 
-    protected void setBackgroundReadable(String key, HistoryBrowserModel.TagTableModel model, boolean isSelected, boolean isValue) {
+    protected void setBackgroundReadable(String key, HistoryBrowserModel.TagTableModel model, boolean isSelected, boolean hasFocus,
+            boolean isValue) {
         Color bgColor = UIManager.getColor("Table.background");
-        if (!model.hasTag(key) && model.isCurrentPointInTime()
-                || !model.oppositeHasTag(key) && model.isReferencePointInTime()) {
+        if ((!model.hasTag(key) && model.isCurrentPointInTime())
+                || (!model.oppositeHasTag(key) && model.isReferencePointInTime())) {
             bgColor = TwoColumnDiff.Item.DiffItemType.DELETED.getColor();
-        } else if (!model.oppositeHasTag(key) && model.isCurrentPointInTime()
-                || !model.hasTag(key) && model.isReferencePointInTime()) {
+        } else if ((!model.oppositeHasTag(key) && model.isCurrentPointInTime())
+                || (!model.hasTag(key) && model.isReferencePointInTime())) {
             bgColor = TwoColumnDiff.Item.DiffItemType.INSERTED.getColor();
         } else if (isValue && model.hasTag(key) && model.oppositeHasTag(key) && !model.hasSameValueAsOpposite(key)) {
             bgColor = TwoColumnDiff.Item.DiffItemType.CHANGED.getColor();
         }
         if (isSelected) {
-            bgColor = BGCOLOR_SELECTED;
+            if (hasFocus) {
+                bgColor = BGCOLOR_SELECTED_FOCUS;
+            } else {
+                bgColor = BGCOLOR_SELECTED;
+            }
         }
 
         GuiHelper.setBackgroundReadable(this, bgColor);
@@ -53,22 +65,24 @@ public class TagTableCellRenderer extends JLabel implements TableCellRenderer {
         String key = (String) value;
         HistoryBrowserModel.TagTableModel model = getTagTableModel(table);
 
-        switch(column) {
-        case 0:
-            // the name column
-            setText(model.hasTag(key) ? key : "");
-            setToolTipText(getText());
-            setBackgroundReadable(key, model, isSelected, false);
-            break;
-        case 1:
-            // the value column
-            setText(model.hasTag(key) ? model.getValue(key) : "");
-            setToolTipText(getText());
-            setBackgroundReadable(key, model, isSelected, true);
-            break;
-        default: // Do nothing
+        String text = "";
+        if (model.hasTag(key)) {
+            switch(column) {
+            case TagTableColumnModel.COLUMN_KEY:
+                // the name column
+                text = key;
+                break;
+            case TagTableColumnModel.COLUMN_VALUE:
+                // the value column
+                text = model.getValue(key);
+                break;
+            default: // Do nothing
+            }
         }
 
+        setText(text);
+        setToolTipText(text);
+        setBackgroundReadable(key, model, isSelected, table.hasFocus(), column == TagTableColumnModel.COLUMN_VALUE);
         return this;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java b/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java
index 0c8eb16..3289439 100644
--- a/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java
+++ b/src/org/openstreetmap/josm/gui/history/TagTableColumnModel.java
@@ -11,6 +11,8 @@ import javax.swing.table.TableColumn;
  * @since 1709
  */
 public class TagTableColumnModel extends DefaultTableColumnModel {
+    protected static final int COLUMN_KEY = 0;
+    protected static final int COLUMN_VALUE = 1;
 
     /**
      * Constructs a new {@code TagTableColumnModel}.
diff --git a/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java b/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
index 72329b6..56fab48 100644
--- a/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
+++ b/src/org/openstreetmap/josm/gui/history/TwoColumnDiff.java
@@ -63,7 +63,7 @@ class TwoColumnDiff {
     private final Object[] current;
     boolean referenceReversed;
 
-    TwoColumnDiff(Object[] reference, Object[] current) {
+    TwoColumnDiff(Object[] reference, Object ... current) {
         this.reference = Utils.copyArray(reference);
         this.current = Utils.copyArray(current);
         referenceDiff = new ArrayList<>();
@@ -72,13 +72,13 @@ class TwoColumnDiff {
     }
 
     private void diff() {
-        Diff.Change script = new Diff(reference, current).diff_2(false);
+        Diff.Change script = new Diff(reference, current).diff2(false);
         // attempt diff with reference reversed and test whether less deletions+inserts are required
         Object[] referenceReversed = Utils.copyArray(reference);
         Collections.reverse(Arrays.asList(referenceReversed));
-        Diff.Change scriptReversed = new Diff(referenceReversed, current).diff_2(false);
+        Diff.Change scriptReversed = new Diff(referenceReversed, current).diff2(false);
         if (scriptReversed == null /* reference and current are identical */
-                || script != null && scriptReversed.getTotalNumberOfChanges() < script.getTotalNumberOfChanges()) {
+                || (script != null && scriptReversed.getTotalNumberOfChanges() < script.getTotalNumberOfChanges())) {
             this.referenceReversed = true;
             twoColumnDiffFromScript(scriptReversed, referenceReversed, current, true);
         } else {
diff --git a/src/org/openstreetmap/josm/gui/history/VersionTable.java b/src/org/openstreetmap/josm/gui/history/VersionTable.java
index 9e75682..7569930 100644
--- a/src/org/openstreetmap/josm/gui/history/VersionTable.java
+++ b/src/org/openstreetmap/josm/gui/history/VersionTable.java
@@ -24,8 +24,6 @@ import javax.swing.SwingConstants;
 import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
 import javax.swing.table.TableCellRenderer;
 
 import org.openstreetmap.josm.Main;
@@ -92,15 +90,12 @@ public class VersionTable extends JTable implements ChangeListener {
                 }
             }
         });
-        getModel().addTableModelListener(new TableModelListener() {
-            @Override
-            public void tableChanged(TableModelEvent e) {
-                adjustColumnWidth(VersionTable.this, 0, 0);
-                adjustColumnWidth(VersionTable.this, 1, -8);
-                adjustColumnWidth(VersionTable.this, 2, -8);
-                adjustColumnWidth(VersionTable.this, 3, 0);
-                adjustColumnWidth(VersionTable.this, 4, 0);
-            }
+        getModel().addTableModelListener(e -> {
+            adjustColumnWidth(this, 0, 0);
+            adjustColumnWidth(this, 1, -8);
+            adjustColumnWidth(this, 2, -8);
+            adjustColumnWidth(this, 3, 0);
+            adjustColumnWidth(this, 4, 0);
         });
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java b/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
index 388718b..fcc6821 100644
--- a/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
+++ b/src/org/openstreetmap/josm/gui/io/AbstractPrimitiveTask.java
@@ -183,14 +183,11 @@ public abstract class AbstractPrimitiveTask extends PleaseWaitRunnable {
             ExceptionDialogUtil.explainException(lastException);
             return;
         }
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                layer.mergeFrom(ds);
-                if (zoom && Main.map != null)
-                    AutoScaleAction.zoomTo(ds.allPrimitives());
-                layer.onPostDownloadFromServer();
-            }
+        GuiHelper.runInEDTAndWait(() -> {
+            layer.mergeFrom(ds);
+            if (zoom && Main.map != null)
+                AutoScaleAction.zoomTo(ds.allPrimitives());
+            layer.onPostDownloadFromServer();
         });
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java b/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
index d57ee95..c1cd242 100644
--- a/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
+++ b/src/org/openstreetmap/josm/gui/io/ActionFlagsTableCell.java
@@ -39,12 +39,7 @@ class ActionFlagsTableCell extends JPanel implements TableCellRenderer, TableCel
     private final JCheckBox[] checkBoxes = new JCheckBox[2];
     private final transient CellEditorSupport cellEditorSupport = new CellEditorSupport(this);
 
-    private final transient ActionListener al = new ActionListener() {
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            cellEditorSupport.fireEditingStopped();
-        }
-    };
+    private final transient ActionListener al = e -> cellEditorSupport.fireEditingStopped();
 
     /**
      * Constructs a new {@code ActionFlagsTableCell}.
diff --git a/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java b/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
index 6e5dd42..9e61b39 100644
--- a/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
@@ -23,7 +23,6 @@ import javax.swing.JPanel;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.HyperlinkEvent;
-import javax.swing.event.HyperlinkListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
@@ -69,15 +68,12 @@ public class BasicUploadSettingsPanel extends JPanel {
 
         JEditorPane sourceLabel = new JMultilineLabel("<html><b>" + tr("Specify the data source for the changes")
                 + "</b> (<a href=\"urn:changeset-source\">" + tr("obtain from current layers") + "</a>)<b>:</b>");
-        sourceLabel.addHyperlinkListener(new HyperlinkListener() {
-            @Override
-            public void hyperlinkUpdate(HyperlinkEvent e) {
-                if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
-                    final String source = Main.map.mapView.getLayerInformationForSourceTag();
-                    hcbUploadSource.setText(Utils.shortenString(source, Changeset.MAX_CHANGESET_TAG_LENGTH));
-                    // Fix #9965
-                    changesetSourceModel.setComment(hcbUploadSource.getText());
-                }
+        sourceLabel.addHyperlinkListener(e -> {
+            if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
+                final String source = Main.map.mapView.getLayerInformationForSourceTag();
+                hcbUploadSource.setText(Utils.shortenString(source, Changeset.MAX_CHANGESET_TAG_LENGTH));
+                // Fix #9965
+                changesetSourceModel.setComment(hcbUploadSource.getText());
             }
         });
         pnl.add(sourceLabel, GBC.eol().insets(0, 8, 10, 3).fill(GBC.HORIZONTAL));
diff --git a/src/org/openstreetmap/josm/gui/io/CloseChangesetTask.java b/src/org/openstreetmap/josm/gui/io/CloseChangesetTask.java
index 8e60845..abbb836 100644
--- a/src/org/openstreetmap/josm/gui/io/CloseChangesetTask.java
+++ b/src/org/openstreetmap/josm/gui/io/CloseChangesetTask.java
@@ -57,14 +57,7 @@ public class CloseChangesetTask extends PleaseWaitRunnable {
         if (lastException != null) {
             ExceptionDialogUtil.explainException(lastException);
         }
-        SwingUtilities.invokeLater(
-                new Runnable() {
-                    @Override
-                    public void run() {
-                        ChangesetCache.getInstance().update(closedChangesets);
-                    }
-                }
-        );
+        SwingUtilities.invokeLater(() -> ChangesetCache.getInstance().update(closedChangesets));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/io/CredentialDialog.java b/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
index 6fc5993..e93ebda 100644
--- a/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/CredentialDialog.java
@@ -109,7 +109,7 @@ public class CredentialDialog extends JDialog {
         try {
             setAlwaysOnTop(true);
         } catch (SecurityException e) {
-            Main.warn(tr("Failed to put Credential Dialog always on top. Caught security exception."));
+            Main.warn(e, tr("Failed to put Credential Dialog always on top. Caught security exception."));
         }
         build();
     }
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java b/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
index e7751f2..3fcea67 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadOpenChangesetsTask.java
@@ -84,19 +84,11 @@ public class DownloadOpenChangesetsTask extends PleaseWaitRunnable {
             );
             return;
         }
-        SwingUtilities.invokeLater(
-                new Runnable() {
-                    @Override public void run() {
-                        ChangesetCache.getInstance().update(changesets);
-                    }
-                }
-        );
+        SwingUtilities.invokeLater(() -> ChangesetCache.getInstance().update(changesets));
     }
 
     /**
-     * Refreshes the user info from the server. This is necessary if we don't know
-     * the users id yet.
-     *
+     * Refreshes the user info from the server. This is necessary if we don't know the users id yet.
      */
     protected void refreshUserIdentity() {
         JosmUserIdentityManager im = JosmUserIdentityManager.getInstance();
@@ -117,7 +109,7 @@ public class DownloadOpenChangesetsTask extends PleaseWaitRunnable {
             if (im.isFullyIdentified()) {
                 im.setPartiallyIdentified(im.getUserName());
             }
-            Main.warn(tr("Failed to retrieve user infos for the current JOSM user. Exception was: {0}", e.toString()));
+            Main.warn(e, tr("Failed to retrieve user infos for the current JOSM user. Exception was: {0}", e.toString()));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
index 4d7f792..0c9f7ca 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
@@ -137,22 +137,17 @@ public class DownloadPrimitivesWithReferrersTask extends PleaseWaitRunnable {
         // Warm about missing primitives
         final Set<PrimitiveId> errs = mainTask.getMissingPrimitives();
         if (errs != null && !errs.isEmpty())
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    reportProblemDialog(errs,
-                            trn("Object could not be downloaded", "Some objects could not be downloaded", errs.size()),
-                            trn("One object could not be downloaded.<br>",
-                                    "{0} objects could not be downloaded.<br>",
-                                    errs.size(),
-                                    errs.size())
-                                    + tr("The server replied with response code 404.<br>"
-                                         + "This usually means, the server does not know an object with the requested id."),
-                            tr("missing objects:"),
-                            JOptionPane.ERROR_MESSAGE
-                            ).showDialog();
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> reportProblemDialog(errs,
+                    trn("Object could not be downloaded", "Some objects could not be downloaded", errs.size()),
+                    trn("One object could not be downloaded.<br>",
+                            "{0} objects could not be downloaded.<br>",
+                            errs.size(),
+                            errs.size())
+                            + tr("The server replied with response code 404.<br>"
+                                 + "This usually means, the server does not know an object with the requested id."),
+                    tr("missing objects:"),
+                    JOptionPane.ERROR_MESSAGE
+                    ).showDialog());
 
         // Warm about deleted primitives
         final Set<PrimitiveId> del = new HashSet<>();
@@ -164,21 +159,16 @@ public class DownloadPrimitivesWithReferrersTask extends PleaseWaitRunnable {
             }
         }
         if (!del.isEmpty())
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    reportProblemDialog(del,
-                            trn("Object deleted", "Objects deleted", del.size()),
-                            trn(
-                                "One downloaded object is deleted.",
-                                "{0} downloaded objects are deleted.",
-                                del.size(),
-                                del.size()),
-                            null,
-                            JOptionPane.WARNING_MESSAGE
-                    ).showDialog();
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> reportProblemDialog(del,
+                    trn("Object deleted", "Objects deleted", del.size()),
+                    trn(
+                        "One downloaded object is deleted.",
+                        "{0} downloaded objects are deleted.",
+                        del.size(),
+                        del.size()),
+                    null,
+                    JOptionPane.WARNING_MESSAGE
+            ).showDialog());
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java b/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
index 47b9dfc..909ae2c 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
@@ -492,6 +492,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
                     //
                     currentFuture.get();
                 } catch (CancellationException e) {
+                    Main.trace(e);
                     model.setUploadState(layer, UploadOrSaveState.CANCELED);
                 } catch (InterruptedException | ExecutionException e) {
                     Main.error(e);
@@ -533,6 +534,7 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
                     //
                     currentFuture.get();
                 } catch (CancellationException e) {
+                    Main.trace(e);
                     model.setSaveState(layerInfo.getLayer(), UploadOrSaveState.CANCELED);
                 } catch (InterruptedException | ExecutionException e) {
                     Main.error(e);
@@ -578,30 +580,27 @@ public class SaveLayersDialog extends JDialog implements TableModelListener {
 
         @Override
         public void run() {
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    model.setMode(SaveLayersModel.Mode.UPLOADING_AND_SAVING);
-                    List<SaveLayerInfo> toUpload = model.getLayersToUpload();
-                    if (!toUpload.isEmpty()) {
-                        uploadLayers(toUpload);
-                    }
-                    List<SaveLayerInfo> toSave = model.getLayersToSave();
-                    if (!toSave.isEmpty()) {
-                        saveLayers(toSave);
-                    }
-                    model.setMode(SaveLayersModel.Mode.EDITING_DATA);
-                    if (model.hasUnsavedData()) {
-                        warnBecauseOfUnsavedData();
-                        model.setMode(Mode.EDITING_DATA);
-                        if (canceled) {
-                            setUserAction(UserAction.CANCEL);
-                            closeDialog();
-                        }
-                    } else {
-                        setUserAction(UserAction.PROCEED);
+            GuiHelper.runInEDTAndWait(() -> {
+                model.setMode(SaveLayersModel.Mode.UPLOADING_AND_SAVING);
+                List<SaveLayerInfo> toUpload = model.getLayersToUpload();
+                if (!toUpload.isEmpty()) {
+                    uploadLayers(toUpload);
+                }
+                List<SaveLayerInfo> toSave = model.getLayersToSave();
+                if (!toSave.isEmpty()) {
+                    saveLayers(toSave);
+                }
+                model.setMode(SaveLayersModel.Mode.EDITING_DATA);
+                if (model.hasUnsavedData()) {
+                    warnBecauseOfUnsavedData();
+                    model.setMode(Mode.EDITING_DATA);
+                    if (canceled) {
+                        setUserAction(UserAction.CANCEL);
                         closeDialog();
                     }
+                } else {
+                    setUserAction(UserAction.PROCEED);
+                    closeDialog();
                 }
             });
             worker.shutdownNow();
diff --git a/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java b/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java
index 6313595..e4ac284 100644
--- a/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java
+++ b/src/org/openstreetmap/josm/gui/io/SaveLayersModel.java
@@ -5,7 +5,6 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.io.File;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
@@ -71,15 +70,7 @@ public class SaveLayersModel extends DefaultTableModel {
         for (AbstractModifiableLayer layer: layers) {
             layerInfo.add(new SaveLayerInfo(layer));
         }
-        Collections.sort(
-                layerInfo,
-                new Comparator<SaveLayerInfo>() {
-                    @Override
-                    public int compare(SaveLayerInfo o1, SaveLayerInfo o2) {
-                        return o1.compareTo(o2);
-                    }
-                }
-        );
+        layerInfo.sort(Comparator.naturalOrder());
         fireTableDataChanged();
     }
 
diff --git a/src/org/openstreetmap/josm/gui/io/UploadDialog.java b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
index ed679fa..ea8d2a3 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadDialog.java
@@ -5,7 +5,6 @@ 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.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
@@ -59,6 +58,7 @@ import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
+import org.openstreetmap.josm.tools.MultiLineFlowLayout;
 
 /**
  * This is a dialog for entering upload options like the parameters for
@@ -165,6 +165,8 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
         tpConfigPanels.setToolTipTextAt(3, tr("Configure advanced settings"));
 
         pnl.add(tpConfigPanels, GBC.eol().fill(GBC.HORIZONTAL));
+
+        pnl.add(buildActionPanel(), GBC.eol().fill(GBC.HORIZONTAL));
         return pnl;
     }
 
@@ -174,7 +176,7 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
      * @return The panel with the OK and CANCEL buttons
      */
     protected JPanel buildActionPanel() {
-        JPanel pnl = new JPanel(new FlowLayout(FlowLayout.CENTER));
+        JPanel pnl = new JPanel(new MultiLineFlowLayout(FlowLayout.CENTER));
         pnl.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 
         // -- upload button
@@ -201,9 +203,7 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
      */
     protected void build() {
         setTitle(tr("Upload to ''{0}''", OsmApi.getOsmApi().getBaseUrl()));
-        getContentPane().setLayout(new BorderLayout());
-        getContentPane().add(buildContentPanel(), BorderLayout.CENTER);
-        getContentPane().add(buildActionPanel(), BorderLayout.SOUTH);
+        setContentPane(buildContentPanel());
 
         addWindowListener(new WindowEventHandler());
 
@@ -252,7 +252,7 @@ public class UploadDialog extends AbstractUploadDialog implements PropertyChange
                 }
         );
 
-        setMinimumSize(new Dimension(300, 350));
+        setMinimumSize(new Dimension(600, 350));
 
         Main.pref.addPreferenceChangeListener(this);
     }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
index 529be6d..5566b35 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadPrimitivesTask.java
@@ -218,21 +218,19 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
     protected void cleanupAfterUpload() {
         // we always clean up the data, even in case of errors. It's possible the data was
         // partially uploaded. Better run on EDT.
-        //
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                layer.cleanupAfterUpload(processedPrimitives);
-                layer.onPostUploadToServer();
-                ChangesetCache.getInstance().update(changeset);
-            }
+        Runnable r = () -> {
+            layer.cleanupAfterUpload(processedPrimitives);
+            layer.onPostUploadToServer();
+            ChangesetCache.getInstance().update(changeset);
         };
 
         try {
             SwingUtilities.invokeAndWait(r);
         } catch (InterruptedException e) {
+            Main.trace(e);
             lastException = e;
         } catch (InvocationTargetException e) {
+            Main.trace(e);
             lastException = new OsmTransferException(e.getCause());
         }
     }
@@ -319,53 +317,48 @@ public class UploadPrimitivesTask extends AbstractUploadTask {
         // - to an error dialog
         // - to the Upload Dialog
         // - to map editing
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                // if the changeset is still open after this upload we want it to
-                // be selected on the next upload
-                //
-                ChangesetCache.getInstance().update(changeset);
-                if (changeset != null && changeset.isOpen()) {
-                    UploadDialog.getUploadDialog().setSelectedChangesetForNextUpload(changeset);
-                }
-                if (uploadCanceled) return;
-                if (lastException == null) {
-                    new Notification(
-                            "<h3>" + tr("Upload successful!") + "</h3>")
-                            .setIcon(ImageProvider.get("misc", "check_large"))
-                            .show();
+        GuiHelper.runInEDT(() -> {
+            // if the changeset is still open after this upload we want it to be selected on the next upload
+            ChangesetCache.getInstance().update(changeset);
+            if (changeset != null && changeset.isOpen()) {
+                UploadDialog.getUploadDialog().setSelectedChangesetForNextUpload(changeset);
+            }
+            if (uploadCanceled) return;
+            if (lastException == null) {
+                new Notification(
+                        "<h3>" + tr("Upload successful!") + "</h3>")
+                        .setIcon(ImageProvider.get("misc", "check_large"))
+                        .show();
+                return;
+            }
+            if (lastException instanceof ChangesetClosedException) {
+                ChangesetClosedException e = (ChangesetClosedException) lastException;
+                if (e.getSource().equals(ChangesetClosedException.Source.UPDATE_CHANGESET)) {
+                    handleFailedUpload(lastException);
                     return;
                 }
-                if (lastException instanceof ChangesetClosedException) {
-                    ChangesetClosedException e = (ChangesetClosedException) lastException;
-                    if (e.getSource().equals(ChangesetClosedException.Source.UPDATE_CHANGESET)) {
-                        handleFailedUpload(lastException);
-                        return;
-                    }
-                    if (strategy.getPolicy() == null)
-                        /* do nothing if unknown policy */
-                        return;
-                    if (e.getSource().equals(ChangesetClosedException.Source.UPLOAD_DATA)) {
-                        switch(strategy.getPolicy()) {
-                        case ABORT:
-                            break; /* do nothing - we return to map editing */
-                        case AUTOMATICALLY_OPEN_NEW_CHANGESETS:
-                            break; /* do nothing - we return to map editing */
-                        case FILL_ONE_CHANGESET_AND_RETURN_TO_UPLOAD_DIALOG:
-                            // return to the upload dialog
-                            //
-                            toUpload.removeProcessed(processedPrimitives);
-                            UploadDialog.getUploadDialog().setUploadedPrimitives(toUpload);
-                            UploadDialog.getUploadDialog().setVisible(true);
-                            break;
-                        }
-                    } else {
-                        handleFailedUpload(lastException);
+                if (strategy.getPolicy() == null)
+                    /* do nothing if unknown policy */
+                    return;
+                if (e.getSource().equals(ChangesetClosedException.Source.UPLOAD_DATA)) {
+                    switch(strategy.getPolicy()) {
+                    case ABORT:
+                        break; /* do nothing - we return to map editing */
+                    case AUTOMATICALLY_OPEN_NEW_CHANGESETS:
+                        break; /* do nothing - we return to map editing */
+                    case FILL_ONE_CHANGESET_AND_RETURN_TO_UPLOAD_DIALOG:
+                        // return to the upload dialog
+                        //
+                        toUpload.removeProcessed(processedPrimitives);
+                        UploadDialog.getUploadDialog().setUploadedPrimitives(toUpload);
+                        UploadDialog.getUploadDialog().setVisible(true);
+                        break;
                     }
                 } else {
                     handleFailedUpload(lastException);
                 }
+            } else {
+                handleFailedUpload(lastException);
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
index 8916d09..a5499d1 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadSelectionDialog.java
@@ -201,18 +201,16 @@ public class UploadSelectionDialog extends JDialog {
         protected void sort() {
             if (data == null)
                 return;
-            Collections.sort(
-                    data,
-                    new Comparator<OsmPrimitive>() {
-                        private DefaultNameFormatter formatter = DefaultNameFormatter.getInstance();
-                        @Override
-                        public int compare(OsmPrimitive o1, OsmPrimitive o2) {
-                            int ret = OsmPrimitiveType.from(o1).compareTo(OsmPrimitiveType.from(o2));
-                            if (ret != 0)
-                                return ret;
-                            return o1.getDisplayName(formatter).compareTo(o1.getDisplayName(formatter));
-                        }
+            data.sort(new Comparator<OsmPrimitive>() {
+                    private DefaultNameFormatter formatter = DefaultNameFormatter.getInstance();
+                    @Override
+                    public int compare(OsmPrimitive o1, OsmPrimitive o2) {
+                        int ret = OsmPrimitiveType.from(o1).compareTo(OsmPrimitiveType.from(o2));
+                        if (ret != 0)
+                            return ret;
+                        return o1.getDisplayName(formatter).compareTo(o1.getDisplayName(formatter));
                     }
+                }
             );
         }
 
@@ -240,7 +238,7 @@ public class UploadSelectionDialog extends JDialog {
             return data.size();
         }
 
-        public List<OsmPrimitive> getPrimitives(int[] indices) {
+        public List<OsmPrimitive> getPrimitives(int ... indices) {
             if (indices == null || indices.length == 0)
                 return Collections.emptyList();
             List<OsmPrimitive> ret = new ArrayList<>(indices.length);
diff --git a/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java b/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
index 3239865..958eb8e 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadStrategySelectionPanel.java
@@ -317,9 +317,7 @@ public class UploadStrategySelectionPanel extends JPanel implements PropertyChan
             Main.pref.putInteger("osm-server.upload-strategy.chunk-size", chunkSize);
         } catch (NumberFormatException e) {
             // don't save invalid value to preferences
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java b/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java
index 6db4ac4..dd7a7db 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractMapViewPaintable.java
@@ -90,7 +90,7 @@ public abstract class AbstractMapViewPaintable implements MapViewPaintable {
      */
     public void invalidate() {
         for (PaintableInvalidationListener l : invalidationListeners) {
-            l.paintablInvalidated(new PaintableInvalidationEvent(this));
+            l.paintableInvalidated(new PaintableInvalidationEvent(this));
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
index b04e819..faf94af 100644
--- a/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/AbstractTileSourceLayer.java
@@ -12,11 +12,12 @@ import java.awt.Graphics2D;
 import java.awt.GridBagLayout;
 import java.awt.Image;
 import java.awt.Point;
-import java.awt.Rectangle;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.awt.image.ImageObserver;
 import java.io.File;
@@ -36,6 +37,7 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Stream;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -63,28 +65,38 @@ import org.openstreetmap.gui.jmapviewer.interfaces.TileLoaderListener;
 import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.ImageryAdjustAction;
 import org.openstreetmap.josm.actions.RenameLayerAction;
 import org.openstreetmap.josm.actions.SaveActionBase;
 import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.TMSCachedTileLoader;
 import org.openstreetmap.josm.data.imagery.TileLoaderFactory;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
-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.MapFrame;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.MapViewState.MapViewRectangle;
 import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings.FilterChangeListener;
+import org.openstreetmap.josm.gui.layer.imagery.TileCoordinateConverter;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings.DisplaySettingsChangeEvent;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings.DisplaySettingsChangeListener;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.WMSLayerImporter;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.MemoryManager;
+import org.openstreetmap.josm.tools.MemoryManager.MemoryHandle;
+import org.openstreetmap.josm.tools.MemoryManager.NotEnoughMemoryException;
 
 /**
  * Base abstract class that supports displaying images provided by TileSource. It might be TMS source, WMS or WMTS
@@ -98,8 +110,14 @@ import org.openstreetmap.josm.tools.GBC;
  * @since 8526 (copied from TMSLayer)
  */
 public abstract class AbstractTileSourceLayer<T extends AbstractTMSTileSource> extends ImageryLayer
-implements ImageObserver, TileLoaderListener, ZoomChangeListener {
+implements ImageObserver, TileLoaderListener, ZoomChangeListener, FilterChangeListener, DisplaySettingsChangeListener {
     private static final String PREFERENCE_PREFIX = "imagery.generic";
+    /**
+     * Registers all setting properties
+     */
+    static {
+        new TileSourceDisplaySettings();
+    }
 
     /** maximum zoom level supported */
     public static final int MAX_ZOOM = 30;
@@ -107,12 +125,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     public static final int MIN_ZOOM = 2;
     private static final Font InfoFont = new Font("sansserif", Font.BOLD, 13);
 
-    /** do set autozoom when creating a new layer */
-    public static final BooleanProperty PROP_DEFAULT_AUTOZOOM = new BooleanProperty(PREFERENCE_PREFIX + ".default_autozoom", true);
-    /** do set autoload when creating a new layer */
-    public static final BooleanProperty PROP_DEFAULT_AUTOLOAD = new BooleanProperty(PREFERENCE_PREFIX + ".default_autoload", true);
-    /** do show errors per default */
-    public static final BooleanProperty PROP_DEFAULT_SHOWERRORS = new BooleanProperty(PREFERENCE_PREFIX + ".default_showerrors", true);
     /** minimum zoom level to show to user */
     public static final IntegerProperty PROP_MIN_ZOOM_LVL = new IntegerProperty(PREFERENCE_PREFIX + ".min_zoom_lvl", 2);
     /** maximum zoom level to show to user */
@@ -129,14 +141,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     private final AttributionSupport attribution = new AttributionSupport();
     private final TileHolder clickedTileHolder = new TileHolder();
 
-    // needed public access for session exporter
-    /** if layers changes automatically, when user zooms in */
-    public boolean autoZoom = PROP_DEFAULT_AUTOZOOM.get();
-    /** if layer automatically loads new tiles */
-    public boolean autoLoad = PROP_DEFAULT_AUTOLOAD.get();
-    /** if layer should show errors on tiles */
-    public boolean showErrors = PROP_DEFAULT_SHOWERRORS.get();
-
     /**
      * Offset between calculated zoom level and zoom level used to download and show tiles. Negative values will result in
      * lower resolution of imagery useful in "retina" displays, positive values will result in higher resolution
@@ -166,6 +170,13 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             }
         }
     };
+
+    private final TileSourceDisplaySettings displaySettings = createDisplaySettings();
+
+    private final ImageryAdjustAction adjustAction = new ImageryAdjustAction(this);
+    // prepared to be moved to the painter
+    private TileCoordinateConverter coordinateConverter;
+
     /**
      * Creates Tile Source based Imagery Layer based on Imagery Info
      * @param info imagery info
@@ -174,6 +185,31 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         super(info);
         setBackgroundLayer(true);
         this.setVisible(true);
+        getFilterSettings().addFilterChangeListener(this);
+        getDisplaySettings().addSettingsChangeListener(this);
+    }
+
+    /**
+     * This method creates the {@link TileSourceDisplaySettings} object. Subclasses may implement it to e.g. change the prefix.
+     * @return The object.
+     * @since 10568
+     */
+    protected TileSourceDisplaySettings createDisplaySettings() {
+        return new TileSourceDisplaySettings();
+    }
+
+    /**
+     * Gets the {@link TileSourceDisplaySettings} instance associated with this tile source.
+     * @return The tile source display settings
+     * @since 10568
+     */
+    public TileSourceDisplaySettings getDisplaySettings() {
+        return displaySettings;
+    }
+
+    @Override
+    public void filterChanged() {
+        invalidate();
     }
 
     protected abstract TileLoaderFactory getTileLoaderFactory();
@@ -194,6 +230,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     }
 
     protected void initTileSource(T tileSource) {
+        coordinateConverter = new TileCoordinateConverter(Main.map.mapView, getDisplaySettings());
         attribution.initialize(tileSource);
 
         currentZoomLevel = getBestZoom();
@@ -256,6 +293,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
      *
      * @see Main#map
      * @see MapFrame#repaint()
+     * @see #invalidate() To trigger a repaint of all places where the layer is displayed.
      */
     protected void redraw() {
         needRedraw = true;
@@ -263,32 +301,65 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     }
 
     @Override
-    public void setGamma(double gamma) {
-        super.setGamma(gamma);
-        redraw();
+    public void invalidate() {
+        needRedraw = true;
+        super.invalidate();
     }
 
+    /**
+     * {@inheritDoc}
+     * @deprecated Use {@link TileSourceDisplaySettings#getDx()}
+     */
     @Override
-    public void setSharpenLevel(double sharpenLevel) {
-        super.setSharpenLevel(sharpenLevel);
-        redraw();
+    @Deprecated
+    public double getDx() {
+        return getDisplaySettings().getDx();
     }
 
+    /**
+     * {@inheritDoc}
+     * @deprecated Use {@link TileSourceDisplaySettings#getDy()}
+     */
+    @Override
+    @Deprecated
+    public double getDy() {
+        return getDisplaySettings().getDy();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @deprecated Use {@link TileSourceDisplaySettings}
+     */
     @Override
-    public void setColorfulness(double colorfulness) {
-        super.setColorfulness(colorfulness);
-        redraw();
+    @Deprecated
+    public void displace(double dx, double dy) {
+        getDisplaySettings().addDisplacement(new EastNorth(dx, dy));
     }
 
     /**
-     * Marks layer as needing redraw on offset change
+     * {@inheritDoc}
+     * @deprecated Use {@link TileSourceDisplaySettings}
      */
     @Override
+    @Deprecated
     public void setOffset(double dx, double dy) {
-        super.setOffset(dx, dy);
-        needRedraw = true;
+        getDisplaySettings().setDisplacement(new EastNorth(dx, dy));
+    }
+
+    @Override
+    public Object getInfoComponent() {
+        JPanel panel = (JPanel) super.getInfoComponent();
+        EastNorth offset = getDisplaySettings().getDisplacement();
+        if (offset.distanceSq(0, 0) > 1e-10) {
+            panel.add(new JLabel(tr("Offset: ") + offset.east() + ';' + offset.north()), GBC.eol().insets(0, 5, 10, 0));
+        }
+        return panel;
     }
 
+    @Override
+    protected Action getAdjustAction() {
+        return adjustAction;
+    }
 
     /**
      * Returns average number of screen pixels per tile pixel for current mapview
@@ -357,22 +428,22 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             if (clickedTile != null) {
                 ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Tile Info"), new String[]{tr("OK")});
                 JPanel panel = new JPanel(new GridBagLayout());
-                Rectangle displaySize = tileToRect(clickedTile);
+                Rectangle2D displaySize = coordinateConverter.getRectangleForTile(clickedTile);
                 String url = "";
                 try {
                     url = clickedTile.getUrl();
                 } catch (IOException e) {
                     // silence exceptions
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                 }
 
                 String[][] content = {
                         {"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.getWidth())
+                                                                 .append('x')
+                                                                 .append(displaySize.getHeight()).toString()},
                 };
 
                 for (String[] entry: content) {
@@ -409,7 +480,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             Tile clickedTile = clickedTileHolder.getTile();
             if (clickedTile != null) {
                 loadTile(clickedTile, true);
-                redraw();
+                invalidate();
             }
         }
     }
@@ -421,17 +492,13 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
         @Override
         public void actionPerformed(ActionEvent ae) {
-            autoZoom = !autoZoom;
-            if (autoZoom && getBestZoom() != currentZoomLevel) {
-                setZoomLevel(getBestZoom());
-                redraw();
-            }
+            getDisplaySettings().setAutoZoom(!getDisplaySettings().isAutoZoom());
         }
 
         @Override
         public Component createMenuComponent() {
             JCheckBoxMenuItem item = new JCheckBoxMenuItem(this);
-            item.setSelected(autoZoom);
+            item.setSelected(getDisplaySettings().isAutoZoom());
             return item;
         }
 
@@ -448,14 +515,13 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
         @Override
         public void actionPerformed(ActionEvent ae) {
-            autoLoad = !autoLoad;
-            if (autoLoad) redraw();
+            getDisplaySettings().setAutoLoad(!getDisplaySettings().isAutoLoad());
         }
 
         @Override
         public Component createMenuComponent() {
             JCheckBoxMenuItem item = new JCheckBoxMenuItem(this);
-            item.setSelected(autoLoad);
+            item.setSelected(getDisplaySettings().isAutoLoad());
             return item;
         }
 
@@ -472,14 +538,13 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
         @Override
         public void actionPerformed(ActionEvent ae) {
-            showErrors = !showErrors;
-            redraw();
+            getDisplaySettings().setShowErrors(!getDisplaySettings().isShowErrors());
         }
 
         @Override
         public Component createMenuComponent() {
             JCheckBoxMenuItem item = new JCheckBoxMenuItem(this);
-            item.setSelected(showErrors);
+            item.setSelected(getDisplaySettings().isShowErrors());
             return item;
         }
 
@@ -497,7 +562,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         @Override
         public void actionPerformed(ActionEvent ae) {
             loadAllTiles(true);
-            redraw();
         }
     }
 
@@ -509,7 +573,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         @Override
         public void actionPerformed(ActionEvent ae) {
             loadAllErrorTiles(true);
-            redraw();
         }
     }
 
@@ -529,39 +592,36 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     private class ZoomToBestAction extends AbstractAction {
         ZoomToBestAction() {
             super(tr("Change resolution"));
-            setEnabled(!autoZoom && getBestZoom() != currentZoomLevel);
+            setEnabled(!getDisplaySettings().isAutoZoom() && getBestZoom() != currentZoomLevel);
         }
 
         @Override
         public void actionPerformed(ActionEvent ae) {
             setZoomLevel(getBestZoom());
-            redraw();
         }
     }
 
     private class IncreaseZoomAction extends AbstractAction {
         IncreaseZoomAction() {
             super(tr("Increase zoom"));
-            setEnabled(!autoZoom && zoomIncreaseAllowed());
+            setEnabled(!getDisplaySettings().isAutoZoom() && zoomIncreaseAllowed());
         }
 
         @Override
         public void actionPerformed(ActionEvent ae) {
             increaseZoomLevel();
-            redraw();
         }
     }
 
     private class DecreaseZoomAction extends AbstractAction {
         DecreaseZoomAction() {
             super(tr("Decrease zoom"));
-            setEnabled(!autoZoom && zoomDecreaseAllowed());
+            setEnabled(!getDisplaySettings().isAutoZoom() && zoomDecreaseAllowed());
         }
 
         @Override
         public void actionPerformed(ActionEvent ae) {
             decreaseZoomLevel();
-            redraw();
         }
     }
 
@@ -624,7 +684,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         initializeIfRequired();
 
         event.getMapView().addMouseListener(adapter);
-        MapView.addZoomChangeListener(AbstractTileSourceLayer.this);
+        MapView.addZoomChangeListener(this);
 
         if (this instanceof NativeScaleLayer) {
             event.getMapView().setNativeScaleLayer((NativeScaleLayer) this);
@@ -644,7 +704,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             if (tileSource == null) {
                 throw new IllegalArgumentException(tr("Failed to create tile source"));
             }
-            checkLayerMemoryDoesNotExceedMaximum();
             // check if projection is supported
             projectionChanged(null, Main.getProjection());
             initTileSource(this.tileSource);
@@ -653,14 +712,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
     @Override
     protected LayerPainter createMapViewPainter(MapViewEvent event) {
-        return new CompatibilityModeLayerPainter() {
-            @Override
-            public void detachFromMapView(MapViewEvent event) {
-                event.getMapView().removeMouseListener(adapter);
-                MapView.removeZoomChangeListener(AbstractTileSourceLayer.this);
-                super.detachFromMapView(event);
-            }
-        };
+        return new TileSourcePainter();
     }
 
     /**
@@ -684,11 +736,6 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         }
     }
 
-    @Override
-    protected long estimateMemoryUsage() {
-        return 4L * tileSource.getTileSize() * tileSource.getTileSize() * estimateTileCacheSize();
-    }
-
     protected int estimateTileCacheSize() {
         Dimension screenSize = GuiHelper.getMaximumScreenSize();
         int height = screenSize.height;
@@ -702,11 +749,34 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         // add 10% for tiles from different zoom levels
         int ret = (int) Math.ceil(
                 Math.pow(2d, ZOOM_OFFSET.get()) * visibileTiles // use offset to decide, how many tiles are visible
-                * 2);
+                * 4);
         Main.info("AbstractTileSourceLayer: estimated visible tiles: {0}, estimated cache size: {1}", visibileTiles, ret);
         return ret;
     }
 
+    @Override
+    public void displaySettingsChanged(DisplaySettingsChangeEvent e) {
+        if (tileSource == null) {
+            return;
+        }
+        switch (e.getChangedSetting()) {
+        case TileSourceDisplaySettings.AUTO_ZOOM:
+            if (getDisplaySettings().isAutoZoom() && getBestZoom() != currentZoomLevel) {
+                setZoomLevel(getBestZoom());
+                invalidate();
+            }
+            break;
+        case TileSourceDisplaySettings.AUTO_LOAD:
+            if (getDisplaySettings().isAutoLoad()) {
+                invalidate();
+            }
+            break;
+        default:
+            // trigger a redraw just to be sure.
+            invalidate();
+        }
+    }
+
     /**
      * Checks zoom level against settings
      * @param maxZoomLvl zoom level to check
@@ -789,7 +859,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         if (tileLoader instanceof TMSCachedTileLoader) {
             ((TMSCachedTileLoader) tileLoader).cancelOutstandingTasks();
         }
-        needRedraw = true;
+        invalidate();
     }
 
     protected int getMaxZoomLvl() {
@@ -903,6 +973,9 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         if (tile == null) {
             tile = new Tile(tileSource, x, y, zoom);
             tileCache.addTile(tile);
+        }
+
+        if (!tile.isLoaded()) {
             tile.loadPlaceholderFromCache(tileCache);
         }
         return tile;
@@ -936,9 +1009,9 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
     private TileSet getVisibleTileSet() {
         MapView mv = Main.map.mapView;
-        EastNorth topLeft = mv.getEastNorth(0, 0);
-        EastNorth botRight = mv.getEastNorth(mv.getWidth(), mv.getHeight());
-        return new TileSet(topLeft, botRight, currentZoomLevel);
+        MapViewRectangle area = mv.getState().getViewArea();
+        ProjectionBounds bounds = area.getProjectionBounds();
+        return getTileSet(bounds.getMin(), bounds.getMax(), currentZoomLevel);
     }
 
     protected void loadAllTiles(boolean force) {
@@ -950,11 +1023,13 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             return;
         }
         ts.loadAllTiles(force);
+        invalidate();
     }
 
     protected void loadAllErrorTiles(boolean force) {
         TileSet ts = getVisibleTileSet();
         ts.loadAllErrorTiles(force);
+        invalidate();
     }
 
     @Override
@@ -991,31 +1066,19 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         return img;
     }
 
-    private Rectangle tileToRect(Tile t1) {
-        /*
-         * We need to get a box in which to draw, so advance by one tile in
-         * each direction to find the other corner of the box.
-         * Note: this somewhat pollutes the tile cache
-         */
-        Tile t2 = tempCornerTile(t1);
-        Rectangle rect = new Rectangle(pixelPos(t1));
-        rect.add(pixelPos(t2));
-        return rect;
-    }
-
     // 'source' is the pixel coordinates for the area that
     // the img is capable of filling in.  However, we probably
     // only want a portion of it.
     //
     // 'border' is the screen cordinates that need to be drawn.
     //  We must not draw outside of it.
-    private void drawImageInside(Graphics g, Image sourceImg, Rectangle source, Rectangle border) {
-        Rectangle target = source;
+    private void drawImageInside(Graphics g, Image sourceImg, Rectangle2D source, Rectangle2D border) {
+        Rectangle2D target = source;
 
         // If a border is specified, only draw the intersection
         // if what we have combined with what we are supposed to draw.
         if (border != null) {
-            target = source.intersection(border);
+            target = source.createIntersection(border);
             if (Main.isDebugEnabled()) {
                 Main.debug("source: " + source + "\nborder: " + border + "\nintersection: " + target);
             }
@@ -1032,8 +1095,8 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         double imageXScaling = sourceImg.getWidth(this) / source.getWidth();
 
         // How many pixels into the 'source' rectangle are we drawing?
-        int screenXoffset = target.x - source.x;
-        int screenYoffset = target.y - source.y;
+        double screenXoffset = target.getX() - source.getX();
+        double screenYoffset = target.getY() - source.getY();
         // And how many pixels into the image itself does that correlate to?
         int imgXoffset = (int) (screenXoffset * imageXScaling + 0.5);
         int imgYoffset = (int) (screenYoffset * imageYScaling + 0.5);
@@ -1046,16 +1109,15 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             Main.debug("drawing image into target rect: " + target);
         }
         g.drawImage(sourceImg,
-                target.x, target.y,
-                target.x + target.width, target.y + target.height,
+                (int) target.getX(), (int) target.getY(),
+                (int) target.getMaxX(), (int) target.getMaxY(),
                 imgXoffset, imgYoffset,
                 imgXend, imgYend,
                 this);
         if (PROP_FADE_AMOUNT.get() != 0) {
             // dimm by painting opaque rect...
             g.setColor(getFadeColorWithAlpha());
-            g.fillRect(target.x, target.y,
-                    target.width, target.height);
+            ((Graphics2D) g).fill(target);
         }
     }
 
@@ -1070,9 +1132,9 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     // border is null and we draw the entire tile set.
     private List<Tile> paintTileImages(Graphics g, TileSet ts, int zoom, Tile border) {
         if (zoom <= 0) return Collections.emptyList();
-        Rectangle borderRect = null;
+        Rectangle2D borderRect = null;
         if (border != null) {
-            borderRect = tileToRect(border);
+            borderRect = coordinateConverter.getRectangleForTile(border);
         }
         List<Tile> missedTiles = new LinkedList<>();
         // The callers of this code *require* that we return any tiles
@@ -1092,7 +1154,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             // applying all filters to this layer
             img = applyImageProcessors((BufferedImage) img);
 
-            Rectangle sourceRect = tileToRect(tile);
+            Rectangle2D sourceRect = coordinateConverter.getRectangleForTile(tile);
             if (borderRect != null && !sourceRect.intersects(borderRect)) {
                 continue;
             }
@@ -1129,11 +1191,14 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     }
 
     private void paintTileText(TileSet ts, Tile tile, Graphics g, MapView mv, int zoom, Tile t) {
-        int fontHeight = g.getFontMetrics().getHeight();
-        if (tile == null)
+        if (tile == null) {
             return;
-        Point p = pixelPos(t);
-        int texty = p.y + 2 + fontHeight;
+        }
+        Point2D p = coordinateConverter.getPixelForTile(t);
+        int fontHeight = g.getFontMetrics().getHeight();
+        int x = (int) p.getX();
+        int y = (int) p.getY();
+        int texty = y + 2 + fontHeight;
 
         /*if (PROP_DRAW_DEBUG.get()) {
             myDrawString(g, "x=" + t.getXtile() + " y=" + t.getYtile() + " z=" + zoom + "", p.x + 2, texty);
@@ -1150,8 +1215,8 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             texty += 1 + fontHeight;
         }*/
 
-        if (tile.hasError() && showErrors) {
-            myDrawString(g, tr("Error") + ": " + tr(tile.getErrorMessage()), p.x + 2, texty);
+        if (tile.hasError() && getDisplaySettings().isShowErrors()) {
+            myDrawString(g, tr("Error") + ": " + tr(tile.getErrorMessage()), x + 2, texty);
             //texty += 1 + fontHeight;
         }
 
@@ -1160,9 +1225,9 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         if (Main.isDebugEnabled()) {
             if (yCursor < t.getYtile()) {
                 if (t.getYtile() % 32 == 31) {
-                    g.fillRect(0, p.y - 1, mv.getWidth(), 3);
+                    g.fillRect(0, y - 1, mv.getWidth(), 3);
                 } else {
-                    g.drawLine(0, p.y, mv.getWidth(), p.y);
+                    g.drawLine(0, y, mv.getWidth(), y);
                 }
                 //yCursor = t.getYtile();
             }
@@ -1170,97 +1235,88 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             if (xCursor < t.getXtile()) {
                 if (t.getXtile() % 32 == 0) {
                     // level 7 tile boundary
-                    g.fillRect(p.x - 1, 0, 3, mv.getHeight());
+                    g.fillRect(x - 1, 0, 3, mv.getHeight());
                 } else {
-                    g.drawLine(p.x, 0, p.x, mv.getHeight());
+                    g.drawLine(x, 0, x, mv.getHeight());
                 }
                 //xCursor = t.getXtile();
             }
         }
     }
 
-    private Point pixelPos(LatLon ll) {
-        return Main.map.mapView.getPoint(Main.getProjection().latlon2eastNorth(ll).add(getDx(), getDy()));
-    }
-
-    private Point pixelPos(Tile t) {
-        ICoordinate coord = tileSource.tileXYToLatLon(t);
-        return pixelPos(new LatLon(coord));
-    }
-
     private LatLon getShiftedLatLon(EastNorth en) {
-        return Main.getProjection().eastNorth2latlon(en.add(-getDx(), -getDy()));
+        return Main.getProjection().eastNorth2latlon(en.add(-getDisplaySettings().getDx(), -getDisplaySettings().getDy()));
     }
 
     private ICoordinate getShiftedCoord(EastNorth en) {
         return getShiftedLatLon(en).toCoordinate();
     }
 
-    private final TileSet nullTileSet = new TileSet((LatLon) null, (LatLon) null, 0);
+    private LatLon getShiftedLatLon(ICoordinate latLon) {
+        return getShiftedLatLon(Main.getProjection().latlon2eastNorth(new LatLon(latLon)));
+    }
+
+
+    private final TileSet nullTileSet = new TileSet();
 
-    private final class TileSet {
-        int x0, x1, y0, y1;
+    /**
+     * This is a rectangular range of tiles.
+     */
+    private static class TileRange {
+        int minX;
+        int maxX;
+        int minY;
+        int maxY;
         int zoom;
 
-        /**
-         * Create a TileSet by EastNorth bbox taking a layer shift in account
-         * @param topLeft top-left lat/lon
-         * @param botRight bottom-right lat/lon
-         * @param zoom zoom level
-         */
-        private TileSet(EastNorth topLeft, EastNorth botRight, int zoom) {
-            this(getShiftedLatLon(topLeft), getShiftedLatLon(botRight), zoom);
+        private TileRange() {
         }
 
-        /**
-         * Create a TileSet by known LatLon bbox without layer shift correction
-         * @param topLeft top-left lat/lon
-         * @param botRight bottom-right lat/lon
-         * @param zoom zoom level
-         */
-        private TileSet(LatLon topLeft, LatLon botRight, int zoom) {
+        protected TileRange(TileXY t1, TileXY t2, int zoom) {
+            minX = (int) Math.floor(Math.min(t1.getX(), t2.getX()));
+            minY = (int) Math.floor(Math.min(t1.getY(), t2.getY()));
+            maxX = (int) Math.ceil(Math.max(t1.getX(), t2.getX()));
+            maxY = (int) Math.ceil(Math.max(t1.getY(), t2.getY()));
             this.zoom = zoom;
-            if (zoom == 0)
-                return;
+        }
 
-            TileXY t1 = tileSource.latLonToTileXY(topLeft.toCoordinate(), zoom);
-            TileXY t2 = tileSource.latLonToTileXY(botRight.toCoordinate(), zoom);
+        protected double tilesSpanned() {
+            return Math.sqrt(1.0 * this.size());
+        }
 
-            x0 = t1.getXIndex();
-            y0 = t1.getYIndex();
-            x1 = t2.getXIndex();
-            y1 = t2.getYIndex();
-            double centerLon = getShiftedLatLon(Main.map.mapView.getCenter()).lon();
+        protected int size() {
+            int xSpan = maxX - minX + 1;
+            int ySpan = maxY - minY + 1;
+            return xSpan * ySpan;
+        }
+    }
 
-            if (topLeft.lon() > centerLon) {
-                x0 = tileSource.getTileXMin(zoom);
-            }
-            if (botRight.lon() < centerLon) {
-                x1 = tileSource.getTileXMax(zoom);
-            }
+    private class TileSet extends TileRange {
 
-            if (x0 > x1) {
-                int tmp = x0;
-                x0 = x1;
-                x1 = tmp;
-            }
-            if (y0 > y1) {
-                int tmp = y0;
-                y0 = y1;
-                y1 = tmp;
-            }
+        protected TileSet(TileXY t1, TileXY t2, int zoom) {
+            super(t1, t2, zoom);
+            sanitize();
+        }
 
-            if (x0 < tileSource.getTileXMin(zoom)) {
-                x0 = tileSource.getTileXMin(zoom);
+        /**
+         * null tile set
+         */
+        private TileSet() {
+            return;
+        }
+
+        protected void sanitize() {
+            if (minX < tileSource.getTileXMin(zoom)) {
+                minX = tileSource.getTileXMin(zoom);
             }
-            if (y0 < tileSource.getTileYMin(zoom)) {
-                y0 = tileSource.getTileYMin(zoom);
+            if (minY < tileSource.getTileYMin(zoom)) {
+                minY = tileSource.getTileYMin(zoom);
             }
-            if (x1 > tileSource.getTileXMax(zoom)) {
-                x1 = tileSource.getTileXMax(zoom);
+            if (maxX > tileSource.getTileXMax(zoom)) {
+                maxX = tileSource.getTileXMax(zoom);
             }
-            if (y1 > tileSource.getTileYMax(zoom)) {
-                y1 = tileSource.getTileYMax(zoom);
+            if (maxY > tileSource.getTileYMax(zoom)) {
+                maxY = tileSource.getTileYMax(zoom);
             }
         }
 
@@ -1276,35 +1332,25 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             return tileCache == null || size() > tileCache.getCacheSize();
         }
 
-        private double tilesSpanned() {
-            return Math.sqrt(1.0 * this.size());
-        }
-
-        private int size() {
-            int xSpan = x1 - x0 + 1;
-            int ySpan = y1 - y0 + 1;
-            return xSpan * ySpan;
-        }
-
         /*
          * Get all tiles represented by this TileSet that are
          * already in the tileCache.
          */
         private List<Tile> allExistingTiles() {
-            return this.__allTiles(false);
+            return this.findAllTiles(false);
         }
 
         private List<Tile> allTilesCreate() {
-            return this.__allTiles(true);
+            return this.findAllTiles(true);
         }
 
-        private List<Tile> __allTiles(boolean create) {
+        private List<Tile> findAllTiles(boolean create) {
             // Tileset is either empty or too large
             if (zoom == 0 || this.insane())
                 return Collections.emptyList();
             List<Tile> ret = new ArrayList<>();
-            for (int x = x0; x <= x1; x++) {
-                for (int y = y0; y <= y1; y++) {
+            for (int x = minX; x <= maxX; x++) {
+                for (int y = minY; y <= maxY; y++) {
                     Tile t;
                     if (create) {
                         t = getOrCreateTile(x, y, zoom);
@@ -1332,8 +1378,8 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
          * @return comparator, that sorts the tiles from the center to the edge of the current screen
          */
         private Comparator<Tile> getTileDistanceComparator() {
-            final int centerX = (int) Math.ceil((x0 + x1) / 2d);
-            final int centerY = (int) Math.ceil((y0 + y1) / 2d);
+            final int centerX = (int) Math.ceil((minX + maxX) / 2d);
+            final int centerY = (int) Math.ceil((minY + maxY) / 2d);
             return new Comparator<Tile>() {
                 private int getDistance(Tile t) {
                     return Math.abs(t.getXtile() - centerX) + Math.abs(t.getYtile() - centerY);
@@ -1349,17 +1395,17 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         }
 
         private void loadAllTiles(boolean force) {
-            if (!autoLoad && !force)
+            if (!getDisplaySettings().isAutoLoad() && !force)
                 return;
             List<Tile> allTiles = allTilesCreate();
-            Collections.sort(allTiles, getTileDistanceComparator());
+            allTiles.sort(getTileDistanceComparator());
             for (Tile t : allTiles) {
                 loadTile(t, force);
             }
         }
 
         private void loadAllErrorTiles(boolean force) {
-            if (!autoLoad && !force)
+            if (!getDisplaySettings().isAutoLoad() && !force)
                 return;
             for (Tile t : this.allTilesCreate()) {
                 if (t.hasError()) {
@@ -1367,6 +1413,40 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
                 }
             }
         }
+
+        @Override
+        public String toString() {
+            return getClass().getName() + ": zoom: " + zoom + " X(" + minX + ", " + maxX + ") Y(" + minY + ", " + maxY + ") size: " + size();
+        }
+    }
+
+    /**
+     * Create a TileSet by EastNorth bbox taking a layer shift in account
+     * @param topLeft top-left lat/lon
+     * @param botRight bottom-right lat/lon
+     * @param zoom zoom level
+     * @return the tile set
+     * @since 10651
+     */
+    protected TileSet getTileSet(EastNorth topLeft, EastNorth botRight, int zoom) {
+        return getTileSet(getShiftedLatLon(topLeft), getShiftedLatLon(botRight), zoom);
+    }
+
+    /**
+     * Create a TileSet by known LatLon bbox without layer shift correction
+     * @param topLeft top-left lat/lon
+     * @param botRight bottom-right lat/lon
+     * @param zoom zoom level
+     * @return the tile set
+     * @since 10651
+     */
+    protected TileSet getTileSet(LatLon topLeft, LatLon botRight, int zoom) {
+        if (zoom == 0)
+            return new TileSet();
+
+        TileXY t1 = tileSource.latLonToTileXY(topLeft.toCoordinate(), zoom);
+        TileXY t2 = tileSource.latLonToTileXY(botRight.toCoordinate(), zoom);
+        return new TileSet(t1, t2, zoom);
     }
 
     private static class TileSetInfo {
@@ -1396,15 +1476,14 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     }
 
     private class DeepTileSet {
-        private final EastNorth topLeft, botRight;
+        private final ProjectionBounds bounds;
         private final int minZoom, maxZoom;
         private final TileSet[] tileSets;
         private final TileSetInfo[] tileSetInfos;
 
         @SuppressWarnings("unchecked")
-        DeepTileSet(EastNorth topLeft, EastNorth botRight, int minZoom, int maxZoom) {
-            this.topLeft = topLeft;
-            this.botRight = botRight;
+        DeepTileSet(ProjectionBounds bounds, int minZoom, int maxZoom) {
+            this.bounds = bounds;
             this.minZoom = minZoom;
             this.maxZoom = maxZoom;
             this.tileSets = new AbstractTileSourceLayer.TileSet[maxZoom - minZoom + 1];
@@ -1417,7 +1496,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             synchronized (tileSets) {
                 TileSet ts = tileSets[zoom-minZoom];
                 if (ts == null) {
-                    ts = new TileSet(topLeft, botRight, zoom);
+                    ts = AbstractTileSourceLayer.this.getTileSet(bounds.getMin(), bounds.getMax(), zoom);
                     tileSets[zoom-minZoom] = ts;
                 }
                 return ts;
@@ -1440,29 +1519,22 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
     @Override
     public void paint(Graphics2D g, MapView mv, Bounds bounds) {
-        EastNorth topLeft = mv.getEastNorth(0, 0);
-        EastNorth botRight = mv.getEastNorth(mv.getWidth(), mv.getHeight());
-
-        if (botRight.east() == 0 || botRight.north() == 0) {
-            /*Main.debug("still initializing??");*/
-            // probably still initializing
-            return;
-        }
+        ProjectionBounds pb = mv.getState().getViewArea().getProjectionBounds();
 
         needRedraw = false;
 
         int zoom = currentZoomLevel;
-        if (autoZoom) {
+        if (getDisplaySettings().isAutoZoom()) {
             zoom = getBestZoom();
         }
 
-        DeepTileSet dts = new DeepTileSet(topLeft, botRight, getMinZoomLvl(), zoom);
+        DeepTileSet dts = new DeepTileSet(pb, getMinZoomLvl(), zoom);
         TileSet ts = dts.getTileSet(zoom);
 
         int displayZoomLevel = zoom;
 
         boolean noTilesAtZoom = false;
-        if (autoZoom && autoLoad) {
+        if (getDisplaySettings().isAutoZoom() && getDisplaySettings().isAutoLoad()) {
             // Auto-detection of tilesource maxzoom (currently fully works only for Bing)
             TileSetInfo tsi = dts.getTileSetInfo(zoom);
             if (!tsi.hasVisibleTiles && (!tsi.hasLoadingTiles || tsi.hasOverzoomedTiles)) {
@@ -1498,7 +1570,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
                 tsi = dts.getTileSetInfo(zoom);
             }
             ts = dts.getTileSet(zoom);
-        } else if (autoZoom) {
+        } else if (getDisplaySettings().isAutoZoom()) {
             setZoomLevel(zoom);
         }
 
@@ -1517,7 +1589,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         List<Tile> missedTiles = this.paintTileImages(g, ts, displayZoomLevel, null);
         int[] otherZooms = {-1, 1, -2, 2, -3, -4, -5};
         for (int zoomOffset : otherZooms) {
-            if (!autoZoom) {
+            if (!getDisplaySettings().isAutoZoom()) {
                 break;
             }
             int newzoom = displayZoomLevel + zoomOffset;
@@ -1535,9 +1607,10 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
                     continue;
                 }
                 Tile t2 = tempCornerTile(missed);
-                LatLon topLeft2 = new LatLon(tileSource.tileXYToLatLon(missed));
-                LatLon botRight2 = new LatLon(tileSource.tileXYToLatLon(t2));
-                TileSet ts2 = new TileSet(topLeft2, botRight2, newzoom);
+                TileSet ts2 = getTileSet(
+                        getShiftedLatLon(tileSource.tileXYToLatLon(missed)),
+                        getShiftedLatLon(tileSource.tileXYToLatLon(t2)),
+                        newzoom);
                 // Instantiating large TileSets is expensive.  If there
                 // are no loaded tiles, don't bother even trying.
                 if (ts2.allLoadedTiles().isEmpty()) {
@@ -1562,7 +1635,9 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             this.paintTileText(ts, t, g, mv, displayZoomLevel, t);
         }
 
-        attribution.paintAttribution(g, mv.getWidth(), mv.getHeight(), getShiftedCoord(topLeft), getShiftedCoord(botRight),
+        EastNorth min = pb.getMin();
+        EastNorth max = pb.getMax();
+        attribution.paintAttribution(g, mv.getWidth(), mv.getHeight(), getShiftedCoord(min), getShiftedCoord(max),
                 displayZoomLevel, this);
 
         //g.drawString("currentZoomLevel=" + currentZoomLevel, 120, 120);
@@ -1572,7 +1647,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             myDrawString(g, tr("zoom in to load any tiles"), 120, 120);
         } else if (ts.tooLarge()) {
             myDrawString(g, tr("zoom in to load more tiles"), 120, 120);
-        } else if (!autoZoom && ts.tooSmall()) {
+        } else if (!getDisplaySettings().isAutoZoom() && ts.tooSmall()) {
             myDrawString(g, tr("increase tiles zoom level (change resolution) to see more detail"), 120, 120);
         }
 
@@ -1612,32 +1687,18 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
         EastNorth topLeft = mv.getEastNorth(0, 0);
         EastNorth botRight = mv.getEastNorth(mv.getWidth(), mv.getHeight());
         int z = currentZoomLevel;
-        TileSet ts = new TileSet(topLeft, botRight, z);
+        TileSet ts = getTileSet(topLeft, botRight, z);
 
         if (!ts.tooLarge()) {
             ts.loadAllTiles(false); // make sure there are tile objects for all tiles
         }
-        Tile clickedTile = null;
-        for (Tile t1 : ts.allExistingTiles()) {
-            Tile t2 = tempCornerTile(t1);
-            Rectangle r = new Rectangle(pixelPos(t1));
-            r.add(pixelPos(t2));
-            if (Main.isDebugEnabled()) {
-                Main.debug("r: " + r + " clicked: " + clicked);
-            }
-            if (!r.contains(clicked)) {
-                continue;
-            }
-            clickedTile = t1;
-            break;
-        }
-        if (clickedTile == null)
-            return null;
+        Stream<Tile> clickedTiles = ts.allExistingTiles().stream()
+                .filter(t -> coordinateConverter.getRectangleForTile(t).contains(clicked));
         if (Main.isTraceEnabled()) {
-            Main.trace("Clicked on tile: " + clickedTile.getXtile() + ' ' + clickedTile.getYtile() +
-                " currentZoomLevel: " + currentZoomLevel);
+            clickedTiles = clickedTiles.peek(t -> Main.trace("Clicked on tile: " + t.getXtile() + ' ' + t.getYtile() +
+                    " currentZoomLevel: " + currentZoomLevel));
         }
-        return clickedTile;
+        return clickedTiles.findAny().orElse(null);
     }
 
     @Override
@@ -1684,7 +1745,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
 
     @Override
     public String getToolTipText() {
-        if (autoLoad) {
+        if (getDisplaySettings().isAutoLoad()) {
             return tr("{0} ({1}), automatically downloading in zoom {2}", this.getClass().getSimpleName(), getName(), currentZoomLevel);
         } else {
             return tr("{0} ({1}), downloading in zoom {2}", this.getClass().getSimpleName(), getName(), currentZoomLevel);
@@ -1779,12 +1840,8 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     public AbstractTileSourceLayer<T>.PrecacheTask downloadAreaToCache(final ProgressMonitor progressMonitor, List<LatLon> points,
             double bufferX, double bufferY) {
         PrecacheTask precacheTask = new PrecacheTask(progressMonitor);
-        final Set<Tile> requestedTiles = new ConcurrentSkipListSet<>(new Comparator<Tile>() {
-            @Override
-            public int compare(Tile o1, Tile o2) {
-                return String.CASE_INSENSITIVE_ORDER.compare(o1.getKey(), o2.getKey());
-            }
-        });
+        final Set<Tile> requestedTiles = new ConcurrentSkipListSet<>(
+                (o1, o2) -> String.CASE_INSENSITIVE_ORDER.compare(o1.getKey(), o2.getKey()));
         for (LatLon point: points) {
 
             TileXY minTile = tileSource.latLonToTileXY(point.lat() - bufferY, point.lon() - bufferX, currentZoomLevel);
@@ -1795,7 +1852,7 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
             int minY = Math.min(curTile.getYIndex() - 1, minTile.getYIndex());
             int maxY = Math.max(curTile.getYIndex() + 1, maxTile.getYIndex());
             int minX = Math.min(curTile.getXIndex() - 1, minTile.getXIndex());
-            int maxX = Math.min(curTile.getXIndex() + 1, minTile.getXIndex());
+            int maxX = Math.max(curTile.getXIndex() + 1, maxTile.getXIndex());
 
             for (int x = minX; x <= maxX; x++) {
                 for (int y = minY; y <= maxY; y++) {
@@ -1823,4 +1880,52 @@ implements ImageObserver, TileLoaderListener, ZoomChangeListener {
     public File createAndOpenSaveFileChooser() {
         return SaveActionBase.createAndOpenSaveFileChooser(tr("Save WMS file"), WMSLayerImporter.FILE_FILTER);
     }
+
+    @Override
+    public void destroy() {
+        super.destroy();
+        adjustAction.destroy();
+    }
+
+    private class TileSourcePainter extends CompatibilityModeLayerPainter {
+        /**
+         * The memory handle that will hold our tile source.
+         */
+        private MemoryHandle<?> memory;
+
+        @Override
+        public void paint(MapViewGraphics graphics) {
+            allocateCacheMemory();
+            if (memory != null) {
+                super.paint(graphics);
+            }
+        }
+
+        private void allocateCacheMemory() {
+            if (memory == null) {
+                MemoryManager manager = MemoryManager.getInstance();
+                if (manager.isAvailable(getEstimatedCacheSize())) {
+                    try {
+                        memory = manager.allocateMemory("tile source layer", getEstimatedCacheSize(), Object::new);
+                    } catch (NotEnoughMemoryException e) {
+                        Main.warn("Could not allocate tile source memory", e);
+                    }
+                }
+            }
+        }
+
+        protected long getEstimatedCacheSize() {
+            return 4L * tileSource.getTileSize() * tileSource.getTileSize() * estimateTileCacheSize();
+        }
+
+        @Override
+        public void detachFromMapView(MapViewEvent event) {
+            event.getMapView().removeMouseListener(adapter);
+            MapView.removeZoomChangeListener(AbstractTileSourceLayer.this);
+            super.detachFromMapView(event);
+            if (memory != null) {
+                memory.free();
+            }
+        }
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java b/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
index ae6a88c..faecbfc 100644
--- a/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
+++ b/src/org/openstreetmap/josm/gui/layer/AlignImageryPanel.java
@@ -6,8 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
@@ -54,14 +52,11 @@ public class AlignImageryPanel extends JPanel {
         closeButton.setRolloverEnabled(true);
         closeButton.setBorderPainted(false);
         closeButton.setToolTipText(tr("Hide this message and never show it again"));
-        closeButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                if (Main.isDisplayingMapView()) {
-                    Main.map.removeTopPanel(AlignImageryPanel.class);
-                    if (doNotShowAgain.isSelected()) {
-                        showAgain.put(Boolean.FALSE);
-                    }
+        closeButton.addActionListener(e -> {
+            if (Main.isDisplayingMapView()) {
+                Main.map.removeTopPanel(AlignImageryPanel.class);
+                if (doNotShowAgain.isSelected()) {
+                    showAgain.put(Boolean.FALSE);
                 }
             }
         });
diff --git a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
index da9a97e..482d7f7 100644
--- a/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
@@ -176,18 +176,12 @@ public class GpxLayer extends Layer {
         }
 
         info.append(tr("Length: {0}", SystemOfMeasurement.getSystemOfMeasurement().getDistText(data.length()))).append("<br>")
-            .append(trn("{0} route, ", "{0} routes, ", data.routes.size(), data.routes.size())).append(
-                trn("{0} waypoint", "{0} waypoints", data.waypoints.size(), data.waypoints.size())).append("<br>")
-            .append("</html>");
+            .append(trn("{0} route, ", "{0} routes, ", data.routes.size(), data.routes.size()))
+            .append(trn("{0} waypoint", "{0} waypoints", data.waypoints.size(), data.waypoints.size())).append("<br></html>");
 
         final JScrollPane sp = new JScrollPane(new HtmlPanel(info.toString()));
         sp.setPreferredSize(new Dimension(sp.getPreferredSize().width+20, 370));
-        SwingUtilities.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                sp.getVerticalScrollBar().setValue(0);
-            }
-        });
+        SwingUtilities.invokeLater(() -> sp.getVerticalScrollBar().setValue(0));
         return sp;
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java
index 3025ae4..3ee6ad9 100644
--- a/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java
+++ b/src/org/openstreetmap/josm/gui/layer/ImageProcessor.java
@@ -9,7 +9,10 @@ import java.awt.image.BufferedImage;
  * displayed images (implemented in plugins).
  *
  * @author Nipel-Crumple
+ * @since  8625 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ImageProcessor {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
index 4a6d290..a8dae5c 100644
--- a/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
@@ -8,25 +8,14 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.GridBagLayout;
-import java.awt.Rectangle;
-import java.awt.RenderingHints;
-import java.awt.Transparency;
 import java.awt.event.ActionEvent;
-import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.awt.image.BufferedImageOp;
-import java.awt.image.ColorModel;
-import java.awt.image.ConvolveOp;
-import java.awt.image.DataBuffer;
-import java.awt.image.DataBufferByte;
-import java.awt.image.Kernel;
-import java.awt.image.LookupOp;
-import java.awt.image.ShortLookupTable;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.swing.AbstractAction;
+import javax.swing.Action;
 import javax.swing.Icon;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JComponent;
@@ -38,13 +27,14 @@ import javax.swing.JPopupMenu;
 import javax.swing.JSeparator;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.ImageryAdjustAction;
 import org.openstreetmap.josm.data.ProjectionBounds;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.ColorProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.gui.MenuScroller;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -72,14 +62,7 @@ public abstract class ImageryLayer extends Layer {
 
     protected Icon icon;
 
-    protected double dx;
-    protected double dy;
-
-    protected GammaImageProcessor gammaImageProcessor = new GammaImageProcessor();
-    protected SharpenImageProcessor sharpenImageProcessor = new SharpenImageProcessor();
-    protected ColorfulImageProcessor collorfulnessImageProcessor = new ColorfulImageProcessor();
-
-    private final ImageryAdjustAction adjustAction = new ImageryAdjustAction(this);
+    private final ImageryFilterSettings filterSettings = new ImageryFilterSettings();
 
     /**
      * Constructs a new {@code ImageryLayer}.
@@ -95,10 +78,10 @@ public abstract class ImageryLayer extends Layer {
         if (icon == null) {
             icon = ImageProvider.get("imagery_small");
         }
-        addImageProcessor(collorfulnessImageProcessor);
-        addImageProcessor(gammaImageProcessor);
-        addImageProcessor(sharpenImageProcessor);
-        sharpenImageProcessor.setSharpenLevel(1 + PROP_SHARPEN_LEVEL.get() / 2f);
+        for (ImageProcessor processor : filterSettings.getProcessors()) {
+            addImageProcessor(processor);
+        }
+        filterSettings.setSharpenLevel(1 + PROP_SHARPEN_LEVEL.get() / 2f);
     }
 
     public double getPPD() {
@@ -108,29 +91,51 @@ public abstract class ImageryLayer extends Layer {
         return Main.map.mapView.getWidth() / (bounds.maxEast - bounds.minEast);
     }
 
+    /**
+     * Gets the x displacement of this layer.
+     * To be removed end of 2016
+     * @return The x displacement.
+     * @deprecated Use {@link TileSourceDisplaySettings#getDx()}
+     */
+    @Deprecated
     public double getDx() {
-        return dx;
+        // moved to AbstractTileSourceLayer/TileSourceDisplaySettings. Remains until all actions migrate.
+        return 0;
     }
 
+    /**
+     * Gets the y displacement of this layer.
+     * To be removed end of 2016
+     * @return The y displacement.
+     * @deprecated Use {@link TileSourceDisplaySettings#getDy()}
+     */
+    @Deprecated
     public double getDy() {
-        return dy;
+        // moved to AbstractTileSourceLayer/TileSourceDisplaySettings. Remains until all actions migrate.
+        return 0;
     }
 
     /**
      * Sets the displacement offset of this layer. The layer is automatically invalidated.
+     * To be removed end of 2016
      * @param dx The x offset
      * @param dy The y offset
+     * @deprecated Use {@link TileSourceDisplaySettings}
      */
+    @Deprecated
     public void setOffset(double dx, double dy) {
-        this.dx = dx;
-        this.dy = dy;
-        invalidate();
+        // moved to AbstractTileSourceLayer/TileSourceDisplaySettings. Remains until all actions migrate.
     }
 
+    /**
+     * To be removed end of 2016
+     * @param dx deprecated
+     * @param dy deprecated
+     * @deprecated Use {@link TileSourceDisplaySettings}
+     */
+    @Deprecated
     public void displace(double dx, double dy) {
-        this.dx += dx;
-        this.dy += dy;
-        setOffset(this.dx, this.dy);
+        // moved to AbstractTileSourceLayer/TileSourceDisplaySettings. Remains until all actions migrate.
     }
 
     /**
@@ -165,9 +170,6 @@ public abstract class ImageryLayer extends Layer {
                 panel.add(new JLabel(tr("URL: ")), GBC.std().insets(0, 5, 2, 0));
                 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));
-            }
         }
         return panel;
     }
@@ -228,7 +230,7 @@ public abstract class ImageryLayer extends Layer {
     }
 
     public JComponent getOffsetMenuItem(JComponent subMenu) {
-        JMenuItem adjustMenuItem = new JMenuItem(adjustAction);
+        JMenuItem adjustMenuItem = new JMenuItem(getAdjustAction());
         if (OffsetBookmark.allBookmarks.isEmpty()) return adjustMenuItem;
 
         subMenu.add(adjustMenuItem);
@@ -240,7 +242,7 @@ public abstract class ImageryLayer extends Layer {
                 continue;
             }
             JCheckBoxMenuItem item = new JCheckBoxMenuItem(new ApplyOffsetAction(b));
-            if (Utils.equalsEpsilon(b.dx, dx) && Utils.equalsEpsilon(b.dy, dy)) {
+            if (Utils.equalsEpsilon(b.dx, getDx()) && Utils.equalsEpsilon(b.dy, getDy())) {
                 item.setSelected(true);
             }
             subMenu.add(item);
@@ -257,367 +259,15 @@ public abstract class ImageryLayer extends Layer {
         return hasBookmarks ? subMenu : adjustMenuItem;
     }
 
-    /**
-     * An image processor which adjusts the gamma value of an image.
-     */
-    public static class GammaImageProcessor implements ImageProcessor {
-        private double gamma = 1;
-        final short[] gammaChange = new short[256];
-        private final LookupOp op3 = new LookupOp(
-                new ShortLookupTable(0, new short[][]{gammaChange, gammaChange, gammaChange}), null);
-        private final LookupOp op4 = new LookupOp(
-                new ShortLookupTable(0, new short[][]{gammaChange, gammaChange, gammaChange, gammaChange}), null);
-
-        /**
-         * Returns the currently set gamma value.
-         * @return the currently set gamma value
-         */
-        public double getGamma() {
-            return gamma;
-        }
-
-        /**
-         * Sets a new gamma value, {@code 1} stands for no correction.
-         * @param gamma new gamma value
-         */
-        public void setGamma(double gamma) {
-            this.gamma = gamma;
-            for (int i = 0; i < 256; i++) {
-                gammaChange[i] = (short) (255 * Math.pow(i / 255., gamma));
-            }
-        }
-
-        @Override
-        public BufferedImage process(BufferedImage image) {
-            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) {
-                Main.trace(ignore);
-            }
-            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);
-        }
-
-        @Override
-        public String toString() {
-            return "GammaImageProcessor [gamma=" + gamma + ']';
-        }
-    }
+    protected abstract Action getAdjustAction();
 
     /**
-     * Sharpens or blurs the image, depending on the sharpen value.
-     * <p>
-     * A positive sharpen level means that we sharpen the image.
-     * <p>
-     * A negative sharpen level let's us blur the image. -1 is the most useful value there.
-     *
-     * @author Michael Zangl
+     * Gets the settings for the filter that is applied to this layer.
+     * @return The filter settings.
+     * @since 10547
      */
-    public static class SharpenImageProcessor implements ImageProcessor {
-        private float sharpenLevel;
-        private ConvolveOp op;
-
-        private static float[] KERNEL_IDENTITY = new float[] {
-            0, 0, 0,
-            0, 1, 0,
-            0, 0, 0
-        };
-
-        private static float[] KERNEL_BLUR = new float[] {
-            1f / 16, 2f / 16, 1f / 16,
-            2f / 16, 4f / 16, 2f / 16,
-            1f / 16, 2f / 16, 1f / 16
-        };
-
-        private static float[] KERNEL_SHARPEN = new float[] {
-            -.5f, -1f, -.5f,
-             -1f, 7, -1f,
-            -.5f, -1f, -.5f
-        };
-
-        /**
-         * Gets the current sharpen level.
-         * @return The level.
-         */
-        public float getSharpenLevel() {
-            return sharpenLevel;
-        }
-
-        /**
-         * Sets the sharpening level.
-         * @param sharpenLevel The level. Clamped to be positive or 0.
-         */
-        public void setSharpenLevel(float sharpenLevel) {
-            if (sharpenLevel < 0) {
-                this.sharpenLevel = 0;
-            } else {
-                this.sharpenLevel = sharpenLevel;
-            }
-
-            if (this.sharpenLevel < 0.95) {
-                op = generateMixed(this.sharpenLevel, KERNEL_IDENTITY, KERNEL_BLUR);
-            } else if (this.sharpenLevel > 1.05) {
-                op = generateMixed(this.sharpenLevel - 1, KERNEL_SHARPEN, KERNEL_IDENTITY);
-            } else {
-                op = null;
-            }
-        }
-
-        private ConvolveOp generateMixed(float aFactor, float[] a, float[] b) {
-            if (a.length != 9 || b.length != 9) {
-                throw new IllegalArgumentException("Illegal kernel array length.");
-            }
-            float[] values = new float[9];
-            for (int i = 0; i < values.length; i++) {
-                values[i] = aFactor * a[i] + (1 - aFactor) * b[i];
-            }
-            return new ConvolveOp(new Kernel(3, 3, values), ConvolveOp.EDGE_NO_OP, null);
-        }
-
-        @Override
-        public BufferedImage process(BufferedImage image) {
-            if (op != null) {
-                return op.filter(image, null);
-            } else {
-                return image;
-            }
-        }
-
-        @Override
-        public String toString() {
-            return "SharpenImageProcessor [sharpenLevel=" + sharpenLevel + ']';
-        }
-    }
-
-    /**
-     * Adds or removes the colorfulness of the image.
-     *
-     * @author Michael Zangl
-     */
-    public static class ColorfulImageProcessor implements ImageProcessor {
-        private ColorfulFilter op;
-        private double colorfulness = 1;
-
-        /**
-         * Gets the colorfulness value.
-         * @return The value
-         */
-        public double getColorfulness() {
-            return colorfulness;
-        }
-
-        /**
-         * Sets the colorfulness value. Clamps it to 0+
-         * @param colorfulness The value
-         */
-        public void setColorfulness(double colorfulness) {
-            if (colorfulness < 0) {
-                this.colorfulness = 0;
-            } else {
-                this.colorfulness = colorfulness;
-            }
-
-            if (this.colorfulness < .95 || this.colorfulness > 1.05) {
-                op = new ColorfulFilter(this.colorfulness);
-            } else {
-                op = null;
-            }
-        }
-
-        @Override
-        public BufferedImage process(BufferedImage image) {
-            if (op != null) {
-                return op.filter(image, null);
-            } else {
-                return image;
-            }
-        }
-
-        @Override
-        public String toString() {
-            return "ColorfulImageProcessor [colorfulness=" + colorfulness + ']';
-        }
-    }
-
-    private static class ColorfulFilter implements BufferedImageOp {
-        private final double colorfulness;
-
-        /**
-         * Create a new colorful filter.
-         * @param colorfulness The colorfulness as defined in the {@link ColorfulImageProcessor} class.
-         */
-        ColorfulFilter(double colorfulness) {
-            this.colorfulness = colorfulness;
-        }
-
-        @Override
-        public BufferedImage filter(BufferedImage src, BufferedImage dest) {
-            if (src.getWidth() == 0 || src.getHeight() == 0) {
-                return src;
-            }
-
-            if (dest == null) {
-                dest = createCompatibleDestImage(src, null);
-            }
-            DataBuffer srcBuffer = src.getRaster().getDataBuffer();
-            DataBuffer destBuffer = dest.getRaster().getDataBuffer();
-            if (!(srcBuffer instanceof DataBufferByte) || !(destBuffer instanceof DataBufferByte)) {
-                Main.trace("Cannot apply color filter: Images do not use DataBufferByte.");
-                return src;
-            }
-
-            int type = src.getType();
-            if (type != dest.getType()) {
-                Main.trace("Cannot apply color filter: Src / Dest differ in type (" + type + '/' + dest.getType() + ')');
-                return src;
-            }
-            int redOffset, greenOffset, blueOffset, alphaOffset = 0;
-            switch (type) {
-            case BufferedImage.TYPE_3BYTE_BGR:
-                blueOffset = 0;
-                greenOffset = 1;
-                redOffset = 2;
-                break;
-            case BufferedImage.TYPE_4BYTE_ABGR:
-            case BufferedImage.TYPE_4BYTE_ABGR_PRE:
-                blueOffset = 1;
-                greenOffset = 2;
-                redOffset = 3;
-                break;
-            case BufferedImage.TYPE_INT_ARGB:
-            case BufferedImage.TYPE_INT_ARGB_PRE:
-                redOffset = 0;
-                greenOffset = 1;
-                blueOffset = 2;
-                alphaOffset = 3;
-                break;
-            default:
-                Main.trace("Cannot apply color filter: Source image is of wrong type (" + type + ").");
-                return src;
-            }
-            doFilter((DataBufferByte) srcBuffer, (DataBufferByte) destBuffer, redOffset, greenOffset, blueOffset,
-                    alphaOffset, src.getAlphaRaster() != null);
-            return dest;
-        }
-
-        private void doFilter(DataBufferByte src, DataBufferByte dest, int redOffset, int greenOffset, int blueOffset,
-                int alphaOffset, boolean hasAlpha) {
-            byte[] srcPixels = src.getData();
-            byte[] destPixels = dest.getData();
-            if (srcPixels.length != destPixels.length) {
-                Main.trace("Cannot apply color filter: Source/Dest lengths differ.");
-                return;
-            }
-            int entries = hasAlpha ? 4 : 3;
-            for (int i = 0; i < srcPixels.length; i += entries) {
-                int r = srcPixels[i + redOffset] & 0xff;
-                int g = srcPixels[i + greenOffset] & 0xff;
-                int b = srcPixels[i + blueOffset] & 0xff;
-                double luminosity = r * .21d + g * .72d + b * .07d;
-                destPixels[i + redOffset] = mix(r, luminosity);
-                destPixels[i + greenOffset] = mix(g, luminosity);
-                destPixels[i + blueOffset] = mix(b, luminosity);
-                if (hasAlpha) {
-                    destPixels[i + alphaOffset] = srcPixels[i + alphaOffset];
-                }
-            }
-        }
-
-        private byte mix(int color, double luminosity) {
-            int val = (int) (colorfulness * color + (1 - colorfulness) * luminosity);
-            if (val < 0) {
-                return 0;
-            } else if (val > 0xff) {
-                return (byte) 0xff;
-            } else {
-                return (byte) val;
-            }
-        }
-
-        @Override
-        public Rectangle2D getBounds2D(BufferedImage src) {
-            return new Rectangle(src.getWidth(), src.getHeight());
-        }
-
-        @Override
-        public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) {
-            return new BufferedImage(src.getWidth(), src.getHeight(), src.getType());
-        }
-
-        @Override
-        public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
-            return (Point2D) srcPt.clone();
-        }
-
-        @Override
-        public RenderingHints getRenderingHints() {
-            return null;
-        }
-
-    }
-
-    /**
-     * Returns the currently set gamma value.
-     * @return the currently set gamma value
-     */
-    public double getGamma() {
-        return gammaImageProcessor.getGamma();
-    }
-
-    /**
-     * Sets a new gamma value, {@code 1} stands for no correction.
-     * @param gamma new gamma value
-     */
-    public void setGamma(double gamma) {
-        gammaImageProcessor.setGamma(gamma);
-    }
-
-    /**
-     * Gets the current sharpen level.
-     * @return The sharpen level.
-     */
-    public double getSharpenLevel() {
-        return sharpenImageProcessor.getSharpenLevel();
-    }
-
-    /**
-     * Sets the sharpen level for the layer.
-     * <code>1</code> means no change in sharpness.
-     * Values in range 0..1 blur the image.
-     * Values above 1 are used to sharpen the image.
-     * @param sharpenLevel The sharpen level.
-     */
-    public void setSharpenLevel(double sharpenLevel) {
-        sharpenImageProcessor.setSharpenLevel((float) sharpenLevel);
-    }
-
-    /**
-     * Gets the colorfulness of this image.
-     * @return The colorfulness
-     */
-    public double getColorfulness() {
-        return collorfulnessImageProcessor.getColorfulness();
-    }
-
-    /**
-     * Sets the colorfulness of this image.
-     * 0 means grayscale.
-     * 1 means normal colorfulness.
-     * Values greater than 1 are allowed.
-     * @param colorfulness The colorfulness.
-     */
-    public void setColorfulness(double colorfulness) {
-        collorfulnessImageProcessor.setColorfulness(colorfulness);
+    public ImageryFilterSettings getFilterSettings() {
+        return filterSettings;
     }
 
     /**
@@ -650,12 +300,7 @@ public abstract class ImageryLayer extends Layer {
      * @return the {@link ImageProcessor} wrapper
      */
     public static ImageProcessor createImageProcessor(final BufferedImageOp op, final boolean inPlace) {
-        return new ImageProcessor() {
-            @Override
-            public BufferedImage process(BufferedImage image) {
-                return op.filter(image, inPlace ? image : null);
-            }
-        };
+        return image -> op.filter(image, inPlace ? image : null);
     }
 
     /**
@@ -680,10 +325,4 @@ public abstract class ImageryLayer extends Layer {
         }
         return img;
     }
-
-    @Override
-    public void destroy() {
-        super.destroy();
-        adjustAction.destroy();
-    }
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/Layer.java b/src/org/openstreetmap/josm/gui/layer/Layer.java
index b4f5797..7347110 100644
--- a/src/org/openstreetmap/josm/gui/layer/Layer.java
+++ b/src/org/openstreetmap/josm/gui/layer/Layer.java
@@ -69,7 +69,9 @@ public abstract class Layer extends AbstractMapViewPaintable implements Destroya
 
     /**
      * Action related to several layers.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface MultiLayerAction {
 
         /**
@@ -158,36 +160,12 @@ public abstract class Layer extends AbstractMapViewPaintable implements Destroya
      * It is always called in the event dispatching thread.
      * 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.
+     * not null.
      *
-     * 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
+     * If you need to execute code when this layer is added to the map view, use
+     * {@link #attachToMapView(org.openstreetmap.josm.gui.layer.MapViewPaintable.MapViewEvent)}
      */
     public void hookUpMapView() {
-        checkLayerMemoryDoesNotExceedMaximum();
-    }
-
-    /**
-     * Checks that the memory required for the layers is no greather than the max memory.
-     */
-    protected static void checkLayerMemoryDoesNotExceedMaximum() {
-        // calculate total memory needed for all layers
-        long memoryBytesRequired = 50L * 1024L * 1024L; // assumed minimum JOSM memory footprint
-        for (Layer layer: Main.getLayerManager().getLayers()) {
-            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));
-        }
     }
 
     /**
@@ -537,15 +515,10 @@ public abstract class Layer extends AbstractMapViewPaintable implements Destroya
                     tr("Change the projection again or remove the layer.");
 
             // run later to not block loading the UI.
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    JOptionPane.showMessageDialog(Main.parent,
-                            message,
-                            tr("Warning"),
-                            JOptionPane.WARNING_MESSAGE);
-                }
-            });
+            SwingUtilities.invokeLater(() -> JOptionPane.showMessageDialog(Main.parent,
+                    message,
+                    tr("Warning"),
+                    JOptionPane.WARNING_MESSAGE));
         }
     }
 
@@ -588,7 +561,9 @@ public abstract class Layer extends AbstractMapViewPaintable implements Destroya
 
     /**
      * @return bytes that the tile will use. Needed for resource management
+     * @deprecated Not used any more.
      */
+    @Deprecated
     protected long estimateMemoryUsage() {
         return 0;
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/LayerManager.java b/src/org/openstreetmap/josm/gui/layer/LayerManager.java
index eb91262..489fa88 100644
--- a/src/org/openstreetmap/josm/gui/layer/LayerManager.java
+++ b/src/org/openstreetmap/josm/gui/layer/LayerManager.java
@@ -101,7 +101,7 @@ public class LayerManager {
     public static class LayerRemoveEvent extends LayerManagerEvent {
         private final Layer removedLayer;
         private final boolean lastLayer;
-        private Collection<Layer> scheduleForRemoval = new ArrayList<>();
+        private final Collection<Layer> scheduleForRemoval = new ArrayList<>();
 
         LayerRemoveEvent(LayerManager source, Layer removedLayer) {
             super(source);
@@ -177,12 +177,7 @@ public class LayerManager {
     public void addLayer(final Layer layer) {
         // we force this on to the EDT Thread to make events fire from there.
         // The synchronization lock needs to be held by the EDT.
-        GuiHelper.runInEDTAndWaitWithException(new Runnable() {
-            @Override
-            public void run() {
-                realAddLayer(layer);
-            }
-        });
+        GuiHelper.runInEDTAndWaitWithException(() -> realAddLayer(layer));
     }
 
     protected synchronized void realAddLayer(Layer layer) {
@@ -207,12 +202,7 @@ public class LayerManager {
     public void removeLayer(final Layer layer) {
         // we force this on to the EDT Thread to make events fire from there.
         // The synchronization lock needs to be held by the EDT.
-        GuiHelper.runInEDTAndWaitWithException(new Runnable() {
-            @Override
-            public void run() {
-                realRemoveLayer(layer);
-            }
-        });
+        GuiHelper.runInEDTAndWaitWithException(() -> realRemoveLayer(layer));
     }
 
     protected synchronized void realRemoveLayer(Layer layer) {
@@ -246,12 +236,7 @@ public class LayerManager {
     public void moveLayer(final Layer layer, final int position) {
         // we force this on to the EDT Thread to make events fire from there.
         // The synchronization lock needs to be held by the EDT.
-        GuiHelper.runInEDTAndWaitWithException(new Runnable() {
-            @Override
-            public void run() {
-                realMoveLayer(layer, position);
-            }
-        });
+        GuiHelper.runInEDTAndWaitWithException(() -> realMoveLayer(layer, position));
     }
 
     protected synchronized void realMoveLayer(Layer layer, int position) {
diff --git a/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java b/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java
index d577e30..4879f92 100644
--- a/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java
+++ b/src/org/openstreetmap/josm/gui/layer/LayerPositionStrategy.java
@@ -2,65 +2,49 @@
 package org.openstreetmap.josm.gui.layer;
 
 import java.util.List;
-
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Predicates;
+import java.util.Objects;
+import java.util.function.Predicate;
 
 /**
  * This class defines a position to insert a given layer in the list of layers.
  * @author Michael Zangl
  * @since 10008
+ * @since 10592 functional interface
  */
-public abstract class LayerPositionStrategy {
+ at FunctionalInterface
+public interface LayerPositionStrategy {
 
     /**
      * always inserts at the front of the stack.
      */
-    public static final LayerPositionStrategy IN_FRONT = new LayerPositionStrategy() {
-        @Override
-        public int getPosition(LayerManager manager) {
-            return 0;
-        }
-    };
+    LayerPositionStrategy IN_FRONT = manager -> 0;
 
     /**
      * A GPX layer is added below the lowest data layer.
      */
-    public static final LayerPositionStrategy AFTER_LAST_DATA_LAYER = afterLast(new Predicate<Layer>() {
-        @Override
-        public boolean evaluate(Layer object) {
-            return object instanceof OsmDataLayer || object instanceof ValidatorLayer;
-        }
-    });
+    LayerPositionStrategy AFTER_LAST_DATA_LAYER = afterLast(
+            layer -> layer instanceof OsmDataLayer || layer instanceof ValidatorLayer);
 
     /**
      * A normal layer is added after all validation layers.
      */
-    public static final LayerPositionStrategy AFTER_LAST_VALIDATION_LAYER = afterLast(new Predicate<Layer>() {
-        @Override
-        public boolean evaluate(Layer object) {
-            return object instanceof ValidatorLayer;
-        }
-    });
+    LayerPositionStrategy AFTER_LAST_VALIDATION_LAYER = afterLast(
+            layer -> layer instanceof ValidatorLayer);
 
     /**
      * The default for background layers: They are added before the first background layer in the list.
      * If there is none, they are added at the end of the list.
      */
-    public static final LayerPositionStrategy BEFORE_FIRST_BACKGROUND_LAYER = inFrontOfFirst(new Predicate<Layer>() {
-        @Override
-        public boolean evaluate(Layer object) {
-            return object.isBackgroundLayer();
-        }
-    });
+    LayerPositionStrategy BEFORE_FIRST_BACKGROUND_LAYER = inFrontOfFirst(
+            Layer::isBackgroundLayer);
 
     /**
      * Gets a {@link LayerPositionStrategy} that inserts this layer in front of a given layer
      * @param other The layer before which to insert this layer
      * @return The strategy
      */
-    public static LayerPositionStrategy inFrontOf(Layer other) {
-        return inFrontOfFirst(Predicates.equalTo(other));
+    static LayerPositionStrategy inFrontOf(Layer other) {
+        return inFrontOfFirst(obj -> Objects.equals(obj, other));
     }
 
     /**
@@ -68,18 +52,15 @@ public abstract class LayerPositionStrategy {
      * @param what The condition to match.
      * @return The strategy.
      */
-    public static LayerPositionStrategy inFrontOfFirst(final Predicate<Layer> what) {
-        return new LayerPositionStrategy() {
-            @Override
-            public int getPosition(LayerManager manager) {
-                List<Layer> layers = manager.getLayers();
-                for (int i = 0; i < layers.size(); i++) {
-                    if (what.evaluate(layers.get(i))) {
-                        return i;
-                    }
+    static LayerPositionStrategy inFrontOfFirst(final Predicate<Layer> what) {
+        return manager -> {
+            List<Layer> layers = manager.getLayers();
+            for (int i = 0; i < layers.size(); i++) {
+                if (what.test(layers.get(i))) {
+                    return i;
                 }
-                return layers.size();
             }
+            return layers.size();
         };
     }
 
@@ -88,18 +69,15 @@ public abstract class LayerPositionStrategy {
      * @param what what to search for
      * @return The strategy.
      */
-    public static LayerPositionStrategy afterLast(final Predicate<Layer> what) {
-        return new LayerPositionStrategy() {
-            @Override
-            public int getPosition(LayerManager manager) {
-                List<Layer> layers = manager.getLayers();
-                for (int i = layers.size() - 1; i >= 0; i--) {
-                    if (what.evaluate(layers.get(i))) {
-                        return i + 1;
-                    }
+    static LayerPositionStrategy afterLast(final Predicate<Layer> what) {
+        return manager -> {
+            List<Layer> layers = manager.getLayers();
+            for (int i = layers.size() - 1; i >= 0; i--) {
+                if (what.test(layers.get(i))) {
+                    return i + 1;
                 }
-                return 0;
             }
+            return 0;
         };
     }
 
@@ -108,5 +86,5 @@ public abstract class LayerPositionStrategy {
      * @param manager The layer manager to insert the layer in.
      * @return The position in the range 0...layers.size
      */
-    public abstract int getPosition(LayerManager manager);
+    int getPosition(LayerManager manager);
 }
diff --git a/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java b/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
index 53f2bb8..34aa471 100644
--- a/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
+++ b/src/org/openstreetmap/josm/gui/layer/MainLayerManager.java
@@ -23,8 +23,9 @@ public class MainLayerManager extends LayerManager {
     /**
      * This listener listens to changes of the active or the edit layer.
      * @author Michael Zangl
-     *
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface ActiveLayerChangeListener {
         /**
          * Called whenever the active or edit layer changed.
@@ -41,7 +42,7 @@ public class MainLayerManager extends LayerManager {
      * This event is fired whenever the active or the edit layer changes.
      * @author Michael Zangl
      */
-    public class ActiveLayerChangeEvent extends LayerManagerEvent {
+    public static class ActiveLayerChangeEvent extends LayerManagerEvent {
 
         private final OsmDataLayer previousEditLayer;
 
@@ -99,7 +100,7 @@ public class MainLayerManager extends LayerManager {
      * @author Michael Zangl
      * @since 10508
      */
-    public class LayerAvailabilityEvent extends LayerManagerEvent {
+    public static class LayerAvailabilityEvent extends LayerManagerEvent {
         private final boolean hasLayers;
 
         LayerAvailabilityEvent(LayerManager source, boolean hasLayers) {
@@ -226,12 +227,7 @@ public class MainLayerManager extends LayerManager {
     public void setActiveLayer(final Layer layer) {
         // we force this on to the EDT Thread to make events fire from there.
         // The synchronization lock needs to be held by the EDT.
-        GuiHelper.runInEDTAndWaitWithException(new Runnable() {
-            @Override
-            public void run() {
-                realSetActiveLayer(layer);
-            }
-        });
+        GuiHelper.runInEDTAndWaitWithException(() -> realSetActiveLayer(layer));
     }
 
     protected synchronized void realSetActiveLayer(final Layer layer) {
diff --git a/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java b/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
index 4ce4602..0468ff1 100644
--- a/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
+++ b/src/org/openstreetmap/josm/gui/layer/MapViewPaintable.java
@@ -12,7 +12,10 @@ import org.openstreetmap.josm.gui.MapView;
  * You might want to extend {@link AbstractMapViewPaintable} to ease implementation of this.
  * <p>
  * That class allows you to listen to paintable change events. Those methods may be moved here some time in the future.
+ * @since   608 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface MapViewPaintable {
 
     /**
@@ -50,13 +53,16 @@ public interface MapViewPaintable {
     /**
      * This is a listener that listens to {@link PaintableInvalidationEvent}s
      * @author Michael Zangl
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     interface PaintableInvalidationListener {
         /**
          * Called whenever a {@link PaintableInvalidationEvent} is fired. This might be called from any thread.
          * @param event The event
+         * @since 10600 (renamed)
          */
-        void paintablInvalidated(PaintableInvalidationEvent event);
+        void paintableInvalidated(PaintableInvalidationEvent event);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java b/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java
index a8cd6b1..7c7d6a8 100644
--- a/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/NativeScaleLayer.java
@@ -10,7 +10,10 @@ import org.openstreetmap.josm.gui.NavigatableComponent;
 /**
  * Represents a layer that has native scales.
  * @author András Kolesár
+ * @since  9818 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface NativeScaleLayer {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/layer/NoteLayer.java b/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
index 90f65b0..72f7ee5 100644
--- a/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/NoteLayer.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui.layer;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.Dimension;
 import java.awt.Graphics2D;
@@ -30,6 +31,7 @@ import org.openstreetmap.josm.data.notes.NoteComment;
 import org.openstreetmap.josm.data.osm.NoteData;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.io.AbstractIOTask;
@@ -40,7 +42,6 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.XmlWriter;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
@@ -187,7 +188,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener
 
     @Override
     public String getToolTipText() {
-        return noteData.getNotes().size() + ' ' + tr("Notes");
+        return trn("{0} note", "{0} notes", noteData.getNotes().size(), noteData.getNotes().size());
     }
 
     @Override
@@ -237,7 +238,7 @@ public class NoteLayer extends AbstractModifiableLayer implements MouseListener
     public void mouseClicked(MouseEvent e) {
         if (SwingUtilities.isRightMouseButton(e) && noteData.getSelectedNote() != null) {
             final String url = OsmApi.getOsmApi().getBaseUrl() + "notes/" + noteData.getSelectedNote().getId();
-            Utils.copyToClipboard(url);
+            ClipboardUtils.copyString(url);
             return;
         } else if (!SwingUtilities.isLeftMouseButton(e)) {
             return;
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index 6bcfb13..7bdfd1a 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -29,7 +29,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.regex.Pattern;
 
@@ -238,13 +237,16 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
         }
     }
 
+    @FunctionalInterface
     public interface CommandQueueListener {
         void commandChanged(int queueSize, int redoSize);
     }
 
     /**
      * Listener called when a state of this layer has changed.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface LayerStateChangeListener {
         /**
          * Notifies that the "upload discouraged" (upload=no) state has changed.
@@ -422,9 +424,9 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
     }
 
     @Override public String getToolTipText() {
-        int nodes = new FilteredCollection<>(data.getNodes(), OsmPrimitive.nonDeletedPredicate).size();
-        int ways = new FilteredCollection<>(data.getWays(), OsmPrimitive.nonDeletedPredicate).size();
-        int rels = new FilteredCollection<>(data.getRelations(), OsmPrimitive.nonDeletedPredicate).size();
+        int nodes = new FilteredCollection<>(data.getNodes(), p -> !p.isDeleted()).size();
+        int ways = new FilteredCollection<>(data.getWays(), p -> !p.isDeleted()).size();
+        int rels = new FilteredCollection<>(data.getRelations(), p -> !p.isDeleted()).size();
 
         String tool = trn("{0} node", "{0} nodes", nodes, nodes)+", ";
         tool += trn("{0} way", "{0} ways", ways, ways)+", ";
@@ -643,7 +645,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
          * (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
+        sortedWays.sort(new OsmPrimitiveComparator(true, false)); // sort by OsmPrimitive#getUniqueId ascending
         Collections.reverse(sortedWays); // sort by OsmPrimitive#getUniqueId descending
         for (Way w : sortedWays) {
             if (!w.isUsable()) {
@@ -749,9 +751,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
                         break;
                     }
                 } catch (NumberFormatException e) {
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                 }
             }
         }
@@ -771,9 +771,7 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
                         break;
                     }
                 } catch (NumberFormatException e) {
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                 }
             }
         }
@@ -990,40 +988,34 @@ public class OsmDataLayer extends AbstractModifiableLayer implements Listener, S
 
     @Override
     public boolean checkSaveConditions() {
-        if (isDataSetEmpty() && 1 != GuiHelper.runInEDTAndWaitAndReturn(new Callable<Integer>() {
-            @Override
-            public Integer call() {
-                if (GraphicsEnvironment.isHeadless()) {
-                    return 2;
-                }
-                ExtendedDialog dialog = new ExtendedDialog(
-                        Main.parent,
-                        tr("Empty document"),
-                        new String[] {tr("Save anyway"), tr("Cancel")}
-                );
-                dialog.setContent(tr("The document contains no data."));
-                dialog.setButtonIcons(new String[] {"save", "cancel"});
-                return dialog.showDialog().getValue();
+        if (isDataSetEmpty() && 1 != GuiHelper.runInEDTAndWaitAndReturn(() -> {
+            if (GraphicsEnvironment.isHeadless()) {
+                return 2;
             }
+            ExtendedDialog dialog = new ExtendedDialog(
+                    Main.parent,
+                    tr("Empty document"),
+                    new String[] {tr("Save anyway"), tr("Cancel")}
+            );
+            dialog.setContent(tr("The document contains no data."));
+            dialog.setButtonIcons(new String[] {"save", "cancel"});
+            return dialog.showDialog().getValue();
         })) {
             return false;
         }
 
         ConflictCollection conflictsCol = getConflicts();
-        if (conflictsCol != null && !conflictsCol.isEmpty() && 1 != GuiHelper.runInEDTAndWaitAndReturn(new Callable<Integer>() {
-            @Override
-            public Integer call() {
-                ExtendedDialog dialog = new ExtendedDialog(
-                        Main.parent,
-                        /* I18N: Display title of the window showing conflicts */
-                        tr("Conflicts"),
-                        new String[] {tr("Reject Conflicts and Save"), tr("Cancel")}
-                );
-                dialog.setContent(
-                        tr("There are unresolved conflicts. Conflicts will not be saved and handled as if you rejected all. Continue?"));
-                dialog.setButtonIcons(new String[] {"save", "cancel"});
-                return dialog.showDialog().getValue();
-            }
+        if (conflictsCol != null && !conflictsCol.isEmpty() && 1 != GuiHelper.runInEDTAndWaitAndReturn(() -> {
+            ExtendedDialog dialog = new ExtendedDialog(
+                    Main.parent,
+                    /* I18N: Display title of the window showing conflicts */
+                    tr("Conflicts"),
+                    new String[] {tr("Reject Conflicts and Save"), tr("Cancel")}
+            );
+            dialog.setContent(
+                    tr("There are unresolved conflicts. Conflicts will not be saved and handled as if you rejected all. Continue?"));
+            dialog.setButtonIcons(new String[] {"save", "cancel"});
+            return dialog.showDialog().getValue();
         })) {
             return false;
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/TMSLayer.java b/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
index ff7fd32..bf833ff 100644
--- a/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
@@ -72,12 +72,9 @@ public class TMSLayer extends AbstractCachedTileSourceLayer<TMSTileSource> imple
      */
     @Override
     protected TMSTileSource getTileSource(ImageryInfo info) {
-        return getTileSourceStatic(info, new Runnable() {
-            @Override
-            public void run() {
-                Main.debug("Attribution loaded, running loadAllErrorTiles");
-                TMSLayer.this.loadAllErrorTiles(false);
-            }
+        return getTileSourceStatic(info, () -> {
+            Main.debug("Attribution loaded, running loadAllErrorTiles");
+            this.loadAllErrorTiles(false);
         });
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/WMSLayer.java b/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
index 152e658..acf27c6 100644
--- a/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
 import org.openstreetmap.josm.data.projection.Projection;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 
 /**
  * This is a layer that grabs the current screen from an WMS server. The data
@@ -35,13 +36,19 @@ import org.openstreetmap.josm.gui.ExtendedDialog;
  *
  */
 public class WMSLayer extends AbstractCachedTileSourceLayer<TemplatedWMSTileSource> {
-    private static final String PREFERENCE_PREFIX = "imagery.wms.";
+    private static final String PREFERENCE_PREFIX = "imagery.wms";
+    /**
+     * Registers all setting properties
+     */
+    static {
+        new TileSourceDisplaySettings(PREFERENCE_PREFIX);
+    }
 
     /** default tile size for WMS Layer */
-    public static final IntegerProperty PROP_IMAGE_SIZE = new IntegerProperty(PREFERENCE_PREFIX + "imageSize", 512);
+    public static final IntegerProperty PROP_IMAGE_SIZE = new IntegerProperty(PREFERENCE_PREFIX + ".imageSize", 512);
 
     /** should WMS layer autozoom in default mode */
-    public static final BooleanProperty PROP_DEFAULT_AUTOZOOM = new BooleanProperty(PREFERENCE_PREFIX + "default_autozoom", true);
+    public static final BooleanProperty PROP_DEFAULT_AUTOZOOM = new BooleanProperty(PREFERENCE_PREFIX + ".default_autozoom", true);
 
     private static final String CACHE_REGION_NAME = "WMS";
 
@@ -54,7 +61,11 @@ public class WMSLayer extends AbstractCachedTileSourceLayer<TemplatedWMSTileSour
     public WMSLayer(ImageryInfo info) {
         super(info);
         this.supportedProjections = new TreeSet<>(info.getServerProjections());
-        this.autoZoom = PROP_DEFAULT_AUTOZOOM.get();
+    }
+
+    @Override
+    protected TileSourceDisplaySettings createDisplaySettings() {
+        return new TileSourceDisplaySettings(PREFERENCE_PREFIX);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java b/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
index c61ee95..f4cb70c 100644
--- a/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
@@ -12,8 +12,8 @@ import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.data.imagery.WMSCachedTileLoader;
 import org.openstreetmap.josm.data.imagery.WMTSTileSource;
-import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.projection.Projection;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 
 /**
  * WMTS layer based on AbstractTileSourceLayer. Overrides few methods to align WMTS to Tile based computations
@@ -26,10 +26,15 @@ import org.openstreetmap.josm.data.projection.Projection;
  *
  */
 public class WMTSLayer extends AbstractCachedTileSourceLayer<WMTSTileSource> implements NativeScaleLayer {
+    private static final String PREFERENCE_PREFIX = "imagery.wmts";
+
     /**
-     * default setting of autozoom per layer
+     * Registers all setting properties
      */
-    public static final BooleanProperty PROP_DEFAULT_AUTOZOOM_WMTS = new BooleanProperty("imagery.wmts.default_autozoom", true);
+    static {
+        new TileSourceDisplaySettings(PREFERENCE_PREFIX);
+    }
+
     private static final String CACHE_REGION_NAME = "WMTS";
 
     /**
@@ -38,7 +43,11 @@ public class WMTSLayer extends AbstractCachedTileSourceLayer<WMTSTileSource> imp
      */
     public WMTSLayer(ImageryInfo info) {
         super(info);
-        autoZoom = PROP_DEFAULT_AUTOZOOM_WMTS.get();
+    }
+
+    @Override
+    protected TileSourceDisplaySettings createDisplaySettings() {
+        return new TileSourceDisplaySettings(PREFERENCE_PREFIX);
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
index 8cb5416..4d6a5a6 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
@@ -59,8 +59,6 @@ import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 import javax.swing.filechooser.FileFilter;
 
 import org.openstreetmap.josm.Main;
@@ -459,54 +457,46 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 }
             });
             imgList.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-            imgList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
-
-                @Override
-                public void valueChanged(ListSelectionEvent arg0) {
-                    int index = imgList.getSelectedIndex();
-                    Integer orientation = ExifReader.readOrientation(yLayer.data.get(index).getFile());
-                    imgDisp.setImage(yLayer.data.get(index).getFile(), orientation);
-                    Date date = yLayer.data.get(index).getExifTime();
-                    if (date != null) {
-                        DateFormat df = DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM);
-                        lbExifTime.setText(df.format(date));
-                        tfGpsTime.setText(df.format(date));
-                        tfGpsTime.setCaretPosition(tfGpsTime.getText().length());
-                        tfGpsTime.setEnabled(true);
-                        tfGpsTime.requestFocus();
-                    } else {
-                        lbExifTime.setText(tr("No date"));
-                        tfGpsTime.setText("");
-                        tfGpsTime.setEnabled(false);
-                    }
+            imgList.getSelectionModel().addListSelectionListener(evt -> {
+                int index = imgList.getSelectedIndex();
+                Integer orientation = ExifReader.readOrientation(yLayer.data.get(index).getFile());
+                imgDisp.setImage(yLayer.data.get(index).getFile(), orientation);
+                Date date = yLayer.data.get(index).getExifTime();
+                if (date != null) {
+                    DateFormat df = DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM);
+                    lbExifTime.setText(df.format(date));
+                    tfGpsTime.setText(df.format(date));
+                    tfGpsTime.setCaretPosition(tfGpsTime.getText().length());
+                    tfGpsTime.setEnabled(true);
+                    tfGpsTime.requestFocus();
+                } else {
+                    lbExifTime.setText(tr("No date"));
+                    tfGpsTime.setText("");
+                    tfGpsTime.setEnabled(false);
                 }
             });
             panelLst.add(new JScrollPane(imgList), BorderLayout.CENTER);
 
             JButton openButton = new JButton(tr("Open another photo"));
-            openButton.addActionListener(new ActionListener() {
-
-                @Override
-                public void actionPerformed(ActionEvent ae) {
-                    AbstractFileChooser fc = DiskAccessAction.createAndOpenFileChooser(true, false, null,
-                            JpgImporter.FILE_FILTER_WITH_FOLDERS, JFileChooser.FILES_ONLY, "geoimage.lastdirectory");
-                    if (fc == null)
-                        return;
-                    File sel = fc.getSelectedFile();
-
-                    Integer orientation = ExifReader.readOrientation(sel);
-                    imgDisp.setImage(sel, orientation);
-
-                    Date date = ExifReader.readTime(sel);
-                    if (date != null) {
-                        lbExifTime.setText(DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM).format(date));
-                        tfGpsTime.setText(DateUtils.getDateFormat(DateFormat.SHORT).format(date)+' ');
-                        tfGpsTime.setEnabled(true);
-                    } else {
-                        lbExifTime.setText(tr("No date"));
-                        tfGpsTime.setText("");
-                        tfGpsTime.setEnabled(false);
-                    }
+            openButton.addActionListener(ae -> {
+                AbstractFileChooser fc = DiskAccessAction.createAndOpenFileChooser(true, false, null,
+                        JpgImporter.FILE_FILTER_WITH_FOLDERS, JFileChooser.FILES_ONLY, "geoimage.lastdirectory");
+                if (fc == null)
+                    return;
+                File sel = fc.getSelectedFile();
+
+                Integer orientation = ExifReader.readOrientation(sel);
+                imgDisp.setImage(sel, orientation);
+
+                Date date = ExifReader.readTime(sel);
+                if (date != null) {
+                    lbExifTime.setText(DateUtils.getDateTimeFormat(DateFormat.SHORT, DateFormat.MEDIUM).format(date));
+                    tfGpsTime.setText(DateUtils.getDateFormat(DateFormat.SHORT).format(date)+' ');
+                    tfGpsTime.setEnabled(true);
+                } else {
+                    lbExifTime.setText(tr("No date"));
+                    tfGpsTime.setText("");
+                    tfGpsTime.setEnabled(false);
                 }
             });
             panelLst.add(openButton, BorderLayout.PAGE_END);
@@ -952,6 +942,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
                 final long deciSeconds = timezoneOffsetPair.b.getMilliseconds() / 100;
                 sldSeconds.setValue((int) (deciSeconds % 60));
             } catch (RuntimeException e) {
+                Main.warn(e);
                 JOptionPane.showMessageDialog(Main.parent,
                         tr("An error occurred while trying to match the photos to the GPX track."
                                 +" You can adjust the sliders to manually match the photos."),
@@ -989,7 +980,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
      * @throws IndexOutOfBoundsException when there are no images
      * @throws NoGpxTimestamps when the gpx track does not contain a timestamp
      */
-    static Pair<Timezone, Offset> autoGuess(List<ImageEntry> imgs, GpxData gpx) throws IndexOutOfBoundsException, NoGpxTimestamps {
+    static Pair<Timezone, Offset> autoGuess(List<ImageEntry> imgs, GpxData gpx) throws NoGpxTimestamps {
 
         // Init variables
         long firstExifDate = imgs.get(0).getExifTime().getTime();
@@ -1091,12 +1082,7 @@ public class CorrelateGpxWithImages extends AbstractAction {
             dateImgLst.add(e);
         }
 
-        Collections.sort(dateImgLst, new Comparator<ImageEntry>() {
-            @Override
-            public int compare(ImageEntry arg0, ImageEntry arg1) {
-                return arg0.getExifTime().compareTo(arg1.getExifTime());
-            }
-        });
+        dateImgLst.sort(Comparator.comparing(ImageEntry::getExifTime));
 
         return dateImgLst;
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
index 6c58bca..9924a41 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
@@ -52,6 +52,7 @@ import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
@@ -64,8 +65,6 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
-import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
-import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.JpgImporter;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -171,7 +170,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements PropertyCh
             errorMessages = new LinkedHashSet<>();
         }
 
-        protected void rememberError(String message) {
+        private void rememberError(String message) {
             this.errorMessages.add(message);
         }
 
@@ -183,6 +182,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements PropertyCh
             try {
                 addRecursiveFiles(files, selection);
             } catch (IllegalStateException e) {
+                Main.debug(e);
                 rememberError(e.getMessage());
             }
 
@@ -260,7 +260,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements PropertyCh
             }
         }
 
-        protected String formatErrorMessages() {
+        private String formatErrorMessages() {
             StringBuilder sb = new StringBuilder();
             sb.append("<html>");
             if (errorMessages.size() == 1) {
@@ -429,15 +429,12 @@ public class GeoImageLayer extends AbstractModifiableLayer implements PropertyCh
         }
 
         if (selected != null && !data.isEmpty()) {
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    for (int i = 0; i < data.size(); i++) {
-                        if (selected.equals(data.get(i))) {
-                            currentPhoto = i;
-                            ImageViewerDialog.showImage(GeoImageLayer.this, data.get(i));
-                            break;
-                        }
+            GuiHelper.runInEDTAndWait(() -> {
+                for (int i = 0; i < data.size(); i++) {
+                    if (selected.equals(data.get(i))) {
+                        currentPhoto = i;
+                        ImageViewerDialog.showImage(this, data.get(i));
+                        break;
                     }
                 }
             });
@@ -724,7 +721,7 @@ public class GeoImageLayer extends AbstractModifiableLayer implements PropertyCh
 
     public void copyCurrentPhotoPath() {
         if (data != null && !data.isEmpty() && currentPhoto >= 0 && currentPhoto < data.size()) {
-            Utils.copyToClipboard(data.get(currentPhoto).getFile().toString());
+            ClipboardUtils.copyString(data.get(currentPhoto).getFile().toString());
         }
     }
 
@@ -879,27 +876,21 @@ public class GeoImageLayer extends AbstractModifiableLayer implements PropertyCh
             }
         };
 
-        mapModeListener = new MapModeChangeListener() {
-            @Override
-            public void mapModeChange(MapMode oldMapMode, MapMode newMapMode) {
-                if (newMapMode == null || isSupportedMapMode(newMapMode)) {
-                    Main.map.mapView.addMouseListener(mouseAdapter);
-                } else {
-                    Main.map.mapView.removeMouseListener(mouseAdapter);
-                }
+        mapModeListener = (oldMapMode, newMapMode) -> {
+            if (newMapMode == null || isSupportedMapMode(newMapMode)) {
+                Main.map.mapView.addMouseListener(mouseAdapter);
+            } else {
+                Main.map.mapView.removeMouseListener(mouseAdapter);
             }
         };
 
         MapFrame.addMapModeChangeListener(mapModeListener);
         mapModeListener.mapModeChange(null, Main.map.mapMode);
 
-        Main.getLayerManager().addActiveLayerChangeListener(new ActiveLayerChangeListener() {
-            @Override
-            public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
-                if (Main.getLayerManager().getActiveLayer() == GeoImageLayer.this) {
-                    // only in select mode it is possible to click the images
-                    Main.map.selectSelectTool(false);
-                }
+        Main.getLayerManager().addActiveLayerChangeListener(e -> {
+            if (Main.getLayerManager().getActiveLayer() == this) {
+                // only in select mode it is possible to click the images
+                Main.map.selectSelectTool(false);
             }
         });
 
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
index f2a95b7..7e457a5 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
@@ -83,7 +83,7 @@ public final class ImageViewerDialog extends ToggleDialog implements LayerChange
         Main.getLayerManager().addLayerChangeListener(this);
     }
 
-    protected void build() {
+    private void build() {
         JPanel content = new JPanel(new BorderLayout());
 
         content.add(imgDisplay, BorderLayout.CENTER);
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
index 90beabe..ce141a9 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
@@ -9,7 +9,6 @@ import java.awt.Dimension;
 import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
@@ -26,8 +25,6 @@ import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.JToggleButton;
 import javax.swing.ListSelectionModel;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableRowSorter;
@@ -130,7 +127,7 @@ public class ChooseTrackVisibilityAction extends AbstractAction {
      * @param content table data
      * @return non-editable table
      */
-    private JTable buildTable(Object[][] content) {
+    private static JTable buildTable(Object[]... content) {
         final String[] headers = {tr("Name"), tr("Description"), tr("Timespan"), tr("Length"), tr("URL")};
         DefaultTableModel model = new DefaultTableModel(content, headers);
         final JTable t = new JTable(model) {
@@ -204,14 +201,11 @@ public class ChooseTrackVisibilityAction extends AbstractAction {
 
     /** listens to selection changes in the table and redraws the map */
     private void listenToSelectionChanges() {
-        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
-            @Override
-            public void valueChanged(ListSelectionEvent e) {
-                if (noUpdates || !(e.getSource() instanceof ListSelectionModel)) {
-                    return;
-                }
-                updateVisibilityFromTable();
+        table.getSelectionModel().addListSelectionListener(e -> {
+            if (noUpdates || !(e.getSource() instanceof ListSelectionModel)) {
+                return;
             }
+            updateVisibilityFromTable();
         });
     }
 
@@ -229,14 +223,12 @@ public class ChooseTrackVisibilityAction extends AbstractAction {
         final JPanel msg = new JPanel(new GridBagLayout());
 
         dateFilter = new DateFilterPanel(layer, "gpx.traces", false);
-        dateFilter.setFilterAppliedListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                noUpdates = true;
-                selectVisibleTracksInTable();
-                noUpdates = false;
-                Main.map.mapView.preferenceChanged(null);
-                Main.map.repaint(100);
-            }
+        dateFilter.setFilterAppliedListener(e -> {
+            noUpdates = true;
+            selectVisibleTracksInTable();
+            noUpdates = false;
+            Main.map.mapView.preferenceChanged(null);
+            Main.map.repaint(100);
         });
         dateFilter.loadFromPrefs();
 
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java b/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
index 24f002b..c80d8c1 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/DateFilterPanel.java
@@ -5,7 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Component;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -13,7 +12,6 @@ import java.util.GregorianCalendar;
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 import javax.swing.Timer;
-import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
@@ -69,17 +67,11 @@ public class DateFilterPanel extends JPanel {
         noTimestampCb.addChangeListener(changeListener);
     }
 
-    private final transient ChangeListener changeListener = new ChangeListener() {
-        @Override public void stateChanged(ChangeEvent e) {
-            if (isEnabled()) applyFilterWithDelay();
-        }
+    private final transient ChangeListener changeListener = e -> {
+        if (isEnabled()) applyFilterWithDelay();
     };
 
-    private final Timer t = new Timer(200, new ActionListener() {
-        @Override public void actionPerformed(ActionEvent e) {
-            applyFilter();
-        }
-    });
+    private final Timer t = new Timer(200, e -> applyFilter());
 
     /**
      * Do filtering but little bit later (to reduce cpu load)
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
index e0be8dc..27dcb7a 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongPanel.java
@@ -13,7 +13,6 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JSpinner;
 import javax.swing.SpinnerNumberModel;
-import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
@@ -178,11 +177,7 @@ public class DownloadAlongPanel extends JPanel {
                 )
         };
 
-        addChangeListener(new ChangeListener() {
-            @Override public void stateChanged(ChangeEvent e) {
-                options[0].setEnabled(isDownloadOsmData() || isDownloadGpxData());
-            }
-        });
+        addChangeListener(e -> options[0].setEnabled(isDownloadOsmData() || isDownloadGpxData()));
 
         int ret = HelpAwareOptionPane.showOptionDialog(Main.parent, this, title,
                     JOptionPane.QUESTION_MESSAGE, null, options, options[0], helpTopic);
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
index e6d8908..8e138db 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/GpxDrawHelper.java
@@ -481,7 +481,7 @@ public class GpxDrawHelper implements SoMChangeListener {
                         hdop = 0;
                     }
                     Color customColoringTransparent = hdopAlpha < 0 ? trkPnt.customColoring :
-                        new Color(trkPnt.customColoring.getRGB() & 0x00ffffff | hdopAlpha << 24, true);
+                        new Color((trkPnt.customColoring.getRGB() & 0x00ffffff) | (hdopAlpha << 24), true);
                     g.setColor(customColoringTransparent);
                     // hdop circles
                     int hdopp = mv.getPoint(new LatLon(
@@ -493,7 +493,7 @@ public class GpxDrawHelper implements SoMChangeListener {
                     // color the large GPS points like the gps lines
                     if (trkPnt.customColoring != null) {
                         Color customColoringTransparent = largePointAlpha < 0 ? trkPnt.customColoring :
-                            new Color(trkPnt.customColoring.getRGB() & 0x00ffffff | largePointAlpha << 24, true);
+                            new Color((trkPnt.customColoring.getRGB() & 0x00ffffff) | (largePointAlpha << 24), true);
 
                         g.setColor(customColoringTransparent);
                     }
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
index 1e3ff2a..7fb7c76 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
@@ -10,7 +10,6 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 
 import javax.swing.AbstractAction;
@@ -88,12 +87,7 @@ public class ImportAudioAction extends AbstractAction {
             // sort files in increasing order of timestamp (this is the end time, but so
             // long as they don't overlap, that's fine)
             if (sel.length > 1) {
-                Arrays.sort(sel, new Comparator<File>() {
-                    @Override
-                    public int compare(File a, File b) {
-                        return a.lastModified() <= b.lastModified() ? -1 : 1;
-                    }
-                });
+                Arrays.sort(sel, Comparator.comparingLong(File::lastModified));
             }
             StringBuilder names = new StringBuilder();
             for (File file : sel) {
@@ -283,12 +277,7 @@ public class ImportAudioAction extends AbstractAction {
 
         /* we must have got at least one waypoint now */
 
-        Collections.sort((ArrayList<WayPoint>) waypoints, new Comparator<WayPoint>() {
-            @Override
-            public int compare(WayPoint a, WayPoint b) {
-                return a.time <= b.time ? -1 : 1;
-            }
-        });
+        ((ArrayList<WayPoint>) waypoints).sort(Comparator.comparingDouble(o -> o.time));
 
         firstTime = -1.0; /* this time of the first waypoint, not first trackpoint */
         for (WayPoint w : waypoints) {
@@ -298,8 +287,7 @@ public class ImportAudioAction extends AbstractAction {
             double offset = w.time - firstTime;
             AudioMarker am = new AudioMarker(w.getCoor(), w, url, ml, w.time, offset);
             /*
-             * timeFromAudio intended for future use to shift markers of this type on
-             * synchronization
+             * timeFromAudio intended for future use to shift markers of this type on synchronization
              */
             if (w == wayPointFromTimeStamp) {
                 am.timeFromAudio = true;
diff --git a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
index 74dca6c..d656229 100644
--- a/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
@@ -40,7 +40,7 @@ public class ImportImagesAction extends AbstractAction {
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportImages#CantImportIntoGpxLayerFromServer"));
     }
 
-    private static void addRecursiveFiles(List<File> files, File[] sel) {
+    private static void addRecursiveFiles(List<File> files, File ... sel) {
         if (sel == null) { // listFiles might return null
             return;
         }
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java
new file mode 100644
index 0000000..a3e441a
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessor.java
@@ -0,0 +1,185 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.awt.image.BufferedImageOp;
+import java.awt.image.ColorModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.layer.ImageProcessor;
+
+/**
+ * Adds or removes the colorfulness of the image.
+ *
+ * @author Michael Zangl
+ * @since 10547
+ */
+public class ColorfulImageProcessor implements ImageProcessor {
+    private ColorfulFilter op;
+    private double colorfulness = 1;
+
+    /**
+     * Gets the colorfulness value.
+     * @return The value
+     */
+    public double getColorfulness() {
+        return colorfulness;
+    }
+
+    /**
+     * Sets the colorfulness value. Clamps it to 0+
+     * @param colorfulness The value
+     */
+    public void setColorfulness(double colorfulness) {
+        if (colorfulness < 0) {
+            this.colorfulness = 0;
+        } else {
+            this.colorfulness = colorfulness;
+        }
+
+        if (this.colorfulness < .95 || this.colorfulness > 1.05) {
+            op = new ColorfulFilter(this.colorfulness);
+        } else {
+            op = null;
+        }
+    }
+
+    @Override
+    public BufferedImage process(BufferedImage image) {
+        if (op != null) {
+            return op.filter(image, null);
+        } else {
+            return image;
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "ColorfulImageProcessor [colorfulness=" + colorfulness + ']';
+    }
+
+    static class ColorfulFilter implements BufferedImageOp {
+        private final double colorfulness;
+
+        /**
+         * Create a new colorful filter.
+         * @param colorfulness The colorfulness as defined in the {@link ColorfulImageProcessor} class.
+         */
+        ColorfulFilter(double colorfulness) {
+            this.colorfulness = colorfulness;
+        }
+
+        @Override
+        public BufferedImage filter(BufferedImage src, BufferedImage dest) {
+            if (src.getWidth() == 0 || src.getHeight() == 0) {
+                return src;
+            }
+
+            if (dest == null) {
+                dest = createCompatibleDestImage(src, null);
+            }
+            DataBuffer srcBuffer = src.getRaster().getDataBuffer();
+            DataBuffer destBuffer = dest.getRaster().getDataBuffer();
+            if (!(srcBuffer instanceof DataBufferByte) || !(destBuffer instanceof DataBufferByte)) {
+                Main.trace("Cannot apply color filter: Images do not use DataBufferByte.");
+                return src;
+            }
+
+            int type = src.getType();
+            if (type != dest.getType()) {
+                Main.trace("Cannot apply color filter: Src / Dest differ in type (" + type + '/' + dest.getType() + ')');
+                return src;
+            }
+            int redOffset;
+            int greenOffset;
+            int blueOffset;
+            int alphaOffset = 0;
+            switch (type) {
+            case BufferedImage.TYPE_3BYTE_BGR:
+                blueOffset = 0;
+                greenOffset = 1;
+                redOffset = 2;
+                break;
+            case BufferedImage.TYPE_4BYTE_ABGR:
+            case BufferedImage.TYPE_4BYTE_ABGR_PRE:
+                blueOffset = 1;
+                greenOffset = 2;
+                redOffset = 3;
+                break;
+            case BufferedImage.TYPE_INT_ARGB:
+            case BufferedImage.TYPE_INT_ARGB_PRE:
+                redOffset = 0;
+                greenOffset = 1;
+                blueOffset = 2;
+                alphaOffset = 3;
+                break;
+            default:
+                Main.trace("Cannot apply color filter: Source image is of wrong type (" + type + ").");
+                return src;
+            }
+            doFilter((DataBufferByte) srcBuffer, (DataBufferByte) destBuffer, redOffset, greenOffset, blueOffset,
+                    alphaOffset, src.getAlphaRaster() != null);
+            return dest;
+        }
+
+        private void doFilter(DataBufferByte src, DataBufferByte dest, int redOffset, int greenOffset, int blueOffset,
+                int alphaOffset, boolean hasAlpha) {
+            byte[] srcPixels = src.getData();
+            byte[] destPixels = dest.getData();
+            if (srcPixels.length != destPixels.length) {
+                Main.trace("Cannot apply color filter: Source/Dest lengths differ.");
+                return;
+            }
+            int entries = hasAlpha ? 4 : 3;
+            for (int i = 0; i < srcPixels.length; i += entries) {
+                int r = srcPixels[i + redOffset] & 0xff;
+                int g = srcPixels[i + greenOffset] & 0xff;
+                int b = srcPixels[i + blueOffset] & 0xff;
+                double luminosity = r * .21d + g * .72d + b * .07d;
+                destPixels[i + redOffset] = mix(r, luminosity);
+                destPixels[i + greenOffset] = mix(g, luminosity);
+                destPixels[i + blueOffset] = mix(b, luminosity);
+                if (hasAlpha) {
+                    destPixels[i + alphaOffset] = srcPixels[i + alphaOffset];
+                }
+            }
+        }
+
+        private byte mix(int color, double luminosity) {
+            int val = (int) (colorfulness * color + (1 - colorfulness) * luminosity);
+            if (val < 0) {
+                return 0;
+            } else if (val > 0xff) {
+                return (byte) 0xff;
+            } else {
+                return (byte) val;
+            }
+        }
+
+        @Override
+        public Rectangle2D getBounds2D(BufferedImage src) {
+            return new Rectangle(src.getWidth(), src.getHeight());
+        }
+
+        @Override
+        public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM) {
+            return new BufferedImage(src.getWidth(), src.getHeight(), src.getType());
+        }
+
+        @Override
+        public Point2D getPoint2D(Point2D srcPt, Point2D dstPt) {
+            return (Point2D) srcPt.clone();
+        }
+
+        @Override
+        public RenderingHints getRenderingHints() {
+            return null;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java
new file mode 100644
index 0000000..5f9947a
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessor.java
@@ -0,0 +1,68 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import java.awt.Transparency;
+import java.awt.image.BufferedImage;
+import java.awt.image.LookupOp;
+import java.awt.image.ShortLookupTable;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.layer.ImageProcessor;
+
+/**
+ * An image processor which adjusts the gamma value of an image.
+ * @since 10547
+ */
+public class GammaImageProcessor implements ImageProcessor {
+    private double gamma = 1;
+    final short[] gammaChange = new short[256];
+    private final LookupOp op3 = new LookupOp(
+            new ShortLookupTable(0, new short[][]{gammaChange, gammaChange, gammaChange}), null);
+    private final LookupOp op4 = new LookupOp(
+            new ShortLookupTable(0, new short[][]{gammaChange, gammaChange, gammaChange, gammaChange}), null);
+
+    /**
+     * Returns the currently set gamma value.
+     * @return the currently set gamma value
+     */
+    public double getGamma() {
+        return gamma;
+    }
+
+    /**
+     * Sets a new gamma value, {@code 1} stands for no correction.
+     * @param gamma new gamma value
+     */
+    public void setGamma(double gamma) {
+        this.gamma = gamma;
+        for (int i = 0; i < 256; i++) {
+            gammaChange[i] = (short) (255 * Math.pow(i / 255., gamma));
+        }
+    }
+
+    @Override
+    public BufferedImage process(BufferedImage image) {
+        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) {
+            Main.trace(ignore);
+        }
+        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);
+    }
+
+    @Override
+    public String toString() {
+        return "GammaImageProcessor [gamma=" + gamma + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/ImageryFilterSettings.java b/src/org/openstreetmap/josm/gui/layer/imagery/ImageryFilterSettings.java
new file mode 100644
index 0000000..380b6a3
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/ImageryFilterSettings.java
@@ -0,0 +1,121 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.openstreetmap.josm.gui.layer.ImageProcessor;
+
+/**
+ * This class holds the filter settings for an imagery layer.
+ * @author Michael Zangl
+ * @since 10547
+ */
+public class ImageryFilterSettings {
+
+    protected GammaImageProcessor gammaImageProcessor = new GammaImageProcessor();
+    protected SharpenImageProcessor sharpenImageProcessor = new SharpenImageProcessor();
+    protected ColorfulImageProcessor collorfulnessImageProcessor = new ColorfulImageProcessor();
+    private final List<FilterChangeListener> filterChangeListeners = new CopyOnWriteArrayList<>();
+
+    /**
+     * Returns the currently set gamma value.
+     * @return the currently set gamma value
+     */
+    public double getGamma() {
+        return gammaImageProcessor.getGamma();
+    }
+
+    /**
+     * Sets a new gamma value, {@code 1} stands for no correction.
+     * @param gamma new gamma value
+     */
+    public void setGamma(double gamma) {
+        gammaImageProcessor.setGamma(gamma);
+        fireListeners();
+    }
+
+    /**
+     * Gets the current sharpen level.
+     * @return The sharpen level.
+     */
+    public double getSharpenLevel() {
+        return sharpenImageProcessor.getSharpenLevel();
+    }
+
+    /**
+     * Sets the sharpen level for the layer.
+     * <code>1</code> means no change in sharpness.
+     * Values in range 0..1 blur the image.
+     * Values above 1 are used to sharpen the image.
+     * @param sharpenLevel The sharpen level.
+     */
+    public void setSharpenLevel(double sharpenLevel) {
+        sharpenImageProcessor.setSharpenLevel((float) sharpenLevel);
+        fireListeners();
+    }
+
+    /**
+     * Gets the colorfulness of this image.
+     * @return The colorfulness
+     */
+    public double getColorfulness() {
+        return collorfulnessImageProcessor.getColorfulness();
+    }
+
+    /**
+     * Sets the colorfulness of this image.
+     * 0 means grayscale.
+     * 1 means normal colorfulness.
+     * Values greater than 1 are allowed.
+     * @param colorfulness The colorfulness.
+     */
+    public void setColorfulness(double colorfulness) {
+        collorfulnessImageProcessor.setColorfulness(colorfulness);
+        fireListeners();
+    }
+
+    /**
+     * Gets the image processors for this setting.
+     * @return The processors in the order in which they should be applied.
+     */
+    public List<ImageProcessor> getProcessors() {
+        return Arrays.asList(collorfulnessImageProcessor, gammaImageProcessor, sharpenImageProcessor);
+    }
+
+    /**
+     * Adds a filter change listener
+     * @param l The listener
+     */
+    public void addFilterChangeListener(FilterChangeListener l) {
+        filterChangeListeners.add(l);
+    }
+
+    /**
+     * Removes a filter change listener
+     * @param l The listener
+     */
+    public void removeFilterChangeListener(FilterChangeListener l) {
+        filterChangeListeners.remove(l);
+    }
+
+    private void fireListeners() {
+        for (FilterChangeListener l : filterChangeListeners) {
+            l.filterChanged();
+        }
+    }
+
+    /**
+     * A listener that listens to filter changes
+     * @author Michael Zangl
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
+    public interface FilterChangeListener {
+        /**
+         * Invoked when the filter is changed.
+         */
+        void filterChanged();
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java b/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java
new file mode 100644
index 0000000..f2c410a
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessor.java
@@ -0,0 +1,94 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
+
+import org.openstreetmap.josm.gui.layer.ImageProcessor;
+
+/**
+ * Sharpens or blurs the image, depending on the sharpen value.
+ * <p>
+ * A positive sharpen level means that we sharpen the image.
+ * <p>
+ * A negative sharpen level let's us blur the image. -1 is the most useful value there.
+ *
+ * @author Michael Zangl
+ * @since 10547
+ */
+public class SharpenImageProcessor implements ImageProcessor {
+    private float sharpenLevel = 1;
+    private ConvolveOp op;
+
+    private static float[] KERNEL_IDENTITY = new float[] {
+        0, 0, 0,
+        0, 1, 0,
+        0, 0, 0
+    };
+
+    private static float[] KERNEL_BLUR = new float[] {
+        1f / 16, 2f / 16, 1f / 16,
+        2f / 16, 4f / 16, 2f / 16,
+        1f / 16, 2f / 16, 1f / 16
+    };
+
+    private static float[] KERNEL_SHARPEN = new float[] {
+        -.5f, -1f, -.5f,
+         -1f, 7, -1f,
+        -.5f, -1f, -.5f
+    };
+
+    /**
+     * Gets the current sharpen level.
+     * @return The level.
+     */
+    public float getSharpenLevel() {
+        return sharpenLevel;
+    }
+
+    /**
+     * Sets the sharpening level.
+     * @param sharpenLevel The level. Clamped to be positive or 0.
+     */
+    public void setSharpenLevel(float sharpenLevel) {
+        if (sharpenLevel < 0) {
+            this.sharpenLevel = 0;
+        } else {
+            this.sharpenLevel = sharpenLevel;
+        }
+
+        if (this.sharpenLevel < 0.95) {
+            op = generateMixed(this.sharpenLevel, KERNEL_IDENTITY, KERNEL_BLUR);
+        } else if (this.sharpenLevel > 1.05) {
+            op = generateMixed(this.sharpenLevel - 1, KERNEL_SHARPEN, KERNEL_IDENTITY);
+        } else {
+            op = null;
+        }
+    }
+
+    private static ConvolveOp generateMixed(float aFactor, float[] a, float[] b) {
+        if (a.length != 9 || b.length != 9) {
+            throw new IllegalArgumentException("Illegal kernel array length.");
+        }
+        float[] values = new float[9];
+        for (int i = 0; i < values.length; i++) {
+            values[i] = aFactor * a[i] + (1 - aFactor) * b[i];
+        }
+        return new ConvolveOp(new Kernel(3, 3, values), ConvolveOp.EDGE_NO_OP, null);
+    }
+
+    @Override
+    public BufferedImage process(BufferedImage image) {
+        if (op != null) {
+            return op.filter(image, null);
+        } else {
+            return image;
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "SharpenImageProcessor [sharpenLevel=" + sharpenLevel + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java b/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java
new file mode 100644
index 0000000..e8c925d
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/TileCoordinateConverter.java
@@ -0,0 +1,57 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
+
+import org.openstreetmap.gui.jmapviewer.Tile;
+import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
+
+/**
+ * This class handles tile coordinate management and computes their position in the map view.
+ * @author Michael Zangl
+ * @since 10651
+ */
+public class TileCoordinateConverter {
+    private MapView mapView;
+    private TileSourceDisplaySettings settings;
+
+    /**
+     * Create a new coordinate converter for the map view.
+     * @param mapView The map view.
+     * @param settings displacement settings.
+     */
+    public TileCoordinateConverter(MapView mapView, TileSourceDisplaySettings settings) {
+        this.mapView = mapView;
+        this.settings = settings;
+    }
+
+    private MapViewPoint pos(ICoordinate ll) {
+        return mapView.getState().getPointFor(new LatLon(ll)).add(settings.getDisplacement());
+    }
+
+    /**
+     * Gets the top left position of the tile inside the map view.
+     * @param tile The tile
+     * @return The positon.
+     */
+    public Point2D getPixelForTile(Tile tile) {
+        ICoordinate coord = tile.getTileSource().tileXYToLatLon(tile);
+        return pos(coord).getInView();
+    }
+
+    /**
+     * Gets the position of the tile inside the map view.
+     * @param tile The tile
+     * @return The positon.
+     */
+    public Rectangle2D getRectangleForTile(Tile tile) {
+        ICoordinate c1 = tile.getTileSource().tileXYToLatLon(tile);
+        ICoordinate c2 = tile.getTileSource().tileXYToLatLon(tile.getXtile() + 1, tile.getYtile() + 1, tile.getZoom());
+
+        return pos(c1).rectTo(pos(c2)).getInView();
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java b/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
new file mode 100644
index 0000000..67ab88a
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/TileSourceDisplaySettings.java
@@ -0,0 +1,354 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.openstreetmap.gui.jmapviewer.interfaces.TileSource;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.bugreport.BugReport;
+
+/**
+ * This are the preferences of how to display a {@link TileSource}.
+ * <p>
+ * They have been extracted from the {@link AbstractTileSourceLayer}. Each layer has one set of such settings.
+ * @author michael
+ * @since 10568
+ */
+public class TileSourceDisplaySettings {
+    /**
+     * A string returned by {@link DisplaySettingsChangeEvent#getChangedSetting()} if auto load was changed.
+     * @see TileSourceDisplaySettings#isAutoLoad()
+     */
+    public static final String AUTO_LOAD = "automatic-downloading";
+
+    /**
+     * A string returned by {@link DisplaySettingsChangeEvent#getChangedSetting()} if auto zoom was changed.
+     * @see TileSourceDisplaySettings#isAutoZoom()
+     */
+    public static final String AUTO_ZOOM = "automatically-change-resolution";
+
+    /**
+     * A string returned by {@link DisplaySettingsChangeEvent#getChangedSetting()} if the sow errors property was changed.
+     * @see TileSourceDisplaySettings#isShowErrors()
+     */
+    private static final String SHOW_ERRORS = "show-errors";
+
+    private static final String DISPLACEMENT = "displacement";
+
+    private static final String PREFERENCE_PREFIX = "imagery.generic";
+
+    /**
+     * The default auto load property
+     */
+    public static final BooleanProperty PROP_AUTO_LOAD = new BooleanProperty(PREFERENCE_PREFIX + ".default_autoload", true);
+
+    /**
+     * The default auto zoom property
+     */
+    public static final BooleanProperty PROP_AUTO_ZOOM = new BooleanProperty(PREFERENCE_PREFIX + ".default_autozoom", true);
+
+
+    /** if layers changes automatically, when user zooms in */
+    private boolean autoZoom;
+    /** if layer automatically loads new tiles */
+    private boolean autoLoad;
+    /** if layer should show errors on tiles */
+    private boolean showErrors;
+
+    /**
+     * The displacement
+     */
+    private EastNorth displacement = new EastNorth(0, 0);
+
+    private final CopyOnWriteArrayList<DisplaySettingsChangeListener> listeners = new CopyOnWriteArrayList<>();
+
+    /**
+     * Create a new {@link TileSourceDisplaySettings}
+     */
+    public TileSourceDisplaySettings() {
+        this(new String[] {PREFERENCE_PREFIX});
+    }
+
+    /**
+     * Create a new {@link TileSourceDisplaySettings}
+     * @param preferencePrefix The additional prefix to scan for preferences.
+     */
+    public TileSourceDisplaySettings(String preferencePrefix) {
+        this(PREFERENCE_PREFIX, preferencePrefix);
+    }
+
+    private TileSourceDisplaySettings(String... prefixes) {
+        autoZoom = getProperty(prefixes, "default_autozoom");
+        autoLoad = getProperty(prefixes, "default_autoload");
+        showErrors = getProperty(prefixes, "default_showerrors");
+    }
+
+    private static boolean getProperty(String[] prefixes, String name) {
+        // iterate through all values to force the preferences to receive the default value.
+        // we only support a default value of true.
+        boolean value = true;
+        for (String p : prefixes) {
+            String key = p + "." + name;
+            boolean currentValue = Main.pref.getBoolean(key, true);
+            if (!Main.pref.get(key).isEmpty()) {
+                value = currentValue;
+            }
+        }
+        return value;
+    }
+
+    /**
+     * Let the layer zoom automatically if the user zooms in
+     * @return auto zoom
+     */
+    public boolean isAutoZoom() {
+        return autoZoom;
+    }
+
+    /**
+     * Sets the auto zoom property
+     * @param autoZoom {@code true} to let the layer zoom automatically if the user zooms in
+     * @see #isAutoZoom()
+     * @see #AUTO_ZOOM
+     */
+    public void setAutoZoom(boolean autoZoom) {
+        this.autoZoom = autoZoom;
+        fireSettingsChange(AUTO_ZOOM);
+    }
+
+    /**
+     * Gets if the layer should automatically load new tiles.
+     * @return <code>true</code> if it should
+     */
+    public boolean isAutoLoad() {
+        return autoLoad;
+    }
+
+    /**
+     * Sets the auto load property
+     * @param autoLoad {@code true} if the layer should automatically load new tiles
+     * @see #isAutoLoad()
+     * @see #AUTO_LOAD
+     */
+    public void setAutoLoad(boolean autoLoad) {
+        this.autoLoad = autoLoad;
+        fireSettingsChange(AUTO_LOAD);
+    }
+
+    /**
+     * If the layer should display the errors it encountered while loading the tiles.
+     * @return <code>true</code> to show errors.
+     */
+    public boolean isShowErrors() {
+        return showErrors;
+    }
+
+    /**
+     * Sets the show errors property. Fires a change event.
+     * @param showErrors {@code true} if the layer should display the errors it encountered while loading the tiles
+     * @see #isShowErrors()
+     * @see #SHOW_ERRORS
+     */
+    public void setShowErrors(boolean showErrors) {
+        this.showErrors = showErrors;
+        fireSettingsChange(SHOW_ERRORS);
+    }
+
+    /**
+     * Gets the displacement in x (east) direction
+     * @return The displacement.
+     * @since 10571
+     */
+    public double getDx() {
+        return displacement.east();
+    }
+
+    /**
+     * Gets the displacement in y (north) direction
+     * @return The displacement.
+     * @since 10571
+     */
+    public double getDy() {
+        return displacement.north();
+    }
+
+    /**
+     * Gets the displacement of the image
+     * @return The displacement.
+     * @since 10571
+     */
+    public EastNorth getDisplacement() {
+        return displacement;
+    }
+
+    /**
+     * Set the displacement
+     * @param displacement The new displacement
+     * @since 10571
+     */
+    public void setDisplacement(EastNorth displacement) {
+        CheckParameterUtil.ensureValidCoordinates(displacement, "displacement");
+        this.displacement = displacement;
+        fireSettingsChange(DISPLACEMENT);
+    }
+
+    /**
+     * Adds the given value to the displacement.
+     * @param displacement The value to add.
+     * @since 10571
+     */
+    public void addDisplacement(EastNorth displacement) {
+        CheckParameterUtil.ensureValidCoordinates(displacement, "displacement");
+        setDisplacement(this.displacement.add(displacement));
+    }
+
+    /**
+     * Notifies all listeners that the paint settings have changed
+     * @param changedSetting The setting name
+     */
+    private void fireSettingsChange(String changedSetting) {
+        DisplaySettingsChangeEvent e = new DisplaySettingsChangeEvent(changedSetting);
+        for (DisplaySettingsChangeListener l : listeners) {
+            l.displaySettingsChanged(e);
+        }
+    }
+
+    /**
+     * Add a listener that listens to display settings changes.
+     * @param l The listener
+     */
+    public void addSettingsChangeListener(DisplaySettingsChangeListener l) {
+        listeners.add(l);
+    }
+
+    /**
+     * Remove a listener that listens to display settings changes.
+     * @param l The listener
+     */
+    public void removeSettingsChangeListener(DisplaySettingsChangeListener l) {
+        listeners.remove(l);
+    }
+
+    /**
+     * Stores the current settings object to the given hashmap.
+     * @param data The map to store the settings to.
+     * @see #loadFrom(Map)
+     */
+    public void storeTo(Map<String, String> data) {
+        data.put(AUTO_LOAD, Boolean.toString(autoLoad));
+        data.put(AUTO_ZOOM, Boolean.toString(autoZoom));
+        data.put(SHOW_ERRORS, Boolean.toString(showErrors));
+        data.put("dx", String.valueOf(getDx()));
+        data.put("dy", String.valueOf(getDy()));
+    }
+
+    /**
+     * Load the settings from the given data instance.
+     * @param data The data
+     * @see #storeTo(Map)
+     */
+    public void loadFrom(Map<String, String> data) {
+        try {
+            String doAutoLoad = data.get(AUTO_LOAD);
+            if (doAutoLoad != null) {
+                setAutoLoad(Boolean.parseBoolean(doAutoLoad));
+            }
+
+            String doAutoZoom = data.get(AUTO_ZOOM);
+            if (doAutoZoom != null) {
+                setAutoZoom(Boolean.parseBoolean(doAutoZoom));
+            }
+
+            String doShowErrors = data.get(SHOW_ERRORS);
+            if (doShowErrors != null) {
+                setShowErrors(Boolean.parseBoolean(doShowErrors));
+            }
+
+            String dx = data.get("dx");
+            String dy = data.get("dy");
+            if (dx != null && dy != null) {
+                setDisplacement(new EastNorth(Double.parseDouble(dx), Double.parseDouble(dy)));
+            }
+        } catch (RuntimeException e) {
+            throw BugReport.intercept(e).put("data", data);
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + (autoLoad ? 1231 : 1237);
+        result = prime * result + (autoZoom ? 1231 : 1237);
+        result = prime * result + (showErrors ? 1231 : 1237);
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        TileSourceDisplaySettings other = (TileSourceDisplaySettings) obj;
+        if (autoLoad != other.autoLoad)
+            return false;
+        if (autoZoom != other.autoZoom)
+            return false;
+        if (showErrors != other.showErrors)
+            return false;
+        return true;
+    }
+
+    @Override
+    public String toString() {
+        return "TileSourceDisplaySettings [autoZoom=" + autoZoom + ", autoLoad=" + autoLoad + ", showErrors="
+                + showErrors + ']';
+    }
+
+    /**
+     * A listener that listens to changes to the {@link TileSourceDisplaySettings} object.
+     * @author Michael Zangl
+     * @since 10600 (functional interface)
+     */
+    @FunctionalInterface
+    public interface DisplaySettingsChangeListener {
+        /**
+         * Called whenever the display settings have changed.
+         * @param e The change event.
+         */
+        void displaySettingsChanged(DisplaySettingsChangeEvent e);
+    }
+
+    /**
+     * An event that is created whenever the display settings change.
+     * @author Michael Zangl
+     */
+    public static final class DisplaySettingsChangeEvent {
+        private final String changedSetting;
+
+        DisplaySettingsChangeEvent(String changedSetting) {
+            this.changedSetting = changedSetting;
+        }
+
+        /**
+         * Gets the setting that was changed
+         * @return The name of the changed setting.
+         */
+        public String getChangedSetting() {
+            return changedSetting;
+        }
+
+        @Override
+        public String toString() {
+            return "DisplaySettingsChangeEvent [changedSetting=" + changedSetting + ']';
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/layer/imagery/package-info.java b/src/org/openstreetmap/josm/gui/layer/imagery/package-info.java
new file mode 100644
index 0000000..94527a6
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/layer/imagery/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides classes for handling imagery background layers.
+ */
+package org.openstreetmap.josm.gui.layer.imagery;
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java
index 31a5731..2abf4e9 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/ImageMarker.java
@@ -6,7 +6,6 @@ import java.awt.Cursor;
 import java.awt.GraphicsEnvironment;
 import java.awt.Image;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.net.URL;
 import java.util.Collections;
 
@@ -54,17 +53,14 @@ public class ImageMarker extends ButtonMarker {
         JPanel p2 = new JPanel();
         p2.add(scale);
         p.add(p2, BorderLayout.SOUTH);
-        scale.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent ev) {
-                p.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
-                if (scale.getModel().isSelected()) {
-                    ((JLabel) vp.getView()).setIcon(loadScaledImage(imageUrl, Math.max(vp.getWidth(), vp.getHeight())));
-                } else {
-                    ((JLabel) vp.getView()).setIcon(new ImageIcon(imageUrl));
-                }
-                p.setCursor(Cursor.getDefaultCursor());
+        scale.addActionListener(ev1 -> {
+            p.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+            if (scale.getModel().isSelected()) {
+                ((JLabel) vp.getView()).setIcon(loadScaledImage(imageUrl, Math.max(vp.getWidth(), vp.getHeight())));
+            } else {
+                ((JLabel) vp.getView()).setIcon(new ImageIcon(imageUrl));
             }
+            p.setCursor(Cursor.getDefaultCursor());
         });
         scale.setSelected(true);
         JOptionPane pane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE);
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
index daaa073..efd4f54 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
@@ -151,6 +151,7 @@ public class Marker implements TemplateEngineDataProvider {
             try {
                 return new TemplateParser(s).parse();
             } catch (ParseError e) {
+                Main.debug(e);
                 Main.warn("Unable to parse template engine pattern ''{0}'' for property {1}. Using default (''{2}'') instead",
                         s, getKey(), super.getDefaultValueAsString());
                 return getDefaultValue();
@@ -182,46 +183,43 @@ public class Marker implements TemplateEngineDataProvider {
 
     // Add one Marker specifying the default behaviour.
     static {
-        Marker.markerProducers.add(new MarkerProducers() {
-            @Override
-            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);
-                if (links != null) {
-                    for (GpxLink oneLink : links) {
-                        uri = oneLink.uri;
-                        break;
-                    }
+        Marker.markerProducers.add((wpt, relativePath, parentLayer, time, 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);
+            if (links != null) {
+                for (GpxLink oneLink : links) {
+                    uri = oneLink.uri;
+                    break;
                 }
+            }
 
-                URL url = uriToUrl(uri, relativePath);
+            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) {
-                    return Collections.singleton(marker);
-                } else if (urlStr.endsWith(".wav")) {
-                    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 {
-                            audioMarker.syncOffset = Double.parseDouble(exts.get("sync-offset"));
-                        } catch (NumberFormatException nfe) {
-                            Main.warn(nfe);
-                        }
+            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) {
+                return Collections.singleton(marker);
+            } else if (urlStr.endsWith(".wav")) {
+                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 {
+                        audioMarker.syncOffset = Double.parseDouble(exts.get("sync-offset"));
+                    } catch (NumberFormatException nfe) {
+                        Main.warn(nfe);
                     }
-                    return Arrays.asList(marker, audioMarker);
-                } else if (urlStr.endsWith(".png") || urlStr.endsWith(".jpg") || urlStr.endsWith(".jpeg") || urlStr.endsWith(".gif")) {
-                    return Arrays.asList(marker, new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset));
-                } else {
-                    return Arrays.asList(marker, new WebMarker(wpt.getCoor(), url, parentLayer, time, offset));
                 }
+                return Arrays.asList(marker, audioMarker);
+            } else if (urlStr.endsWith(".png") || urlStr.endsWith(".jpg") || urlStr.endsWith(".jpeg") || urlStr.endsWith(".gif")) {
+                return Arrays.asList(marker, new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset));
+            } else {
+                return Arrays.asList(marker, new WebMarker(wpt.getCoor(), url, parentLayer, time, offset));
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
index d313e2d..15abf70 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
@@ -18,7 +18,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
@@ -234,12 +233,7 @@ public class MarkerLayer extends Layer implements JumpToMarkerLayer {
     public void mergeFrom(Layer from) {
         if (from instanceof MarkerLayer) {
             data.addAll(((MarkerLayer) from).data);
-            Collections.sort(data, new Comparator<Marker>() {
-                @Override
-                public int compare(Marker o1, Marker o2) {
-                    return Double.compare(o1.time, o2.time);
-                }
-            });
+            data.sort(Comparator.comparingDouble(o -> o.time));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
index 517ce08..eb8c016 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
@@ -13,7 +13,10 @@ import org.openstreetmap.josm.data.gpx.WayPoint;
  * the Marker are consecutively called until one returns a Marker object.
  *
  * @author Frederik Ramm
+ * @since   200 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface MarkerProducers {
     /**
      * Returns a collection of Marker objects if this implementation wants to create one for the
diff --git a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
index c2a1572..10df3fb 100644
--- a/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
+++ b/src/org/openstreetmap/josm/gui/layer/markerlayer/PlayHeadMarker.java
@@ -6,8 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Graphics;
 import java.awt.Point;
 import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 
@@ -289,12 +287,7 @@ public final class PlayHeadMarker extends Marker {
         jumpToMarker = true;
         if (timer == null) {
             animationInterval = Main.pref.getDouble("marker.audioanimationinterval", 1.0); //milliseconds
-            timer = new Timer((int) (animationInterval * 1000.0), new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    timerAction();
-                }
-            });
+            timer = new Timer((int) (animationInterval * 1000.0), e -> timerAction());
             timer.setInitialDelay(0);
         } else {
             timer.stop();
diff --git a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
index a963fc0..11cdd2c 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
@@ -58,12 +58,9 @@ public class ElemStyles implements PreferenceChangedListener {
      */
     public void clearCached() {
         // run in EDT to make sure this isn't called during rendering run
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                cacheIdx++;
-                preferenceCache.clear();
-            }
+        GuiHelper.runInEDT(() -> {
+            cacheIdx++;
+            preferenceCache.clear();
         });
     }
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
index 3e99bda..865a0ed 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
@@ -163,8 +163,8 @@ public final class MapPaintStyles {
      *   - josm's default icon
      *  can be null if the defaults are turned off by user
      */
-    public static ImageIcon getNoIcon_Icon(StyleSource source) {
-        return new ImageProvider("misc/no_icon")
+    public static ImageIcon getNoIconIcon(StyleSource source) {
+        return new ImageProvider("presets/misc/no_icon")
                 .setDirs(getIconSourceDirs(source))
                 .setId("mappaint."+source.getPrefName())
                 .setArchive(source.zipIcons)
@@ -240,8 +240,7 @@ public final class MapPaintStyles {
 
         if (Main.pref.getBoolean("mappaint.icon.enable-defaults", true)) {
             /* don't prefix icon path, as it should be generic */
-            dirs.add("resource://images/styles/standard/");
-            dirs.add("resource://images/styles/");
+            dirs.add("resource://images/");
         }
 
         return dirs;
@@ -365,15 +364,12 @@ public final class MapPaintStyles {
 
         @Override
         protected void finish() {
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    fireMapPaintSylesUpdated();
-                    styles.clearCached();
-                    if (Main.isDisplayingMapView()) {
-                        Main.map.mapView.preferenceChanged(null);
-                        Main.map.mapView.repaint();
-                    }
+            SwingUtilities.invokeLater(() -> {
+                fireMapPaintSylesUpdated();
+                styles.clearCached();
+                if (Main.isDisplayingMapView()) {
+                    Main.map.mapView.preferenceChanged(null);
+                    Main.map.mapView.repaint();
                 }
             });
         }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
index 6a3435e..0924b68 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
@@ -5,11 +5,13 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 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.function.BiFunction;
+import java.util.function.IntFunction;
+import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
 import org.openstreetmap.josm.Main;
@@ -25,15 +27,31 @@ import org.openstreetmap.josm.gui.mappaint.Cascade;
 import org.openstreetmap.josm.gui.mappaint.ElemStyles;
 import org.openstreetmap.josm.gui.mappaint.Environment;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 
-public abstract class Condition {
+/**
+ * This is a condition that needs to be fulfilled in order to apply a MapCSS style.
+ */
+ at FunctionalInterface
+public interface Condition {
 
-    public abstract boolean applies(Environment e);
+    /**
+     * Checks if the condition applies in the given MapCSS {@link Environment}.
+     * @param e The environment to check. May not be <code>null</code>.
+     * @return <code>true</code> if the condition applies.
+     */
+    boolean applies(Environment e);
 
-    public static Condition createKeyValueCondition(String k, String v, Op op, Context context, boolean considerValAsKey) {
+    /**
+     * Create a new condition that checks the key and the value of the object.
+     * @param k The key.
+     * @param v The reference value
+     * @param op The operation to use when comparing the value
+     * @param context The type of context to use.
+     * @param considerValAsKey whether to consider {@code v} as another key and compare the values of key {@code k} and key {@code v}.
+     * @return The new condition.
+     */
+    static Condition createKeyValueCondition(String k, String v, Op op, Context context, boolean considerValAsKey) {
         switch (context) {
         case PRIMITIVE:
             if (KeyValueRegexpCondition.SUPPORTED_OPS.contains(op) && !considerValAsKey)
@@ -56,11 +74,26 @@ public abstract class Condition {
         }
     }
 
-    public static Condition createRegexpKeyRegexpValueCondition(String k, String v, Op op) {
+    /**
+     * Create a condition in which the key and the value need to match a given regexp
+     * @param k The key regexp
+     * @param v The value regexp
+     * @param op The operation to use when comparing the key and the value.
+     * @return The new condition.
+     */
+    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) {
+    /**
+     * Creates a condition that checks the given key.
+     * @param k The key to test for
+     * @param not <code>true</code> to invert the match
+     * @param matchType The match type to check for.
+     * @param context The context this rule is found in.
+     * @return the new condition.
+     */
+    static Condition createKeyCondition(String k, boolean not, KeyMatchType matchType, Context context) {
         switch (context) {
         case PRIMITIVE:
             return new KeyCondition(k, not, matchType);
@@ -76,50 +109,112 @@ public abstract class Condition {
         }
     }
 
-    public static PseudoClassCondition createPseudoClassCondition(String id, boolean not, Context context) {
+    /**
+     * Create a new pseudo class condition
+     * @param id The id of the pseudo class
+     * @param not <code>true</code> to invert the condition
+     * @param context The context the class is found in.
+     * @return The new condition
+     */
+    static PseudoClassCondition createPseudoClassCondition(String id, boolean not, Context context) {
         return PseudoClassCondition.createPseudoClassCondition(id, not, context);
     }
 
-    public static ClassCondition createClassCondition(String id, boolean not, Context context) {
+    /**
+     * Create a new class condition
+     * @param id The id of the class to match
+     * @param not <code>true</code> to invert the condition
+     * @param context Ignored
+     * @return The new condition
+     */
+    static ClassCondition createClassCondition(String id, boolean not, Context context) {
         return new ClassCondition(id, not);
     }
 
-    public static ExpressionCondition createExpressionCondition(Expression e, Context context) {
+    /**
+     * Create a new condition that a expression needs to be fulfilled
+     * @param e the expression to check
+     * @param context Ignored
+     * @return The new condition
+     */
+    static ExpressionCondition createExpressionCondition(Expression e, Context context) {
         return new ExpressionCondition(e);
     }
 
     /**
      * This is the operation that {@link KeyValueCondition} uses to match.
      */
-    public enum Op {
+    enum Op {
         /** The value equals the given reference. */
-        EQ,
+        EQ(Objects::equals),
         /** The value does not equal the reference. */
-        NEQ,
+        NEQ(EQ),
         /** The value is greater than or equal to the given reference value (as float). */
-        GREATER_OR_EQUAL,
+        GREATER_OR_EQUAL(comparisonResult -> comparisonResult >= 0),
         /** The value is greater than the given reference value (as float). */
-        GREATER,
+        GREATER(comparisonResult -> comparisonResult > 0),
         /** The value is less than or equal to the given reference value (as float). */
-        LESS_OR_EQUAL,
+        LESS_OR_EQUAL(comparisonResult -> comparisonResult <= 0),
         /** The value is less than the given reference value (as float). */
-        LESS,
+        LESS(comparisonResult -> comparisonResult < 0),
         /** The reference is treated as regular expression and the value needs to match it. */
-        REGEX,
+        REGEX((test, prototype) -> Pattern.compile(prototype).matcher(test).find()),
         /** The reference is treated as regular expression and the value needs to not match it. */
-        NREGEX,
+        NREGEX(REGEX),
         /** The reference is treated as a list separated by ';'. Spaces around the ; are ignored.
          *  The value needs to be equal one of the list elements. */
-        ONE_OF,
+        ONE_OF((test, prototype) -> Arrays.asList(test.split("\\s*;\\s*")).contains(prototype)),
         /** The value needs to begin with the reference string. */
-        BEGINS_WITH,
+        BEGINS_WITH(String::startsWith),
         /** The value needs to end with the reference string. */
-        ENDS_WITH,
+        ENDS_WITH(String::endsWith),
         /** The value needs to contain the reference string. */
-        CONTAINS;
+        CONTAINS(String::contains);
 
         static final Set<Op> NEGATED_OPS = EnumSet.of(NEQ, NREGEX);
 
+        private final BiFunction<String, String, Boolean> function;
+
+        private final boolean negated;
+
+        /**
+         * Create a new string operation.
+         * @param func The function to apply during {@link #eval(String, String)}.
+         */
+        Op(BiFunction<String, String, Boolean> func) {
+            this.function = func;
+            negated = false;
+        }
+
+        /**
+         * Create a new float operation that compares two float values
+         * @param comparatorResult A function to mapt the result of the comparison
+         */
+        Op(IntFunction<Boolean> comparatorResult) {
+            this.function = (test, prototype) -> {
+                float testFloat;
+                try {
+                    testFloat = Float.parseFloat(test);
+                } catch (NumberFormatException e) {
+                    return false;
+                }
+                float prototypeFloat = Float.parseFloat(prototype);
+
+                int res = Float.compare(testFloat, prototypeFloat);
+                return comparatorResult.apply(res);
+            };
+            negated = false;
+        }
+
+        /**
+         * Create a new Op by negating an other op.
+         * @param negate inverse operation
+         */
+        Op(Op negate) {
+            this.function = (a, b) -> !negate.function.apply(a, b);
+            negated = true;
+        }
+
         /**
          * Evaluates a value against a reference string.
          * @param testString The value. May be <code>null</code>
@@ -127,54 +222,17 @@ public abstract class Condition {
          * @return <code>true</code> if and only if this operation matches for the given value/reference pair.
          */
         public boolean eval(String testString, String prototypeString) {
-            if (testString == null && !NEGATED_OPS.contains(this))
-                return false;
-            switch (this) {
-            case EQ:
-                return Objects.equals(testString, prototypeString);
-            case NEQ:
-                return !Objects.equals(testString, prototypeString);
-            case REGEX:
-            case NREGEX:
-                final boolean contains = Pattern.compile(prototypeString).matcher(testString).find();
-                return REGEX.equals(this) ? contains : !contains;
-            case ONE_OF:
-                return testString != null && Arrays.asList(testString.split("\\s*;\\s*")).contains(prototypeString);
-            case BEGINS_WITH:
-                return testString != null && testString.startsWith(prototypeString);
-            case ENDS_WITH:
-                return testString != null && testString.endsWith(prototypeString);
-            case CONTAINS:
-                return testString != null && testString.contains(prototypeString);
-            }
-
-            float testFloat;
-            try {
-                testFloat = Float.parseFloat(testString);
-            } catch (NumberFormatException e) {
-                return false;
-            }
-            float prototypeFloat = Float.parseFloat(prototypeString);
-
-            switch (this) {
-            case GREATER_OR_EQUAL:
-                return testFloat >= prototypeFloat;
-            case GREATER:
-                return testFloat > prototypeFloat;
-            case LESS_OR_EQUAL:
-                return testFloat <= prototypeFloat;
-            case LESS:
-                return testFloat < prototypeFloat;
-            default:
-                throw new AssertionError();
-            }
+            if (testString == null)
+                return negated;
+            else
+                return function.apply(testString, prototypeString);
         }
     }
 
     /**
      * Context, where the condition applies.
      */
-    public enum Context {
+    enum Context {
         /**
          * normal primitive selector, e.g. way[highway=residential]
          */
@@ -191,7 +249,7 @@ public abstract class Condition {
      *
      * Extra class for performance reasons.
      */
-    public static class SimpleKeyValueCondition extends Condition {
+    class SimpleKeyValueCondition implements Condition, ToTagConvertable {
         /**
          * The key to search for.
          */
@@ -216,7 +274,8 @@ public abstract class Condition {
             return v.equals(e.osm.get(k));
         }
 
-        public Tag asTag() {
+        @Override
+        public Tag asTag(OsmPrimitive primitive) {
             return new Tag(k, v);
         }
 
@@ -231,7 +290,7 @@ public abstract class Condition {
      * <p>Represents a key/value condition which is either applied to a primitive.</p>
      *
      */
-    public static class KeyValueCondition extends Condition {
+    class KeyValueCondition implements Condition, ToTagConvertable {
         /**
          * The key to search for.
          */
@@ -247,7 +306,7 @@ public abstract class Condition {
         /**
          * If this flag is set, {@link #v} is treated as a key and the value is the value set for that key.
          */
-        public boolean considerValAsKey;
+        public final boolean considerValAsKey;
 
         /**
          * <p>Creates a key/value-condition.</p>
@@ -269,7 +328,8 @@ public abstract class Condition {
             return op.eval(env.osm.get(k), considerValAsKey ? env.osm.get(v) : v);
         }
 
-        public Tag asTag() {
+        @Override
+        public Tag asTag(OsmPrimitive primitive) {
             return new Tag(k, v);
         }
 
@@ -279,11 +339,14 @@ public abstract class Condition {
         }
     }
 
-    public static class KeyValueRegexpCondition extends KeyValueCondition {
-
-        public final Pattern pattern;
+    /**
+     * This condition requires a fixed key to match a given regexp
+     */
+    class KeyValueRegexpCondition extends KeyValueCondition {
         protected static final Set<Op> SUPPORTED_OPS = EnumSet.of(Op.REGEX, Op.NREGEX);
 
+        final Pattern pattern;
+
         public KeyValueRegexpCondition(String k, String v, Op op, boolean considerValAsKey) {
             super(k, v, op, considerValAsKey);
             CheckParameterUtil.ensureThat(!considerValAsKey, "considerValAsKey is not supported");
@@ -308,10 +371,19 @@ public abstract class Condition {
         }
     }
 
-    public static class RegexpKeyValueRegexpCondition extends KeyValueRegexpCondition {
+    /**
+     * A condition that checks that a key with the matching pattern has a value with the matching pattern.
+     */
+    class RegexpKeyValueRegexpCondition extends KeyValueRegexpCondition {
 
         public final Pattern keyPattern;
 
+        /**
+         * Create a condition in which the key and the value need to match a given regexp
+         * @param k The key regexp
+         * @param v The value regexp
+         * @param op The operation to use when comparing the key and the value.
+         */
         public RegexpKeyValueRegexpCondition(String k, String v, Op op) {
             super(k, v, op, false);
             this.keyPattern = Pattern.compile(k);
@@ -328,7 +400,7 @@ public abstract class Condition {
         }
     }
 
-    public static class RoleCondition extends Condition {
+    class RoleCondition implements Condition {
         public final String role;
         public final Op op;
 
@@ -345,7 +417,7 @@ public abstract class Condition {
         }
     }
 
-    public static class IndexCondition extends Condition {
+    class IndexCondition implements Condition {
         public final String index;
         public final Op op;
 
@@ -368,7 +440,7 @@ public abstract class Condition {
     /**
      * This defines how {@link KeyCondition} matches a given key.
      */
-    public enum KeyMatchType {
+    enum KeyMatchType {
         /**
          * The key needs to be equal to the given label.
          */
@@ -408,7 +480,7 @@ public abstract class Condition {
      *                   LINK:       not supported
      * </pre>
      */
-    public static class KeyCondition extends Condition {
+    class KeyCondition implements Condition, ToTagConvertable {
 
         /**
          * The key name.
@@ -439,7 +511,7 @@ public abstract class Condition {
             this.negateResult = negateResult;
             this.matchType = matchType == null ? KeyMatchType.EQ : matchType;
             this.containsPattern = KeyMatchType.REGEX.equals(matchType)
-                    ? Predicates.stringContainsPattern(Pattern.compile(label))
+                    ? Pattern.compile(label).asPredicate()
                     : null;
         }
 
@@ -453,7 +525,7 @@ public abstract class Condition {
                 case FALSE:
                     return e.osm.isKeyFalse(label) ^ negateResult;
                 case REGEX:
-                    return Utils.exists(e.osm.keySet(), containsPattern) ^ negateResult;
+                    return e.osm.keySet().stream().anyMatch(containsPattern) ^ negateResult;
                 default:
                     return e.osm.hasKey(label) ^ negateResult;
                 }
@@ -473,13 +545,11 @@ public abstract class Condition {
          * @param p The primitive to get the value from.
          * @return The tag.
          */
+        @Override
         public Tag asTag(OsmPrimitive p) {
             String key = label;
             if (KeyMatchType.REGEX.equals(matchType)) {
-                final Collection<String> matchingKeys = Utils.filter(p.keySet(), containsPattern);
-                if (!matchingKeys.isEmpty()) {
-                    key = matchingKeys.iterator().next();
-                }
+                key = p.keySet().stream().filter(containsPattern).findAny().orElse(key);
             }
             return new Tag(key, p.get(key));
         }
@@ -490,7 +560,7 @@ public abstract class Condition {
         }
     }
 
-    public static class ClassCondition extends Condition {
+    class ClassCondition implements Condition {
 
         public final String id;
         public final boolean not;
@@ -502,7 +572,8 @@ public abstract class Condition {
 
         @Override
         public boolean applies(Environment env) {
-            return env != null && env.getCascade(env.layer) != null && not ^ env.getCascade(env.layer).containsKey(id);
+            Cascade cascade = env.getCascade(env.layer);
+            return cascade != null && (not ^ cascade.containsKey(id));
         }
 
         @Override
@@ -515,7 +586,11 @@ public abstract class Condition {
      * Like <a href="http://www.w3.org/TR/css3-selectors/#pseudo-classes">CSS pseudo classes</a>, MapCSS pseudo classes
      * are written in lower case with dashes between words.
      */
-    static class PseudoClasses {
+    final class PseudoClasses {
+
+        private PseudoClasses() {
+            // Hide default constructor for utilities classes
+        }
 
         /**
          * {@code closed} tests whether the way is closed or the relation is a closed multipolygon
@@ -652,7 +727,7 @@ public abstract class Condition {
          * @see InDataSourceArea
          */
         static boolean inDownloadedArea(Environment e) { // NO_UCD (unused code)
-            return IN_DOWNLOADED_AREA.evaluate(e.osm);
+            return IN_DOWNLOADED_AREA.test(e.osm);
         }
 
         static boolean completely_downloaded(Environment e) { // NO_UCD (unused code)
@@ -678,7 +753,7 @@ public abstract class Condition {
         }
     }
 
-    public static class PseudoClassCondition extends Condition {
+    class PseudoClassCondition implements Condition {
 
         public final Method method;
         public final boolean not;
@@ -688,6 +763,13 @@ public abstract class Condition {
             this.not = not;
         }
 
+        /**
+         * Create a new pseudo class condition
+         * @param id The id of the pseudo class
+         * @param not <code>true</code> to invert the condition
+         * @param context The context the class is found in.
+         * @return The new condition
+         */
         public static PseudoClassCondition createPseudoClassCondition(String id, boolean not, Context context) {
             CheckParameterUtil.ensureThat(!"sameTags".equals(id) || Context.LINK.equals(context), "sameTags only supported in LINK context");
             if ("open_end".equals(id)) {
@@ -727,7 +809,7 @@ public abstract class Condition {
         }
     }
 
-    public static class OpenEndPseudoClassCondition extends PseudoClassCondition {
+    class OpenEndPseudoClassCondition extends PseudoClassCondition {
         public OpenEndPseudoClassCondition(boolean not) {
             super(null, not);
         }
@@ -738,7 +820,10 @@ public abstract class Condition {
         }
     }
 
-    public static class ExpressionCondition extends Condition {
+    /**
+     * A condition that is fulfilled whenever the expression is evaluated to be true.
+     */
+    class ExpressionCondition implements Condition {
 
         private final Expression e;
 
@@ -761,4 +846,18 @@ public abstract class Condition {
             return '[' + e.toString() + ']';
         }
     }
+
+    /**
+     * This is a condition that can be converted to a tag
+     * @author Michael Zangl
+     * @since 10674
+     */
+    public interface ToTagConvertable {
+        /**
+         * Converts the current condition to a tag
+         * @param primitive A primitive to use as context. May be ignored.
+         * @return A tag with the key/value of this condition.
+         */
+        Tag asTag(OsmPrimitive primitive);
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java
index 5713f66..5669d00 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Expression.java
@@ -8,7 +8,10 @@ import org.openstreetmap.josm.gui.mappaint.Environment;
  *
  * Can be evaluated in a certain {@link Environment}. Usually takes
  * parameters, that are also Expressions and have to be evaluated first.
+ * @since  3848 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface Expression {
     /**
      * Evaluate this expression.
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
index a90ee7b..8c406c4 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java
@@ -15,7 +15,9 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.TreeSet;
+import java.util.function.Function;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.zip.CRC32;
@@ -35,8 +37,8 @@ import org.openstreetmap.josm.io.XmlWriter;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.Geometry;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -259,6 +261,7 @@ public final class ExpressionFactory {
             try {
                 return new Color(r, g, b);
             } catch (IllegalArgumentException e) {
+                Main.trace(e);
                 return null;
             }
         }
@@ -277,6 +280,7 @@ public final class ExpressionFactory {
             try {
                 return new Color(r, g, b, alpha);
             } catch (IllegalArgumentException e) {
+                Main.trace(e);
                 return null;
             }
         }
@@ -292,6 +296,7 @@ public final class ExpressionFactory {
             try {
                 return Color.getHSBColor(h, s, b);
             } catch (IllegalArgumentException e) {
+                Main.trace(e);
                 return null;
             }
         }
@@ -321,7 +326,7 @@ public final class ExpressionFactory {
          * @see java.awt.Color#getRed()
          */
         public static float red(Color c) { // NO_UCD (unused code)
-            return Utils.color_int2float(c.getRed());
+            return Utils.colorInt2float(c.getRed());
         }
 
         /**
@@ -331,7 +336,7 @@ public final class ExpressionFactory {
          * @see java.awt.Color#getGreen()
          */
         public static float green(Color c) { // NO_UCD (unused code)
-            return Utils.color_int2float(c.getGreen());
+            return Utils.colorInt2float(c.getGreen());
         }
 
         /**
@@ -341,7 +346,7 @@ public final class ExpressionFactory {
          * @see java.awt.Color#getBlue()
          */
         public static float blue(Color c) { // NO_UCD (unused code)
-            return Utils.color_int2float(c.getBlue());
+            return Utils.colorInt2float(c.getBlue());
         }
 
         /**
@@ -351,7 +356,7 @@ public final class ExpressionFactory {
          * @see java.awt.Color#getAlpha()
          */
         public static float alpha(Color c) { // NO_UCD (unused code)
-            return Utils.color_int2float(c.getAlpha());
+            return Utils.colorInt2float(c.getAlpha());
         }
 
         /**
@@ -626,6 +631,7 @@ public final class ExpressionFactory {
             try {
                 return RotationAngle.parseCardinalRotation(cardinal);
             } catch (IllegalArgumentException ignore) {
+                Main.trace(ignore);
                 return null;
             }
         }
@@ -666,6 +672,7 @@ public final class ExpressionFactory {
             try {
                 m = SearchCompiler.compile(searchStr);
             } catch (ParseError ex) {
+                Main.trace(ex);
                 return null;
             }
             return m.match(env.osm);
@@ -876,8 +883,8 @@ public final class ExpressionFactory {
                 return false;
             }
             final Way way = (Way) env.osm;
-            return way.isClosed() && Geometry.isClockwise(way)
-                    || !way.isClosed() && way.getNodesCount() > 2 && Geometry.angleIsClockwise(way.getNode(0), way.getNode(1), way.lastNode());
+            return (way.isClosed() && Geometry.isClockwise(way))
+                || (!way.isClosed() && way.getNodesCount() > 2 && Geometry.angleIsClockwise(way.getNode(0), way.getNode(1), way.lastNode()));
         }
 
         /**
@@ -892,8 +899,8 @@ public final class ExpressionFactory {
                 return false;
             }
             final Way way = (Way) env.osm;
-            return way.isClosed() && !Geometry.isClockwise(way)
-                    || !way.isClosed() && way.getNodesCount() > 2 && !Geometry.angleIsClockwise(way.getNode(0), way.getNode(1), way.lastNode());
+            return (way.isClosed() && !Geometry.isClockwise(way))
+                || (!way.isClosed() && way.getNodesCount() > 2 && !Geometry.angleIsClockwise(way.getNode(0), way.getNode(1), way.lastNode()));
         }
 
         /**
@@ -1126,13 +1133,8 @@ public final class ExpressionFactory {
         }
 
         public Float aggregateList(List<?> lst) {
-            final List<Float> floats = Utils.transform(lst, new Utils.Function<Object, Float>() {
-                @Override
-                public Float apply(Object x) {
-                    return Cascade.convertTo(x, float.class);
-                }
-            });
-            final Collection<Float> nonNullList = Utils.filter(floats, Predicates.not(Predicates.isNull()));
+            final List<Float> floats = Utils.transform(lst, (Function<Object, Float>) x -> Cascade.convertTo(x, float.class));
+            final Collection<Float> nonNullList = SubclassFilteredCollection.filter(floats, Objects::nonNull);
             return nonNullList.isEmpty() ? (Float) Float.NaN : computeMax ? Collections.max(nonNullList) : Collections.min(nonNullList);
         }
 
@@ -1140,12 +1142,7 @@ public final class ExpressionFactory {
         public Object evaluate(final Environment env) {
             List<?> l = Cascade.convertTo(args.get(0).evaluate(env), List.class);
             if (args.size() != 1 || l == null)
-                l = Utils.transform(args, new Utils.Function<Expression, Object>() {
-                    @Override
-                    public Object apply(Expression x) {
-                        return x.evaluate(env);
-                    }
-                });
+                l = Utils.transform(args, (Function<Expression, Object>) x -> x.evaluate(env));
             return aggregateList(l);
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
index 3fd8c1e..da523d0 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Instruction.java
@@ -10,6 +10,7 @@ import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference;
 import org.openstreetmap.josm.gui.mappaint.StyleKeys;
 
+ at FunctionalInterface
 public interface Instruction extends StyleKeys {
 
     void execute(Environment env);
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
index b209e9c..d2a5f43 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Selector.java
@@ -23,7 +23,7 @@ import org.openstreetmap.josm.gui.mappaint.Range;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Geometry;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Predicates;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -187,7 +187,7 @@ public interface Selector {
             }
         }
 
-        private abstract class AbstractFinder extends AbstractVisitor {
+        private abstract static class AbstractFinder extends AbstractVisitor {
             protected final Environment e;
 
             protected AbstractFinder(Environment e) {
@@ -275,9 +275,9 @@ public interface Selector {
             @Override
             public void visit(Node 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)) {
+                    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))) {
                         e.child = n;
                     }
                 }
@@ -286,11 +286,11 @@ public interface Selector {
             @Override
             public void visit(Way 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 && (
+                    if ((e.osm instanceof Way && Geometry.PolygonIntersection.FIRST_INSIDE_SECOND.equals(
+                            Geometry.polygonIntersection(w.getNodes(), ((Way) e.osm).getNodes())))
+                            || (e.osm instanceof Relation && (
                                     (Relation) e.osm).isMultipolygon()
-                                    && Geometry.isPolygonInsideMultiPolygon(w.getNodes(), (Relation) e.osm, null)) {
+                                    && Geometry.isPolygonInsideMultiPolygon(w.getNodes(), (Relation) e.osm, null))) {
                         e.child = w;
                     }
                 }
@@ -319,8 +319,8 @@ public interface Selector {
                             && !((OptimizedGeneralSelector) right).matchesBase(OsmPrimitiveType.RELATION))) {
                         throw new NoSuchElementException();
                     }
-                    final Collection<Relation> multipolygons = Utils.filteredCollection(Utils.filter(
-                            e.osm.getReferrers(), Predicates.hasTag("type", "multipolygon")), Relation.class);
+                    final Collection<Relation> multipolygons = Utils.filteredCollection(SubclassFilteredCollection.filter(
+                            e.osm.getReferrers(), p -> p.hasTag("type", "multipolygon")), Relation.class);
                     final Relation multipolygon = multipolygons.iterator().next();
                     if (multipolygon == null) throw new NoSuchElementException();
                     containsFinder = new ContainsFinder(new Environment(multipolygon)) {
@@ -330,6 +330,7 @@ public interface Selector {
                         }
                     };
                 } catch (NoSuchElementException ignore) {
+                    Main.trace(ignore);
                     containsFinder = new ContainsFinder(e);
                 }
                 e.parent = e.osm;
@@ -462,12 +463,13 @@ public interface Selector {
          */
         @Override
         public boolean matches(Environment env) {
+            CheckParameterUtil.ensureParameterNotNull(env, "env");
             if (conds == null) return true;
             for (Condition c : conds) {
                 try {
                     if (!c.applies(env)) return false;
                 } catch (PatternSyntaxException e) {
-                    Main.error("PatternSyntaxException while applying condition" + c +": "+e.getMessage());
+                    Main.error(e, "PatternSyntaxException while applying condition" + c + ':');
                     return false;
                 }
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java
index f40af9b..c9e3f91 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/Subpart.java
@@ -6,7 +6,10 @@ import org.openstreetmap.josm.gui.mappaint.Environment;
 
 /**
  * A subpart identifies different rendering layers (<code>::subpart</code> syntax).
+ * @since  8086 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface Subpart {
     String getId(Environment env);
 
diff --git a/src/org/openstreetmap/josm/gui/mappaint/mapcss/package-info.java b/src/org/openstreetmap/josm/gui/mappaint/mapcss/package-info.java
index 19d9db8..dc007da 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/mapcss/package-info.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/mapcss/package-info.java
@@ -2,7 +2,6 @@
 
 /**
  * Drawing system based on <a href="https://wiki.openstreetmap.org/wiki/MapCSS/0.2">MapCSS</a> map styles.
- * This is the default system, and the only one maintained.
  * For reference, see <a href="https://josm.openstreetmap.de/wiki/Help/Styles/MapCSSImplementation">JOSM wiki</a>
  */
 package org.openstreetmap.josm.gui.mappaint.mapcss;
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java
index ddef85e..af12275 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/AreaElement.java
@@ -53,8 +53,8 @@ public class AreaElement extends StyleElement {
                     fillImage.getWidth() / 2, fillImage.getHeight() / 2)
             );
 
-            fillImage.alpha = Math.min(255, Math.max(0, Integer.valueOf(Main.pref.getInteger("mappaint.fill-image-alpha", 255))));
-            Integer pAlpha = Utils.color_float2int(c.get(FILL_OPACITY, null, float.class));
+            fillImage.alpha = Math.min(255, Math.max(0, Main.pref.getInteger("mappaint.fill-image-alpha", 255)));
+            Integer pAlpha = Utils.colorFloat2int(c.get(FILL_OPACITY, null, float.class));
             if (pAlpha != null) {
                 fillImage.alpha = pAlpha;
             }
@@ -68,9 +68,9 @@ public class AreaElement extends StyleElement {
                     // It is not an ideal solution, but a little tricky to get this
                     // right, especially as named map colors can be changed in
                     // the preference GUI and written to the preferences file.
-                    alpha = Math.min(255, Math.max(0, Integer.valueOf(Main.pref.getInteger("mappaint.fillalpha", 50))));
+                    alpha = Math.min(255, Math.max(0, Main.pref.getInteger("mappaint.fillalpha", 50)));
                 }
-                Integer pAlpha = Utils.color_float2int(c.get(FILL_OPACITY, null, float.class));
+                Integer pAlpha = Utils.colorFloat2int(c.get(FILL_OPACITY, null, float.class));
                 if (pAlpha != null) {
                     alpha = pAlpha;
                 }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
index 4469e53..f0bc15c 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/BoxTextElement.java
@@ -33,7 +33,9 @@ public class BoxTextElement extends StyleElement {
 
     /**
      * Something that provides us with a {@link BoxProviderResult}
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface BoxProvider {
         /**
          * Compute and get the {@link BoxProviderResult}. The temporary flag is set if the result of the computation may change in the future.
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java
index d4bf25d..b2e2647 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LabelCompositionStrategy.java
@@ -33,9 +33,11 @@ import org.openstreetmap.josm.tools.LanguageInfo;
  *   content of a tag whose name specified in the MapCSS style file, see the preference
  *   options <tt>mappaint.nameOrder</tt> and <tt>mappaint.nameComplementOrder</tt>.</li>
  * </ul>
- *
+ * @since  3987 (creation)
+ * @since 10599 (functional interface)
  */
-public abstract class LabelCompositionStrategy {
+ at FunctionalInterface
+public interface LabelCompositionStrategy {
 
     /**
      * Replies the text value to be rendered as label for the primitive {@code primitive}.
@@ -45,9 +47,9 @@ public abstract class LabelCompositionStrategy {
      * @return the text value to be rendered or null, if primitive is null or
      * if no suitable value could be composed
      */
-    public abstract String compose(OsmPrimitive primitive);
+    String compose(OsmPrimitive primitive);
 
-    public static class StaticLabelCompositionStrategy extends LabelCompositionStrategy {
+    class StaticLabelCompositionStrategy implements LabelCompositionStrategy {
         private final String defaultLabel;
 
         public StaticLabelCompositionStrategy(String defaultLabel) {
@@ -82,7 +84,7 @@ public abstract class LabelCompositionStrategy {
         }
     }
 
-    public static class TagLookupCompositionStrategy extends LabelCompositionStrategy {
+    class TagLookupCompositionStrategy implements LabelCompositionStrategy {
 
         private final String defaultLabelTag;
 
@@ -126,8 +128,7 @@ public abstract class LabelCompositionStrategy {
         }
     }
 
-    public static class DeriveLabelFromNameTagsCompositionStrategy
-        extends LabelCompositionStrategy implements PreferenceChangedListener {
+    class DeriveLabelFromNameTagsCompositionStrategy implements LabelCompositionStrategy, PreferenceChangedListener {
 
         /**
          * The list of default name tags from which a label candidate is derived.
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
index be3782a..f66d4e2 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/LineElement.java
@@ -255,7 +255,7 @@ public class LineElement extends StyleElement {
             color = PaintColors.UNTAGGED.get();
         }
 
-        Integer pAlpha = Utils.color_float2int(c.get(type.prefix + OPACITY, null, Float.class));
+        Integer pAlpha = Utils.colorFloat2int(c.get(type.prefix + OPACITY, null, Float.class));
         if (pAlpha != null) {
             alpha = pAlpha;
         }
@@ -280,7 +280,7 @@ public class LineElement extends StyleElement {
         float dashesOffset = c.get(type.prefix + DASHES_OFFSET, 0f, Float.class);
         Color dashesBackground = c.get(type.prefix + DASHES_BACKGROUND_COLOR, null, Color.class);
         if (dashesBackground != null) {
-            pAlpha = Utils.color_float2int(c.get(type.prefix + DASHES_BACKGROUND_OPACITY, null, Float.class));
+            pAlpha = Utils.colorFloat2int(c.get(type.prefix + DASHES_BACKGROUND_OPACITY, null, Float.class));
             if (pAlpha != null) {
                 alpha = pAlpha;
             }
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
index 84e124f..398b03f 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/MapImage.java
@@ -18,7 +18,6 @@ import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.BoxProvid
 import org.openstreetmap.josm.gui.mappaint.styleelement.BoxTextElement.BoxProviderResult;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.ImageProvider.ImageCallback;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -98,24 +97,21 @@ public class MapImage {
                 .setWidth(width)
                 .setHeight(height)
                 .setOptional(true)
-                .getInBackground(new ImageCallback() {
-                    @Override
-                    public void finished(ImageIcon result) {
-                        synchronized (MapImage.this) {
-                            if (result == null) {
-                                source.logWarning(tr("Failed to locate image ''{0}''", name));
-                                ImageIcon noIcon = MapPaintStyles.getNoIcon_Icon(source);
-                                img = noIcon == null ? null : (BufferedImage) noIcon.getImage();
-                            } else {
-                                img = (BufferedImage) rescale(result.getImage());
-                            }
-                            if (temporary) {
-                                disabledImgCache = null;
-                                Main.map.mapView.preferenceChanged(null); // otherwise repaint is ignored, because layer hasn't changed
-                                Main.map.mapView.repaint();
-                            }
-                            temporary = false;
+                .getAsync().thenAccept(result -> {
+                    synchronized (this) {
+                        if (result == null) {
+                            source.logWarning(tr("Failed to locate image ''{0}''", name));
+                            ImageIcon noIcon = MapPaintStyles.getNoIconIcon(source);
+                            img = noIcon == null ? null : (BufferedImage) noIcon.getImage();
+                        } else {
+                            img = (BufferedImage) rescale(result.getImage());
                         }
+                        if (temporary) {
+                            disabledImgCache = null;
+                            Main.map.mapView.preferenceChanged(null); // otherwise repaint is ignored, because layer hasn't changed
+                            Main.map.mapView.repaint();
+                        }
+                        temporary = false;
                     }
                 }
         );
@@ -137,7 +133,7 @@ public class MapImage {
     }
 
     public float getAlphaFloat() {
-        return Utils.color_int2float(alpha);
+        return Utils.colorInt2float(alpha);
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
index ac0882d..4aa58e6 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/NodeElement.java
@@ -6,6 +6,7 @@ import java.awt.Color;
 import java.awt.Rectangle;
 import java.awt.Stroke;
 import java.util.Objects;
+import java.util.stream.IntStream;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
@@ -141,7 +142,7 @@ public class NodeElement extends StyleElement {
         return new NodeElement(c, mapImage, symbol, defaultMajorZindex, rotationAngle);
     }
 
-    public static MapImage createIcon(final Environment env, final String[] keys) {
+    public static MapImage createIcon(final Environment env, final String ... keys) {
         CheckParameterUtil.ensureParameterNotNull(env, "env");
         CheckParameterUtil.ensureParameterNotNull(keys, "keys");
 
@@ -182,8 +183,8 @@ public class NodeElement extends StyleElement {
         mapImage.offsetX = Math.round(offsetXF);
         mapImage.offsetY = Math.round(offsetYF);
 
-        mapImage.alpha = Math.min(255, Math.max(0, Integer.valueOf(Main.pref.getInteger("mappaint.icon-image-alpha", 255))));
-        Integer pAlpha = Utils.color_float2int(c.get(keys[ICON_OPACITY_IDX], null, float.class));
+        mapImage.alpha = Math.min(255, Math.max(0, Main.pref.getInteger("mappaint.icon-image-alpha", 255)));
+        Integer pAlpha = Utils.colorFloat2int(c.get(keys[ICON_OPACITY_IDX], null, float.class));
         if (pAlpha != null) {
             mapImage.alpha = pAlpha;
         }
@@ -245,7 +246,7 @@ public class NodeElement extends StyleElement {
 
         Stroke stroke = null;
         if (strokeColor != null && strokeWidth != null) {
-            Integer strokeAlpha = Utils.color_float2int(c.get("symbol-stroke-opacity", null, Float.class));
+            Integer strokeAlpha = Utils.colorFloat2int(c.get("symbol-stroke-opacity", null, Float.class));
             if (strokeAlpha != null) {
                 strokeColor = new Color(strokeColor.getRed(), strokeColor.getGreen(),
                         strokeColor.getBlue(), strokeAlpha);
@@ -259,7 +260,7 @@ public class NodeElement extends StyleElement {
         }
 
         if (fillColor != null) {
-            Integer fillAlpha = Utils.color_float2int(c.get("symbol-fill-opacity", null, Float.class));
+            Integer fillAlpha = Utils.colorFloat2int(c.get("symbol-fill-opacity", null, Float.class));
             if (fillAlpha != null) {
                 fillColor = new Color(fillColor.getRed(), fillColor.getGreen(),
                         fillColor.getBlue(), fillAlpha);
@@ -323,7 +324,8 @@ public class NodeElement extends StyleElement {
                     }
                 }
 
-                final int size = Utils.max(selected ? settings.getSelectedNodeSize() : 0,
+                final int size = max(
+                        selected ? settings.getSelectedNodeSize() : 0,
                         n.isTagged() ? settings.getTaggedNodeSize() : 0,
                         isConnection ? settings.getConnectionNodeSize() : 0,
                         settings.getUnselectedNodeSize());
@@ -349,7 +351,7 @@ public class NodeElement extends StyleElement {
         else {
             // This is only executed once, so no performance concerns.
             // However, it would be better, if the settings could be changed at runtime.
-            int size = Utils.max(
+            int size = max(
                     Main.pref.getInteger("mappaint.node.selected-size", 5),
                     Main.pref.getInteger("mappaint.node.unselected-size", 3),
                     Main.pref.getInteger("mappaint.node.connection-size", 5),
@@ -359,6 +361,10 @@ public class NodeElement extends StyleElement {
         }
     }
 
+    private static int max(int... elements) {
+        return IntStream.of(elements).max().orElseThrow(IllegalStateException::new);
+    }
+
     @Override
     public int hashCode() {
         return Objects.hash(super.hashCode(), mapImage, mapImageAngle, symbol);
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
index 577a390..16d4a9f 100644
--- a/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/TextLabel.java
@@ -146,7 +146,7 @@ public class TextLabel implements StyleKeys {
         Color color = c.get(TEXT_COLOR, defaultTextColor, Color.class);
         float alpha = c.get(TEXT_OPACITY, 1f, Float.class);
         color = new Color(color.getRed(), color.getGreen(),
-                color.getBlue(), Utils.color_float2int(alpha));
+                color.getBlue(), Utils.colorFloat2int(alpha));
 
         Float haloRadius = c.get(TEXT_HALO_RADIUS, null, Float.class);
         if (haloRadius != null && haloRadius <= 0) {
@@ -157,7 +157,7 @@ public class TextLabel implements StyleKeys {
             haloColor = c.get(TEXT_HALO_COLOR, Utils.complement(color), Color.class);
             float haloAlpha = c.get(TEXT_HALO_OPACITY, 1f, Float.class);
             haloColor = new Color(haloColor.getRed(), haloColor.getGreen(),
-                    haloColor.getBlue(), Utils.color_float2int(haloAlpha));
+                    haloColor.getBlue(), Utils.colorFloat2int(haloAlpha));
         }
 
         return new TextLabel(strategy, font, (int) xOffset, -(int) yOffset, color, haloRadius, haloColor);
diff --git a/src/org/openstreetmap/josm/gui/mappaint/styleelement/package-info.java b/src/org/openstreetmap/josm/gui/mappaint/styleelement/package-info.java
new file mode 100644
index 0000000..1659d83
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/mappaint/styleelement/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Style elements defining how a map paint style is rendered.
+ */
+package org.openstreetmap.josm.gui.mappaint.styleelement;
diff --git a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
index 998087e..127b08c 100644
--- a/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
@@ -464,14 +464,11 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
         }
 
         protected void handleException(final OsmOAuthAuthorizationException e) {
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    if (e instanceof OsmLoginFailedException) {
-                        alertLoginFailed((OsmLoginFailedException) e);
-                    } else {
-                        alertAuthorisationFailed(e);
-                    }
+            Runnable r = () -> {
+                if (e instanceof OsmLoginFailedException) {
+                    alertLoginFailed((OsmLoginFailedException) e);
+                } else {
+                    alertAuthorisationFailed(e);
                 }
             };
             Main.error(e);
@@ -504,12 +501,9 @@ public class FullyAutomaticAuthorizationUI extends AbstractAuthorizationUI {
                 );
                 getProgressMonitor().worked(1);
                 if (canceled) return;
-                GuiHelper.runInEDT(new Runnable() {
-                    @Override
-                    public void run() {
-                        prepareUIForResultDisplay();
-                        setAccessToken(accessToken);
-                    }
+                GuiHelper.runInEDT(() -> {
+                    prepareUIForResultDisplay();
+                    setAccessToken(accessToken);
                 });
             } catch (final OsmOAuthAuthorizationException e) {
                 handleException(e);
diff --git a/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java b/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
index cf3ead5..ff588ae 100644
--- a/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
+++ b/src/org/openstreetmap/josm/gui/oauth/OsmOAuthAuthorizationClient.java
@@ -342,6 +342,7 @@ public class OsmOAuthAuthorizationClient {
                 throw new OsmOAuthAuthorizationException(tr("Failed to authenticate user ''{0}'' with password ''***'' as OAuth user",
                         userName));
         } catch (OsmOAuthAuthorizationException e) {
+            Main.debug(e);
             throw new OsmLoginFailedException(e.getCause());
         } catch (IOException e) {
             throw new OsmLoginFailedException(e);
diff --git a/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java b/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java
index b43f80a..ca91539 100644
--- a/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java
+++ b/src/org/openstreetmap/josm/gui/oauth/RetrieveAccessTokenTask.java
@@ -86,15 +86,11 @@ public class RetrieveAccessTokenTask extends PleaseWaitRunnable {
             }
             accessToken = client.getAccessToken(getProgressMonitor().createSubTaskMonitor(0, false));
         } catch (OsmTransferCanceledException e) {
+            Main.trace(e);
             return;
         } catch (final OsmOAuthAuthorizationException e) {
             Main.error(e);
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    alertRetrievingAccessTokenFailed(e);
-                }
-            });
+            GuiHelper.runInEDT(() -> alertRetrievingAccessTokenFailed(e));
             accessToken = null;
         } finally {
             synchronized (this) {
diff --git a/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java b/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java
index aafa221..6695c48 100644
--- a/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java
+++ b/src/org/openstreetmap/josm/gui/oauth/RetrieveRequestTokenTask.java
@@ -80,15 +80,11 @@ public class RetrieveRequestTokenTask extends PleaseWaitRunnable {
             }
             requestToken = client.getRequestToken(getProgressMonitor().createSubTaskMonitor(0, false));
         } catch (OsmTransferCanceledException e) {
+            Main.trace(e);
             return;
         } catch (final OsmOAuthAuthorizationException e) {
             Main.error(e);
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    alertRetrievingRequestTokenFailed(e);
-                }
-            });
+            GuiHelper.runInEDT(() -> alertRetrievingRequestTokenFailed(e));
             requestToken = null;
         } finally {
             synchronized (this) {
diff --git a/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java b/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
index 45e6a6d..d7b3871 100644
--- a/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
+++ b/src/org/openstreetmap/josm/gui/oauth/SemiAutomaticAuthorizationUI.java
@@ -12,7 +12,6 @@ import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.util.concurrent.Executor;
 
 import javax.swing.AbstractAction;
@@ -142,12 +141,7 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
             pnl.add(cbShowAdvancedParameters, gc);
             cbShowAdvancedParameters.setSelected(false);
             cbShowAdvancedParameters.addItemListener(
-                    new ItemListener() {
-                        @Override
-                        public void itemStateChanged(ItemEvent evt) {
-                            getAdvancedPropertiesPanel().setVisible(evt.getStateChange() == ItemEvent.SELECTED);
-                        }
-                    }
+                    evt -> getAdvancedPropertiesPanel().setVisible(evt.getStateChange() == ItemEvent.SELECTED)
             );
 
             gc.gridx = 1;
@@ -399,19 +393,11 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
                     getAdvancedPropertiesPanel().getAdvancedParameters()
             );
             executor.execute(task);
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    if (task.isCanceled()) return;
-                    if (task.getRequestToken() == null) return;
-                    requestToken = task.getRequestToken();
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            transitionToRetrieveAccessToken();
-                        }
-                    });
-                }
+            Runnable r = () -> {
+                if (task.isCanceled()) return;
+                if (task.getRequestToken() == null) return;
+                requestToken = task.getRequestToken();
+                GuiHelper.runInEDT(SemiAutomaticAuthorizationUI.this::transitionToRetrieveAccessToken);
             };
             executor.execute(r);
         }
@@ -436,19 +422,13 @@ public class SemiAutomaticAuthorizationUI extends AbstractAuthorizationUI {
                     requestToken
             );
             executor.execute(task);
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    if (task.isCanceled()) return;
-                    if (task.getAccessToken() == null) return;
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            setAccessToken(task.getAccessToken());
-                            transitionToShowAccessToken();
-                        }
-                    });
-                }
+            Runnable r = () -> {
+                if (task.isCanceled()) return;
+                if (task.getAccessToken() == null) return;
+                GuiHelper.runInEDT(() -> {
+                    setAccessToken(task.getAccessToken());
+                    transitionToShowAccessToken();
+                });
             };
             executor.execute(r);
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java b/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
index c33dccf..41fa6ae 100644
--- a/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
+++ b/src/org/openstreetmap/josm/gui/preferences/DefaultTabPreferenceSetting.java
@@ -41,7 +41,7 @@ public abstract class DefaultTabPreferenceSetting extends DefaultPreferenceSetti
         this.description = description;
         this.title = title;
         this.tabpane = tabpane;
-        this.subSettingMap = tabpane != null ? new HashMap<SubPreferenceSetting, Component>() : null;
+        this.subSettingMap = tabpane != null ? new HashMap<>() : null;
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
index 9907f18..c3019b3 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java
@@ -11,16 +11,15 @@ import java.awt.FlowLayout;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
+import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComponent;
-import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JPanel;
 import javax.swing.KeyStroke;
@@ -57,12 +56,7 @@ public class PreferenceDialog extends JDialog {
 
         JCheckBox expert = new JCheckBox(tr("Expert mode"));
         expert.setSelected(ExpertToggleAction.isExpert());
-        expert.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                ExpertToggleAction.getInstance().actionPerformed(null);
-            }
-        });
+        expert.addActionListener(e -> ExpertToggleAction.getInstance().actionPerformed(null));
 
         JPanel btns = new JPanel(new FlowLayout(FlowLayout.CENTER));
         btns.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java
index 49eda09..7a31233 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceSettingFactory.java
@@ -1,8 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.preferences;
 
+ at FunctionalInterface
 public interface PreferenceSettingFactory {
 
     PreferenceSetting createPreferenceSetting();
-
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
index 936227f..22997a0 100644
--- a/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
+++ b/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
@@ -181,8 +181,9 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
     /**
      * Allows PreferenceSettings to do validation of entered values when ok was pressed.
      * If data is invalid then event can return false to cancel closing of preferences dialog.
-     *
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface ValidationListener {
         /**
          *
@@ -207,7 +208,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
             buildPanel();
         }
 
-        protected void buildPanel() {
+        private void buildPanel() {
             setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
             add(new JLabel(preferenceSetting.getTitle()), GBC.eol().insets(0, 5, 0, 10).anchor(GBC.NORTHWEST));
 
@@ -301,6 +302,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
         return p;
     }
 
+    @FunctionalInterface
     private interface TabIdentifier {
         boolean identify(TabPreferenceSetting tps, Object param);
     }
@@ -319,21 +321,11 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
     }
 
     public void selectTabByName(String name) {
-        selectTabBy(new TabIdentifier() {
-            @Override
-            public boolean identify(TabPreferenceSetting tps, Object name) {
-                return name != null && tps != null && tps.getIconName() != null && name.equals(tps.getIconName());
-            }
-        }, name);
+        selectTabBy((tps, name1) -> name1 != null && tps != null && tps.getIconName() != null && name1.equals(tps.getIconName()), name);
     }
 
     public void selectTabByPref(Class<? extends TabPreferenceSetting> clazz) {
-        selectTabBy(new TabIdentifier() {
-            @Override
-            public boolean identify(TabPreferenceSetting tps, Object clazz) {
-                return tps.getClass().isAssignableFrom((Class<?>) clazz);
-            }
-        }, clazz);
+        selectTabBy((tps, clazz1) -> tps.getClass().isAssignableFrom((Class<?>) clazz1), clazz);
     }
 
     public boolean selectSubTabByPref(Class<? extends SubPreferenceSetting> clazz) {
@@ -341,12 +333,7 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
             if (clazz.isInstance(setting)) {
                 final SubPreferenceSetting sub = (SubPreferenceSetting) setting;
                 final TabPreferenceSetting tab = sub.getTabPreferenceSetting(this);
-                selectTabBy(new TabIdentifier() {
-                    @Override
-                    public boolean identify(TabPreferenceSetting tps, Object unused) {
-                        return tps.equals(tab);
-                    }
-                }, null);
+                selectTabBy((tps, unused) -> tps.equals(tab), null);
                 return tab.selectSubTab(sub);
             }
         }
@@ -416,7 +403,6 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
      */
     public void savePreferences() {
         // create a task for downloading plugins if the user has activated, yet not downloaded, new plugins
-        //
         final PluginPreference preference = getPluginPreference();
         final Set<PluginInformation> toDownload = preference.getPluginsScheduledForUpdateOrDownload();
         final PluginDownloadTask task;
@@ -427,26 +413,16 @@ public final class PreferenceTabbedPane extends JTabbedPane implements MouseWhee
         }
 
         // this is the task which will run *after* the plugins are downloaded
-        //
         final Runnable continuation = new PluginDownloadAfterTask(preference, task, toDownload);
 
         if (task != null) {
             // if we have to launch a plugin download task we do it asynchronously, followed
             // by the remaining "save preferences" activites run on the Swing EDT.
-            //
             Main.worker.submit(task);
-            Main.worker.submit(
-                    new Runnable() {
-                        @Override
-                        public void run() {
-                            SwingUtilities.invokeLater(continuation);
-                        }
-                    }
-                    );
+            Main.worker.submit(() -> SwingUtilities.invokeLater(continuation));
         } else {
             // no need for asynchronous activities. Simply run the remaining "save preference"
             // activities on this thread (we are already on the Swing EDT
-            //
             continuation.run();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
index c47f104..ac84ab9 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
@@ -17,8 +17,6 @@ import java.awt.event.FocusEvent;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -28,7 +26,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.EventObject;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -65,7 +62,6 @@ import javax.swing.ListCellRenderer;
 import javax.swing.ListSelectionModel;
 import javax.swing.event.CellEditorListener;
 import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.event.ListSelectionEvent;
@@ -164,28 +160,17 @@ public abstract class SourceEditor extends JPanel {
             tblActiveSources.getColumnModel().getColumn(0).setCellRenderer(sourceEntryRenderer);
         }
 
-        activeSourcesModel.addTableModelListener(new TableModelListener() {
-            @Override
-            public void tableChanged(TableModelEvent e) {
-                listCellRenderer.updateSources(activeSourcesModel.getSources());
-                lstAvailableSources.repaint();
-            }
-        });
-        tblActiveSources.addPropertyChangeListener(new PropertyChangeListener() {
-            @Override
-            public void propertyChange(PropertyChangeEvent evt) {
-                listCellRenderer.updateSources(activeSourcesModel.getSources());
-                lstAvailableSources.repaint();
-            }
+        activeSourcesModel.addTableModelListener(e -> {
+            listCellRenderer.updateSources(activeSourcesModel.getSources());
+            lstAvailableSources.repaint();
         });
-        activeSourcesModel.addTableModelListener(new TableModelListener() {
-            // Force swing to show horizontal scrollbars for the JTable
-            // Yes, this is a little ugly, but should work
-            @Override
-            public void tableChanged(TableModelEvent e) {
-                TableHelper.adjustColumnWidth(tblActiveSources, canEnable ? 1 : 0, 800);
-            }
+        tblActiveSources.addPropertyChangeListener(evt -> {
+            listCellRenderer.updateSources(activeSourcesModel.getSources());
+            lstAvailableSources.repaint();
         });
+        // Force Swing to show horizontal scrollbars for the JTable
+        // Yes, this is a little ugly, but should work
+        activeSourcesModel.addTableModelListener(e -> TableHelper.adjustColumnWidth(tblActiveSources, canEnable ? 1 : 0, 800));
         activeSourcesModel.setActiveSources(getInitialSourcesList());
 
         final EditActiveSourceAction editActiveSourceAction = new EditActiveSourceAction();
@@ -1237,19 +1222,13 @@ public abstract class SourceEditor extends JPanel {
         }
 
         protected void sort() {
-            Collections.sort(
-                    data,
-                    new Comparator<String>() {
-                        @Override
-                        public int compare(String o1, String o2) {
-                            if (o1.isEmpty() && o2.isEmpty())
-                                return 0;
-                            if (o1.isEmpty()) return 1;
-                            if (o2.isEmpty()) return -1;
-                            return o1.compareTo(o2);
-                        }
-                    }
-                    );
+            data.sort((o1, o2) -> {
+                    if (o1.isEmpty() && o2.isEmpty())
+                        return 0;
+                    if (o1.isEmpty()) return 1;
+                    if (o2.isEmpty()) return -1;
+                    return o1.compareTo(o2);
+                });
         }
 
         public List<String> getIconPaths() {
@@ -1379,18 +1358,13 @@ public abstract class SourceEditor extends JPanel {
             String emsg = Utils.escapeReservedCharactersHTML(e.getMessage() != null ? e.getMessage() : e.toString());
             final String msg = tr(getStr(I18nString.FAILED_TO_LOAD_SOURCES_FROM), url, emsg);
 
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    HelpAwareOptionPane.showOptionDialog(
-                            Main.parent,
-                            msg,
-                            tr("Error"),
-                            JOptionPane.ERROR_MESSAGE,
-                            ht(getStr(I18nString.FAILED_TO_LOAD_SOURCES_FROM_HELP_TOPIC))
-                            );
-                }
-            });
+            GuiHelper.runInEDT(() -> HelpAwareOptionPane.showOptionDialog(
+                    Main.parent,
+                    msg,
+                    tr("Error"),
+                    JOptionPane.ERROR_MESSAGE,
+                    ht(getStr(I18nString.FAILED_TO_LOAD_SOURCES_FROM_HELP_TOPIC))
+                    ));
         }
 
         @Override
@@ -1425,7 +1399,7 @@ public abstract class SourceEditor extends JPanel {
         protected void readFile() throws IOException {
             final String lang = LanguageInfo.getLanguageCodeXML();
             cachedFile = new CachedFile(url);
-            try (final BufferedReader reader = cachedFile.getContentReader()) {
+            try (BufferedReader reader = cachedFile.getContentReader()) {
 
                 String line;
                 ExtendedSourceEntry last = null;
@@ -1472,9 +1446,7 @@ public abstract class SourceEditor extends JPanel {
                                     last.minJosmVersion = Integer.valueOf(value);
                                 } catch (NumberFormatException e) {
                                     // ignore
-                                    if (Main.isTraceEnabled()) {
-                                        Main.trace(e.getMessage());
-                                    }
+                                    Main.trace(e);
                                 }
                             } else if ("style-type".equals(key)) {
                                 last.styleType = value;
@@ -1745,16 +1717,11 @@ public abstract class SourceEditor extends JPanel {
      * @since 6670
      */
     public final void deferLoading(final DefaultTabPreferenceSetting tab, final Component component) {
-        tab.getTabPane().addChangeListener(
-                new ChangeListener() {
-                    @Override
-                    public void stateChanged(ChangeEvent e) {
-                        if (tab.getTabPane().getSelectedComponent() == component) {
-                            SourceEditor.this.initiallyLoadAvailableSources();
-                        }
-                    }
-                }
-                );
+        tab.getTabPane().addChangeListener(e -> {
+            if (tab.getTabPane().getSelectedComponent() == component) {
+                initiallyLoadAvailableSources();
+            }
+        });
     }
 
     protected String getTitleForSourceEntry(SourceEntry entry) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java b/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java
index 0304daa..0c20a77 100644
--- a/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java
+++ b/src/org/openstreetmap/josm/gui/preferences/SourceProvider.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.gui.preferences;
 
 import java.util.Collection;
 
+ at FunctionalInterface
 public interface SourceProvider {
 
     Collection<SourceEntry> getSources();
diff --git a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
index 7cbed0e..eaaf443 100644
--- a/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
+++ b/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
@@ -6,6 +6,7 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
 import java.awt.GridBagLayout;
 import java.awt.GridLayout;
 import java.awt.LayoutManager;
@@ -17,8 +18,6 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -50,12 +49,8 @@ import javax.swing.JTree;
 import javax.swing.ListCellRenderer;
 import javax.swing.MenuElement;
 import javax.swing.TransferHandler;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeCellRenderer;
@@ -68,8 +63,6 @@ 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.data.Preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -761,21 +754,20 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                 }
             };
             selectedList.setCellRenderer(renderer);
-            selectedList.addListSelectionListener(new ListSelectionListener() {
-                @Override
-                public void valueChanged(ListSelectionEvent e) {
-                    boolean sel = selectedList.getSelectedIndex() != -1;
-                    if (sel) {
-                        actionsTree.clearSelection();
-                        ActionDefinition action = selected.get(selectedList.getSelectedIndex());
-                        actionParametersModel.setCurrentAction(action);
-                        actionParametersPanel.setVisible(actionParametersModel.getRowCount() > 0);
-                    }
-                    updateEnabledState();
+            selectedList.addListSelectionListener(e -> {
+                boolean sel = selectedList.getSelectedIndex() != -1;
+                if (sel) {
+                    actionsTree.clearSelection();
+                    ActionDefinition action = selected.get(selectedList.getSelectedIndex());
+                    actionParametersModel.setCurrentAction(action);
+                    actionParametersPanel.setVisible(actionParametersModel.getRowCount() > 0);
                 }
+                updateEnabledState();
             });
 
-            selectedList.setDragEnabled(true);
+            if (!GraphicsEnvironment.isHeadless()) {
+                selectedList.setDragEnabled(true);
+            }
             selectedList.setTransferHandler(new SelectedListTransferHandler());
 
             actionsTree.setTransferHandler(new TransferHandler() {
@@ -802,12 +794,10 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                     return new ActionTransferable(dragActions);
                 }
             });
-            actionsTree.setDragEnabled(true);
-            actionsTree.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {
-                @Override public void valueChanged(TreeSelectionEvent e) {
-                    updateEnabledState();
-                }
-            });
+            if (!GraphicsEnvironment.isHeadless()) {
+                actionsTree.setDragEnabled(true);
+            }
+            actionsTree.getSelectionModel().addTreeSelectionListener(e -> updateEnabledState());
 
             final JPanel left = new JPanel(new GridBagLayout());
             left.add(new JLabel(tr("Toolbar")), GBC.eol());
@@ -913,12 +903,9 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
     public ToolbarPreferences() {
         control.setFloatable(false);
         control.setComponentPopupMenu(popupMenu);
-        Main.pref.addPreferenceChangeListener(new PreferenceChangedListener() {
-            @Override
-            public void preferenceChanged(PreferenceChangeEvent e) {
-                if ("toolbar.visible".equals(e.getKey())) {
-                    refreshToolbarControl();
-                }
+        Main.pref.addPreferenceChangeListener(e -> {
+            if ("toolbar.visible".equals(e.getKey())) {
+                refreshToolbarControl();
             }
         });
     }
@@ -1077,13 +1064,9 @@ public class ToolbarPreferences implements PreferenceSettingFactory {
                     }
                 } else {
                     // hide action text if an icon is set later (necessary for delayed/background image loading)
-                    action.getParametrizedAction().addPropertyChangeListener(new PropertyChangeListener() {
-
-                        @Override
-                        public void propertyChange(PropertyChangeEvent evt) {
-                            if (Action.SMALL_ICON.equals(evt.getPropertyName())) {
-                                b.setHideActionText(evt.getNewValue() != null);
-                            }
+                    action.getParametrizedAction().addPropertyChangeListener(evt -> {
+                        if (Action.SMALL_ICON.equals(evt.getPropertyName())) {
+                            b.setHideActionText(evt.getNewValue() != null);
                         }
                     });
                 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java b/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java
index 66ffb62..867c21f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java
@@ -85,7 +85,7 @@ public abstract class AbstractTableListEditor<T> extends AbstractListEditor<T> {
             updateEnabledState();
         }
 
-        protected void updateEnabledState() {
+        private void updateEnabledState() {
             setEnabled(entryList.getSelectedIndices().length == 1);
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java b/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
index 1c09ea7..8d43bea 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java
@@ -74,19 +74,16 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
 
     private final Map<String, String> profileTypes = new LinkedHashMap<>();
 
-    private final Comparator<PrefEntry> customComparator = new Comparator<PrefEntry>() {
-        @Override
-        public int compare(PrefEntry o1, PrefEntry o2) {
-            if (o1.isChanged() && !o2.isChanged())
-                return -1;
-            if (o2.isChanged() && !o1.isChanged())
-                return 1;
-            if (!(o1.isDefault()) && o2.isDefault())
-                return -1;
-            if (!(o2.isDefault()) && o1.isDefault())
-                return 1;
-            return o1.compareTo(o2);
-        }
+    private final Comparator<PrefEntry> customComparator = (o1, o2) -> {
+        if (o1.isChanged() && !o2.isChanged())
+            return -1;
+        if (o2.isChanged() && !o1.isChanged())
+            return 1;
+        if (!(o1.isDefault()) && o2.isDefault())
+            return -1;
+        if (!(o2.isDefault()) && o1.isDefault())
+            return 1;
+        return o1.compareTo(o2);
     };
 
     private AdvancedPreference() {
@@ -138,49 +135,33 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
         JButton add = new JButton(tr("Add"));
         p.add(Box.createHorizontalGlue(), GBC.std().fill(GBC.HORIZONTAL));
         p.add(add, GBC.std().insets(0, 5, 0, 0));
-        add.addActionListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                PrefEntry pe = table.addPreference(gui);
-                if (pe != null) {
-                    allData.add(pe);
-                    Collections.sort(allData);
-                    applyFilter();
-                }
+        add.addActionListener(e -> {
+            PrefEntry pe = table.addPreference(gui);
+            if (pe != null) {
+                allData.add(pe);
+                Collections.sort(allData);
+                applyFilter();
             }
         });
 
         JButton edit = new JButton(tr("Edit"));
         p.add(edit, GBC.std().insets(5, 5, 5, 0));
-        edit.addActionListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                if (table.editPreference(gui))
-                    applyFilter();
-            }
+        edit.addActionListener(e -> {
+            if (table.editPreference(gui))
+                applyFilter();
         });
 
         JButton reset = new JButton(tr("Reset"));
         p.add(reset, GBC.std().insets(0, 5, 0, 0));
-        reset.addActionListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                table.resetPreferences(gui);
-            }
-        });
+        reset.addActionListener(e -> table.resetPreferences(gui));
 
         JButton read = new JButton(tr("Read from file"));
         p.add(read, GBC.std().insets(5, 5, 0, 0));
-        read.addActionListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                readPreferencesFromXML();
-            }
-        });
+        read.addActionListener(e -> readPreferencesFromXML());
 
         JButton export = new JButton(tr("Export selected items"));
         p.add(export, GBC.std().insets(5, 5, 0, 0));
-        export.addActionListener(new ActionListener() {
-            @Override public void actionPerformed(ActionEvent e) {
-                exportSelectedToXML();
-            }
-        });
+        export.addActionListener(e -> exportSelectedToXML());
 
         final JButton more = new JButton(tr("More..."));
         p.add(more, GBC.std().insets(5, 5, 0, 0));
@@ -292,7 +273,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
 
         readPreferences(tmpPrefs);
         // sorting after modification - first modified, then non-default, then default entries
-        Collections.sort(allData, customComparator);
+        allData.sort(customComparator);
         applyFilter();
     }
 
@@ -356,7 +337,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
                     try {
                         Main.pref.save();
                     } catch (IOException e) {
-                        Main.warn("IOException while saving preferences: "+e.getMessage());
+                        Main.warn(e, "IOException while saving preferences:");
                     }
                     readPreferences(Main.pref);
                     applyFilter();
@@ -436,7 +417,7 @@ public final class AdvancedPreference extends DefaultTabPreferenceSetting {
                }
             }
             // allow user to review the changes in table
-            Collections.sort(allData, customComparator);
+            allData.sort(customComparator);
             applyFilter();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java b/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
index 2947be1..489107e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
+++ b/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
@@ -18,8 +18,7 @@ import javax.swing.table.AbstractTableModel;
 import org.openstreetmap.josm.data.preferences.ListSetting;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Editor for List preference entries.
@@ -43,12 +42,7 @@ public class ListEditor extends AbstractListEditor<String> {
 
     @Override
     public List<String> getData() {
-        return new ArrayList<>(Utils.filter(model.getData(), new Predicate<String>() {
-            @Override
-            public boolean evaluate(String object) {
-                return object != null && !object.isEmpty();
-            }
-        }));
+        return new ArrayList<>(SubclassFilteredCollection.filter(model.getData(), object -> object != null && !object.isEmpty()));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
index d6595eb..ca7c4aa 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
@@ -4,11 +4,8 @@ package org.openstreetmap.josm.gui.preferences.display;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
-import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.ArrayList;
@@ -155,54 +152,42 @@ public class ColorPreference implements SubPreferenceSetting {
         setColorModel(Main.pref.getAllColors());
 
         colorEdit = new JButton(tr("Choose"));
-        colorEdit.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                int sel = colors.getSelectedRow();
-                JColorChooser chooser = new JColorChooser((Color) colors.getValueAt(sel, 1));
-                int answer = JOptionPane.showConfirmDialog(
-                        gui, chooser,
-                        tr("Choose a color for {0}", getName((String) colors.getValueAt(sel, 0))),
-                        JOptionPane.OK_CANCEL_OPTION,
-                        JOptionPane.PLAIN_MESSAGE);
-                if (answer == JOptionPane.OK_OPTION) {
-                    colors.setValueAt(chooser.getColor(), sel, 1);
-                }
+        colorEdit.addActionListener(e -> {
+            int sel = colors.getSelectedRow();
+            JColorChooser chooser = new JColorChooser((Color) colors.getValueAt(sel, 1));
+            int answer = JOptionPane.showConfirmDialog(
+                    gui, chooser,
+                    tr("Choose a color for {0}", getName((String) colors.getValueAt(sel, 0))),
+                    JOptionPane.OK_CANCEL_OPTION,
+                    JOptionPane.PLAIN_MESSAGE);
+            if (answer == JOptionPane.OK_OPTION) {
+                colors.setValueAt(chooser.getColor(), sel, 1);
             }
         });
         defaultSet = new JButton(tr("Set to default"));
-        defaultSet.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                int sel = colors.getSelectedRow();
-                String name = (String) colors.getValueAt(sel, 0);
-                Color c = Main.pref.getDefaultColor(name);
-                if (c != null) {
-                    colors.setValueAt(c, sel, 1);
-                }
+        defaultSet.addActionListener(e -> {
+            int sel = colors.getSelectedRow();
+            String name = (String) colors.getValueAt(sel, 0);
+            Color c = Main.pref.getDefaultColor(name);
+            if (c != null) {
+                colors.setValueAt(c, sel, 1);
             }
         });
         JButton defaultAll = new JButton(tr("Set all to default"));
-        defaultAll.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                for (int i = 0; i < colors.getRowCount(); ++i) {
-                    String name = (String) colors.getValueAt(i, 0);
-                    Color c = Main.pref.getDefaultColor(name);
-                    if (c != null) {
-                        colors.setValueAt(c, i, 1);
-                    }
+        defaultAll.addActionListener(e -> {
+            for (int i = 0; i < colors.getRowCount(); ++i) {
+                String name = (String) colors.getValueAt(i, 0);
+                Color c = Main.pref.getDefaultColor(name);
+                if (c != null) {
+                    colors.setValueAt(c, i, 1);
                 }
             }
         });
         remove = new JButton(tr("Remove"));
-        remove.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                int sel = colors.getSelectedRow();
-                del.add((String) colors.getValueAt(sel, 0));
-                tableModel.removeRow(sel);
-            }
+        remove.addActionListener(e -> {
+            int sel = colors.getSelectedRow();
+            del.add((String) colors.getValueAt(sel, 0));
+            tableModel.removeRow(sel);
         });
         remove.setEnabled(false);
         colorEdit.setEnabled(false);
@@ -232,20 +217,17 @@ public class ColorPreference implements SubPreferenceSetting {
         });
         colors.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         final TableCellRenderer oldColorsRenderer = colors.getDefaultRenderer(Object.class);
-        colors.setDefaultRenderer(Object.class, new TableCellRenderer() {
-            @Override
-            public Component getTableCellRendererComponent(JTable t, Object o, boolean selected, boolean focus, int row, int column) {
-                if (o == null)
-                    return new JLabel();
-                if (column == 1) {
-                    Color c = (Color) o;
-                    JLabel l = new JLabel(ColorHelper.color2html(c));
-                    GuiHelper.setBackgroundReadable(l, c);
-                    l.setOpaque(true);
-                    return l;
-                }
-                return oldColorsRenderer.getTableCellRendererComponent(t, getName(o.toString()), selected, focus, row, column);
+        colors.setDefaultRenderer(Object.class, (t, o, selected, focus, row, column) -> {
+            if (o == null)
+                return new JLabel();
+            if (column == 1) {
+                Color c = (Color) o;
+                JLabel l = new JLabel(ColorHelper.color2html(c));
+                GuiHelper.setBackgroundReadable(l, c);
+                l.setOpaque(true);
+                return l;
             }
+            return oldColorsRenderer.getTableCellRendererComponent(t, getName(o.toString()), selected, focus, row, column);
         });
         colors.getColumnModel().getColumn(1).setWidth(100);
         colors.setToolTipText(tr("Colors used by different objects in JOSM."));
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
index a19b643..6e72b6c 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
@@ -4,8 +4,6 @@ package org.openstreetmap.josm.gui.preferences.display;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 
 import javax.swing.BorderFactory;
 import javax.swing.Box;
@@ -70,16 +68,13 @@ public class DrawingPreference implements SubPreferenceSetting {
         panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 
         // directionHint
-        directionHint.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                if (directionHint.isSelected()) {
-                    headArrow.setSelected(Main.pref.getBoolean("draw.segment.head_only", false));
-                } else {
-                    headArrow.setSelected(false);
-                }
-                headArrow.setEnabled(directionHint.isSelected());
+        directionHint.addActionListener(e -> {
+            if (directionHint.isSelected()) {
+                headArrow.setSelected(Main.pref.getBoolean("draw.segment.head_only", false));
+            } else {
+                headArrow.setSelected(false);
             }
+            headArrow.setEnabled(directionHint.isSelected());
         });
         directionHint.setToolTipText(tr("Draw direction hints for way segments."));
         directionHint.setSelected(Main.pref.getBoolean("draw.segment.direction", false));
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
index d9bf4cf..07481fe 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/GPXSettingsPanel.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.Component;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 import javax.swing.BorderFactory;
@@ -17,8 +16,6 @@ import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JRadioButton;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
@@ -139,17 +136,14 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         ExpertToggleAction.addVisibilitySwitcher(drawRawGpsLinesLocal);
         ExpertToggleAction.addVisibilitySwitcher(drawRawGpsLinesAll);
 
-        drawRawGpsLinesActionListener = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                boolean f = drawRawGpsLinesNone.isSelected() || drawRawGpsLinesGlobal.isSelected();
-                forceRawGpsLines.setEnabled(!f);
-                drawRawGpsMaxLineLength.setEnabled(!(f || drawRawGpsLinesLocal.isSelected()));
-                drawRawGpsMaxLineLengthLocal.setEnabled(!f);
-                drawGpsArrows.setEnabled(!f);
-                drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
-                drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
-            }
+        drawRawGpsLinesActionListener = e -> {
+            boolean f = drawRawGpsLinesNone.isSelected() || drawRawGpsLinesGlobal.isSelected();
+            forceRawGpsLines.setEnabled(!f);
+            drawRawGpsMaxLineLength.setEnabled(!(f || drawRawGpsLinesLocal.isSelected()));
+            drawRawGpsMaxLineLengthLocal.setEnabled(!f);
+            drawGpsArrows.setEnabled(!f);
+            drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
+            drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
         };
 
         drawRawGpsLinesGlobal.addActionListener(drawRawGpsLinesActionListener);
@@ -180,12 +174,9 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         ExpertToggleAction.addVisibilitySwitcher(forceRawGpsLines);
 
         // drawGpsArrows
-        drawGpsArrows.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
-                drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
-            }
+        drawGpsArrows.addActionListener(e -> {
+            drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
+            drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
         });
         drawGpsArrows.setToolTipText(tr("Draw direction arrows for lines, connecting GPS points."));
         add(drawGpsArrows, GBC.eop().insets(40, 0, 0, 0));
@@ -230,19 +221,11 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         colorGroup.add(colorTypeDilution);
         colorGroup.add(colorTypeTime);
 
-        colorTypeVelocity.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                colorTypeVelocityTune.setEnabled(colorTypeVelocity.isSelected());
-                colorDynamic.setEnabled(colorTypeVelocity.isSelected() || colorTypeDilution.isSelected());
-            }
-        });
-        colorTypeDilution.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                colorDynamic.setEnabled(colorTypeVelocity.isSelected() || colorTypeDilution.isSelected());
-            }
+        colorTypeVelocity.addChangeListener(e -> {
+            colorTypeVelocityTune.setEnabled(colorTypeVelocity.isSelected());
+            colorDynamic.setEnabled(colorTypeVelocity.isSelected() || colorTypeDilution.isSelected());
         });
+        colorTypeDilution.addChangeListener(e -> colorDynamic.setEnabled(colorTypeVelocity.isSelected() || colorTypeDilution.isSelected()));
 
         colorTypeNone.setToolTipText(tr("All points and track segments will have the same color. Can be customized in Layer Manager."));
         colorTypeVelocity.setToolTipText(tr("Colors points and track segments by velocity."));
@@ -282,12 +265,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
             add(label, GBC.std().insets(20, 0, 0, 0));
             label.setLabelFor(waypointLabel);
             add(waypointLabel, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 0, 0, 5));
-            waypointLabel.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    updateWaypointPattern(waypointLabel, waypointLabelPattern);
-                }
-            });
+            waypointLabel.addActionListener(e -> updateWaypointPattern(waypointLabel, waypointLabelPattern));
             updateWaypointLabelCombobox(waypointLabel, waypointLabelPattern, TemplateEntryProperty.forMarker(layerName));
             add(waypointLabelPattern, GBC.eol().fill(GBC.HORIZONTAL).insets(20, 0, 0, 5));
             ExpertToggleAction.addVisibilitySwitcher(label);
@@ -303,12 +281,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
             add(label, GBC.std().insets(20, 0, 0, 0));
             label.setLabelFor(audioWaypointLabel);
             add(audioWaypointLabel, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 0, 0, 5));
-            audioWaypointLabel.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    updateWaypointPattern(audioWaypointLabel, audioWaypointLabelPattern);
-                }
-            });
+            audioWaypointLabel.addActionListener(e -> updateWaypointPattern(audioWaypointLabel, audioWaypointLabelPattern));
             updateWaypointLabelCombobox(audioWaypointLabel, audioWaypointLabelPattern, TemplateEntryProperty.forAudioMarker(layerName));
             add(audioWaypointLabelPattern, GBC.eol().fill(GBC.HORIZONTAL).insets(20, 0, 0, 5));
             ExpertToggleAction.addVisibilitySwitcher(label);
@@ -479,6 +452,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         try {
             parser.parse();
         } catch (ParseError e) {
+            Main.warn(e);
             JOptionPane.showMessageDialog(Main.parent,
                     tr("Incorrect waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
             waypointLabelPattern.requestFocus();
@@ -488,6 +462,7 @@ public class GPXSettingsPanel extends JPanel implements ValidationListener {
         try {
             parser.parse();
         } catch (ParseError e) {
+            Main.warn(e);
             JOptionPane.showMessageDialog(Main.parent,
                     tr("Incorrect audio waypoint label pattern: {0}", e.getMessage()), tr("Incorrect pattern"), JOptionPane.ERROR_MESSAGE);
             audioWaypointLabelPattern.requestFocus();
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
index 0f720fa..b063242 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/LafPreference.java
@@ -85,7 +85,7 @@ public class LafPreference implements SubPreferenceSetting {
                 );
             } catch (ReflectiveOperationException ex) {
                 // just debug, Quaqua may not even be installed...
-                Main.debug(ex.getMessage());
+                Main.debug(ex);
             }
         }
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
index 9bb212b..dd84ec8 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/AddImageryPanel.java
@@ -8,8 +8,6 @@ import java.util.Collection;
 
 import javax.swing.AbstractButton;
 import javax.swing.JPanel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.JTextComponent;
@@ -34,7 +32,9 @@ public abstract class AddImageryPanel extends JPanel {
 
     /**
      * A listener notified when the validation status of this panel change.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface ContentValidationListener {
         /**
          * Called when the validation status of this panel changed
@@ -53,12 +53,7 @@ public abstract class AddImageryPanel extends JPanel {
     }
 
     protected final void registerValidableComponent(AbstractButton component) {
-        component.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                notifyListeners();
-            }
-        });
+        component.addChangeListener(e -> notifyListeners());
     }
 
     protected final void registerValidableComponent(JTextComponent component) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
index ba5fb5a..8aff548 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
@@ -3,12 +3,6 @@ package org.openstreetmap.josm.gui.preferences.imagery;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -74,84 +68,65 @@ public class AddWMSLayerPanel extends AddImageryPanel {
         add(new JLabel(tr("5. Enter name for this layer")), GBC.eol());
         add(name, GBC.eop().fill());
 
-        getLayers.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                try {
-                    wms.attemptGetCapabilities(rawUrl.getText());
-                    tree.updateTree(wms);
-                    formats.setModel(new DefaultComboBoxModel<>(wms.getFormats().toArray(new String[0])));
-                    formats.setSelectedItem(wms.getPreferredFormats());
-                } catch (MalformedURLException ex) {
-                    Main.error(ex, false);
-                    JOptionPane.showMessageDialog(getParent(), tr("Invalid service URL."),
-                            tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
-                } catch (IOException ex) {
-                    Main.error(ex, false);
-                    JOptionPane.showMessageDialog(getParent(), tr("Could not retrieve WMS layer list."),
-                            tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
-                } catch (WMSImagery.WMSGetCapabilitiesException ex) {
-                    String incomingData = ex.getIncomingData().trim();
-                    String title = tr("WMS Error");
-                    String message = tr("Could not parse WMS layer list.");
-                    Main.error(ex, "Could not parse WMS layer list. Incoming data:\n"+incomingData);
-                    if ((incomingData.startsWith("<html>") || incomingData.startsWith("<HTML>"))
-                      && (incomingData.endsWith("</html>") || incomingData.endsWith("</HTML>"))) {
-                        GuiHelper.notifyUserHtmlError(AddWMSLayerPanel.this, title, message, incomingData);
-                    } else {
-                        if (ex.getMessage() != null) {
-                            message += '\n' + ex.getMessage();
-                        }
-                        JOptionPane.showMessageDialog(getParent(), message, title, JOptionPane.ERROR_MESSAGE);
+        getLayers.addActionListener(e -> {
+            try {
+                wms.attemptGetCapabilities(rawUrl.getText());
+                tree.updateTree(wms);
+                formats.setModel(new DefaultComboBoxModel<>(wms.getFormats().toArray(new String[0])));
+                formats.setSelectedItem(wms.getPreferredFormats());
+            } catch (MalformedURLException ex1) {
+                Main.error(ex1, false);
+                JOptionPane.showMessageDialog(getParent(), tr("Invalid service URL."),
+                        tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
+            } catch (IOException ex2) {
+                Main.error(ex2, false);
+                JOptionPane.showMessageDialog(getParent(), tr("Could not retrieve WMS layer list."),
+                        tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
+            } catch (WMSImagery.WMSGetCapabilitiesException ex3) {
+                String incomingData = ex3.getIncomingData().trim();
+                String title = tr("WMS Error");
+                String message = tr("Could not parse WMS layer list.");
+                Main.error(ex3, "Could not parse WMS layer list. Incoming data:\n"+incomingData);
+                if ((incomingData.startsWith("<html>") || incomingData.startsWith("<HTML>"))
+                  && (incomingData.endsWith("</html>") || incomingData.endsWith("</HTML>"))) {
+                    GuiHelper.notifyUserHtmlError(this, title, message, incomingData);
+                } else {
+                    if (ex3.getMessage() != null) {
+                        message += '\n' + ex3.getMessage();
                     }
+                    JOptionPane.showMessageDialog(getParent(), message, title, JOptionPane.ERROR_MESSAGE);
                 }
             }
         });
 
-        endpoint.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                tree.getLayerTree().setEnabled(!endpoint.isSelected());
-                showBounds.setEnabled(!endpoint.isSelected());
-                wmsInstruction.setEnabled(!endpoint.isSelected());
-                formats.setEnabled(!endpoint.isSelected());
-                wmsUrl.setEnabled(!endpoint.isSelected());
-                if (endpoint.isSelected()) {
-                    URL url = wms.getServiceUrl();
-                    if (url != null) {
-                        name.setText(url.getHost());
-                    }
-                } else {
-                    onLayerSelectionChanged();
+        endpoint.addItemListener(e -> {
+            tree.getLayerTree().setEnabled(!endpoint.isSelected());
+            showBounds.setEnabled(!endpoint.isSelected());
+            wmsInstruction.setEnabled(!endpoint.isSelected());
+            formats.setEnabled(!endpoint.isSelected());
+            wmsUrl.setEnabled(!endpoint.isSelected());
+            if (endpoint.isSelected()) {
+                URL url = wms.getServiceUrl();
+                if (url != null) {
+                    name.setText(url.getHost());
                 }
-            }
-        });
-
-        tree.getLayerTree().addPropertyChangeListener("selectedLayers", new PropertyChangeListener() {
-            @Override
-            public void propertyChange(PropertyChangeEvent evt) {
+            } else {
                 onLayerSelectionChanged();
             }
         });
 
-        formats.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                onLayerSelectionChanged();
-            }
-        });
+        tree.getLayerTree().addPropertyChangeListener("selectedLayers", evt -> onLayerSelectionChanged());
 
-        showBounds.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                if (tree.getSelectedLayers().get(0).bounds != null) {
-                    SlippyMapBBoxChooser mapPanel = new SlippyMapBBoxChooser();
-                    mapPanel.setBoundingBox(tree.getSelectedLayers().get(0).bounds);
-                    JOptionPane.showMessageDialog(null, mapPanel, tr("Show Bounds"), JOptionPane.PLAIN_MESSAGE);
-                } else {
-                    JOptionPane.showMessageDialog(null, tr("No bounding box was found for this layer."),
-                            tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
-                }
+        formats.addActionListener(e -> onLayerSelectionChanged());
+
+        showBounds.addActionListener(e -> {
+            if (tree.getSelectedLayers().get(0).bounds != null) {
+                SlippyMapBBoxChooser mapPanel = new SlippyMapBBoxChooser();
+                mapPanel.setBoundingBox(tree.getSelectedLayers().get(0).bounds);
+                JOptionPane.showMessageDialog(null, mapPanel, tr("Show Bounds"), JOptionPane.PLAIN_MESSAGE);
+            } else {
+                JOptionPane.showMessageDialog(null, tr("No bounding box was found for this layer."),
+                        tr("WMS Error"), JOptionPane.ERROR_MESSAGE);
             }
         });
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
index 016c4cf..1d8050e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java
@@ -3,36 +3,22 @@ package org.openstreetmap.josm.gui.preferences.imagery;
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.Color;
-import java.awt.Component;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 import javax.swing.AbstractAction;
-import javax.swing.AbstractCellEditor;
-import javax.swing.Action;
-import javax.swing.Icon;
-import javax.swing.JButton;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
-import javax.swing.UIManager;
-import javax.swing.border.LineBorder;
 import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableCellEditor;
-import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
 import javax.swing.table.TableModel;
 
@@ -46,9 +32,9 @@ import org.openstreetmap.josm.gui.layer.TMSLayer;
 import org.openstreetmap.josm.gui.layer.WMSLayer;
 import org.openstreetmap.josm.gui.layer.WMTSLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.ButtonColumn;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Pair;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Panel for cache content management.
@@ -59,119 +45,26 @@ import org.openstreetmap.josm.tools.Utils;
 public class CacheContentsPanel extends JPanel {
 
     /**
-     *
-     * Class based on:  http://www.camick.com/java/source/ButtonColumn.java
-     * https://tips4java.wordpress.com/2009/07/12/table-button-column/
-     *
-     */
-    private static final class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener {
-        private final Action action;
-        private final JButton renderButton;
-        private final JButton editButton;
-        private Object editorValue;
-
-        private ButtonColumn() {
-            this(null);
-        }
-
-        private ButtonColumn(Action action) {
-            this.action = action;
-            renderButton = new JButton();
-            editButton = new JButton();
-            editButton.setFocusPainted(false);
-            editButton.addActionListener(this);
-            editButton.setBorder(new LineBorder(Color.BLUE));
-        }
-
-        @Override
-        public Object getCellEditorValue() {
-            return editorValue;
-        }
-
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            this.action.actionPerformed(e);
-        }
-
-        @Override
-        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
-            this.editorValue = value;
-            if (value == null) {
-                editButton.setText("");
-                editButton.setIcon(null);
-            } else if (value instanceof Icon) {
-                editButton.setText("");
-                editButton.setIcon((Icon) value);
-            } else {
-                editButton.setText(value.toString());
-                editButton.setIcon(null);
-            }
-            this.editorValue = value;
-            return editButton;
-        }
-
-        @Override
-        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
-                boolean hasFocus, int row, int column) {
-            if (isSelected) {
-                renderButton.setForeground(table.getSelectionForeground());
-                renderButton.setBackground(table.getSelectionBackground());
-            } else {
-                renderButton.setForeground(table.getForeground());
-                renderButton.setBackground(UIManager.getColor("Button.background"));
-            }
-
-            renderButton.setFocusPainted(hasFocus);
-
-            if (value == null) {
-                renderButton.setText("");
-                renderButton.setIcon(null);
-            } else if (value instanceof Icon) {
-                renderButton.setText("");
-                renderButton.setIcon((Icon) value);
-            } else {
-                renderButton.setText(value.toString());
-                renderButton.setIcon(null);
-            }
-            return renderButton;
-        }
-
-    }
-
-    private final transient ExecutorService executor =
-            Executors.newSingleThreadExecutor(Utils.newThreadFactory(getClass() + "-%d", Thread.NORM_PRIORITY));
-
-    /**
      * Creates cache content panel
      */
     public CacheContentsPanel() {
         super(new GridBagLayout());
-        executor.submit(new Runnable() {
-            @Override
-            public void run() {
-                addToPanel(TMSLayer.getCache(), "TMS");
-                addToPanel(WMSLayer.getCache(), "WMS");
-                addToPanel(WMTSLayer.getCache(), "WMTS");
-            }
+        Main.worker.submit(() -> {
+            addToPanel(TMSLayer.getCache(), "TMS");
+            addToPanel(WMSLayer.getCache(), "WMS");
+            addToPanel(WMTSLayer.getCache(), "WMTS");
         });
-        executor.shutdown();
     }
 
     private void addToPanel(final CacheAccess<String, BufferedImageCacheEntry> cache, final String name) {
         final Long cacheSize = getCacheSize(cache);
         final TableModel tableModel = getTableModel(cache);
 
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                add(
-                        new JLabel(tr("{0} cache, total cache size: {1} bytes", name, cacheSize)),
-                        GBC.eol().insets(5, 5, 0, 0));
-
-                add(
-                        new JScrollPane(getTableForCache(cache, tableModel)),
-                        GBC.eol().fill(GBC.BOTH));
-            }
+        GuiHelper.runInEDT(() -> {
+            add(new JLabel(tr("{0} cache, total cache size: {1} bytes", name, cacheSize)),
+                GBC.eol().insets(5, 5, 0, 0));
+            add(new JScrollPane(getTableForCache(cache, tableModel)),
+                GBC.eol().fill(GBC.BOTH));
         });
     }
 
@@ -184,14 +77,13 @@ public class CacheContentsPanel extends JPanel {
                     if (val instanceof Long) {
                         return (Long) val;
                     }
-
                 }
             }
         }
         return Long.valueOf(-1);
     }
 
-    private static String[][] getCacheStats(CacheAccess<String, BufferedImageCacheEntry> cache) {
+    public static String[][] getCacheStats(CacheAccess<String, BufferedImageCacheEntry> cache) {
         Set<String> keySet = cache.getCacheControl().getKeySet();
         Map<String, int[]> temp = new ConcurrentHashMap<>(); // use int[] as a Object reference to int, gives better performance
         for (String key: keySet) {
@@ -212,12 +104,7 @@ public class CacheContentsPanel extends JPanel {
         for (Entry<String, int[]> e: temp.entrySet()) {
             sortedStats.add(new Pair<>(e.getKey(), e.getValue()[0]));
         }
-        Collections.sort(sortedStats, new Comparator<Pair<String, Integer>>() {
-            @Override
-            public int compare(Pair<String, Integer> o1, Pair<String, Integer> o2) {
-                return -1 * o1.b.compareTo(o2.b);
-            }
-        });
+        sortedStats.sort(Comparator.comparing(o -> o.b, Comparator.reverseOrder()));
         String[][] ret = new String[sortedStats.size()][3];
         int index = 0;
         for (Pair<String, Integer> e: sortedStats) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
index 138e470..572f298 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/CommonSettingsPanel.java
@@ -5,8 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Color;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.io.File;
 import java.io.FilenameFilter;
 
@@ -54,23 +52,18 @@ public class CommonSettingsPanel extends JPanel {
         this.maxElementsOnDisk = new JSpinner(new SpinnerNumberModel(
                 AbstractCachedTileSourceLayer.MAX_DISK_CACHE_SIZE.get().intValue(), 0, Integer.MAX_VALUE, 1));
 
-
         this.btnFadeColor = new JButton();
-
-        this.btnFadeColor.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                JColorChooser chooser = new JColorChooser(btnFadeColor.getBackground());
-                int answer = JOptionPane.showConfirmDialog(
-                        CommonSettingsPanel.this, chooser,
-                        tr("Choose a color for {0}", tr("imagery fade")),
-                        JOptionPane.OK_CANCEL_OPTION,
-                        JOptionPane.PLAIN_MESSAGE);
-                if (answer == JOptionPane.OK_OPTION) {
-                    Color colFadeColor = chooser.getColor();
-                    btnFadeColor.setBackground(colFadeColor);
-                    btnFadeColor.setText(ColorHelper.color2html(colFadeColor));
-                }
+        this.btnFadeColor.addActionListener(e -> {
+            JColorChooser chooser = new JColorChooser(btnFadeColor.getBackground());
+            int answer = JOptionPane.showConfirmDialog(
+                    this, chooser,
+                    tr("Choose a color for {0}", tr("imagery fade")),
+                    JOptionPane.OK_CANCEL_OPTION,
+                    JOptionPane.PLAIN_MESSAGE);
+            if (answer == JOptionPane.OK_OPTION) {
+                Color colFadeColor = chooser.getColor();
+                btnFadeColor.setBackground(colFadeColor);
+                btnFadeColor.setText(ColorHelper.color2html(colFadeColor));
             }
         });
 
@@ -158,13 +151,7 @@ public class CommonSettingsPanel extends JPanel {
 
     private void removeCacheFiles(String path) {
         File directory = new File(path);
-        File[] cacheFiles = directory.listFiles(new FilenameFilter() {
-            @Override
-            public boolean accept(File dir, String name) {
-                return name.endsWith(".data") || name.endsWith(".key");
-            }
-
-        });
+        File[] cacheFiles = directory.listFiles((FilenameFilter) (dir, name) -> name.endsWith(".data") || name.endsWith(".key"));
         JCSCacheManager.shutdown(); // shutdown Cache - so files can by safely deleted
         for (File cacheFile: cacheFiles) {
             Utils.deleteFile(cacheFile);
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
index 7d5643a..a09ea03 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
@@ -13,7 +13,6 @@ import java.awt.GraphicsEnvironment;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.MouseEvent;
 import java.io.IOException;
 import java.net.MalformedURLException;
@@ -40,8 +39,6 @@ import javax.swing.JToolBar;
 import javax.swing.UIManager;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableColumnModel;
@@ -311,23 +308,8 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
             defaultModel = new ImageryDefaultLayerTableModel();
             defaultTable = new JTable(defaultModel);
 
-            defaultModel.addTableModelListener(
-                    new TableModelListener() {
-                        @Override
-                        public void tableChanged(TableModelEvent e) {
-                            activeTable.repaint();
-                        }
-                    }
-                    );
-
-            activeModel.addTableModelListener(
-                    new TableModelListener() {
-                        @Override
-                        public void tableChanged(TableModelEvent e) {
-                            defaultTable.repaint();
-                        }
-                    }
-                    );
+            defaultModel.addTableModelListener(e -> activeTable.repaint());
+            activeModel.addTableModelListener(e -> defaultTable.repaint());
 
             TableColumnModel mod = defaultTable.getColumnModel();
             mod.getColumn(2).setPreferredWidth(800);
@@ -781,11 +763,13 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
                 try {
                     htmlPane = new JosmEditorPane(url);
                 } catch (IOException e1) {
+                    Main.trace(e1);
                     // give a second chance with a default Locale 'en'
                     try {
                         url = new URL(eulaUrl.replaceAll("\\{lang\\}", ""));
                         htmlPane = new JosmEditorPane(url);
                     } catch (IOException e2) {
+                        Main.debug(e2);
                         JOptionPane.showMessageDialog(gui, tr("EULA license URL not available: {0}", eulaUrl));
                         return false;
                     }
@@ -838,26 +822,17 @@ public final class ImageryPreference extends DefaultTabPreferenceSetting {
 
             JButton add = new JButton(tr("Add"));
             buttonPanel.add(add, GBC.std().insets(0, 5, 0, 0));
-            add.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    OffsetBookmark b = new OffsetBookmark(Main.getProjection().toCode(), "", "", 0, 0);
-                    model.addRow(b);
-                }
-            });
+            add.addActionListener(e -> model.addRow(new OffsetBookmark(Main.getProjection().toCode(), "", "", 0, 0)));
 
             JButton delete = new JButton(tr("Delete"));
             buttonPanel.add(delete, GBC.std().insets(0, 5, 0, 0));
-            delete.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    if (list.getSelectedRow() == -1) {
-                        JOptionPane.showMessageDialog(gui, tr("Please select the row to delete."));
-                    } else {
-                        Integer i;
-                        while ((i = list.getSelectedRow()) != -1) {
-                            model.removeRow(i);
-                        }
+            delete.addActionListener(e -> {
+                if (list.getSelectedRow() == -1) {
+                    JOptionPane.showMessageDialog(gui, tr("Please select the row to delete."));
+                } else {
+                    Integer i;
+                    while ((i = list.getSelectedRow()) != -1) {
+                        model.removeRow(i);
                     }
                 }
             });
diff --git a/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java b/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java
index 0e5eceb..3c61b69 100644
--- a/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/imagery/TMSSettingsPanel.java
@@ -13,6 +13,7 @@ import javax.swing.SpinnerNumberModel;
 
 import org.openstreetmap.josm.data.imagery.TMSCachedTileLoader;
 import org.openstreetmap.josm.gui.layer.TMSLayer;
+import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.tools.GBC;
 
 /**
@@ -81,8 +82,8 @@ public class TMSSettingsPanel extends JPanel {
      * Loads the TMS settings.
      */
     public void loadSettings() {
-        this.autozoomActive.setSelected(TMSLayer.PROP_DEFAULT_AUTOZOOM.get());
-        this.autoloadTiles.setSelected(TMSLayer.PROP_DEFAULT_AUTOLOAD.get());
+        this.autozoomActive.setSelected(TileSourceDisplaySettings.PROP_AUTO_ZOOM.get());
+        this.autoloadTiles.setSelected(TileSourceDisplaySettings.PROP_AUTO_LOAD.get());
         this.addToSlippyMapChosser.setSelected(TMSLayer.PROP_ADD_TO_SLIPPYMAP_CHOOSER.get());
         this.maxZoomLvl.setValue(TMSLayer.getMaxZoomLvl(null));
         this.minZoomLvl.setValue(TMSLayer.getMinZoomLvl(null));
@@ -101,8 +102,8 @@ public class TMSSettingsPanel extends JPanel {
             restartRequired = true;
         }
         TMSLayer.PROP_ADD_TO_SLIPPYMAP_CHOOSER.put(this.addToSlippyMapChosser.isSelected());
-        TMSLayer.PROP_DEFAULT_AUTOZOOM.put(this.autozoomActive.isSelected());
-        TMSLayer.PROP_DEFAULT_AUTOLOAD.put(this.autoloadTiles.isSelected());
+        TileSourceDisplaySettings.PROP_AUTO_ZOOM.put(this.autozoomActive.isSelected());
+        TileSourceDisplaySettings.PROP_AUTO_LOAD.put(this.autoloadTiles.isSelected());
         TMSLayer.setMaxZoomLvl((Integer) this.maxZoomLvl.getValue());
         TMSLayer.setMinZoomLvl((Integer) this.minZoomLvl.getValue());
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
index 74b6611..60d5ae5 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.gui.preferences.map;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 import javax.swing.BorderFactory;
@@ -100,15 +99,12 @@ public class BackupPreference implements SubPreferenceSetting {
         notification.setToolTipText(tr("When saving, display a small notification"));
         panel.add(notification, GBC.eop());
 
-        ActionListener autosaveEnabled = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                boolean enabled = autosave.isSelected();
-                autosaveIntervalLabel.setEnabled(enabled);
-                autosaveInterval.setEnabled(enabled);
-                backupPerLayerLabel.setEnabled(enabled);
-                backupPerLayer.setEnabled(enabled);
-            }
+        ActionListener autosaveEnabled = e -> {
+            boolean enabled = autosave.isSelected();
+            autosaveIntervalLabel.setEnabled(enabled);
+            autosaveInterval.setEnabled(enabled);
+            backupPerLayerLabel.setEnabled(enabled);
+            backupPerLayer.setEnabled(enabled);
         };
         autosave.addActionListener(autosaveEnabled);
         autosaveEnabled.actionPerformed(null);
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
index 37a64f4..030886d 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/MapPaintPreference.java
@@ -32,7 +32,6 @@ 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.tools.GBC;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -232,13 +231,7 @@ public class MapPaintPreference implements SubPreferenceSetting {
             Collection<ExtendedSourceEntry> defaults = getDefault();
             int insertionIdx = 0;
             for (final SourceEntry def : defaults) {
-                int i = Utils.indexOf(list,
-                        new Predicate<SourceEntry>() {
-                    @Override
-                    public boolean evaluate(SourceEntry se) {
-                        return Objects.equals(def.url, se.url);
-                    }
-                });
+                int i = Utils.indexOf(list, se -> Objects.equals(def.url, se.url));
                 if (i == -1 && !knownDefaults.contains(def.url)) {
                     def.active = false;
                     list.add(insertionIdx, def);
@@ -254,12 +247,7 @@ public class MapPaintPreference implements SubPreferenceSetting {
             Main.pref.putCollection("mappaint.style.known-defaults", knownDefaults);
 
             // XML style is not bundled anymore
-            list.remove(Utils.find(list, new Predicate<SourceEntry>() {
-                            @Override
-                            public boolean evaluate(SourceEntry se) {
-                                return "resource://styles/standard/elemstyles.xml".equals(se.url);
-                            }
-                        }));
+            list.remove(Utils.find(list, se -> "resource://styles/standard/elemstyles.xml".equals(se.url)));
 
             return changed;
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
index 513134d..e91bcd6 100644
--- a/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
@@ -56,7 +56,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                             TaggingPresetReader.readAll(source.url, false);
                             canLoad = true;
                         } catch (IOException e) {
-                            Main.warn(tr("Could not read tagging preset source: {0}", source));
+                            Main.warn(e, tr("Could not read tagging preset source: {0}", source));
                             ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Error"),
                                     new String[] {tr("Yes"), tr("No"), tr("Cancel")});
                             ed.setContent(tr("Could not read tagging preset source: {0}\nDo you want to keep it?", source));
@@ -71,9 +71,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                             }
                         } catch (SAXException e) {
                             // We will handle this in step with validation
-                            if (Main.isTraceEnabled()) {
-                                Main.trace(e.getMessage());
-                            }
+                            Main.trace(e);
                         }
 
                         String errorMessage = null;
@@ -83,7 +81,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                         } catch (IOException e) {
                             // Should not happen, but at least show message
                             String msg = tr("Could not read tagging preset source {0}", source);
-                            Main.error(msg);
+                            Main.error(e, msg);
                             JOptionPane.showMessageDialog(Main.parent, msg);
                             return false;
                         } catch (SAXParseException e) {
@@ -96,6 +94,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                                         "Do you really want to use it?<br><br><table width=400>Error is: [{1}:{2}] {3}</table></html>",
                                         source, e.getLineNumber(), e.getColumnNumber(), e.getMessage());
                             }
+                            Main.warn(e, errorMessage);
                         } catch (SAXException e) {
                             if (canLoad) {
                                 errorMessage = tr("<html>Tagging preset source {0} can be loaded but it contains errors. " +
@@ -106,6 +105,7 @@ public final class TaggingPresetPreference implements SubPreferenceSetting {
                                         "Do you really want to use it?<br><br><table width=600>Error is: {1}</table></html>",
                                         source, e.getMessage());
                             }
+                            Main.warn(e, errorMessage);
                         }
 
                         if (errorMessage != null) {
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
index 7f8bcbd..116bdc4 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
@@ -14,9 +14,7 @@ import java.util.List;
 import javax.swing.JLabel;
 import javax.swing.SwingConstants;
 import javax.swing.SwingUtilities;
-import javax.swing.event.HyperlinkEvent;
 import javax.swing.event.HyperlinkEvent.EventType;
-import javax.swing.event.HyperlinkListener;
 
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel;
@@ -150,12 +148,9 @@ public class PluginListPanel extends VerticallyScrollablePanel {
 
             HtmlPanel description = new HtmlPanel();
             description.setText(pi.getDescriptionAsHtml());
-            description.getEditorPane().addHyperlinkListener(new HyperlinkListener() {
-                @Override
-                public void hyperlinkUpdate(HyperlinkEvent e) {
-                    if (e.getEventType() == EventType.ACTIVATED) {
-                        OpenBrowser.displayUrl(e.getURL().toString());
-                    }
+            description.getEditorPane().addHyperlinkListener(e -> {
+                if (e.getEventType() == EventType.ACTIVATED) {
+                    OpenBrowser.displayUrl(e.getURL().toString());
                 }
             });
             lblPlugin.setLabelFor(description);
@@ -169,12 +164,7 @@ public class PluginListPanel extends VerticallyScrollablePanel {
         revalidate();
         repaint();
         if (visibleRect != null && visibleRect.width > 0 && visibleRect.height > 0) {
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    scrollRectToVisible(visibleRect);
-                }
-            });
+            SwingUtilities.invokeLater(() -> scrollRectToVisible(visibleRect));
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
index 12ae00b..a713087 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java
@@ -149,22 +149,17 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         }
         sb.append("</html>");
         if (!GraphicsEnvironment.isHeadless()) {
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    HelpAwareOptionPane.showOptionDialog(
-                            parent,
-                            sb.toString(),
-                            tr("Update plugins"),
-                            !failed.isEmpty() ? JOptionPane.WARNING_MESSAGE : JOptionPane.INFORMATION_MESSAGE,
-                                    HelpUtil.ht("/Preferences/Plugins")
-                            );
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> HelpAwareOptionPane.showOptionDialog(
+                    parent,
+                    sb.toString(),
+                    tr("Update plugins"),
+                    !failed.isEmpty() ? JOptionPane.WARNING_MESSAGE : JOptionPane.INFORMATION_MESSAGE,
+                            HelpUtil.ht("/Preferences/Plugins")
+                    ));
         }
     }
 
-    protected JPanel buildSearchFieldPanel() {
+    private JPanel buildSearchFieldPanel() {
         JPanel pnl = new JPanel(new GridBagLayout());
         pnl.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
         GridBagConstraints gc = new GridBagConstraints();
@@ -185,7 +180,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         return pnl;
     }
 
-    protected JPanel buildActionPanel() {
+    private JPanel buildActionPanel() {
         JPanel pnl = new JPanel(new GridLayout(1, 3));
 
         pnl.add(new JButton(new DownloadAvailablePluginsAction()));
@@ -194,7 +189,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         return pnl;
     }
 
-    protected JPanel buildPluginListPanel() {
+    private JPanel buildPluginListPanel() {
         JPanel pnl = new JPanel(new BorderLayout());
         pnl.add(buildSearchFieldPanel(), BorderLayout.NORTH);
         model = new PluginPreferencesModel();
@@ -219,7 +214,7 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         return pnl;
     }
 
-    protected JTabbedPane buildContentPane() {
+    private JTabbedPane buildContentPane() {
         JTabbedPane pane = getTabPane();
         pnlPluginUpdatePolicy = new PluginUpdatePolicyPanel();
         pane.addTab(tr("Plugins"), buildPluginListPanel());
@@ -317,18 +312,12 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
      */
     public void readLocalPluginInformation() {
         final ReadLocalPluginInformationTask task = new ReadLocalPluginInformationTask();
-        Runnable r = new Runnable() {
-            @Override
-            public void run() {
-                if (!task.isCanceled()) {
-                    SwingUtilities.invokeLater(new Runnable() {
-                        @Override
-                        public void run() {
-                            model.setAvailablePlugins(task.getAvailablePlugins());
-                            pnlPluginPreferences.refreshView();
-                        }
-                    });
-                }
+        Runnable r = () -> {
+            if (!task.isCanceled()) {
+                SwingUtilities.invokeLater(() -> {
+                    model.setAvailablePlugins(task.getAvailablePlugins());
+                    pnlPluginPreferences.refreshView();
+                });
             }
         };
         Main.worker.submit(task);
@@ -356,19 +345,13 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
                 return;
             }
             final ReadRemotePluginInformationTask task = new ReadRemotePluginInformationTask(pluginSites);
-            Runnable continuation = new Runnable() {
-                @Override
-                public void run() {
-                    if (!task.isCanceled()) {
-                        SwingUtilities.invokeLater(new Runnable() {
-                            @Override
-                            public void run() {
-                                model.updateAvailablePlugins(task.getAvailablePlugins());
-                                pnlPluginPreferences.refreshView();
-                                Main.pref.putInteger("pluginmanager.version", Version.getInstance().getVersion()); // fix #7030
-                            }
-                        });
-                    }
+            Runnable continuation = () -> {
+                if (!task.isCanceled()) {
+                    SwingUtilities.invokeLater(() -> {
+                        model.updateAvailablePlugins(task.getAvailablePlugins());
+                        pnlPluginPreferences.refreshView();
+                        Main.pref.putInteger("pluginmanager.version", Version.getInstance().getVersion()); // fix #7030
+                    });
                 }
             };
             Main.worker.submit(task);
@@ -388,18 +371,13 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
 
         protected void alertNothingToUpdate() {
             try {
-                SwingUtilities.invokeAndWait(new Runnable() {
-                    @Override
-                    public void run() {
-                        HelpAwareOptionPane.showOptionDialog(
-                                pnlPluginPreferences,
-                                tr("All installed plugins are up to date. JOSM does not have to download newer versions."),
-                                tr("Plugins up to date"),
-                                JOptionPane.INFORMATION_MESSAGE,
-                                null // FIXME: provide help context
-                                );
-                    }
-                });
+                SwingUtilities.invokeAndWait(() -> HelpAwareOptionPane.showOptionDialog(
+                        pnlPluginPreferences,
+                        tr("All installed plugins are up to date. JOSM does not have to download newer versions."),
+                        tr("Plugins up to date"),
+                        JOptionPane.INFORMATION_MESSAGE,
+                        null // FIXME: provide help context
+                        ));
             } catch (InterruptedException | InvocationTargetException e) {
                 Main.error(e);
             }
@@ -420,55 +398,44 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
 
             // to be run asynchronously after the plugin download
             //
-            final Runnable pluginDownloadContinuation = new Runnable() {
-                @Override
-                public void run() {
-                    if (pluginDownloadTask.isCanceled())
-                        return;
-                    boolean restartRequired = false;
-                    for (PluginInformation pi : pluginDownloadTask.getDownloadedPlugins()) {
-                        if (!model.getNewlyActivatedPlugins().contains(pi) || !pi.canloadatruntime) {
-                            restartRequired = true;
-                            break;
-                        }
+            final Runnable pluginDownloadContinuation = () -> {
+                if (pluginDownloadTask.isCanceled())
+                    return;
+                boolean restartRequired = false;
+                for (PluginInformation pi : pluginDownloadTask.getDownloadedPlugins()) {
+                    if (!model.getNewlyActivatedPlugins().contains(pi) || !pi.canloadatruntime) {
+                        restartRequired = true;
+                        break;
                     }
-                    notifyDownloadResults(pnlPluginPreferences, pluginDownloadTask, restartRequired);
-                    model.refreshLocalPluginVersion(pluginDownloadTask.getDownloadedPlugins());
-                    model.clearPendingPlugins(pluginDownloadTask.getDownloadedPlugins());
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            pnlPluginPreferences.refreshView();
-                        }
-                    });
                 }
+                notifyDownloadResults(pnlPluginPreferences, pluginDownloadTask, restartRequired);
+                model.refreshLocalPluginVersion(pluginDownloadTask.getDownloadedPlugins());
+                model.clearPendingPlugins(pluginDownloadTask.getDownloadedPlugins());
+                GuiHelper.runInEDT(pnlPluginPreferences::refreshView);
             };
 
             // to be run asynchronously after the plugin list download
             //
-            final Runnable pluginInfoDownloadContinuation = new Runnable() {
-                @Override
-                public void run() {
-                    if (pluginInfoDownloadTask.isCanceled())
-                        return;
-                    model.updateAvailablePlugins(pluginInfoDownloadTask.getAvailablePlugins());
-                    // select plugins which actually have to be updated
-                    //
-                    Iterator<PluginInformation> it = toUpdate.iterator();
-                    while (it.hasNext()) {
-                        PluginInformation pi = it.next();
-                        if (!pi.isUpdateRequired()) {
-                            it.remove();
-                        }
-                    }
-                    if (toUpdate.isEmpty()) {
-                        alertNothingToUpdate();
-                        return;
+            final Runnable pluginInfoDownloadContinuation = () -> {
+                if (pluginInfoDownloadTask.isCanceled())
+                    return;
+                model.updateAvailablePlugins(pluginInfoDownloadTask.getAvailablePlugins());
+                // select plugins which actually have to be updated
+                //
+                Iterator<PluginInformation> it = toUpdate.iterator();
+                while (it.hasNext()) {
+                    PluginInformation pi = it.next();
+                    if (!pi.isUpdateRequired()) {
+                        it.remove();
                     }
-                    pluginDownloadTask.setPluginsToDownload(toUpdate);
-                    Main.worker.submit(pluginDownloadTask);
-                    Main.worker.submit(pluginDownloadContinuation);
                 }
+                if (toUpdate.isEmpty()) {
+                    alertNothingToUpdate();
+                    return;
+                }
+                pluginDownloadTask.setPluginsToDownload(toUpdate);
+                Main.worker.submit(pluginDownloadTask);
+                Main.worker.submit(pluginDownloadContinuation);
             };
 
             Main.worker.submit(pluginInfoDownloadTask);
@@ -476,7 +443,6 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         }
     }
 
-
     /**
      * The action for configuring the plugin download sites
      *
@@ -508,17 +474,17 @@ public final class PluginPreference extends DefaultTabPreferenceSetting {
         }
 
         @Override
-        public void changedUpdate(DocumentEvent arg0) {
+        public void changedUpdate(DocumentEvent evt) {
             filter();
         }
 
         @Override
-        public void insertUpdate(DocumentEvent arg0) {
+        public void insertUpdate(DocumentEvent evt) {
             filter();
         }
 
         @Override
-        public void removeUpdate(DocumentEvent arg0) {
+        public void removeUpdate(DocumentEvent evt) {
             filter();
         }
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
index 4170caf..92a25aa 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreferencesModel.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.gui.preferences.plugin;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -147,17 +146,8 @@ public class PluginPreferencesModel extends ChangeNotifier {
      * Sorts the list of available plugins
      */
     protected void sort() {
-        Collections.sort(
-                availablePlugins,
-                new Comparator<PluginInformation>() {
-                    @Override
-                    public int compare(PluginInformation o1, PluginInformation o2) {
-                        String n1 = o1.getName() == null ? "" : o1.getName().toLowerCase(Locale.ENGLISH);
-                        String n2 = o2.getName() == null ? "" : o2.getName().toLowerCase(Locale.ENGLISH);
-                        return n1.compareTo(n2);
-                    }
-                }
-        );
+        availablePlugins.sort(Comparator.comparing(
+                o -> o.getName() == null ? "" : o.getName().toLowerCase(Locale.ENGLISH)));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
index 1100225..5df8809 100644
--- a/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/plugin/PluginUpdatePolicyPanel.java
@@ -195,9 +195,7 @@ public class PluginUpdatePolicyPanel extends JPanel {
                 days = Integer.parseInt(pref);
             } catch (NumberFormatException e) {
                 // ignore - load from preference pluginmanager.time-based-update.interval
-                if (Main.isTraceEnabled()) {
-                    Main.trace(e.getMessage());
-                }
+                Main.trace(e);
             }
             if (days <= 0) {
                 days = PluginHandler.DEFAULT_TIME_BASED_UPDATE_INTERVAL;
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
index 12060dc..02d5423 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/CodeProjectionChoice.java
@@ -58,7 +58,7 @@ public class CodeProjectionChoice extends AbstractProjectionChoice implements Su
         CodeSelectionPanel(String initialCode, ActionListener listener) {
             this.listener = listener;
             data = new ArrayList<>(Projections.getAllProjectionCodes());
-            Collections.sort(data, new CodeComparator());
+            data.sort(new CodeComparator());
             filteredData = new ArrayList<>(data);
             build();
             setCode(initialCode != null ? initialCode : DEFAULT_CODE);
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java b/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
index 8b78f80..5a955a4 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/CustomProjectionChoice.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.BorderLayout;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Arrays;
 import java.util.Collection;
@@ -97,6 +96,7 @@ public class CustomProjectionChoice extends AbstractProjectionChoice implements
                         CustomProjection test = new CustomProjection();
                         test.update(input.getText());
                     } catch (ProjectionConfigurationException ex) {
+                        Main.warn(ex);
                         error = ex.getMessage();
                         valStatus.setIcon(ImageProvider.get("data", "error"));
                         valStatus.setVisible(true);
@@ -112,23 +112,15 @@ public class CustomProjectionChoice extends AbstractProjectionChoice implements
             };
 
             JButton btnCheck = new JButton(tr("Validate"));
-            btnCheck.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    val.validate();
-                }
-            });
+            btnCheck.addActionListener(e -> val.validate());
             btnCheck.setLayout(new BorderLayout());
             btnCheck.setMargin(new Insets(-1, 0, -1, 0));
 
             JButton btnInfo = new JButton(tr("Parameter information..."));
-            btnInfo.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    CustomProjectionChoice.ParameterInfoDialog dlg = new CustomProjectionChoice.ParameterInfoDialog();
-                    dlg.showDialog();
-                    dlg.toFront();
-                }
+            btnInfo.addActionListener(e -> {
+                CustomProjectionChoice.ParameterInfoDialog dlg = new CustomProjectionChoice.ParameterInfoDialog();
+                dlg.showDialog();
+                dlg.toFront();
             });
 
             this.setLayout(new GridBagLayout());
diff --git a/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java b/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
index 1e721a4..fa1050e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/projection/ProjectionPreference.java
@@ -5,7 +5,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Component;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -448,12 +447,7 @@ public class ProjectionPreference implements SubPreferenceSetting {
         if (size < 1)
             return;
 
-        final ActionListener listener = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                updateMeta(pc);
-            }
-        };
+        final ActionListener listener = e -> updateMeta(pc);
 
         // Replace old panel with new one
         projSubPrefPanelWrapper.removeAll();
@@ -484,12 +478,9 @@ public class ProjectionPreference implements SubPreferenceSetting {
         if (pc == null)
             throw new RuntimeException("Couldn't find the current projection in the list of available projections!");
 
-        projectionCombo.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                ProjectionChoice pc = (ProjectionChoice) projectionCombo.getSelectedItem();
-                selectedProjectionChanged(pc);
-            }
+        projectionCombo.addActionListener(e -> {
+            ProjectionChoice pc1 = (ProjectionChoice) projectionCombo.getSelectedItem();
+            selectedProjectionChanged(pc1);
         });
         return pc;
     }
diff --git a/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java b/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
index 01cfe7e..557406e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/remotecontrol/RemoteControlPreference.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -119,46 +118,35 @@ public final class RemoteControlPreference extends DefaultTabPreferenceSetting {
             wrapper.add(new JLabel(tr("Certificate:")), GBC.std().insets(15, 5, 0, 0));
             wrapper.add(installCertificate, GBC.std().insets(5, 5, 0, 0));
             wrapper.add(uninstallCertificate, GBC.eol().insets(5, 5, 0, 0));
-            enableHttpsSupport.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    installCertificate.setEnabled(enableHttpsSupport.isSelected());
+            enableHttpsSupport.addActionListener(e -> installCertificate.setEnabled(enableHttpsSupport.isSelected()));
+            installCertificate.addActionListener(e -> {
+                try {
+                    boolean changed = RemoteControlHttpsServer.setupPlatform(
+                            RemoteControlHttpsServer.loadJosmKeystore());
+                    String msg = changed ?
+                            tr("Certificate has been successfully installed.") :
+                            tr("Certificate is already installed. Nothing to do.");
+                    Main.info(msg);
+                    JOptionPane.showMessageDialog(wrapper, msg);
+                } catch (IOException | GeneralSecurityException ex) {
+                    Main.error(ex);
                 }
             });
-            installCertificate.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    try {
-                        boolean changed = RemoteControlHttpsServer.setupPlatform(
-                                RemoteControlHttpsServer.loadJosmKeystore());
-                        String msg = changed ?
-                                tr("Certificate has been successfully installed.") :
-                                tr("Certificate is already installed. Nothing to do.");
-                        Main.info(msg);
-                        JOptionPane.showMessageDialog(wrapper, msg);
-                    } catch (IOException | GeneralSecurityException ex) {
-                        Main.error(ex);
-                    }
-                }
-            });
-            uninstallCertificate.addActionListener(new ActionListener() {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    try {
-                        String msg;
-                        KeyStore ks = PlatformHookWindows.getRootKeystore();
-                        if (ks.containsAlias(RemoteControlHttpsServer.ENTRY_ALIAS)) {
-                            Main.info(tr("Removing certificate {0} from root keystore.", RemoteControlHttpsServer.ENTRY_ALIAS));
-                            ks.deleteEntry(RemoteControlHttpsServer.ENTRY_ALIAS);
-                            msg = tr("Certificate has been successfully uninstalled.");
-                        } else {
-                            msg = tr("Certificate is not installed. Nothing to do.");
-                        }
-                        Main.info(msg);
-                        JOptionPane.showMessageDialog(wrapper, msg);
-                    } catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | IOException ex) {
-                        Main.error(ex);
+            uninstallCertificate.addActionListener(e -> {
+                try {
+                    String msg;
+                    KeyStore ks = PlatformHookWindows.getRootKeystore();
+                    if (ks.containsAlias(RemoteControlHttpsServer.ENTRY_ALIAS)) {
+                        Main.info(tr("Removing certificate {0} from root keystore.", RemoteControlHttpsServer.ENTRY_ALIAS));
+                        ks.deleteEntry(RemoteControlHttpsServer.ENTRY_ALIAS);
+                        msg = tr("Certificate has been successfully uninstalled.");
+                    } else {
+                        msg = tr("Certificate is not installed. Nothing to do.");
                     }
+                    Main.info(msg);
+                    JOptionPane.showMessageDialog(wrapper, msg);
+                } catch (KeyStoreException | NoSuchAlgorithmException | CertificateException | IOException ex) {
+                    Main.error(ex);
                 }
             });
             installCertificate.setEnabled(https);
@@ -180,19 +168,15 @@ public final class RemoteControlPreference extends DefaultTabPreferenceSetting {
         loadInNewLayer.setSelected(Main.pref.getBoolean(RequestHandler.loadInNewLayerKey, RequestHandler.loadInNewLayerDefault));
         alwaysAskUserConfirm.setSelected(Main.pref.getBoolean(RequestHandler.globalConfirmationKey, RequestHandler.globalConfirmationDefault));
 
-        ActionListener remoteControlEnabled = new ActionListener() {
-
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                GuiHelper.setEnabledRec(wrapper, enableRemoteControl.isSelected());
-                // 'setEnabled(false)' does not work for JLabel with html text, so do it manually
-                // FIXME: use QuadStateCheckBox to make checkboxes unset when disabled
-                if (installCertificate != null && uninstallCertificate != null) {
-                    // Install certificate button is enabled if HTTPS is also enabled
-                    installCertificate.setEnabled(enableRemoteControl.isSelected() && enableHttpsSupport.isSelected());
-                    // Uninstall certificate button is always enabled
-                    uninstallCertificate.setEnabled(true);
-                }
+        ActionListener remoteControlEnabled = e -> {
+            GuiHelper.setEnabledRec(wrapper, enableRemoteControl.isSelected());
+            // 'setEnabled(false)' does not work for JLabel with html text, so do it manually
+            // FIXME: use QuadStateCheckBox to make checkboxes unset when disabled
+            if (installCertificate != null && uninstallCertificate != null) {
+                // Install certificate button is enabled if HTTPS is also enabled
+                installCertificate.setEnabled(enableRemoteControl.isSelected() && enableHttpsSupport.isSelected());
+                // Uninstall certificate button is always enabled
+                uninstallCertificate.setEnabled(true);
             }
         };
         enableRemoteControl.addActionListener(remoteControlEnabled);
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java b/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java
index 4ca33f5..f773372 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/ApiUrlTestTask.java
@@ -190,7 +190,7 @@ public class ApiUrlTestTask extends PleaseWaitRunnable {
             try {
                 Capabilities.CapabilitiesParser.parse(new InputSource(connection.getResponse().getContent()));
             } catch (SAXException | ParserConfigurationException e) {
-                Main.warn(e.getMessage());
+                Main.warn(e);
                 alertInvalidCapabilities();
                 return;
             }
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/FeaturesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/FeaturesPanel.java
index 7eb5b9e..908574f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/FeaturesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/FeaturesPanel.java
@@ -9,8 +9,6 @@ import javax.swing.BorderFactory;
 import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.actions.downloadtasks.DownloadNotesTask;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
@@ -43,12 +41,7 @@ public class FeaturesPanel extends JPanel {
 
         notifier = new JCheckBox(tr("Periodically check for new messages"));
         add(notifier, GBC.eol());
-        notifier.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                updateEnabledState();
-            }
-        });
+        notifier.addChangeListener(e -> updateEnabledState());
 
         intervalLabel = new JLabel(tr("Check interval (minutes):"));
         intervalLabel.setLabelFor(notifierInterval);
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
index f4a38bb..28f819f 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java
@@ -12,7 +12,6 @@ import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 
@@ -77,12 +76,7 @@ public class OAuthAuthenticationPreferencesPanel extends JPanel implements Prope
         pnl.add(cbShowAdvancedParameters, gc);
         cbShowAdvancedParameters.setSelected(false);
         cbShowAdvancedParameters.addItemListener(
-                new ItemListener() {
-                    @Override
-                    public void itemStateChanged(ItemEvent evt) {
-                        pnlAdvancedProperties.setVisible(evt.getStateChange() == ItemEvent.SELECTED);
-                    }
-                }
+                evt -> pnlAdvancedProperties.setVisible(evt.getStateChange() == ItemEvent.SELECTED)
         );
 
         gc.gridx = 1;
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java b/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
index 5d66bf5..2fac5bb 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java
@@ -185,27 +185,21 @@ public class OsmApiUrlInputPanel extends JPanel {
             final String url = getStrippedApiUrl();
             final ApiUrlTestTask task = new ApiUrlTestTask(OsmApiUrlInputPanel.this, url);
             Main.worker.submit(task);
-            Runnable r = new Runnable() {
-                @Override
-                public void run() {
-                    if (task.isCanceled())
-                        return;
-                    Runnable r = new Runnable() {
-                        @Override
-                        public void run() {
-                            if (task.isSuccess()) {
-                                lblValid.setIcon(ImageProvider.get("dialogs", "valid"));
-                                lblValid.setToolTipText(tr("The API URL is valid."));
-                                lastTestedUrl = url;
-                                updateEnabledState();
-                            } else {
-                                lblValid.setIcon(ImageProvider.get("warning-small"));
-                                lblValid.setToolTipText(tr("Validation failed. The API URL seems to be invalid."));
-                            }
-                        }
-                    };
-                    SwingUtilities.invokeLater(r);
-                }
+            Runnable r = () -> {
+                if (task.isCanceled())
+                    return;
+                Runnable r1 = () -> {
+                    if (task.isSuccess()) {
+                        lblValid.setIcon(ImageProvider.get("dialogs", "valid"));
+                        lblValid.setToolTipText(tr("The API URL is valid."));
+                        lastTestedUrl = url;
+                        updateEnabledState();
+                    } else {
+                        lblValid.setIcon(ImageProvider.get("warning-small"));
+                        lblValid.setToolTipText(tr("Validation failed. The API URL seems to be invalid."));
+                    }
+                };
+                SwingUtilities.invokeLater(r1);
             };
             Main.worker.submit(r);
         }
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java b/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java
index cea0426..95f1813 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/ProxyPreferenceListener.java
@@ -4,7 +4,9 @@ package org.openstreetmap.josm.gui.preferences.server;
 /**
  * Listener called when proxy settings are updated.
  * @since 6525
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ProxyPreferenceListener {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java b/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java
index 32828cc..77cd0eb 100644
--- a/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/server/ServerAccessPreference.java
@@ -46,7 +46,7 @@ public final class ServerAccessPreference extends DefaultTabPreferenceSetting {
      *
      * @return panel with server preferences tabs
      */
-    protected JPanel buildTabbedServerPreferences() {
+    private JPanel buildTabbedServerPreferences() {
         JPanel pnl = new JPanel(new BorderLayout());
         pnl.add(getTabPane(), BorderLayout.CENTER);
         return pnl;
@@ -57,7 +57,7 @@ public final class ServerAccessPreference extends DefaultTabPreferenceSetting {
      *
      * @return preferences panel for server settings
      */
-    protected JPanel buildContentPanel() {
+    private JPanel buildContentPanel() {
         JPanel pnl = new JPanel(new GridBagLayout());
         GridBagConstraints gc = new GridBagConstraints();
 
diff --git a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java
index ab55c6a..67b1a7e 100644
--- a/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/validator/ValidatorTestsPreference.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.gui.preferences.validator;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -75,12 +74,7 @@ public class ValidatorTestsPreference implements SubPreferenceSetting {
         prefOtherUpload.setToolTipText(tr("Show the informational tests in the upload check windows."));
         testPanel.add(prefOtherUpload, GBC.eol());
 
-        ActionListener otherUploadEnabled = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                prefOtherUpload.setEnabled(prefOther.isSelected());
-            }
-        };
+        ActionListener otherUploadEnabled = e -> prefOtherUpload.setEnabled(prefOther.isSelected());
         prefOther.addActionListener(otherUploadEnabled);
         otherUploadEnabled.actionPerformed(null);
 
diff --git a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
index 9ad9b5b..be119b0 100644
--- a/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.gui.progress;
 
 import java.awt.Component;
 import java.awt.GraphicsEnvironment;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
@@ -138,22 +137,14 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
         this.windowTitle = windowTitle;
     }
 
-    private final ActionListener cancelListener = new ActionListener() {
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            cancel();
-        }
-    };
+    private final ActionListener cancelListener = e -> cancel();
 
-    private final ActionListener inBackgroundListener = new ActionListener() {
-        @Override
-        public void actionPerformed(ActionEvent e) {
-            isInBackground = true;
-            ProgressMonitorDialog dialog = getDialog();
-            if (dialog != null) {
-                reset();
-                dialog.setVisible(true);
-            }
+    private final ActionListener inBackgroundListener = e -> {
+        isInBackground = true;
+        ProgressMonitorDialog dlg = getDialog();
+        if (dlg != null) {
+            reset();
+            dlg.setVisible(true);
         }
     };
 
@@ -173,29 +164,26 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
 
     @Override
     public void doBeginTask() {
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                Main.currentProgressMonitor = PleaseWaitProgressMonitor.this;
-                if (GraphicsEnvironment.isHeadless()) {
-                    return;
-                }
-                if (dialogParent != null && dialog == null) {
-                    dialog = new PleaseWaitDialog(dialogParent);
-                } else
-                    throw new ProgressException("PleaseWaitDialog parent must be set");
+        doInEDT(() -> {
+            Main.currentProgressMonitor = this;
+            if (GraphicsEnvironment.isHeadless()) {
+                return;
+            }
+            if (dialogParent != null && dialog == null) {
+                dialog = new PleaseWaitDialog(dialogParent);
+            } else
+                throw new ProgressException("PleaseWaitDialog parent must be set");
 
-                if (windowTitle != null) {
-                    dialog.setTitle(windowTitle);
-                }
-                dialog.setCancelEnabled(cancelable);
-                dialog.setCancelCallback(cancelListener);
-                dialog.setInBackgroundCallback(inBackgroundListener);
-                dialog.setCustomText("");
-                dialog.addWindowListener(windowListener);
-                dialog.progress.setMaximum(PROGRESS_BAR_MAX);
-                dialog.setVisible(true);
+            if (windowTitle != null) {
+                dialog.setTitle(windowTitle);
             }
+            dialog.setCancelEnabled(cancelable);
+            dialog.setCancelCallback(cancelListener);
+            dialog.setInBackgroundCallback(inBackgroundListener);
+            dialog.setCustomText("");
+            dialog.addWindowListener(windowListener);
+            dialog.progress.setMaximum(PROGRESS_BAR_MAX);
+            dialog.setVisible(true);
         });
     }
 
@@ -209,13 +197,10 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
         final int newValue = (int) (progressValue * PROGRESS_BAR_MAX);
         if (newValue != currentProgressValue) {
             currentProgressValue = newValue;
-            doInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    ProgressMonitorDialog dialog = getDialog();
-                    if (dialog != null) {
-                        dialog.updateProgress(currentProgressValue);
-                    }
+            doInEDT(() -> {
+                ProgressMonitorDialog dlg = getDialog();
+                if (dlg != null) {
+                    dlg.updateProgress(currentProgressValue);
                 }
             });
         }
@@ -225,13 +210,10 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     protected void doSetCustomText(final String title) {
         checkState(State.IN_TASK, State.IN_SUBTASK);
         this.customText = title;
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                ProgressMonitorDialog dialog = getDialog();
-                if (dialog != null) {
-                    dialog.setCustomText(title);
-                }
+        doInEDT(() -> {
+            ProgressMonitorDialog dlg = getDialog();
+            if (dlg != null) {
+                dlg.setCustomText(title);
             }
         });
     }
@@ -240,13 +222,10 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     protected void doSetTitle(final String title) {
         checkState(State.IN_TASK, State.IN_SUBTASK);
         this.title = title;
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                ProgressMonitorDialog dialog = getDialog();
-                if (dialog != null) {
-                    dialog.setCurrentAction(title);
-                }
+        doInEDT(() -> {
+            ProgressMonitorDialog dlg = getDialog();
+            if (dlg != null) {
+                dlg.setCurrentAction(title);
             }
         });
     }
@@ -254,28 +233,22 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
     @Override
     protected void doSetIntermediate(final boolean value) {
         this.indeterminate = value;
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                // Enable only if progress is at the beginning. Doing intermediate progress in the middle
-                // will hide already reached progress
-                ProgressMonitorDialog dialog = getDialog();
-                if (dialog != null) {
-                    dialog.setIndeterminate(value && currentProgressValue == 0);
-                }
+        doInEDT(() -> {
+            // Enable only if progress is at the beginning. Doing intermediate progress in the middle
+            // will hide already reached progress
+            ProgressMonitorDialog dlg = getDialog();
+            if (dlg != null) {
+                dlg.setIndeterminate(value && currentProgressValue == 0);
             }
         });
     }
 
     @Override
     public void appendLogMessage(final String message) {
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                ProgressMonitorDialog dialog = getDialog();
-                if (dialog != null) {
-                    dialog.appendLogMessage(message);
-                }
+        doInEDT(() -> {
+            ProgressMonitorDialog dlg = getDialog();
+            if (dlg != null) {
+                dlg.appendLogMessage(message);
             }
         });
     }
@@ -298,25 +271,21 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
             backgroundMonitor.updateProgress(currentProgressValue);
             backgroundMonitor.setIndeterminate(indeterminate && currentProgressValue == 0);
         }
-
     }
 
     public void close() {
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (dialog != null) {
-                    dialog.setVisible(false);
-                    dialog.setCancelCallback(null);
-                    dialog.setInBackgroundCallback(null);
-                    dialog.removeWindowListener(windowListener);
-                    dialog.dispose();
-                    dialog = null;
-                    Main.currentProgressMonitor = null;
-                    MapFrame map = Main.map;
-                    if (map != null) {
-                        map.statusLine.progressMonitor.setVisible(false);
-                    }
+        doInEDT(() -> {
+            if (dialog != null) {
+                dialog.setVisible(false);
+                dialog.setCancelCallback(null);
+                dialog.setInBackgroundCallback(null);
+                dialog.removeWindowListener(windowListener);
+                dialog.dispose();
+                dialog = null;
+                Main.currentProgressMonitor = null;
+                MapFrame map = Main.map;
+                if (map != null) {
+                    map.statusLine.progressMonitor.setVisible(false);
                 }
             }
         });
@@ -324,28 +293,21 @@ public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
 
     public void showForegroundDialog() {
         isInBackground = false;
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (dialog != null) {
-                    dialog.setInBackgroundPossible(PleaseWaitProgressMonitor.this.taskId != null && Main.isDisplayingMapView());
-                    reset();
-                    getDialog();
-                }
+        doInEDT(() -> {
+            if (dialog != null) {
+                dialog.setInBackgroundPossible(taskId != null && Main.isDisplayingMapView());
+                reset();
+                getDialog();
             }
         });
-
     }
 
     @Override
     public void setProgressTaskId(ProgressTaskId taskId) {
         this.taskId = taskId;
-        doInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (dialog != null) {
-                    dialog.setInBackgroundPossible(PleaseWaitProgressMonitor.this.taskId != null && Main.isDisplayingMapView());
-                }
+        doInEDT(() -> {
+            if (dialog != null) {
+                dialog.setInBackgroundPossible(taskId != null && Main.isDisplayingMapView());
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
index fa5148c..c500a2f 100644
--- a/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/ProgressMonitor.java
@@ -31,6 +31,7 @@ import java.awt.Component;
  */
 public interface ProgressMonitor {
 
+    @FunctionalInterface
     public interface CancelListener {
         void operationCanceled();
     }
diff --git a/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java b/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
index 83873f3..15cff96 100644
--- a/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
+++ b/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
@@ -31,12 +31,9 @@ public class SwingRenderingProgressMonitor extends AbstractProgressMonitor {
 
     @Override
     public void doBeginTask() {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                delegate.setCustomText("");
-                delegate.setMaximum(PROGRESS_BAR_MAX);
-            }
+        GuiHelper.runInEDT(() -> {
+            delegate.setCustomText("");
+            delegate.setMaximum(PROGRESS_BAR_MAX);
         });
     }
 
@@ -50,45 +47,25 @@ public class SwingRenderingProgressMonitor extends AbstractProgressMonitor {
         final int newValue = (int) (progressValue * PROGRESS_BAR_MAX);
         if (newValue != currentProgressValue) {
             currentProgressValue = newValue;
-            GuiHelper.runInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    delegate.setValue(currentProgressValue);
-                }
-            });
+            GuiHelper.runInEDT(() -> delegate.setValue(currentProgressValue));
         }
     }
 
     @Override
     protected void doSetCustomText(final String title) {
         checkState(State.IN_TASK, State.IN_SUBTASK);
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                delegate.setCustomText(title);
-            }
-        });
+        GuiHelper.runInEDT(() -> delegate.setCustomText(title));
     }
 
     @Override
     protected void doSetTitle(final String title) {
         checkState(State.IN_TASK, State.IN_SUBTASK);
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                delegate.setTaskTitle(title);
-            }
-        });
+        GuiHelper.runInEDT(() -> delegate.setTaskTitle(title));
     }
 
     @Override
     protected void doSetIntermediate(final boolean value) {
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                delegate.setIndeterminate(value);
-            }
-        });
+        GuiHelper.runInEDT(() -> delegate.setIndeterminate(value));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java b/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
index 53499d8..952f004 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagEditorModel.java
@@ -24,6 +24,7 @@ import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.data.osm.TagMap;
 import org.openstreetmap.josm.data.osm.Tagged;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -47,6 +48,8 @@ public class TagEditorModel extends AbstractTableModel {
 
     private transient OsmPrimitive primitive;
 
+    private EndEditListener endEditListener;
+
     /**
      * Creates a new tag editor model. Internally allocates two selection models
      * for row selection and column selection.
@@ -166,6 +169,7 @@ public class TagEditorModel extends AbstractTableModel {
      * removes all tags in the model
      */
     public void clear() {
+        commitPendingEdit();
         boolean wasEmpty = tags.isEmpty();
         tags.clear();
         if (!wasEmpty) {
@@ -182,13 +186,24 @@ public class TagEditorModel extends AbstractTableModel {
      * @throws IllegalArgumentException if tag is null
      */
     public void add(TagModel tag) {
+        commitPendingEdit();
         CheckParameterUtil.ensureParameterNotNull(tag, "tag");
         tags.add(tag);
         setDirty(true);
         fireTableDataChanged();
     }
 
+    /**
+     * Add a tag at the beginning of the table.
+     *
+     * @param tag The tag to add
+     *
+     * @throws IllegalArgumentException if tag is null
+     *
+     * @see #add(TagModel)
+     */
     public void prepend(TagModel tag) {
+        commitPendingEdit();
         CheckParameterUtil.ensureParameterNotNull(tag, "tag");
         tags.add(0, tag);
         setDirty(true);
@@ -208,6 +223,7 @@ public class TagEditorModel extends AbstractTableModel {
      * @param value the value; converted to "" if null
      */
     public void add(String name, String value) {
+        commitPendingEdit();
         String key = (name == null) ? "" : name;
         String val = (value == null) ? "" : value;
 
@@ -255,9 +271,10 @@ public class TagEditorModel extends AbstractTableModel {
      *
      * @param tagIndices a list of tag indices
      */
-    public void deleteTagNames(int[] tagIndices) {
+    public void deleteTagNames(int ... tagIndices) {
         if (tags == null)
             return;
+        commitPendingEdit();
         for (int tagIdx : tagIndices) {
             TagModel tag = tags.get(tagIdx);
             if (tag != null) {
@@ -273,9 +290,10 @@ public class TagEditorModel extends AbstractTableModel {
      *
      * @param tagIndices the lit of tag indices
      */
-    public void deleteTagValues(int[] tagIndices) {
+    public void deleteTagValues(int ... tagIndices) {
         if (tags == null)
             return;
+        commitPendingEdit();
         for (int tagIdx : tagIndices) {
             TagModel tag = tags.get(tagIdx);
             if (tag != null) {
@@ -292,6 +310,7 @@ public class TagEditorModel extends AbstractTableModel {
      * @param name the name. Ignored if null.
      */
     public void delete(String name) {
+        commitPendingEdit();
         if (name == null)
             return;
         Iterator<TagModel> it = tags.iterator();
@@ -314,9 +333,10 @@ public class TagEditorModel extends AbstractTableModel {
      *
      * @param tagIndices the list of tag indices
      */
-    public void deleteTags(int[] tagIndices) {
+    public void deleteTags(int ... tagIndices) {
         if (tags == null)
             return;
+        commitPendingEdit();
         List<TagModel> toDelete = new ArrayList<>();
         for (int tagIdx : tagIndices) {
             TagModel tag = tags.get(tagIdx);
@@ -355,13 +375,14 @@ public class TagEditorModel extends AbstractTableModel {
      * @param primitive the OSM primitive
      */
     public void initFromPrimitive(Tagged primitive) {
+        commitPendingEdit();
         this.tags.clear();
         for (String key : primitive.keySet()) {
             String value = primitive.get(key);
             this.tags.add(new TagModel(key, value));
         }
-        TagModel tag = new TagModel();
         sort();
+        TagModel tag = new TagModel();
         tags.add(tag);
         setDirty(false);
         fireTableDataChanged();
@@ -373,6 +394,7 @@ public class TagEditorModel extends AbstractTableModel {
      * @param tags the tags of an OSM primitive
      */
     public void initFromTags(Map<String, String> tags) {
+        commitPendingEdit();
         this.tags.clear();
         for (Entry<String, String> entry : tags.entrySet()) {
             this.tags.add(new TagModel(entry.getKey(), entry.getValue()));
@@ -390,6 +412,7 @@ public class TagEditorModel extends AbstractTableModel {
      * @param tags the tags
      */
     public void initFromTags(TagCollection tags) {
+        commitPendingEdit();
         this.tags.clear();
         if (tags == null) {
             setDirty(false);
@@ -423,7 +446,8 @@ public class TagEditorModel extends AbstractTableModel {
      * @return the map of key/value pairs
      */
     private Map<String, String> applyToTags(boolean keepEmpty) {
-        Map<String, String> result = new HashMap<>();
+        // TagMap preserves the order of tags.
+        TagMap result = new TagMap();
         for (TagModel tag: this.tags) {
             // tag still holds an unchanged list of different values for the same key.
             // no property change command required
@@ -432,7 +456,6 @@ public class TagEditorModel extends AbstractTableModel {
             }
 
             // tag name holds an empty key. Don't apply it to the selection.
-            //
             if (!keepEmpty && (tag.getName().trim().isEmpty() || tag.getValue().trim().isEmpty())) {
                 continue;
             }
@@ -538,15 +561,7 @@ public class TagEditorModel extends AbstractTableModel {
      * sorts the current tags according alphabetical order of names
      */
     protected void sort() {
-        java.util.Collections.sort(
-                tags,
-                new Comparator<TagModel>() {
-                    @Override
-                    public int compare(TagModel self, TagModel other) {
-                        return self.getName().compareTo(other.getName());
-                    }
-                }
-        );
+        tags.sort(Comparator.comparing(TagModel::getName));
     }
 
     /**
@@ -590,9 +605,10 @@ public class TagEditorModel extends AbstractTableModel {
      * @param tags - the list
      */
     public void updateTags(List<Tag> tags) {
-         if (tags.isEmpty())
+        if (tags.isEmpty())
             return;
 
+        commitPendingEdit();
         Map<String, TagModel> modelTags = new HashMap<>();
         for (int i = 0; i < getRowCount(); i++) {
             TagModel tagModel = get(i);
@@ -647,6 +663,20 @@ public class TagEditorModel extends AbstractTableModel {
         return this;
     }
 
+    /**
+     * Sets the listener that is notified when an edit should be aborted.
+     * @param endEditListener The listener to be notified when editing should be aborted.
+     */
+    public void setEndEditListener(EndEditListener endEditListener) {
+        this.endEditListener = endEditListener;
+    }
+
+    private void commitPendingEdit() {
+        if (endEditListener != null) {
+            endEditListener.endCellEditing();
+        }
+    }
+
     class SelectionStateMemento {
         private final int rowMin;
         private final int rowMax;
@@ -673,4 +703,16 @@ public class TagEditorModel extends AbstractTableModel {
             colSelectionModel.setValueIsAdjusting(false);
         }
     }
+
+    /**
+     * A listener that is called whenever the cells may be updated from outside the editor and the editor should thus be commited.
+     * @since 10604
+     */
+    @FunctionalInterface
+    public interface EndEditListener {
+        /**
+         * Requests to end the editing of any cells on this model
+         */
+        void endCellEditing();
+    }
 }
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java b/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
index a9f317b..0b57dc6 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagEditorPanel.java
@@ -14,8 +14,6 @@ import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel;
@@ -124,12 +122,7 @@ public class TagEditorPanel extends JPanel {
         add(tablePanel, gc);
 
         if (presetHandler != null) {
-            model.addTableModelListener(new TableModelListener() {
-                @Override
-                public void tableChanged(TableModelEvent e) {
-                    updatePresets();
-                }
-            });
+            model.addTableModelListener(e -> updatePresets());
         }
 
         addFocusListener(new FocusAdapter() {
diff --git a/src/org/openstreetmap/josm/gui/tagging/TagTable.java b/src/org/openstreetmap/josm/gui/tagging/TagTable.java
index cea481e..6d2899e 100644
--- a/src/org/openstreetmap/josm/gui/tagging/TagTable.java
+++ b/src/org/openstreetmap/josm/gui/tagging/TagTable.java
@@ -1,7 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.tagging;
 
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.Component;
@@ -12,11 +11,8 @@ import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EventObject;
-import java.util.List;
-import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import javax.swing.AbstractAction;
@@ -31,24 +27,20 @@ import javax.swing.event.ListSelectionListener;
 import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.CopyAction;
-import org.openstreetmap.josm.actions.PasteTagsAction;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.TagMap;
+import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
+import org.openstreetmap.josm.gui.tagging.TagEditorModel.EndEditListener;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
 import org.openstreetmap.josm.gui.widgets.JosmTable;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.TextTagParser;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * This is the tabular editor component for OSM tags.
  * @since 1762
  */
-public class TagTable extends JosmTable {
+public class TagTable extends JosmTable implements EndEditListener {
     /** the table cell editor used by this table */
     private TagCellEditor editor;
     private final TagEditorModel model;
@@ -210,12 +202,7 @@ public class TagTable extends JosmTable {
             default: // Do nothing
             }
 
-            if (isEditing()) {
-                CellEditor cEditor = getCellEditor();
-                if (cEditor != null) {
-                    cEditor.cancelCellEditing();
-                }
-            }
+            endCellEditing();
 
             if (model.getRowCount() == 0) {
                 model.ensureOneTag();
@@ -232,11 +219,7 @@ public class TagTable extends JosmTable {
         }
 
         protected final void updateEnabledState() {
-            if (isEditing() && getSelectedColumnCount() == 1 && getSelectedRowCount() == 1) {
-                setEnabled(true);
-            } else if (!isEditing() && getSelectedColumnCount() == 1 && getSelectedRowCount() == 1) {
-                setEnabled(true);
-            } else if (getSelectedColumnCount() > 1 || getSelectedRowCount() > 1) {
+            if (getSelectedColumnCount() >= 1 && getSelectedRowCount() >= 1) {
                 setEnabled(true);
             } else {
                 setEnabled(false);
@@ -294,29 +277,8 @@ public class TagTable extends JosmTable {
         public void actionPerformed(ActionEvent e) {
             Relation relation = new Relation();
             model.applyToPrimitive(relation);
-
-            String buf = Utils.getClipboardContent();
-            if (buf == null || buf.isEmpty() || buf.matches(CopyAction.CLIPBOARD_REGEXP)) {
-                List<PrimitiveData> directlyAdded = Main.pasteBuffer.getDirectlyAdded();
-                if (directlyAdded == null || directlyAdded.isEmpty()) return;
-                PasteTagsAction.TagPaster tagPaster = new PasteTagsAction.TagPaster(directlyAdded,
-                        Collections.<OsmPrimitive>singletonList(relation));
-                model.updateTags(tagPaster.execute());
-            } else {
-                 // Paste tags from arbitrary text
-                 Map<String, String> tags = TextTagParser.readTagsFromText(buf);
-                 if (tags == null || tags.isEmpty()) {
-                    TextTagParser.showBadBufferMessage(ht("/Action/PasteTags"));
-                 } else if (TextTagParser.validateTags(tags)) {
-                     List<Tag> newTags = new ArrayList<>();
-                     for (Map.Entry<String, String> entry: tags.entrySet()) {
-                        String k = entry.getKey();
-                        String v = entry.getValue();
-                        newTags.add(new Tag(k, v));
-                     }
-                     model.updateTags(newTags);
-                 }
-            }
+            new OsmTransferHandler().pasteTags(Collections.singleton(relation));
+            model.updateTags(new TagMap(relation.getKeys()).getTags());
         }
 
         protected final void updateEnabledState() {
@@ -414,6 +376,7 @@ public class TagTable extends JosmTable {
                   .setSelectionModel(model.getColumnSelectionModel()).build(),
               model.getRowSelectionModel());
         this.model = model;
+        model.setEndEditListener(this);
         init(maxCharacters);
     }
 
@@ -487,9 +450,7 @@ public class TagTable extends JosmTable {
      * @param editor tag cell editor
      */
     public void setTagCellEditor(TagCellEditor editor) {
-        if (isEditing()) {
-            this.editor.cancelCellEditing();
-        }
+        endCellEditing();
         this.editor = editor;
         getColumnModel().getColumn(0).setCellEditor(editor);
         getColumnModel().getColumn(1).setCellEditor(editor);
@@ -548,6 +509,18 @@ public class TagTable extends JosmTable {
     }
 
     @Override
+    public void endCellEditing() {
+        if (isEditing()) {
+            CellEditor cEditor = getCellEditor();
+            if (cEditor != null) {
+                // First attempt to commit. If this does not work, cancel.
+                cEditor.stopCellEditing();
+                cEditor.cancelCellEditing();
+            }
+        }
+    }
+
+    @Override
     public void removeEditor() {
         // make sure we unregister our custom implementation of CellEditorRemover
         KeyboardFocusManager.getCurrentKeyboardFocusManager().
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
index c46e863..c98a0df 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
@@ -23,9 +23,8 @@ import javax.swing.text.PlainDocument;
 import javax.swing.text.StyleConstants;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Auto-completing ComboBox.
@@ -133,9 +132,9 @@ public class AutoCompletingComboBox extends JosmComboBox<AutoCompletionListItem>
             }
             final JTextComponent editorComponent = comboBox.getEditorComponent();
             // save unix system selection (middle mouse paste)
-            Clipboard sysSel = GuiHelper.getSystemSelection();
+            Clipboard sysSel = ClipboardUtils.getSystemSelection();
             if (sysSel != null) {
-                Transferable old = Utils.getTransferableContent(sysSel);
+                Transferable old = ClipboardUtils.getClipboardContent(sysSel);
                 editorComponent.select(start, end);
                 if (old != null) {
                     sysSel.setContents(old, null);
@@ -200,9 +199,9 @@ public class AutoCompletingComboBox extends JosmComboBox<AutoCompletionListItem>
                             Main.map.keyDetector.setEnabled(false);
                         }
                         // save unix system selection (middle mouse paste)
-                        Clipboard sysSel = GuiHelper.getSystemSelection();
+                        Clipboard sysSel = ClipboardUtils.getSystemSelection();
                         if (sysSel != null) {
-                            Transferable old = Utils.getTransferableContent(sysSel);
+                            Transferable old = ClipboardUtils.getClipboardContent(sysSel);
                             editorComponent.selectAll();
                             if (old != null) {
                                 sysSel.setContents(old, null);
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
index a00a700..2f63d26 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingTextField.java
@@ -90,9 +90,7 @@ public class AutoCompletingTextField extends JosmTextField implements ComboBoxEd
                     return;
                 } catch (NumberFormatException e) {
                     // either the new text or the current text isn't a number. We continue with autocompletion
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                 }
             }
             String prefix = currentText.substring(0, offs);
diff --git a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
index 205cf76..eadb49a 100644
--- a/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
+++ b/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
@@ -12,6 +12,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -220,7 +221,7 @@ public class AutoCompletionManager implements DataSetListener {
                 try {
                     PRESET_TAG_CACHE.putAll(ki.key, ki.getValues());
                 } catch (NullPointerException e) {
-                    Main.error(p + ": Unable to cache " + ki);
+                    Main.error(e, p + ": Unable to cache " + ki);
                 }
             }
         } else if (item instanceof Roles) {
@@ -335,11 +336,7 @@ public class AutoCompletionManager implements DataSetListener {
         if (r != null && presets != null && !presets.isEmpty()) {
             for (TaggingPreset tp : presets) {
                 if (tp.roles != null) {
-                    list.add(Utils.transform(tp.roles.roles, new Utils.Function<Role, String>() {
-                        public String apply(Role x) {
-                            return x.key;
-                        }
-                    }), AutoCompletionItemPriority.IS_IN_STANDARD);
+                    list.add(Utils.transform(tp.roles.roles, (Function<Role, String>) x -> x.key), AutoCompletionItemPriority.IS_IN_STANDARD);
                 }
             }
             list.add(r.getMemberRoles(), AutoCompletionItemPriority.IS_IN_DATASET);
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
index 9db8693..7410ba7 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
@@ -20,6 +20,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
@@ -58,8 +59,6 @@ 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;
-import org.openstreetmap.josm.tools.ImageResource;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.template_engine.ParseError;
 import org.openstreetmap.josm.tools.template_engine.TemplateEntry;
@@ -85,10 +84,25 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
     /** Prefix of preset icon loading failure error message */
     public static final String PRESET_ICON_ERROR_MSG_PREFIX = "Could not get presets icon ";
 
+    /**
+     * The preset group this preset belongs to.
+     */
     public TaggingPresetMenu group;
+
+    /**
+     * The name of the tagging preset.
+     * @see #getRawName()
+     */
     public String name;
+    /**
+     * The icon name assigned to this preset.
+     */
     public String iconName;
     public String name_context;
+    /**
+     * A cache for the local name. Should never be accessed directly.
+     * @see #getLocaleName()
+     */
     public String locale_name;
     public boolean preset_name_label;
 
@@ -127,6 +141,10 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
                     tr("Use preset ''{0}''", getLocaleName()));
     }
 
+    /**
+     * Gets the localized version of the name
+     * @return The name that should be displayed to the user.
+     */
     public String getLocaleName() {
         if (locale_name == null) {
             if (name_context != null) {
@@ -184,19 +202,11 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
         imgProv.setId("presets");
         imgProv.setArchive(arch);
         imgProv.setOptional(true);
-        imgProv.getInBackground(new ImageProvider.ImageResourceCallback() {
-            @Override
-            public void finished(final ImageResource result) {
-                if (result != null) {
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            result.attachImageIcon(TaggingPreset.this);
-                        }
-                    });
-                } else {
-                    Main.warn(TaggingPreset.this + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
-                }
+        imgProv.getResourceAsync().thenAccept(result -> {
+            if (result != null) {
+                GuiHelper.runInEDT(() -> result.attachImageIcon(this));
+            } else {
+                Main.warn(toString() + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
             }
         });
     }
@@ -285,7 +295,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
             Label.addLabel(p, getIcon(), getName());
         }
 
-        boolean presetInitiallyMatches = !selected.isEmpty() && Utils.forAll(selected, this);
+        boolean presetInitiallyMatches = !selected.isEmpty() && selected.stream().allMatch(this);
         JPanel items = new JPanel(new GridBagLayout());
         for (TaggingPresetItem i : data) {
             if (i instanceof Link) {
@@ -385,12 +395,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
                 r.addMember(rm);
                 members.add(rm);
             }
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), r, members).setVisible(true);
-                }
-            });
+            SwingUtilities.invokeLater(() -> RelationEditor.getEditor(Main.getLayerManager().getEditLayer(), r, members).setVisible(true));
         }
         ds.setSelected(ds.getSelected()); // force update
     }
@@ -549,7 +554,7 @@ public class TaggingPreset extends AbstractAction implements ActiveLayerChangeLi
      * @return {@code true} if this preset matches the primitive
      */
     @Override
-    public boolean evaluate(OsmPrimitive p) {
+    public boolean test(OsmPrimitive p) {
         return matches(EnumSet.of(TaggingPresetType.forPrimitive(p)), p.getKeys(), false);
     }
 
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java
index a53f041..1d1fd20 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetHandler.java
@@ -7,8 +7,20 @@ import java.util.List;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Tag;
 
+/**
+ * This interface needs to be implemented in order to display a tagging preset. It allows the preset dialog to query the primitives it should
+ * be displayed for and modify them.
+ */
 public interface TaggingPresetHandler {
+    /**
+     * Gets the selection the preset should be applied to.
+     * @return A collection of primitives.
+     */
     Collection<OsmPrimitive> getSelection();
 
+    /**
+     * Update the given tags on the selection.
+     * @param tags The tags to update.
+     */
     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
index e405aaf..7617e86 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java
@@ -118,9 +118,7 @@ public abstract class TaggingPresetItem {
         try {
             return Integer.valueOf(str);
         } catch (NumberFormatException e) {
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return null;
     }
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java
index c0d3005..7856dc6 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetListener.java
@@ -4,7 +4,9 @@ package org.openstreetmap.josm.gui.tagging.presets;
 /**
  * Notification of tagging presets events.
  * @since 7100
+ * @see TaggingPresets#addListener(TaggingPresetListener)
  */
+ at FunctionalInterface
 public interface TaggingPresetListener {
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
index f4a0601..5975bff 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetMenu.java
@@ -10,7 +10,6 @@ import java.awt.PointerInfo;
 import java.awt.event.ActionEvent;
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
@@ -139,7 +138,7 @@ public class TaggingPresetMenu extends TaggingPreset {
     }
 
     private static void handleMenuItem(JMenu menu, PresetTextComparator comp, List<JMenuItem> sortarray, int lastSeparator) {
-        Collections.sort(sortarray, comp);
+        sortarray.sort(comp);
         int pos = 0;
         for (JMenuItem menuItem : sortarray) {
             int oldPos;
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
index c5999e4..ad9de85 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
@@ -42,8 +42,6 @@ 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;
-import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlObjectParser;
 import org.xml.sax.SAXException;
 
@@ -226,7 +224,9 @@ public final class TaggingPresetReader {
                     tp.group = lastmenu;
                     if (all.contains(tp)) {
                         lastmenuOriginal = tp;
-                        tp = (TaggingPresetMenu) Utils.filter(all, Predicates.<TaggingPreset>equalTo(tp)).iterator().next();
+                        java.util.Optional<TaggingPreset> val = all.stream().filter(tp::equals).findFirst();
+                        if (val.isPresent())
+                            tp = (TaggingPresetMenu) val.get();
                         lastmenuOriginal.group = null;
                     } else {
                         tp.setDisplayName();
@@ -373,7 +373,7 @@ public final class TaggingPresetReader {
                             JOptionPane.ERROR_MESSAGE
                             );
                 }
-            } catch (SAXException e) {
+            } catch (SAXException | IllegalArgumentException e) {
                 Main.error(e);
                 Main.error(source);
                 JOptionPane.showMessageDialog(
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
index 50a6d6c..5655f9d 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchDialog.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.gui.tagging.presets;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -36,12 +35,7 @@ public final class TaggingPresetSearchDialog extends ExtendedDialog {
         selector = new TaggingPresetSelector(true, true);
         setContent(selector, false);
         DataSet.addSelectionListener(selector);
-        selector.setDblClickListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                buttonAction(0, null);
-            }
-        });
+        selector.setDblClickListener(e -> buttonAction(0, null));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
index fb1d850..a65837d 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.gui.tagging.presets;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.util.HashSet;
 import java.util.Set;
@@ -14,7 +13,6 @@ import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * A dialog that allows to select a preset and then selects all matching OSM objects.
@@ -70,12 +68,7 @@ public final class TaggingPresetSearchPrimitiveDialog extends ExtendedDialog {
         super(Main.parent, tr("Presets"), new String[] {tr("Search"), tr("Cancel")});
         selector = new TaggingPresetSelector(false, false);
         setContent(selector, false);
-        selector.setDblClickListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                buttonAction(0, null);
-            }
-        });
+        selector.setDblClickListener(e -> buttonAction(0, null));
     }
 
     @Override
@@ -92,7 +85,8 @@ public final class TaggingPresetSearchPrimitiveDialog extends ExtendedDialog {
         if (buttonIndex == 0) {
             TaggingPreset preset = selector.getSelectedPresetAndUpdateClassification();
             if (preset != null) {
-                final Set<OsmPrimitive> matching = new HashSet<>(Utils.filter(Main.getLayerManager().getEditDataSet().allPrimitives(), preset));
+
+                final Set<OsmPrimitive> matching = new HashSet<>(Main.getLayerManager().getEditDataSet().getPrimitives(preset));
                 Main.getLayerManager().getEditDataSet().setSelected(matching);
             }
         }
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
index 755d716..f5bf42b 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
@@ -7,8 +7,6 @@ import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -46,7 +44,6 @@ 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.PopupMenuLauncher;
 import org.openstreetmap.josm.gui.widgets.SearchTextResultListPanel;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -120,7 +117,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             }
         }
 
-        private static 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;
@@ -144,15 +141,15 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             return sum;
         }
 
-        int isMatchingGroup(String[] words) {
+        int isMatchingGroup(String ... words) {
             return isMatching(groups, words);
         }
 
-        int isMatchingName(String[] words) {
+        int isMatchingName(String ... words) {
             return isMatching(names, words);
         }
 
-        int isMatchingTags(String[] words) {
+        int isMatchingTags(String ... words) {
             return isMatching(tags, words);
         }
 
@@ -188,12 +185,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             ckOnlyApplicable = new JCheckBox();
             ckOnlyApplicable.setText(tr("Show only applicable to selection"));
             pnChecks.add(ckOnlyApplicable);
-            ckOnlyApplicable.addItemListener(new ItemListener() {
-                @Override
-                public void itemStateChanged(ItemEvent e) {
-                    filterItems();
-                }
-            });
+            ckOnlyApplicable.addItemListener(e -> filterItems());
         } else {
             ckOnlyApplicable = null;
         }
@@ -202,12 +194,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
             ckSearchInTags = new JCheckBox();
             ckSearchInTags.setText(tr("Search in tags"));
             ckSearchInTags.setSelected(SEARCH_IN_TAGS.get());
-            ckSearchInTags.addItemListener(new ItemListener() {
-                @Override
-                public void itemStateChanged(ItemEvent e) {
-                    filterItems();
-                }
-            });
+            ckSearchInTags.addItemListener(e -> filterItems());
             pnChecks.add(ckSearchInTags);
         } else {
             ckSearchInTags = null;
@@ -246,12 +233,7 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
                 text, onlyApplicable, inTags, getTypesInSelection(), selected);
 
         final TaggingPreset oldPreset = getSelectedPreset();
-        lsResultModel.setItems(Utils.transform(result, new Utils.Function<PresetClassification, TaggingPreset>() {
-            @Override
-            public TaggingPreset apply(PresetClassification x) {
-                return x.preset;
-            }
-        }));
+        lsResultModel.setItems(Utils.transform(result, x -> x.preset));
         final TaggingPreset newPreset = getSelectedPreset();
         if (!Objects.equals(oldPreset, newPreset)) {
             int[] indices = lsResult.getSelectedIndices();
@@ -298,14 +280,8 @@ public class TaggingPresetSelector extends SearchTextResultListPanel<TaggingPres
 
                     if (!suitable && preset.types.contains(TaggingPresetType.RELATION)
                             && preset.roles != null && !preset.roles.roles.isEmpty()) {
-                        final Predicate<Role> memberExpressionMatchesOnePrimitive = new Predicate<Role>() {
-                            @Override
-                            public boolean evaluate(Role object) {
-                                return object.memberExpression != null
-                                        && Utils.exists(selectedPrimitives, object.memberExpression);
-                            }
-                        };
-                        suitable = Utils.exists(preset.roles.roles, memberExpressionMatchesOnePrimitive);
+                        suitable = preset.roles.roles.stream().anyMatch(
+                                object -> object.memberExpression != null && selectedPrimitives.stream().anyMatch(object.memberExpression));
                         // keep the preset to allow the creation of new relations
                     }
                     if (!suitable) {
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
index fa84476..262a83a 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresets.java
@@ -14,8 +14,7 @@ import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
-import org.openstreetmap.josm.tools.Predicate;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Class holding Tagging Presets and allowing to manage them.
@@ -107,12 +106,7 @@ public final class TaggingPresets {
      */
     public static Collection<TaggingPreset> getMatchingPresets(final Collection<TaggingPresetType> t,
                                                                final Map<String, String> tags, final boolean onlyShowable) {
-        return Utils.filter(getTaggingPresets(), new Predicate<TaggingPreset>() {
-            @Override
-            public boolean evaluate(TaggingPreset object) {
-                return object.matches(t, tags, onlyShowable);
-            }
-        });
+        return SubclassFilteredCollection.filter(getTaggingPresets(), preset -> preset.matches(t, tags, onlyShowable));
     }
 
     /**
@@ -120,16 +114,11 @@ public final class TaggingPresets {
      *
      * @param primitive the primitive
      * @return a new collection of all presets matching the given preset.
-     * @see TaggingPreset#evaluate(OsmPrimitive)
+     * @see TaggingPreset#test(OsmPrimitive)
      * @since 9265
      */
     public static Collection<TaggingPreset> getMatchingPresets(final OsmPrimitive primitive) {
-        return Utils.filter(getTaggingPresets(), new Predicate<TaggingPreset>() {
-            @Override
-            public boolean evaluate(TaggingPreset object) {
-                return object.evaluate(primitive);
-            }
-        });
+        return SubclassFilteredCollection.filter(getTaggingPresets(), preset -> preset.test(primitive));
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
index 0243a8d..561ab37 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.stream.Collectors;
 
 import javax.swing.ImageIcon;
 import javax.swing.JComponent;
@@ -156,7 +157,7 @@ public abstract class ComboMultiSelect extends KeyedItem {
     protected static class ConcatenatingJList extends JList<PresetListEntry> {
         private final String delimiter;
 
-        protected ConcatenatingJList(String del, PresetListEntry[] o) {
+        protected ConcatenatingJList(String del, PresetListEntry ... o) {
             super(o);
             delimiter = del;
         }
@@ -364,17 +365,11 @@ public abstract class ComboMultiSelect extends KeyedItem {
      */
     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);
-            }
-        });
+        return lhm.values().stream().map(x -> x.getDisplayValue(true)).collect(Collectors.toList());
     }
 
     @Override
     public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
-
         initListEntries();
 
         // find out if our key is already used in the selection.
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java
index 56c91a5..eb5003c 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/KeyedItem.java
@@ -7,6 +7,7 @@ import java.util.Collection;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.NoSuchElementException;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
@@ -91,23 +92,46 @@ public abstract class KeyedItem extends TaggingPresetItem {
         }
     }
 
+    /**
+     * Usage information on a key
+     */
     protected static class Usage {
-        public SortedSet<String> values; // NOSONAR
+        /**
+         * A set of values that were used for this key.
+         */
+        public final SortedSet<String> values = new TreeSet<>();; // NOSONAR
         private boolean hadKeys;
         private boolean hadEmpty;
 
+        /**
+         * Check if there is exactly one value for this key.
+         * @return <code>true</code> if there was exactly one value.
+         */
         public boolean hasUniqueValue() {
             return values.size() == 1 && !hadEmpty;
         }
 
+        /**
+         * Check if this key was not used in any primitive
+         * @return <code>true</code> if it was unused.
+         */
         public boolean unused() {
             return values.isEmpty();
         }
 
+        /**
+         * Get the first value available.
+         * @return The first value
+         * @throws NoSuchElementException if there is no such value.
+         */
         public String getFirst() {
             return values.first();
         }
 
+        /**
+         * Check if we encountered any primitive that had any keys
+         * @return <code>true</code> if any of the primtives had any tags.
+         */
         public boolean hadKeys() {
             return hadKeys;
         }
@@ -115,7 +139,6 @@ public abstract class KeyedItem extends TaggingPresetItem {
 
     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) {
@@ -131,9 +154,7 @@ public abstract class KeyedItem extends TaggingPresetItem {
     }
 
     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) {
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
index 68859fa..c5d0d42 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
@@ -33,7 +33,7 @@ public class MultiSelect extends ComboMultiSelect {
         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)) {
+        } 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()) {
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
index 05587f1..0f2d9e2 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java
@@ -5,6 +5,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -16,8 +17,6 @@ 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;
 
 /**
  * Adds a link to an other preset.
@@ -31,14 +30,10 @@ public class PresetLink extends TaggingPresetItem {
     @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)
+        Optional<TaggingPreset> found = TaggingPresets.getTaggingPresets().stream().filter(preset -> presetName.equals(preset.name)).findFirst();
+        if (!found.isPresent())
             return false;
+        TaggingPreset t = found.get();
         JLabel lbl = new TaggingPresetLabel(t);
         lbl.addMouseListener(new MouseAdapter() {
             @Override
diff --git a/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java b/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
index c368865..7a7a79b 100644
--- a/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
+++ b/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
@@ -6,8 +6,6 @@ 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;
@@ -85,9 +83,7 @@ public class Text extends KeyedItem {
                             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());
-                    }
+                    Main.trace(ex);
                 }
             } 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
@@ -142,12 +138,7 @@ public class Text extends KeyedItem {
                     // 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;
-                        }
-                    });
+                    aibutton.addActionListener(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");
@@ -166,12 +157,9 @@ public class Text extends KeyedItem {
             releasebutton.setToolTipText(tr("Cancel auto-increment for this field"));
             releasebutton.setMargin(new 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);
-                }
+            releasebutton.addActionListener(e -> {
+                auto_increment_selected = 0;
+                clearbutton.setSelected(true);
             });
             saveHorizontalSpace(releasebutton);
             pnl.add(releasebutton, GBC.eol());
diff --git a/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java b/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java
index 98b5363..2643030 100644
--- a/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java
+++ b/src/org/openstreetmap/josm/gui/util/AdjustmentSynchronizer.java
@@ -7,15 +7,12 @@ import java.awt.Adjustable;
 import java.awt.event.AdjustmentEvent;
 import java.awt.event.AdjustmentListener;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
 import javax.swing.JCheckBox;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
@@ -124,36 +121,28 @@ public class AdjustmentSynchronizer implements AdjustmentListener {
 
         // register an item lister with the check box
         //
-        view.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                switch(e.getStateChange()) {
-                case ItemEvent.SELECTED:
-                    if (!isParticipatingInSynchronizedScrolling(adjustable)) {
-                        setParticipatingInSynchronizedScrolling(adjustable, true);
-                    }
-                    break;
-                case ItemEvent.DESELECTED:
-                    if (isParticipatingInSynchronizedScrolling(adjustable)) {
-                        setParticipatingInSynchronizedScrolling(adjustable, false);
-                    }
-                    break;
-                default: // Do nothing
+        view.addItemListener(e -> {
+            switch(e.getStateChange()) {
+            case ItemEvent.SELECTED:
+                if (!isParticipatingInSynchronizedScrolling(adjustable)) {
+                    setParticipatingInSynchronizedScrolling(adjustable, true);
                 }
+                break;
+            case ItemEvent.DESELECTED:
+                if (isParticipatingInSynchronizedScrolling(adjustable)) {
+                    setParticipatingInSynchronizedScrolling(adjustable, false);
+                }
+                break;
+            default: // Do nothing
             }
         });
 
-        observable.addChangeListener(
-                new ChangeListener() {
-                    @Override
-                    public void stateChanged(ChangeEvent e) {
-                        boolean sync = isParticipatingInSynchronizedScrolling(adjustable);
-                        if (view.isSelected() != sync) {
-                            view.setSelected(sync);
-                        }
-                    }
-                }
-        );
+        observable.addChangeListener(e -> {
+            boolean sync = isParticipatingInSynchronizedScrolling(adjustable);
+            if (view.isSelected() != sync) {
+                view.setSelected(sync);
+            }
+        });
         setParticipatingInSynchronizedScrolling(adjustable, true);
         view.setSelected(true);
     }
diff --git a/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java b/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
index 81e059a..d49f7d2 100644
--- a/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
+++ b/src/org/openstreetmap/josm/gui/util/AdvancedKeyPressDetector.java
@@ -8,8 +8,6 @@ import java.awt.Component;
 import java.awt.KeyboardFocusManager;
 import java.awt.Toolkit;
 import java.awt.event.AWTEventListener;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.util.List;
 import java.util.Set;
@@ -82,16 +80,11 @@ public class AdvancedKeyPressDetector implements AWTEventListener {
         } catch (SecurityException ex) {
             Main.warn(ex);
         }
-        timer = new Timer(0, new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                timer.stop();
-                if (set.remove(releaseEvent.getKeyCode()) && enabled) {
-                    if (isFocusInMainWindow()) {
-                        for (KeyPressReleaseListener q: keyListeners) {
-                            q.doKeyReleased(releaseEvent);
-                        }
-                    }
+        timer = new Timer(0, e -> {
+            timer.stop();
+            if (set.remove(releaseEvent.getKeyCode()) && enabled && isFocusInMainWindow()) {
+                for (KeyPressReleaseListener q: keyListeners) {
+                    q.doKeyReleased(releaseEvent);
                 }
             }
         });
diff --git a/src/org/openstreetmap/josm/gui/util/GuiHelper.java b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
index b6612e4..d964701 100644
--- a/src/org/openstreetmap/josm/gui/util/GuiHelper.java
+++ b/src/org/openstreetmap/josm/gui/util/GuiHelper.java
@@ -20,10 +20,7 @@ import java.awt.Image;
 import java.awt.Stroke;
 import java.awt.Toolkit;
 import java.awt.Window;
-import java.awt.datatransfer.Clipboard;
 import java.awt.event.ActionListener;
-import java.awt.event.HierarchyEvent;
-import java.awt.event.HierarchyListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
@@ -91,12 +88,7 @@ public final class GuiHelper {
     }
 
     public static void executeByMainWorkerInEDT(final Runnable task) {
-        Main.worker.submit(new Runnable() {
-            @Override
-            public void run() {
-                runInEDTAndWait(task);
-            }
-        });
+        Main.worker.submit(() -> runInEDTAndWait(task));
     }
 
     /**
@@ -272,17 +264,14 @@ public final class GuiHelper {
      */
     public static Component prepareResizeableOptionPane(final Component pane, final Dimension minDimension) {
         if (pane != null) {
-            pane.addHierarchyListener(new HierarchyListener() {
-                @Override
-                public void hierarchyChanged(HierarchyEvent e) {
-                    Window window = SwingUtilities.getWindowAncestor(pane);
-                    if (window instanceof Dialog) {
-                        Dialog dialog = (Dialog) window;
-                        if (!dialog.isResizable()) {
-                            dialog.setResizable(true);
-                            if (minDimension != null) {
-                                dialog.setMinimumSize(minDimension);
-                            }
+            pane.addHierarchyListener(e -> {
+                Window window = SwingUtilities.getWindowAncestor(pane);
+                if (window instanceof Dialog) {
+                    Dialog dialog = (Dialog) window;
+                    if (!dialog.isResizable()) {
+                        dialog.setResizable(true);
+                        if (minDimension != null) {
+                            dialog.setMinimumSize(minDimension);
                         }
                     }
                 }
@@ -334,7 +323,7 @@ public final class GuiHelper {
                 dash = new float[]{5.0f};
             }
             if (sumAbs < 1e-1) {
-                Main.error("Error in stroke dash fomat (all zeros): "+code);
+                Main.error("Error in stroke dash format (all zeros): "+code);
                 return new BasicStroke(w);
             }
             // dashed stroke
@@ -496,18 +485,6 @@ public final class GuiHelper {
     }
 
     /**
-     * Gets the singleton instance of the system selection as a <code>Clipboard</code> object.
-     * This allows an application to read and modify the current, system-wide selection.
-     * @return the system selection as a <code>Clipboard</code>, or <code>null</code> if the native platform does not
-     *         support a system selection <code>Clipboard</code> or if GraphicsEnvironment.isHeadless() returns true
-     * @see Toolkit#getSystemSelection
-     * @since 9576
-     */
-    public static Clipboard getSystemSelection() {
-        return GraphicsEnvironment.isHeadless() ? null : Toolkit.getDefaultToolkit().getSystemSelection();
-    }
-
-    /**
      * Returns the first <code>Window</code> ancestor of event source, or
      * {@code null} if event source is not a component contained inside a <code>Window</code>.
      * @param e event object
diff --git a/src/org/openstreetmap/josm/gui/util/ModifierListener.java b/src/org/openstreetmap/josm/gui/util/ModifierListener.java
index ace9692..5f65bc2 100644
--- a/src/org/openstreetmap/josm/gui/util/ModifierListener.java
+++ b/src/org/openstreetmap/josm/gui/util/ModifierListener.java
@@ -4,7 +4,9 @@ package org.openstreetmap.josm.gui.util;
 /**
  * Listener called when pressed modifier keys change is detected
  * @since 7217
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface ModifierListener {
     void modifiersChanged(int modifiers);
 }
diff --git a/src/org/openstreetmap/josm/gui/util/RotationAngle.java b/src/org/openstreetmap/josm/gui/util/RotationAngle.java
index f068be0..94623a7 100644
--- a/src/org/openstreetmap/josm/gui/util/RotationAngle.java
+++ b/src/org/openstreetmap/josm/gui/util/RotationAngle.java
@@ -11,23 +11,26 @@ import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
- * Determines how an icon is to be rotated depending on the primitive to displayed.
+ * Determines how an icon is to be rotated depending on the primitive to be displayed.
+ * @since  8199 (creation)
+ * @since 10599 (functional interface)
  */
-public abstract class RotationAngle {
+ at FunctionalInterface
+public interface RotationAngle {
 
     /**
-     * Calculates the rotation angle depending on the primitive to displayed.
+     * Calculates the rotation angle depending on the primitive to be displayed.
      * @param p primitive
      * @return rotation angle
      */
-    public abstract double getRotationAngle(OsmPrimitive p);
+    double getRotationAngle(OsmPrimitive p);
 
     /**
      * Always returns the fixed {@code angle}.
      * @param angle angle
      * @return rotation angle
      */
-    public static RotationAngle buildStaticRotation(final double angle) {
+    static RotationAngle buildStaticRotation(final double angle) {
         return new RotationAngle() {
             @Override
             public double getRotationAngle(OsmPrimitive p) {
@@ -46,7 +49,7 @@ public abstract class RotationAngle {
      * @param string angle as string
      * @return rotation angle
      */
-    public static RotationAngle buildStaticRotation(final String string) {
+    static RotationAngle buildStaticRotation(final String string) {
         try {
             return buildStaticRotation(parseCardinalRotation(string));
         } catch (IllegalArgumentException e) {
@@ -62,7 +65,7 @@ public abstract class RotationAngle {
      * @param cardinal the angle in cardinal directions
      * @return the angle in radians
      */
-    public static double parseCardinalRotation(final String cardinal) {
+    static double parseCardinalRotation(final String cardinal) {
         switch (cardinal.toLowerCase(Locale.ENGLISH)) {
             case "n":
             case "north":
@@ -97,7 +100,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() {
+    static RotationAngle buildWayDirectionRotation() {
         return new RotationAngle() {
             @Override
             public double getRotationAngle(OsmPrimitive p) {
diff --git a/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java b/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java
index 80e5134..025d807 100644
--- a/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java
+++ b/src/org/openstreetmap/josm/gui/util/StayOpenCheckBoxMenuItem.java
@@ -5,8 +5,6 @@ import javax.swing.Action;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.MenuElement;
 import javax.swing.MenuSelectionManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 
 /**
  * An extension of JCheckBoxMenuItem that doesn't close the menu when selected.
@@ -18,15 +16,11 @@ public class StayOpenCheckBoxMenuItem extends JCheckBoxMenuItem {
   private static volatile MenuElement[] path;
 
   {
-    getModel().addChangeListener(new ChangeListener() {
-
-      @Override
-      public void stateChanged(ChangeEvent e) {
+    getModel().addChangeListener(e -> {
         if (getModel().isArmed() && isShowing()) {
           path = MenuSelectionManager.defaultManager().getSelectedPath();
         }
-      }
-    });
+      });
   }
 
   /**
diff --git a/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
index a9d1f33..cc73b7d 100644
--- a/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/AbstractIdTextField.java
@@ -4,7 +4,7 @@ package org.openstreetmap.josm.gui.widgets;
 import javax.swing.text.JTextComponent;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 
 /**
  * An abstract class for ID text fields.
@@ -70,7 +70,7 @@ public abstract class AbstractIdTextField<T extends AbstractTextComponentValidat
      * Tries to set text from clipboard (no effect with invalid or empty clipboard)
      */
     public void tryToPasteFromClipboard() {
-        tryToPasteFrom(Utils.getClipboardContent());
+        tryToPasteFrom(ClipboardUtils.getClipboardStringContent());
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/gui/widgets/ButtonColumn.java b/src/org/openstreetmap/josm/gui/widgets/ButtonColumn.java
new file mode 100644
index 0000000..d6954c0
--- /dev/null
+++ b/src/org/openstreetmap/josm/gui/widgets/ButtonColumn.java
@@ -0,0 +1,119 @@
+// License: GPL. For details, see LICENSE file.
+
+package org.openstreetmap.josm.gui.widgets;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.border.LineBorder;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+
+/**
+ *
+ * Class based on:  http://www.camick.com/java/source/ButtonColumn.java
+ * https://tips4java.wordpress.com/2009/07/12/table-button-column/
+ *
+ */
+public class ButtonColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor, ActionListener {
+    private final Action action;
+    private final JButton renderButton;
+    private final JButton editButton;
+    private Object editorValue;
+    private String buttonName;
+
+    /**
+     * Creates a column that is rendered as a button with no action bound to the click event
+     */
+    public ButtonColumn() {
+        this(null);
+    }
+
+    public ButtonColumn(Action action, String buttonName) {
+        this(action);
+        this.buttonName = buttonName;
+    }
+
+
+    /**
+     * Creates a column that is rendered as a button
+     *
+     * @param action action to be performed when button is pressed
+     */
+    public ButtonColumn(Action action) {
+        this.action = action;
+        renderButton = new JButton();
+        editButton = new JButton();
+        editButton.setFocusPainted(false);
+        editButton.addActionListener(this);
+        editButton.setBorder(new LineBorder(Color.BLUE));
+    }
+
+    @Override
+    public Object getCellEditorValue() {
+        return editorValue;
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        this.action.actionPerformed(e);
+    }
+
+    @Override
+    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+        this.editorValue = value;
+        if (buttonName != null) {
+            editButton.setText(buttonName);
+            editButton.setIcon(null);
+        } else if (value == null) {
+            editButton.setText("");
+            editButton.setIcon(null);
+        } else if (value instanceof Icon) {
+            editButton.setText("");
+            editButton.setIcon((Icon) value);
+        } else {
+            editButton.setText(value.toString());
+            editButton.setIcon(null);
+        }
+        this.editorValue = value;
+        return editButton;
+    }
+
+    @Override
+    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
+            boolean hasFocus, int row, int column) {
+        if (isSelected) {
+            renderButton.setForeground(table.getSelectionForeground());
+            renderButton.setBackground(table.getSelectionBackground());
+        } else {
+            renderButton.setForeground(table.getForeground());
+            renderButton.setBackground(UIManager.getColor("Button.background"));
+        }
+
+        renderButton.setFocusPainted(hasFocus);
+
+        if (buttonName != null) {
+            renderButton.setText(buttonName);
+            renderButton.setIcon(null);
+        } else if (value == null) {
+            renderButton.setText("");
+            renderButton.setIcon(null);
+        } else if (value instanceof Icon) {
+            renderButton.setText("");
+            renderButton.setIcon((Icon) value);
+        } else {
+            renderButton.setText(value.toString());
+            renderButton.setIcon(null);
+        }
+        return renderButton;
+    }
+
+}
diff --git a/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
index 674573c..b2c806c 100644
--- a/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/ChangesetIdTextField.java
@@ -83,9 +83,7 @@ public class ChangesetIdTextField extends AbstractIdTextField<ChangesetIdTextFie
                     }
                 } catch (NumberFormatException e) {
                     // Ignored
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                 }
             }
             return false;
diff --git a/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java b/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java
index 4da47ff..6295e4e 100644
--- a/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java
+++ b/src/org/openstreetmap/josm/gui/widgets/DateEditorWithSlider.java
@@ -15,7 +15,6 @@ import javax.swing.JPanel;
 import javax.swing.JSlider;
 import javax.swing.JSpinner;
 import javax.swing.SpinnerDateModel;
-import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 import org.openstreetmap.josm.tools.GBC;
@@ -51,31 +50,25 @@ public class DateEditorWithSlider extends JPanel {
         spinner.getPreferredSize().height));
 
         slider = new JSlider(0, MAX_SLIDER);
-        spinner.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                int i = slider.getValue();
-                Date d = (Date) spinner.getValue();
-                int j = intFromDate(d);
-                if (i != j) {
-                    watchSlider = false;
-                    slider.setValue(j);
-                    watchSlider = true;
-                }
-                for (ChangeListener l : listeners) {
-                    l.stateChanged(e);
-                }
+        spinner.addChangeListener(e -> {
+            int i = slider.getValue();
+            Date d = (Date) spinner.getValue();
+            int j = intFromDate(d);
+            if (i != j) {
+                watchSlider = false;
+                slider.setValue(j);
+                watchSlider = true;
+            }
+            for (ChangeListener l : listeners) {
+                l.stateChanged(e);
             }
         });
-        slider.addChangeListener(new ChangeListener() {
-            @Override
-            public void stateChanged(ChangeEvent e) {
-                if (!watchSlider) return;
-                Date d = (Date) spinner.getValue();
-                Date d1 = dateFromInt(slider.getValue());
-                if (!d.equals(d1)) {
-                    spinner.setValue(d1);
-                }
+        slider.addChangeListener(e -> {
+            if (!watchSlider) return;
+            Date d = (Date) spinner.getValue();
+            Date d1 = dateFromInt(slider.getValue());
+            if (!d.equals(d1)) {
+                spinner.setValue(d1);
             }
         });
         add(new JLabel(labelText), GBC.std());
diff --git a/src/org/openstreetmap/josm/gui/widgets/EditableList.java b/src/org/openstreetmap/josm/gui/widgets/EditableList.java
index e0ed7a3..bfb2c38 100644
--- a/src/org/openstreetmap/josm/gui/widgets/EditableList.java
+++ b/src/org/openstreetmap/josm/gui/widgets/EditableList.java
@@ -6,8 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -45,66 +43,57 @@ public class EditableList extends JPanel {
 
         setLayout(new BorderLayout());
 
-        addSrcButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                String source = JOptionPane.showInputDialog(
-                        Main.parent,
-                        title,
-                        title,
-                        JOptionPane.QUESTION_MESSAGE);
-                if (source != null) {
-                    ((DefaultListModel<String>) sourcesList.getModel()).addElement(source);
-                }
-                sourcesList.clearSelection();
+        addSrcButton.addActionListener(e -> {
+            String source = JOptionPane.showInputDialog(
+                    Main.parent,
+                    title,
+                    title,
+                    JOptionPane.QUESTION_MESSAGE);
+            if (source != null) {
+                ((DefaultListModel<String>) sourcesList.getModel()).addElement(source);
             }
+            sourcesList.clearSelection();
         });
 
-        editSrcButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                int row = sourcesList.getSelectedIndex();
-                if (row == -1 && sourcesList.getModel().getSize() == 1) {
-                    sourcesList.setSelectedIndex(0);
-                    row = 0;
-                }
-                if (row == -1) {
-                    if (sourcesList.getModel().getSize() == 0) {
-                        String source = JOptionPane.showInputDialog(Main.parent, title, title, JOptionPane.QUESTION_MESSAGE);
-                        if (source != null) {
-                            ((DefaultListModel<String>) sourcesList.getModel()).addElement(source);
-                        }
-                    } else {
-                        JOptionPane.showMessageDialog(
-                                Main.parent,
-                                tr("Please select the row to edit."),
-                                tr("Information"),
-                                JOptionPane.INFORMATION_MESSAGE
-                        );
+        editSrcButton.addActionListener(e -> {
+            int row = sourcesList.getSelectedIndex();
+            if (row == -1 && sourcesList.getModel().getSize() == 1) {
+                sourcesList.setSelectedIndex(0);
+                row = 0;
+            }
+            if (row == -1) {
+                if (sourcesList.getModel().getSize() == 0) {
+                    String source1 = JOptionPane.showInputDialog(Main.parent, title, title, JOptionPane.QUESTION_MESSAGE);
+                    if (source1 != null) {
+                        ((DefaultListModel<String>) sourcesList.getModel()).addElement(source1);
                     }
                 } else {
-                    String source = (String) JOptionPane.showInputDialog(Main.parent,
-                            title,
-                            title,
-                            JOptionPane.QUESTION_MESSAGE, null, null,
-                            sourcesList.getSelectedValue());
-                    if (source != null) {
-                        ((DefaultListModel<String>) sourcesList.getModel()).setElementAt(source, row);
-                    }
+                    JOptionPane.showMessageDialog(
+                            Main.parent,
+                            tr("Please select the row to edit."),
+                            tr("Information"),
+                            JOptionPane.INFORMATION_MESSAGE
+                    );
+                }
+            } else {
+                String source2 = (String) JOptionPane.showInputDialog(Main.parent,
+                        title,
+                        title,
+                        JOptionPane.QUESTION_MESSAGE, null, null,
+                        sourcesList.getSelectedValue());
+                if (source2 != null) {
+                    ((DefaultListModel<String>) sourcesList.getModel()).setElementAt(source2, row);
                 }
-                sourcesList.clearSelection();
             }
+            sourcesList.clearSelection();
         });
 
-        deleteSrcButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                if (sourcesList.getSelectedIndex() == -1) {
-                    JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."), tr("Information"),
-                            JOptionPane.QUESTION_MESSAGE);
-                } else {
-                    ((DefaultListModel<String>) sourcesList.getModel()).remove(sourcesList.getSelectedIndex());
-                }
+        deleteSrcButton.addActionListener(e -> {
+            if (sourcesList.getSelectedIndex() == -1) {
+                JOptionPane.showMessageDialog(Main.parent, tr("Please select the row to delete."), tr("Information"),
+                        JOptionPane.QUESTION_MESSAGE);
+            } else {
+                ((DefaultListModel<String>) sourcesList.getModel()).remove(sourcesList.getSelectedIndex());
             }
         });
         sourcesList.setMinimumSize(new Dimension(300, 50));
diff --git a/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java b/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java
index af329b6..73dc1db 100644
--- a/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java
+++ b/src/org/openstreetmap/josm/gui/widgets/HistoryChangedListener.java
@@ -3,6 +3,7 @@ package org.openstreetmap.josm.gui.widgets;
 
 import java.util.List;
 
+ at FunctionalInterface
 public interface HistoryChangedListener {
     void historyChanged(List<String> history);
 }
diff --git a/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java b/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
index c883bc6..c87db3b 100644
--- a/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/JosmPasswordField.java
@@ -125,7 +125,7 @@ public class JosmPasswordField extends JPasswordField implements FocusListener {
                     try {
                         pasteAction.actionPerformed(e);
                     } catch (NullPointerException npe) {
-                        Main.error("NullPointerException occured because of JDK bug 6322854. "
+                        Main.error(npe, "NullPointerException occured because of JDK bug 6322854. "
                                 +"Copy/Paste operation has not been performed. Please complain to Oracle: "+
                                 "https://bugs.openjdk.java.net/browse/JDK-6322854");
                     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java b/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
index 1105746..a811364 100644
--- a/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
+++ b/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
@@ -842,9 +842,9 @@ public class MultiSplitLayout implements LayoutManager {
          * with recursive object creation when using XmlDecoder.
          *
          * @return the value of the parent property.
-         * @see #parent_set
+         * @see #setParent
          */
-        public Split parent_get() {
+        public Split getParent() {
             return parent;
         }
 
@@ -856,9 +856,9 @@ public class MultiSplitLayout implements LayoutManager {
          * with recursive object creation when using XmlEncoder.
          *
          * @param parent a Split or null
-         * @see #parent_get
+         * @see #getParent
          */
-        public void parent_set(Split parent) {
+        public void setParent(Split parent) {
             this.parent = parent;
         }
 
@@ -919,7 +919,7 @@ public class MultiSplitLayout implements LayoutManager {
         }
 
         private Node siblingAtOffset(int offset) {
-            Split parent = parent_get();
+            Split parent = getParent();
             if (parent == null)
                 return null;
             List<Node> siblings = parent.getChildren();
@@ -937,7 +937,7 @@ public class MultiSplitLayout implements LayoutManager {
          *
          * @return the Node that comes after this one in the parent's list of children.
          * @see #previousSibling
-         * @see #parent_get
+         * @see #getParent
          */
         public Node nextSibling() {
             return siblingAtOffset(+1);
@@ -950,7 +950,7 @@ public class MultiSplitLayout implements LayoutManager {
          *
          * @return the Node that comes before this one in the parent's list of children.
          * @see #nextSibling
-         * @see #parent_get
+         * @see #getParent
          */
         public Node previousSibling() {
             return siblingAtOffset(-1);
@@ -1016,11 +1016,11 @@ public class MultiSplitLayout implements LayoutManager {
             if (children == null)
                 throw new IllegalArgumentException("children must be a non-null List");
             for (Node child : this.children) {
-                child.parent_set(null);
+                child.setParent(null);
             }
             this.children = new ArrayList<>(children);
             for (Node child : this.children) {
-                child.parent_set(this);
+                child.setParent(this);
             }
         }
 
@@ -1125,7 +1125,7 @@ public class MultiSplitLayout implements LayoutManager {
          * @return true if this Divider is part of a Split row.
          */
         public final boolean isVertical() {
-            Split parent = parent_get();
+            Split parent = getParent();
             return parent != null && parent.isRowLayout();
         }
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java b/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
index 8cd99c8..7cbbd0c 100644
--- a/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
+++ b/src/org/openstreetmap/josm/gui/widgets/MultiSplitPane.java
@@ -143,6 +143,7 @@ public class MultiSplitPane extends JPanel {
      * @see #getDividerPainter
      * @see #setDividerPainter
      */
+    @FunctionalInterface
     public interface DividerPainter {
         /**
          * Paint a single Divider.
diff --git a/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java b/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java
index ded1af4..2e4a10f 100644
--- a/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java
+++ b/src/org/openstreetmap/josm/gui/widgets/NativeFileChooser.java
@@ -97,12 +97,7 @@ public class NativeFileChooser extends AbstractFileChooser {
 
     @Override
     public void setFileFilter(final FileFilter cff) {
-        FilenameFilter filter = new FilenameFilter() {
-            @Override
-            public boolean accept(File directory, String fileName) {
-                return cff.accept(new File(directory.getAbsolutePath() + fileName));
-            }
-        };
+        FilenameFilter filter = (directory, fileName) -> cff.accept(new File(directory.getAbsolutePath() + fileName));
         fileDialog.setFilenameFilter(filter);
         fileFilter = cff;
     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java b/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
index 30cc898..c70cc2f 100644
--- a/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
+++ b/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
@@ -9,6 +9,7 @@ import java.util.StringTokenizer;
 
 import javax.swing.text.JTextComponent;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
@@ -109,6 +110,7 @@ public class OsmIdTextField extends AbstractIdTextField<OsmIdTextField.OsmIdVali
                         ids.addAll(SimplePrimitiveId.multipleFromString(s));
                     } catch (IllegalArgumentException ex) {
                         try {
+                            Main.trace(ex);
                             long id = Long.parseLong(s);
                             if (id <= 0) {
                                 return false;
@@ -122,6 +124,7 @@ public class OsmIdTextField extends AbstractIdTextField<OsmIdTextField.OsmIdVali
                                 return false;
                             }
                         } catch (IllegalArgumentException ex2) {
+                            Main.trace(ex2);
                             return false;
                         }
                     }
diff --git a/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java b/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
index f2610f6..1a0b4c3 100644
--- a/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
+++ b/src/org/openstreetmap/josm/gui/widgets/QuadStateCheckBox.java
@@ -52,7 +52,7 @@ public class QuadStateCheckBox extends JCheckBox {
      * @param initial The initial state
      * @param allowed The allowed states
      */
-    public QuadStateCheckBox(String text, Icon icon, State initial, State[] allowed) {
+    public QuadStateCheckBox(String text, Icon icon, State initial, State ... allowed) {
         super(text, icon);
         this.allowed = Utils.copyArray(allowed);
         // Add a listener for when the mouse is pressed
@@ -85,13 +85,13 @@ public class QuadStateCheckBox extends JCheckBox {
      * @param initial The initial state
      * @param allowed The allowed states
      */
-    public QuadStateCheckBox(String text, State initial, State[] allowed) {
+    public QuadStateCheckBox(String text, State initial, State ... allowed) {
         this(text, null, initial, allowed);
     }
 
     /** Do not let anyone add mouse listeners */
     @Override
-    public void addMouseListener(MouseListener l) {
+    public synchronized void addMouseListener(MouseListener l) {
         // Do nothing
     }
 
@@ -168,7 +168,7 @@ public class QuadStateCheckBox extends JCheckBox {
             }
         }
 
-        protected void setPropertyText(String propertyText) {
+        private void setPropertyText(String propertyText) {
             this.propertyText = propertyText;
         }
 
diff --git a/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java b/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
index 040cc44..4a1c178 100644
--- a/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
+++ b/src/org/openstreetmap/josm/gui/widgets/TextContextualPopupMenu.java
@@ -7,7 +7,6 @@ import java.awt.GraphicsEnvironment;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 
 import javax.swing.AbstractAction;
@@ -16,7 +15,6 @@ import javax.swing.ImageIcon;
 import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
 import javax.swing.KeyStroke;
-import javax.swing.event.UndoableEditEvent;
 import javax.swing.event.UndoableEditListener;
 import javax.swing.text.DefaultEditorKit;
 import javax.swing.text.JTextComponent;
@@ -50,22 +48,16 @@ public class TextContextualPopupMenu extends JPopupMenu {
     protected final RedoAction redoAction = new RedoAction();
     protected final UndoManager undo = new UndoManager();
 
-    protected final transient UndoableEditListener undoEditListener = new UndoableEditListener() {
-        @Override
-        public void undoableEditHappened(UndoableEditEvent e) {
-            undo.addEdit(e.getEdit());
-            undoAction.updateUndoState();
-            redoAction.updateRedoState();
-        }
+    protected final transient UndoableEditListener undoEditListener = e -> {
+        undo.addEdit(e.getEdit());
+        undoAction.updateUndoState();
+        redoAction.updateRedoState();
     };
 
-    protected final transient PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
-        @Override
-        public void propertyChange(PropertyChangeEvent evt) {
-            if (EDITABLE.equals(evt.getPropertyName())) {
-                removeAll();
-                addMenuEntries();
-            }
+    protected final transient PropertyChangeListener propertyChangeListener = evt -> {
+        if (EDITABLE.equals(evt.getPropertyName())) {
+            removeAll();
+            addMenuEntries();
         }
     };
 
@@ -203,9 +195,7 @@ public class TextContextualPopupMenu extends JPopupMenu {
             try {
                 undo.undo();
             } catch (CannotUndoException ex) {
-                if (Main.isTraceEnabled()) {
-                    Main.trace(ex.getMessage());
-                }
+                Main.trace(ex);
             } finally {
                 updateUndoState();
                 redoAction.updateRedoState();
@@ -238,9 +228,7 @@ public class TextContextualPopupMenu extends JPopupMenu {
             try {
                 undo.redo();
             } catch (CannotRedoException ex) {
-                if (Main.isTraceEnabled()) {
-                    Main.trace(ex.getMessage());
-                }
+                Main.trace(ex);
             } finally {
                 updateRedoState();
                 undoAction.updateUndoState();
diff --git a/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java b/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java
index fbb21e4..6a5ac58 100644
--- a/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java
+++ b/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java
@@ -10,8 +10,8 @@ import java.awt.event.MouseListener;
 import javax.swing.JLabel;
 import javax.swing.SwingUtilities;
 
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.tools.OpenBrowser;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Label that contains a clickable link.
@@ -111,7 +111,7 @@ public class UrlLabel extends JLabel implements MouseListener {
         if (SwingUtilities.isLeftMouseButton(e)) {
             OpenBrowser.displayUrl(url);
         } else if (SwingUtilities.isRightMouseButton(e)) {
-            Utils.copyToClipboard(url);
+            ClipboardUtils.copyString(url);
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
index fb37c70..d552e9d 100644
--- a/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
+++ b/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
@@ -202,8 +202,7 @@ public class BoundingBoxDownloader extends OsmServerReader {
     }
 
     @Override
-    public List<Note> parseNotes(int noteLimit, int daysClosed, ProgressMonitor progressMonitor)
-            throws OsmTransferException, MoreNotesException {
+    public List<Note> parseNotes(int noteLimit, int daysClosed, ProgressMonitor progressMonitor) throws OsmTransferException {
         progressMonitor.beginTask(tr("Downloading notes"));
         CheckParameterUtil.ensureThat(noteLimit > 0, "Requested note limit is less than 1.");
         // see result_limit in https://github.com/openstreetmap/openstreetmap-website/blob/master/app/controllers/notes_controller.rb
diff --git a/src/org/openstreetmap/josm/io/CacheCustomContent.java b/src/org/openstreetmap/josm/io/CacheCustomContent.java
index caa9cbf..03734ed 100644
--- a/src/org/openstreetmap/josm/io/CacheCustomContent.java
+++ b/src/org/openstreetmap/josm/io/CacheCustomContent.java
@@ -96,6 +96,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
             checkOfflineAccess();
             return false;
         } catch (OfflineAccessException e) {
+            Main.trace(e);
             return true;
         }
     }
@@ -184,6 +185,7 @@ public abstract class CacheCustomContent<T extends Throwable> {
                 Main.error("Failed to read expected contents from "+path);
             }
         } catch (IOException e) {
+            Main.trace(e);
             if (!isOffline()) {
                 this.data = updateForce();
             }
diff --git a/src/org/openstreetmap/josm/io/CachedFile.java b/src/org/openstreetmap/josm/io/CachedFile.java
index 3ef698d..652a260 100644
--- a/src/org/openstreetmap/josm/io/CachedFile.java
+++ b/src/org/openstreetmap/josm/io/CachedFile.java
@@ -353,7 +353,7 @@ public class CachedFile implements Closeable {
             }
         } catch (IOException e) {
             if (file.getName().endsWith(".zip")) {
-                Main.warn(tr("Failed to open file with extension ''{2}'' and namepart ''{3}'' in zip file ''{0}''. Exception was: {1}",
+                Main.warn(e, tr("Failed to open file with extension ''{2}'' and namepart ''{3}'' in zip file ''{0}''. Exception was: {1}",
                         file.getName(), e.toString(), extension, namepart));
             }
         }
@@ -424,6 +424,7 @@ public class CachedFile implements Closeable {
         try {
             checkOfflineAccess(urlStr);
         } catch (OfflineAccessException e) {
+            Main.trace(e);
             offline = true;
         }
         if (localPathEntry.size() == 2) {
@@ -480,6 +481,8 @@ public class CachedFile implements Closeable {
                 Main.pref.putCollection(prefKey,
                         Arrays.asList(Long.toString(System.currentTimeMillis()), localPathEntry.get(1)));
                 return localFile;
+            } else if (con.getResponseCode() == HttpURLConnection.HTTP_NOT_FOUND) {
+                throw new IOException(tr("The requested URL {0} was not found", urlStr));
             }
             try (InputStream bis = new BufferedInputStream(con.getContent())) {
                 Files.copy(bis, destDirFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
diff --git a/src/org/openstreetmap/josm/io/Capabilities.java b/src/org/openstreetmap/josm/io/Capabilities.java
index 5f33f5b..b3c5533 100644
--- a/src/org/openstreetmap/josm/io/Capabilities.java
+++ b/src/org/openstreetmap/josm/io/Capabilities.java
@@ -97,7 +97,7 @@ public class Capabilities {
      * @return the value; {@code null}, if the respective configuration item does not exist
      * @throws NumberFormatException if the value is not a valid double
      */
-    public Double getDouble(String element, String attribute) throws NumberFormatException {
+    public Double getDouble(String element, String attribute) {
         String s = get(element, attribute);
         if (s == null) return null;
         return Double.valueOf(s);
diff --git a/src/org/openstreetmap/josm/io/ChangesetQuery.java b/src/org/openstreetmap/josm/io/ChangesetQuery.java
index 1fbc8b2..9c6228d 100644
--- a/src/org/openstreetmap/josm/io/ChangesetQuery.java
+++ b/src/org/openstreetmap/josm/io/ChangesetQuery.java
@@ -6,14 +6,14 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.text.DateFormat;
 import java.text.MessageFormat;
 import java.text.ParseException;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
@@ -403,14 +403,11 @@ public class ChangesetQuery {
         }
 
         protected Collection<Long> parseLongs(String value) {
-            return value == null || value.isEmpty()
-                    ? Collections.<Long>emptySet() :
-                    new HashSet<>(Utils.transform(Arrays.asList(value.split(",")), new Utils.Function<String, Long>() {
-                        @Override
-                        public Long apply(String x) {
-                            return Long.valueOf(x);
-                        }
-                    }));
+            if (value == null || value.isEmpty()) {
+                return Collections.<Long>emptySet();
+            } else {
+                return Stream.of(value.split(",")).map(Long::valueOf).collect(Collectors.toSet());
+            }
         }
 
         protected ChangesetQuery createFromMap(Map<String, String> queryParams) throws ChangesetQueryUrlException {
diff --git a/src/org/openstreetmap/josm/io/FileImporter.java b/src/org/openstreetmap/josm/io/FileImporter.java
index d550fe0..08980f4 100644
--- a/src/org/openstreetmap/josm/io/FileImporter.java
+++ b/src/org/openstreetmap/josm/io/FileImporter.java
@@ -114,14 +114,11 @@ public abstract class FileImporter implements Comparable<FileImporter> {
     }
 
     private static void displayCancel(final Throwable t) {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                Notification note = new Notification(t.getMessage());
-                note.setIcon(JOptionPane.INFORMATION_MESSAGE);
-                note.setDuration(Notification.TIME_SHORT);
-                note.show();
-            }
+        GuiHelper.runInEDTAndWait(() -> {
+            Notification note = new Notification(t.getMessage());
+            note.setIcon(JOptionPane.INFORMATION_MESSAGE);
+            note.setDuration(Notification.TIME_SHORT);
+            note.show();
         });
     }
 
diff --git a/src/org/openstreetmap/josm/io/FileWatcher.java b/src/org/openstreetmap/josm/io/FileWatcher.java
index 4faad73..a91759d 100644
--- a/src/org/openstreetmap/josm/io/FileWatcher.java
+++ b/src/org/openstreetmap/josm/io/FileWatcher.java
@@ -41,12 +41,7 @@ public class FileWatcher {
     public FileWatcher() {
         try {
             watcher = FileSystems.getDefault().newWatchService();
-            thread = new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    processEvents();
-                }
-            }, "File Watcher");
+            thread = new Thread((Runnable) this::processEvents, "File Watcher");
         } catch (IOException e) {
             Main.error(e);
         }
diff --git a/src/org/openstreetmap/josm/io/GpxExporter.java b/src/org/openstreetmap/josm/io/GpxExporter.java
index cd2af35..673f3c0 100644
--- a/src/org/openstreetmap/josm/io/GpxExporter.java
+++ b/src/org/openstreetmap/josm/io/GpxExporter.java
@@ -4,7 +4,6 @@ package org.openstreetmap.josm.io;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
@@ -275,33 +274,30 @@ public class GpxExporter extends FileExporter implements GpxConstants {
             final JLabel warning) {
 
         // CHECKSTYLE.ON: ParameterNumber
-        ActionListener authorActionListener = new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                boolean b = author.isSelected();
-                authorName.setEnabled(b);
-                email.setEnabled(b);
-                nameLabel.setEnabled(b);
-                emailLabel.setEnabled(b);
-                if (b) {
-                    String sAuthorName = data.getString(META_AUTHOR_NAME);
-                    if (sAuthorName == null) {
-                        sAuthorName = Main.pref.get("lastAuthorName");
-                    }
-                    authorName.setText(sAuthorName);
-                    String sEmail = data.getString(META_AUTHOR_EMAIL);
-                    if (sEmail == null) {
-                        sEmail = Main.pref.get("lastAuthorEmail");
-                    }
-                    email.setText(sEmail);
-                } else {
-                    authorName.setText("");
-                    email.setText("");
+        ActionListener authorActionListener = e -> {
+            boolean b = author.isSelected();
+            authorName.setEnabled(b);
+            email.setEnabled(b);
+            nameLabel.setEnabled(b);
+            emailLabel.setEnabled(b);
+            if (b) {
+                String sAuthorName = data.getString(META_AUTHOR_NAME);
+                if (sAuthorName == null) {
+                    sAuthorName = Main.pref.get("lastAuthorName");
                 }
-                boolean isAuthorSet = !authorName.getText().isEmpty();
-                GpxExporter.enableCopyright(data, copyright, predefined, copyrightYear, copyrightLabel, copyrightYearLabel, warning,
-                        b && isAuthorSet);
+                authorName.setText(sAuthorName);
+                String sEmail = data.getString(META_AUTHOR_EMAIL);
+                if (sEmail == null) {
+                    sEmail = Main.pref.get("lastAuthorEmail");
+                }
+                email.setText(sEmail);
+            } else {
+                authorName.setText("");
+                email.setText("");
             }
+            boolean isAuthorSet = !authorName.getText().isEmpty();
+            GpxExporter.enableCopyright(data, copyright, predefined, copyrightYear, copyrightLabel, copyrightYearLabel, warning,
+                    b && isAuthorSet);
         };
         author.addActionListener(authorActionListener);
 
@@ -313,35 +309,32 @@ public class GpxExporter extends FileExporter implements GpxConstants {
         };
         authorName.addKeyListener(authorNameListener);
 
-        predefined.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                JList<String> l = new JList<>(LICENSES);
-                l.setVisibleRowCount(LICENSES.length);
-                l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
-                int answer = JOptionPane.showConfirmDialog(
-                        Main.parent,
-                        new JScrollPane(l),
-                        tr("Choose a predefined license"),
-                        JOptionPane.OK_CANCEL_OPTION,
-                        JOptionPane.QUESTION_MESSAGE
-                );
-                if (answer != JOptionPane.OK_OPTION || l.getSelectedIndex() == -1)
-                    return;
-                StringBuilder license = new StringBuilder();
-                for (int i : l.getSelectedIndices()) {
-                    if (i == 2) {
-                        license = new StringBuilder("public domain");
-                        break;
-                    }
-                    if (license.length() > 0) {
-                        license.append(", ");
-                    }
-                    license.append(URLS[i]);
+        predefined.addActionListener(e -> {
+            JList<String> l = new JList<>(LICENSES);
+            l.setVisibleRowCount(LICENSES.length);
+            l.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+            int answer = JOptionPane.showConfirmDialog(
+                    Main.parent,
+                    new JScrollPane(l),
+                    tr("Choose a predefined license"),
+                    JOptionPane.OK_CANCEL_OPTION,
+                    JOptionPane.QUESTION_MESSAGE
+            );
+            if (answer != JOptionPane.OK_OPTION || l.getSelectedIndex() == -1)
+                return;
+            StringBuilder license = new StringBuilder();
+            for (int i : l.getSelectedIndices()) {
+                if (i == 2) {
+                    license = new StringBuilder("public domain");
+                    break;
                 }
-                copyright.setText(license.toString());
-                copyright.setCaretPosition(0);
+                if (license.length() > 0) {
+                    license.append(", ");
+                }
+                license.append(URLS[i]);
             }
+            copyright.setText(license.toString());
+            copyright.setCaretPosition(0);
         });
 
         authorActionListener.actionPerformed(null);
diff --git a/src/org/openstreetmap/josm/io/GpxImporter.java b/src/org/openstreetmap/josm/io/GpxImporter.java
index e56044a..1d5d89c 100644
--- a/src/org/openstreetmap/josm/io/GpxImporter.java
+++ b/src/org/openstreetmap/josm/io/GpxImporter.java
@@ -116,17 +116,14 @@ public class GpxImporter extends FileImporter {
      */
     public static void addLayers(final GpxImporterData data) {
         // FIXME: remove UI stuff from the IO subsystem
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (data.markerLayer != null) {
-                    Main.getLayerManager().addLayer(data.markerLayer);
-                }
-                if (data.gpxLayer != null) {
-                    Main.getLayerManager().addLayer(data.gpxLayer);
-                }
-                data.postLayerTask.run();
+        GuiHelper.runInEDT(() -> {
+            if (data.markerLayer != null) {
+                Main.getLayerManager().addLayer(data.markerLayer);
+            }
+            if (data.gpxLayer != null) {
+                Main.getLayerManager().addLayer(data.gpxLayer);
             }
+            data.postLayerTask.run();
         });
     }
 
@@ -152,20 +149,17 @@ public class GpxImporter extends FileImporter {
                 markerLayer = null;
             }
         }
-        Runnable postLayerTask = new Runnable() {
-            @Override
-            public void run() {
-                if (!parsedProperly) {
-                    String msg;
-                    if (data.storageFile == null) {
-                        msg = tr("Error occurred while parsing gpx data for layer ''{0}''. Only a part of the file will be available.",
-                                gpxLayerName);
-                    } else {
-                        msg = tr("Error occurred while parsing gpx file ''{0}''. Only a part of the file will be available.",
-                                data.storageFile.getPath());
-                    }
-                    JOptionPane.showMessageDialog(null, msg);
+        Runnable postLayerTask = () -> {
+            if (!parsedProperly) {
+                String msg;
+                if (data.storageFile == null) {
+                    msg = tr("Error occurred while parsing gpx data for layer ''{0}''. Only a part of the file will be available.",
+                            gpxLayerName);
+                } else {
+                    msg = tr("Error occurred while parsing gpx file ''{0}''. Only a part of the file will be available.",
+                            data.storageFile.getPath());
                 }
+                JOptionPane.showMessageDialog(null, msg);
             }
         };
         return new GpxImporterData(gpxLayer, markerLayer, postLayerTask);
diff --git a/src/org/openstreetmap/josm/io/MessageNotifier.java b/src/org/openstreetmap/josm/io/MessageNotifier.java
index 1c39a0c..f72a16c 100644
--- a/src/org/openstreetmap/josm/io/MessageNotifier.java
+++ b/src/org/openstreetmap/josm/io/MessageNotifier.java
@@ -64,20 +64,17 @@ public final class MessageNotifier {
                         tr("get number of unread messages"));
                 final int unread = userInfo.getUnreadMessages();
                 if (unread > 0 && unread != lastUnreadCount) {
-                    GuiHelper.runInEDT(new Runnable() {
-                        @Override
-                        public void run() {
-                            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",
-                                    tr("Click here to see your inbox.")), GBC.eol());
-                            panel.setOpaque(false);
-                            new Notification().setContent(panel)
-                                .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                                .setDuration(Notification.TIME_LONG)
-                                .show();
-                        }
+                    GuiHelper.runInEDT(() -> {
+                        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",
+                                tr("Click here to see your inbox.")), GBC.eol());
+                        panel.setOpaque(false);
+                        new Notification().setContent(panel)
+                            .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                            .setDuration(Notification.TIME_LONG)
+                            .show();
                     });
                     lastUnreadCount = unread;
                 }
@@ -149,7 +146,7 @@ public final class MessageNotifier {
                     }
                 }
             } catch (CredentialsAgentException e) {
-                Main.warn("Unable to get credentials: "+e.getMessage());
+                Main.warn(e, "Unable to get credentials:");
             }
         }
         return false;
diff --git a/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java b/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java
index 4acd51e..385f0f7 100644
--- a/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java
+++ b/src/org/openstreetmap/josm/io/MultiFetchOverpassObjectReader.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.io;
 
 import java.util.Set;
+import java.util.function.Function;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.gui.preferences.server.OverpassServerPreference;
@@ -16,12 +17,7 @@ class MultiFetchOverpassObjectReader extends MultiFetchServerObjectReader {
 
     @Override
     protected String buildRequestString(final OsmPrimitiveType type, Set<Long> idPackage) {
-        final Utils.Function<Long, Object> toOverpassExpression = new Utils.Function<Long, Object>() {
-            @Override
-            public Object apply(Long x) {
-                return type.getAPIName() + '(' + x + ");>;";
-            }
-        };
+        final Function<Long, Object> toOverpassExpression = x -> type.getAPIName() + '(' + x + ");>;";
         final String query = '(' + Utils.join("", Utils.transform(idPackage, toOverpassExpression)) + ");out meta;";
         return "interpreter?data=" + Utils.encodeUrl(query);
     }
diff --git a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
index 18c41c6..8fbde89 100644
--- a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
+++ b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
@@ -146,8 +146,9 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
             return appendWay((Way) p);
         case RELATION:
             return appendRelation((Relation) p);
+        default:
+            return this;
         }
-        return this;
     }
 
     /**
@@ -216,6 +217,7 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
                 case NODE: return appendNode((Node) primitive);
                 case WAY: return appendWay((Way) primitive);
                 case RELATION: return appendRelation((Relation) primitive);
+                default: break;
             }
         }
         return this;
@@ -273,11 +275,6 @@ public class MultiFetchServerObjectReader extends OsmServerReader {
         return type.getAPIName() + "s?" + type.getAPIName() + "s=" + Utils.join(",", idPackage);
     }
 
-    @Override
-    protected String getBaseUrl() {
-        return super.getBaseUrl();
-    }
-
     protected void rememberNodesOfIncompleteWaysToLoad(DataSet from) {
         for (Way w: from.getWays()) {
             if (w.hasIncompleteNodes()) {
diff --git a/src/org/openstreetmap/josm/io/NMEAImporter.java b/src/org/openstreetmap/josm/io/NMEAImporter.java
index ea3a390..c416cee 100644
--- a/src/org/openstreetmap/josm/io/NMEAImporter.java
+++ b/src/org/openstreetmap/josm/io/NMEAImporter.java
@@ -49,15 +49,12 @@ public class NMEAImporter extends FileImporter {
                 final GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
                 final File fileFinal = file;
 
-                GuiHelper.runInEDT(new Runnable() {
-                    @Override
-                    public void run() {
-                        Main.getLayerManager().addLayer(gpxLayer);
-                        if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
-                            MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
-                            if (!ml.data.isEmpty()) {
-                                Main.getLayerManager().addLayer(ml);
-                            }
+                GuiHelper.runInEDT(() -> {
+                    Main.getLayerManager().addLayer(gpxLayer);
+                    if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
+                        MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
+                        if (!ml.data.isEmpty()) {
+                            Main.getLayerManager().addLayer(ml);
                         }
                     }
                 });
@@ -77,15 +74,10 @@ public class NMEAImporter extends FileImporter {
         msg.append(tr("Zero coordinates: {0}", r.getParserZeroCoordinates()))
            .append("</html>");
         if (success) {
-            SwingUtilities.invokeLater(new Runnable() {
-                @Override
-                public void run() {
-                    new Notification(
-                            "<h3>" + tr("NMEA import success:") + "</h3>" + msg.toString())
-                            .setIcon(JOptionPane.INFORMATION_MESSAGE)
-                            .show();
-                }
-            });
+            SwingUtilities.invokeLater(() -> new Notification(
+                    "<h3>" + tr("NMEA import success:") + "</h3>" + msg.toString())
+                    .setIcon(JOptionPane.INFORMATION_MESSAGE)
+                    .show());
         } else {
             HelpAwareOptionPane.showMessageDialogInEDT(
                     Main.parent,
diff --git a/src/org/openstreetmap/josm/io/NmeaReader.java b/src/org/openstreetmap/josm/io/NmeaReader.java
index a803059..013c9fe 100644
--- a/src/org/openstreetmap/josm/io/NmeaReader.java
+++ b/src/org/openstreetmap/josm/io/NmeaReader.java
@@ -439,14 +439,14 @@ public class NmeaReader {
 
         } catch (RuntimeException x) {
             // out of bounds and such
+            Main.debug(x);
             ps.malformed++;
             ps.pWp = null;
             return false;
         }
     }
 
-    private static LatLon parseLatLon(String ns, String ew, String dlat, String dlon)
-    throws NumberFormatException {
+    private static LatLon parseLatLon(String ns, String ew, String dlat, String dlon) {
         String widthNorth = dlat.trim();
         String lengthEast = dlon.trim();
 
diff --git a/src/org/openstreetmap/josm/io/OsmApi.java b/src/org/openstreetmap/josm/io/OsmApi.java
index e04cbc1..94d4af4 100644
--- a/src/org/openstreetmap/josm/io/OsmApi.java
+++ b/src/org/openstreetmap/josm/io/OsmApi.java
@@ -211,6 +211,7 @@ public class OsmApi extends OsmConnection {
             try {
                 initializeCapabilities(cache.updateIfRequiredString());
             } catch (SAXParseException parseException) {
+                Main.trace(parseException);
                 // XML parsing may fail if JOSM previously stored a corrupted capabilities document (see #8278)
                 // In that case, force update and try again
                 initializeCapabilities(cache.updateForceString());
diff --git a/src/org/openstreetmap/josm/io/OsmApiException.java b/src/org/openstreetmap/josm/io/OsmApiException.java
index 16eed4b..e7733ce 100644
--- a/src/org/openstreetmap/josm/io/OsmApiException.java
+++ b/src/org/openstreetmap/josm/io/OsmApiException.java
@@ -145,9 +145,7 @@ public class OsmApiException extends OsmTransferException {
             }
         } catch (IllegalArgumentException e) {
             // Ignored
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         try {
             String eb = errorBody != null ? tr(errorBody.trim()) : "";
@@ -158,9 +156,7 @@ public class OsmApiException extends OsmTransferException {
             }
         } catch (IllegalArgumentException e) {
             // Ignored
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return sb.toString();
     }
diff --git a/src/org/openstreetmap/josm/io/OsmChangeImporter.java b/src/org/openstreetmap/josm/io/OsmChangeImporter.java
index d5cdef7..0fdc66e 100644
--- a/src/org/openstreetmap/josm/io/OsmChangeImporter.java
+++ b/src/org/openstreetmap/josm/io/OsmChangeImporter.java
@@ -52,19 +52,16 @@ public class OsmChangeImporter extends FileImporter {
     protected void addDataLayer(final DataSet dataSet, final OsmDataLayer layer, final String filePath) {
         // FIXME: remove UI stuff from IO subsystem
         //
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                if (dataSet.allPrimitives().isEmpty()) {
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            tr("No data found in file {0}.", filePath),
-                            tr("Open OsmChange file"),
-                            JOptionPane.INFORMATION_MESSAGE);
-                }
-                Main.getLayerManager().addLayer(layer);
-                layer.onPostLoadFromFile();
+        GuiHelper.runInEDT(() -> {
+            if (dataSet.allPrimitives().isEmpty()) {
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        tr("No data found in file {0}.", filePath),
+                        tr("Open OsmChange file"),
+                        JOptionPane.INFORMATION_MESSAGE);
             }
+            Main.getLayerManager().addLayer(layer);
+            layer.onPostLoadFromFile();
         });
     }
 }
diff --git a/src/org/openstreetmap/josm/io/OsmConnection.java b/src/org/openstreetmap/josm/io/OsmConnection.java
index 483eb41..fe711c4 100644
--- a/src/org/openstreetmap/josm/io/OsmConnection.java
+++ b/src/org/openstreetmap/josm/io/OsmConnection.java
@@ -7,12 +7,9 @@ import java.lang.reflect.InvocationTargetException;
 import java.net.Authenticator.RequestorType;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.CharacterCodingException;
 import java.nio.charset.StandardCharsets;
+import java.util.Base64;
 import java.util.Objects;
-import java.util.concurrent.Callable;
 import java.util.concurrent.FutureTask;
 
 import javax.swing.SwingUtilities;
@@ -24,7 +21,6 @@ import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
 import org.openstreetmap.josm.io.auth.CredentialsAgentException;
 import org.openstreetmap.josm.io.auth.CredentialsAgentResponse;
 import org.openstreetmap.josm.io.auth.CredentialsManager;
-import org.openstreetmap.josm.tools.Base64;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -80,12 +76,7 @@ public class OsmConnection {
             String username = response.getUsername() == null ? "" : response.getUsername();
             String password = response.getPassword() == null ? "" : String.valueOf(response.getPassword());
             token = username + ':' + password;
-            try {
-                ByteBuffer bytes = StandardCharsets.UTF_8.newEncoder().encode(CharBuffer.wrap(token));
-                con.setHeader("Authorization", "Basic "+Base64.encode(bytes));
-            } catch (CharacterCodingException e) {
-                throw new OsmTransferException(e);
-            }
+            con.setHeader("Authorization", "Basic "+Base64.getEncoder().encodeToString(token.getBytes(StandardCharsets.UTF_8)));
         }
     }
 
@@ -128,18 +119,15 @@ public class OsmConnection {
             if (!Objects.equals(apiUrl.getHost(), connection.getURL().getHost())) {
                 throw new MissingOAuthAccessTokenException();
             }
-            final Runnable authTask = new FutureTask<>(new Callable<OAuthAuthorizationWizard>() {
-                @Override
-                public OAuthAuthorizationWizard call() throws Exception {
-                    // Concerning Utils.newDirectExecutor: Main.worker cannot be used since this connection is already
-                    // executed via Main.worker. The OAuth connections would block otherwise.
-                    final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
-                            Main.parent, apiUrl.toExternalForm(), Utils.newDirectExecutor());
-                    wizard.showDialog();
-                    OAuthAccessTokenHolder.getInstance().setSaveToPreferences(true);
-                    OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
-                    return wizard;
-                }
+            final Runnable authTask = new FutureTask<>(() -> {
+                // Concerning Utils.newDirectExecutor: Main.worker cannot be used since this connection is already
+                // executed via Main.worker. The OAuth connections would block otherwise.
+                final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
+                        Main.parent, apiUrl.toExternalForm(), Utils.newDirectExecutor());
+                wizard.showDialog();
+                OAuthAccessTokenHolder.getInstance().setSaveToPreferences(true);
+                OAuthAccessTokenHolder.getInstance().save(Main.pref, CredentialsManager.getInstance());
+                return wizard;
             });
             // exception handling differs from implementation at GuiHelper.runInEDTAndWait()
             if (SwingUtilities.isEventDispatchThread()) {
diff --git a/src/org/openstreetmap/josm/io/OsmExporter.java b/src/org/openstreetmap/josm/io/OsmExporter.java
index 40a7051..bb7bf23 100644
--- a/src/org/openstreetmap/josm/io/OsmExporter.java
+++ b/src/org/openstreetmap/josm/io/OsmExporter.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.FileNotFoundException;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
@@ -75,7 +74,7 @@ public class OsmExporter extends FileExporter {
         }
     }
 
-    protected static OutputStream getOutputStream(File file) throws FileNotFoundException, IOException {
+    protected static OutputStream getOutputStream(File file) throws IOException {
         return Compression.getCompressedFileOutputStream(file);
     }
 
@@ -124,7 +123,7 @@ public class OsmExporter extends FileExporter {
         }
     }
 
-    protected void doSave(File file, OsmDataLayer layer) throws IOException, FileNotFoundException {
+    protected void doSave(File file, OsmDataLayer layer) throws IOException {
         // create outputstream and wrap it with gzip or bzip, if necessary
         try (
             OutputStream out = getOutputStream(file);
diff --git a/src/org/openstreetmap/josm/io/OsmImporter.java b/src/org/openstreetmap/josm/io/OsmImporter.java
index 1d504fd..fabb6bc 100644
--- a/src/org/openstreetmap/josm/io/OsmImporter.java
+++ b/src/org/openstreetmap/josm/io/OsmImporter.java
@@ -91,14 +91,11 @@ public class OsmImporter extends FileImporter {
                 associatedFile == null ? OsmDataLayer.createNewName() : associatedFile.getName(), pm);
 
         // FIXME: remove UI stuff from IO subsystem
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                OsmDataLayer layer = data.getLayer();
-                Main.getLayerManager().addLayer(layer);
-                data.getPostLayerTask().run();
-                data.getLayer().onPostLoadFromFile();
-            }
+        GuiHelper.runInEDT(() -> {
+            OsmDataLayer layer = data.getLayer();
+            Main.getLayerManager().addLayer(layer);
+            data.getPostLayerTask().run();
+            data.getLayer().onPostLoadFromFile();
         });
     }
 
@@ -131,24 +128,21 @@ public class OsmImporter extends FileImporter {
     }
 
     protected Runnable createPostLayerTask(final DataSet dataSet, final File associatedFile, final String layerName, final OsmDataLayer layer) {
-        return new Runnable() {
-            @Override
-            public void run() {
-                if (dataSet.allPrimitives().isEmpty()) {
-                    String msg;
-                    if (associatedFile == null) {
-                        msg = tr("No data found for layer ''{0}''.", layerName);
-                    } else {
-                        msg = tr("No data found in file ''{0}''.", associatedFile.getPath());
-                    }
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            msg,
-                            tr("Open OSM file"),
-                            JOptionPane.INFORMATION_MESSAGE);
+        return () -> {
+            if (dataSet.allPrimitives().isEmpty()) {
+                String msg;
+                if (associatedFile == null) {
+                    msg = tr("No data found for layer ''{0}''.", layerName);
+                } else {
+                    msg = tr("No data found in file ''{0}''.", associatedFile.getPath());
                 }
-                layer.onPostLoadFromFile();
+                JOptionPane.showMessageDialog(
+                        Main.parent,
+                        msg,
+                        tr("Open OSM file"),
+                        JOptionPane.INFORMATION_MESSAGE);
             }
+            layer.onPostLoadFromFile();
         };
     }
 }
diff --git a/src/org/openstreetmap/josm/io/OsmReader.java b/src/org/openstreetmap/josm/io/OsmReader.java
index 5a8b7fd..b868670 100644
--- a/src/org/openstreetmap/josm/io/OsmReader.java
+++ b/src/org/openstreetmap/josm/io/OsmReader.java
@@ -527,6 +527,7 @@ public class OsmReader extends AbstractReader {
                 }
             } catch (IllegalStateException e) {
                 // thrown for positive changeset id on new primitives
+                Main.debug(e);
                 Main.info(e.getMessage());
                 current.setChangesetId(0);
             }
@@ -575,11 +576,7 @@ public class OsmReader extends AbstractReader {
         if (progressMonitor == null) {
             progressMonitor = NullProgressMonitor.INSTANCE;
         }
-        ProgressMonitor.CancelListener cancelListener = new ProgressMonitor.CancelListener() {
-            @Override public void operationCanceled() {
-                cancel = true;
-            }
-        };
+        ProgressMonitor.CancelListener cancelListener = () -> cancel = true;
         progressMonitor.addCancelListener(cancelListener);
         CheckParameterUtil.ensureParameterNotNull(source, "source");
         try {
@@ -587,8 +584,11 @@ public class OsmReader extends AbstractReader {
             progressMonitor.indeterminateSubTask(tr("Parsing OSM data..."));
 
             try (InputStreamReader ir = UTFInputStreamReader.create(source)) {
-                XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(ir);
-                setParser(parser);
+                XMLInputFactory factory = XMLInputFactory.newInstance();
+                // do not try to load external entities
+                factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, Boolean.FALSE);
+                factory.setProperty(XMLInputFactory.SUPPORT_DTD, Boolean.FALSE);
+                setParser(factory.createXMLStreamReader(ir));
                 parse();
             }
             progressMonitor.worked(1);
diff --git a/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java b/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java
index a3aa7ac..aaa7a12 100644
--- a/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java
+++ b/src/org/openstreetmap/josm/io/OsmServerReadPostprocessor.java
@@ -4,6 +4,7 @@ package org.openstreetmap.josm.io;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
+ at FunctionalInterface
 public interface OsmServerReadPostprocessor {
 
     void postprocessDataSet(DataSet ds, ProgressMonitor progress);
diff --git a/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java b/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java
index 1585a4b..1917e1c 100644
--- a/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java
+++ b/src/org/openstreetmap/josm/io/OsmServerWritePostprocessor.java
@@ -6,6 +6,7 @@ import java.util.Collection;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 
+ at FunctionalInterface
 public interface OsmServerWritePostprocessor {
 
     void postprocessUploadedPrimitives(Collection<OsmPrimitive> p, ProgressMonitor progress);
diff --git a/src/org/openstreetmap/josm/io/OsmWriter.java b/src/org/openstreetmap/josm/io/OsmWriter.java
index 074c886..d9f2557 100644
--- a/src/org/openstreetmap/josm/io/OsmWriter.java
+++ b/src/org/openstreetmap/josm/io/OsmWriter.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map.Entry;
@@ -96,22 +95,20 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
     /**
      * Sorts {@code -1} → {@code -infinity}, then {@code +1} → {@code +infinity}
      */
-    protected static final Comparator<AbstractPrimitive> byIdComparator = new Comparator<AbstractPrimitive>() {
-        @Override public int compare(AbstractPrimitive o1, AbstractPrimitive o2) {
-            final long i1 = o1.getUniqueId();
-            final long i2 = o2.getUniqueId();
-            if (i1 < 0 && i2 < 0) {
-                return Long.compare(i2, i1);
-            } else {
-                return Long.compare(i1, i2);
-            }
+    protected static final Comparator<AbstractPrimitive> byIdComparator = (o1, o2) -> {
+        final long i1 = o1.getUniqueId();
+        final long i2 = o2.getUniqueId();
+        if (i1 < 0 && i2 < 0) {
+            return Long.compare(i2, i1);
+        } else {
+            return Long.compare(i1, i2);
         }
     };
 
     protected <T extends OsmPrimitive> Collection<T> sortById(Collection<T> primitives) {
         List<T> result = new ArrayList<>(primitives.size());
         result.addAll(primitives);
-        Collections.sort(result, byIdComparator);
+        result.sort(byIdComparator);
         return result;
     }
 
@@ -262,12 +259,7 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
         addTags(cs, "changeset", false); // also writes closing </changeset>
     }
 
-    protected static final Comparator<Entry<String, String>> byKeyComparator = new Comparator<Entry<String, String>>() {
-        @Override
-        public int compare(Entry<String, String> o1, Entry<String, String> o2) {
-            return o1.getKey().compareTo(o2.getKey());
-        }
-    };
+    protected static final Comparator<Entry<String, String>> byKeyComparator = (o1, o2) -> o1.getKey().compareTo(o2.getKey());
 
     protected void addTags(Tagged osm, String tagname, boolean tagOpen) {
         if (osm.hasKeys()) {
@@ -275,7 +267,7 @@ public class OsmWriter extends XmlWriter implements PrimitiveVisitor {
                 out.println(">");
             }
             List<Entry<String, String>> entries = new ArrayList<>(osm.getKeys().entrySet());
-            Collections.sort(entries, byKeyComparator);
+            entries.sort(byKeyComparator);
             for (Entry<String, String> e : entries) {
                 out.println("    <tag k='"+ XmlWriter.encode(e.getKey()) +
                         "' v='"+XmlWriter.encode(e.getValue())+ "' />");
diff --git a/src/org/openstreetmap/josm/io/WMSLayerImporter.java b/src/org/openstreetmap/josm/io/WMSLayerImporter.java
index e875432..9a53214 100644
--- a/src/org/openstreetmap/josm/io/WMSLayerImporter.java
+++ b/src/org/openstreetmap/josm/io/WMSLayerImporter.java
@@ -84,13 +84,10 @@ public class WMSLayerImporter extends FileImporter {
 
 
         // FIXME: remove UI stuff from IO subsystem
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                Main.getLayerManager().addLayer(layer);
-                if (zoomTo != null) {
-                    Main.map.mapView.zoomTo(zoomTo);
-                }
+        GuiHelper.runInEDT(() -> {
+            Main.getLayerManager().addLayer(layer);
+            if (zoomTo != null) {
+                Main.map.mapView.zoomTo(zoomTo);
             }
         });
     }
diff --git a/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java b/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
index a86bd5c..8cdb4f8 100644
--- a/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
+++ b/src/org/openstreetmap/josm/io/auth/AbstractCredentialsAgent.java
@@ -45,24 +45,21 @@ public abstract class AbstractCredentialsAgent implements CredentialsAgent {
          */
         } else if (noSuccessWithLastResponse || username.isEmpty() || password.isEmpty()) {
             if (!GraphicsEnvironment.isHeadless()) {
-                GuiHelper.runInEDTAndWait(new Runnable() {
-                    @Override
-                    public void run() {
-                        CredentialDialog dialog;
-                        if (requestorType.equals(RequestorType.PROXY))
-                            dialog = CredentialDialog.getHttpProxyCredentialDialog(
-                                    username, password, host, getSaveUsernameAndPasswordCheckboxText());
-                        else
-                            dialog = CredentialDialog.getOsmApiCredentialDialog(
-                                    username, password, host, getSaveUsernameAndPasswordCheckboxText());
-                        dialog.setVisible(true);
-                        response.setCanceled(dialog.isCanceled());
-                        if (dialog.isCanceled())
-                            return;
-                        response.setUsername(dialog.getUsername());
-                        response.setPassword(dialog.getPassword());
-                        response.setSaveCredentials(dialog.isSaveCredentials());
-                    }
+                GuiHelper.runInEDTAndWait(() -> {
+                    CredentialDialog dialog;
+                    if (requestorType.equals(RequestorType.PROXY))
+                        dialog = CredentialDialog.getHttpProxyCredentialDialog(
+                                username, password, host, getSaveUsernameAndPasswordCheckboxText());
+                    else
+                        dialog = CredentialDialog.getOsmApiCredentialDialog(
+                                username, password, host, getSaveUsernameAndPasswordCheckboxText());
+                    dialog.setVisible(true);
+                    response.setCanceled(dialog.isCanceled());
+                    if (dialog.isCanceled())
+                        return;
+                    response.setUsername(dialog.getUsername());
+                    response.setPassword(dialog.getPassword());
+                    response.setSaveCredentials(dialog.isSaveCredentials());
                 });
             }
             if (response.isCanceled() || response.getUsername() == null || response.getPassword() == null) {
diff --git a/src/org/openstreetmap/josm/io/auth/CredentialsManager.java b/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
index 6e8810e..8c0d98c 100644
--- a/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
+++ b/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
@@ -6,6 +6,7 @@ import java.net.Authenticator.RequestorType;
 import java.net.PasswordAuthentication;
 import java.util.Objects;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.oauth.OAuthToken;
 import org.openstreetmap.josm.gui.JosmUserIdentityManager;
 import org.openstreetmap.josm.io.OsmApi;
@@ -41,6 +42,7 @@ public class CredentialsManager implements CredentialsAgent {
 
     private static CredentialsAgentFactory agentFactory;
 
+    @FunctionalInterface
     public interface CredentialsAgentFactory {
         CredentialsAgent getCredentialsAgent();
     }
@@ -101,6 +103,7 @@ public class CredentialsManager implements CredentialsAgent {
                 username = auth.getUserName();
             }
         } catch (CredentialsAgentException ex) {
+            Main.debug(ex);
             return null;
         }
         if (username == null) return null;
diff --git a/src/org/openstreetmap/josm/io/auth/package-info.java b/src/org/openstreetmap/josm/io/auth/package-info.java
new file mode 100644
index 0000000..dfc3d49
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/auth/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for authentication I/O.
+ */
+package org.openstreetmap.josm.io.auth;
diff --git a/src/org/openstreetmap/josm/io/imagery/ImageryReader.java b/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
index adff962..690fd3b 100644
--- a/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
+++ b/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
@@ -202,6 +202,7 @@ public class ImageryReader implements Closeable {
                                         atts.getValue("max-lat") + ',' +
                                         atts.getValue("max-lon"), ",");
                     } catch (IllegalArgumentException e) {
+                        Main.trace(e);
                         break;
                     }
                     newState = State.BOUNDS;
@@ -234,6 +235,7 @@ public class ImageryReader implements Closeable {
                     try {
                         shape.addPoint(atts.getValue("lat"), atts.getValue("lon"));
                     } catch (IllegalArgumentException e) {
+                        Main.trace(e);
                         break;
                     }
                 }
diff --git a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
index d4c500e..b21afa3 100644
--- a/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
+++ b/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
@@ -10,10 +10,15 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.NoSuchElementException;
 import java.util.Set;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 
 import javax.imageio.ImageIO;
 import javax.xml.parsers.DocumentBuilder;
@@ -24,18 +29,53 @@ import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.tools.HttpClient;
-import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
+/**
+ * This class represents the capabilites of a WMS imagery server.
+ */
 public class WMSImagery {
 
+    private static final class ChildIterator implements Iterator<Element> {
+        private Element child;
+
+        ChildIterator(Element parent) {
+            child = advanceToElement(parent.getFirstChild());
+        }
+
+        private static Element advanceToElement(Node firstChild) {
+            Node node = firstChild;
+            while (node != null && !(node instanceof Element)) {
+                node = node.getNextSibling();
+            }
+            return (Element) node;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return child != null;
+        }
+
+        @Override
+        public Element next() {
+            if (!hasNext()) {
+                throw new NoSuchElementException("No next sibling.");
+            }
+            Element next = child;
+            child = advanceToElement(child.getNextSibling());
+            return next;
+        }
+    }
+
+    /**
+     * An exception that is thrown if there was an error while getting the capabilities of the WMS server.
+     */
     public static class WMSGetCapabilitiesException extends Exception {
         private final String incomingData;
 
@@ -61,8 +101,8 @@ public class WMSImagery {
         }
 
         /**
-         * Returns the answer from WMS server.
-         * @return the answer from WMS server
+         * The data that caused this exception.
+         * @return The server response to the capabilites request.
          */
         public String getIncomingData() {
             return incomingData;
@@ -78,7 +118,7 @@ public class WMSImagery {
      * @return the list of layers
      */
     public List<LayerDetails> getLayers() {
-        return layers;
+        return Collections.unmodifiableList(layers);
     }
 
     /**
@@ -97,11 +137,20 @@ public class WMSImagery {
         return Collections.unmodifiableList(formats);
     }
 
+    /**
+     * Gets the preffered format for this imagery layer.
+     * @return The preffered format as mime type.
+     */
     public String getPreferredFormats() {
-        return formats.contains("image/jpeg") ? "image/jpeg"
-                : formats.contains("image/png") ? "image/png"
-                : formats.isEmpty() ? null
-                : formats.get(0);
+        if (formats.contains("image/jpeg")) {
+            return "image/jpeg";
+        } else if (formats.contains("image/png")) {
+            return "image/png";
+        } else if (formats.isEmpty()) {
+            return null;
+        } else {
+            return formats.get(0);
+        }
     }
 
     String buildRootUrl() {
@@ -128,19 +177,13 @@ public class WMSImagery {
     }
 
     public String buildGetMapUrl(Collection<LayerDetails> selectedLayers, String format) {
-        return buildRootUrl()
-                + "FORMAT=" + format + (imageFormatHasTransparency(format) ? "&TRANSPARENT=TRUE" : "")
+        return buildRootUrl() + "FORMAT=" + format + (imageFormatHasTransparency(format) ? "&TRANSPARENT=TRUE" : "")
                 + "&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS="
-                + Utils.join(",", Utils.transform(selectedLayers, new Utils.Function<LayerDetails, String>() {
-            @Override
-            public String apply(LayerDetails x) {
-                return x.ident;
-            }
-        }))
+                + selectedLayers.stream().map(x -> x.ident).collect(Collectors.joining(","))
                 + "&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}";
     }
 
-    public void attemptGetCapabilities(String serviceUrlStr) throws MalformedURLException, IOException, WMSGetCapabilitiesException {
+    public void attemptGetCapabilities(String serviceUrlStr) throws IOException, WMSGetCapabilitiesException {
         URL getCapabilitiesUrl = null;
         try {
             if (!Pattern.compile(".*GetCapabilities.*", Pattern.CASE_INSENSITIVE).matcher(serviceUrlStr).matches()) {
@@ -161,22 +204,19 @@ public class WMSImagery {
             }
             serviceUrl = new URL(serviceUrlStr);
         } catch (HeadlessException e) {
+            Main.warn(e);
             return;
         }
 
-        Main.info("GET " + getCapabilitiesUrl);
         final String incomingData = HttpClient.create(getCapabilitiesUrl).connect().fetchContent();
         Main.debug("Server response to Capabilities request:");
         Main.debug(incomingData);
 
         try {
             DocumentBuilder builder = Utils.newSafeDOMBuilder();
-            builder.setEntityResolver(new EntityResolver() {
-                @Override
-                public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
-                    Main.info("Ignoring DTD " + publicId + ", " + systemId);
-                    return new InputSource(new StringReader(""));
-                }
+            builder.setEntityResolver((publicId, systemId) -> {
+                Main.info("Ignoring DTD " + publicId + ", " + systemId);
+                return new InputSource(new StringReader(""));
             });
             Document document = builder.parse(new InputSource(new StringReader(incomingData)));
             Element root = document.getDocumentElement();
@@ -191,24 +231,10 @@ public class WMSImagery {
             child = getChild(child, "Request");
             child = getChild(child, "GetMap");
 
-            formats = new ArrayList<>(Utils.filter(Utils.transform(getChildren(child, "Format"),
-                    new Utils.Function<Element, String>() {
-                        @Override
-                        public String apply(Element x) {
-                            return x.getTextContent();
-                        }
-                    }),
-                    new Predicate<String>() {
-                        @Override
-                        public boolean evaluate(String format) {
-                            boolean isFormatSupported = isImageFormatSupported(format);
-                            if (!isFormatSupported) {
-                                Main.info("Skipping unsupported image format {0}", format);
-                            }
-                            return isFormatSupported;
-                        }
-                    }
-            ));
+            formats = getChildrenStream(child, "Format")
+                    .map(Node::getTextContent)
+                    .filter(WMSImagery::isImageFormatSupportedWarn)
+                    .collect(Collectors.toList());
 
             child = getChild(child, "DCPType");
             child = getChild(child, "HTTP");
@@ -230,13 +256,22 @@ public class WMSImagery {
         }
     }
 
+    private static boolean isImageFormatSupportedWarn(String format) {
+        boolean isFormatSupported = isImageFormatSupported(format);
+        if (!isFormatSupported) {
+            Main.info("Skipping unsupported image format {0}", format);
+        }
+        return isFormatSupported;
+    }
+
     static boolean isImageFormatSupported(final String format) {
         return ImageIO.getImageReadersByMIMEType(format).hasNext()
                 // handles image/tiff image/tiff8 image/geotiff image/geotiff8
-                || (format.startsWith("image/tiff") || format.startsWith("image/geotiff")) && ImageIO.getImageReadersBySuffix("tiff").hasNext()
-                || format.startsWith("image/png") && ImageIO.getImageReadersBySuffix("png").hasNext()
-                || format.startsWith("image/svg") && ImageIO.getImageReadersBySuffix("svg").hasNext()
-                || format.startsWith("image/bmp") && ImageIO.getImageReadersBySuffix("bmp").hasNext();
+                || ((format.startsWith("image/tiff") || format.startsWith("image/geotiff"))
+                        && ImageIO.getImageReadersBySuffix("tiff").hasNext())
+                || (format.startsWith("image/png") && ImageIO.getImageReadersBySuffix("png").hasNext())
+                || (format.startsWith("image/svg") && ImageIO.getImageReadersBySuffix("svg").hasNext())
+                || (format.startsWith("image/bmp") && ImageIO.getImageReadersBySuffix("bmp").hasNext());
     }
 
     static boolean imageFormatHasTransparency(final String format) {
@@ -275,15 +310,12 @@ public class WMSImagery {
 
         // Parse the CRS/SRS pulled out of this layer's XML element
         // I think CRS and SRS are the same at this point
-        List<Element> crsChildren = getChildren(element, "CRS");
-        crsChildren.addAll(getChildren(element, "SRS"));
-        for (Element child : crsChildren) {
-            String crs = (String) getContent(child);
-            if (!crs.isEmpty()) {
-                String upperCase = crs.trim().toUpperCase(Locale.ENGLISH);
-                crsList.add(upperCase);
-            }
-        }
+        getChildrenStream(element)
+            .filter(child -> "CRS".equals(child.getNodeName()) || "SRS".equals(child.getNodeName()))
+            .map(child -> (String) getContent(child))
+            .filter(crs -> !crs.isEmpty())
+            .map(crs -> crs.trim().toUpperCase(Locale.ENGLISH))
+            .forEach(crsList::add);
 
         // Check to see if any of the specified projections are supported by JOSM
         boolean josmSupportsThisLayer = false;
@@ -350,40 +382,51 @@ public class WMSImagery {
         return content.toString().trim();
     }
 
-    private static List<Element> getChildren(Element parent, String name) {
-        List<Element> retVal = new ArrayList<>();
-        if (parent != null) {
-            for (Node child = parent.getFirstChild(); child != null; child = child.getNextSibling()) {
-                if (child instanceof Element && name.equals(child.getNodeName())) {
-                    retVal.add((Element) child);
-                }
-            }
+    private static Stream<Element> getChildrenStream(Element parent) {
+        if (parent == null) {
+            // ignore missing elements
+            return Stream.empty();
+        } else {
+            Iterable<Element> it = () -> new ChildIterator(parent);
+            return StreamSupport.stream(it.spliterator(), false);
         }
-        return retVal;
+    }
+
+    private static Stream<Element> getChildrenStream(Element parent, String name) {
+        return getChildrenStream(parent).filter(child -> name.equals(child.getNodeName()));
+    }
+
+    private static List<Element> getChildren(Element parent, String name) {
+        return getChildrenStream(parent, name).collect(Collectors.toList());
     }
 
     private static Element getChild(Element parent, String name) {
-        if (parent == null)
-            return null;
-        for (Node child = parent.getFirstChild(); child != null; child = child.getNextSibling()) {
-            if (child instanceof Element && name.equals(child.getNodeName()))
-                return (Element) child;
-        }
-        return null;
+        return getChildrenStream(parent, name).findFirst().orElse(null);
     }
 
+    /**
+     * The details of a layer of this wms server.
+     */
     public static class LayerDetails {
 
+        /**
+         * The layer name
+         */
         public final String name;
         public final String ident;
+        /**
+         * The child layers of this layer
+         */
         public final List<LayerDetails> children;
+        /**
+         * The bounds this layer can be used for
+         */
         public final Bounds bounds;
         public final Set<String> crsList;
         public final boolean supported;
 
-        public LayerDetails(String name, String ident, Set<String> crsList,
-                            boolean supportedLayer, Bounds bounds,
-                            List<LayerDetails> childLayers) {
+        public LayerDetails(String name, String ident, Set<String> crsList, boolean supportedLayer, Bounds bounds,
+                List<LayerDetails> childLayers) {
             this.name = name;
             this.ident = ident;
             this.supported = supportedLayer;
diff --git a/src/org/openstreetmap/josm/io/imagery/package-info.java b/src/org/openstreetmap/josm/io/imagery/package-info.java
new file mode 100644
index 0000000..698a132
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/imagery/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for imagery I/O.
+ */
+package org.openstreetmap.josm.io.imagery;
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java b/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
index 830cc32..b65518e 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
@@ -267,28 +267,24 @@ public class AddTagsDialog extends ExtendedDialog {
      */
     public static void addTags(final Map<String, String> args, final String sender, final Collection<? extends OsmPrimitive> primitives) {
         if (args.containsKey("addtags")) {
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-
-                @Override
-                public void run() {
-                    Set<String> tagSet = new HashSet<>();
-                    for (String tag : Utils.decodeUrl(args.get("addtags")).split("\\|")) {
-                        if (!tag.trim().isEmpty() && tag.contains("=")) {
-                            tagSet.add(tag.trim());
-                        }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                Set<String> tagSet = new HashSet<>();
+                for (String tag1 : Utils.decodeUrl(args.get("addtags")).split("\\|")) {
+                    if (!tag1.trim().isEmpty() && tag1.contains("=")) {
+                        tagSet.add(tag1.trim());
                     }
-                    if (!tagSet.isEmpty()) {
-                        String[][] keyValue = new String[tagSet.size()][2];
-                        int i = 0;
-                        for (String tag : tagSet) {
-                            // support a  =   b===c as "a"="b===c"
-                            String[] pair = tag.split("\\s*=\\s*", 2);
-                            keyValue[i][0] = pair[0];
-                            keyValue[i][1] = pair.length < 2 ? "" : pair[1];
-                            i++;
-                        }
-                        addTags(keyValue, sender, primitives);
+                }
+                if (!tagSet.isEmpty()) {
+                    String[][] keyValue = new String[tagSet.size()][2];
+                    int i = 0;
+                    for (String tag2 : tagSet) {
+                        // support a  =   b===c as "a"="b===c"
+                        String[] pair = tag2.split("\\s*=\\s*", 2);
+                        keyValue[i][0] = pair[0];
+                        keyValue[i][1] = pair.length < 2 ? "" : pair[1];
+                        i++;
                     }
+                    addTags(keyValue, sender, primitives);
                 }
             });
         }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
index 108577e..d9ff0d0 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpServer.java
@@ -36,6 +36,7 @@ public class RemoteControlHttpServer extends Thread {
             instance4 = new RemoteControlHttpServer(port, false);
             instance4.start();
         } catch (IOException ex) {
+            Main.debug(ex);
             Main.warn(marktr("Cannot start IPv4 remotecontrol server on port {0}: {1}"),
                     Integer.toString(port), ex.getLocalizedMessage());
         }
@@ -45,6 +46,7 @@ public class RemoteControlHttpServer extends Thread {
         } catch (IOException ex) {
             /* only show error when we also have no IPv4 */
             if (instance4 == null) {
+                Main.debug(ex);
                 Main.warn(marktr("Cannot start IPv6 remotecontrol server on port {0}: {1}"),
                     Integer.toString(port), ex.getLocalizedMessage());
             }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
index bd71079..62d9f26 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RemoteControlHttpsServer.java
@@ -45,9 +45,7 @@ import sun.security.x509.AlgorithmId;
 import sun.security.x509.BasicConstraintsExtension;
 import sun.security.x509.CertificateAlgorithmId;
 import sun.security.x509.CertificateExtensions;
-import sun.security.x509.CertificateIssuerName;
 import sun.security.x509.CertificateSerialNumber;
-import sun.security.x509.CertificateSubjectName;
 import sun.security.x509.CertificateValidity;
 import sun.security.x509.CertificateVersion;
 import sun.security.x509.CertificateX509Key;
@@ -148,19 +146,8 @@ public class RemoteControlHttpsServer extends Thread {
 
         info.set(X509CertInfo.VALIDITY, interval);
         info.set(X509CertInfo.SERIAL_NUMBER, new CertificateSerialNumber(sn));
-
-        // Change of behaviour in JDK8:
-        // https://bugs.openjdk.java.net/browse/JDK-8040820
-        // https://bugs.openjdk.java.net/browse/JDK-7198416
-        if (!Main.isJava8orLater()) {
-            // Java 7 code. To remove with Java 8 migration
-            info.set(X509CertInfo.SUBJECT, new CertificateSubjectName(owner));
-            info.set(X509CertInfo.ISSUER, new CertificateIssuerName(owner));
-        } else {
-            // Java 8 and later code
-            info.set(X509CertInfo.SUBJECT, owner);
-            info.set(X509CertInfo.ISSUER, owner);
-        }
+        info.set(X509CertInfo.SUBJECT, owner);
+        info.set(X509CertInfo.ISSUER, owner);
 
         info.set(X509CertInfo.KEY, new CertificateX509Key(pair.getPublic()));
         info.set(X509CertInfo.VERSION, new CertificateVersion(CertificateVersion.V3));
@@ -330,6 +317,7 @@ public class RemoteControlHttpsServer extends Thread {
                 instance4 = new RemoteControlHttpsServer(port, false);
                 instance4.start();
             } catch (IOException | GeneralSecurityException ex) {
+                Main.debug(ex);
                 Main.warn(marktr("Cannot start IPv4 remotecontrol https server on port {0}: {1}"),
                         Integer.toString(port), ex.getLocalizedMessage());
             }
@@ -339,6 +327,7 @@ public class RemoteControlHttpsServer extends Thread {
             } catch (IOException | GeneralSecurityException ex) {
                 /* only show error when we also have no IPv4 */
                 if (instance4 == null) {
+                    Main.debug(ex);
                     Main.warn(marktr("Cannot start IPv6 remotecontrol https server on port {0}: {1}"),
                         Integer.toString(port), ex.getLocalizedMessage());
                 }
@@ -373,11 +362,10 @@ public class RemoteControlHttpsServer extends Thread {
      * @param port The port this server will listen on
      * @param ipv6 Whether IPv6 or IPv4 server should be started
      * @throws IOException when connection errors
-     * @throws NoSuchAlgorithmException if the JVM does not support TLS (can not happen)
      * @throws GeneralSecurityException in case of SSL setup errors
      * @since 8339
      */
-    public RemoteControlHttpsServer(int port, boolean ipv6) throws IOException, NoSuchAlgorithmException, GeneralSecurityException {
+    public RemoteControlHttpsServer(int port, boolean ipv6) throws IOException, GeneralSecurityException {
         super("RemoteControl HTTPS Server");
         this.setDaemon(true);
 
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java b/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
index 85dd37c..7281c7f 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/RequestProcessor.java
@@ -11,10 +11,12 @@ import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.net.Socket;
+import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.StringTokenizer;
@@ -44,6 +46,12 @@ import org.openstreetmap.josm.tools.Utils;
  * Processes HTTP "remote control" requests.
  */
 public class RequestProcessor extends Thread {
+
+    private static final Charset RESPONSE_CHARSET = StandardCharsets.UTF_8;
+    private static final String RESPONSE_TEMPLATE = "<!DOCTYPE html><html><head><meta charset=\""
+            + RESPONSE_CHARSET.name()
+            + "\">%s</head><body>%s</body></html>";
+
     /**
      * RemoteControl protocol version. Change minor number for compatible
      * interface extensions. Change major number in case of incompatible
@@ -144,7 +152,7 @@ public class RequestProcessor extends Thread {
         Writer out = null;
         try {
             OutputStream raw = new BufferedOutputStream(request.getOutputStream());
-            out = new OutputStreamWriter(raw, StandardCharsets.UTF_8);
+            out = new OutputStreamWriter(raw, RESPONSE_CHARSET);
             BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream(), "ASCII"));
 
             String get = in.readLine();
@@ -232,10 +240,13 @@ public class RequestProcessor extends Thread {
                     out.write(handler.getContent());
                     out.flush();
                 } catch (RequestHandlerErrorException ex) {
+                    Main.debug(ex);
                     sendError(out);
                 } catch (RequestHandlerBadRequestException ex) {
+                    Main.debug(ex);
                     sendBadRequest(out, ex.getMessage());
                 } catch (RequestHandlerForbiddenException ex) {
+                    Main.debug(ex);
                     sendForbidden(out, ex.getMessage());
                 }
             }
@@ -268,12 +279,11 @@ public class RequestProcessor extends Thread {
      */
     private static void sendError(Writer out) throws IOException {
         sendHeader(out, "500 Internal Server Error", "text/html", true);
-        out.write("<HTML>\r\n");
-        out.write("<HEAD><TITLE>Internal Error</TITLE>\r\n");
-        out.write("</HEAD>\r\n");
-        out.write("<BODY>");
-        out.write("<H1>HTTP Error 500: Internal Server Error</H1>\r\n");
-        out.write("</BODY></HTML>\r\n");
+        out.write(String.format(
+                RESPONSE_TEMPLATE,
+                "<title>Internal Error</title>",
+                "<h1>HTTP Error 500: Internal Server Error</h1>"
+        ));
         out.flush();
     }
 
@@ -287,12 +297,11 @@ public class RequestProcessor extends Thread {
      */
     private static void sendNotImplemented(Writer out) throws IOException {
         sendHeader(out, "501 Not Implemented", "text/html", true);
-        out.write("<HTML>\r\n");
-        out.write("<HEAD><TITLE>Not Implemented</TITLE>\r\n");
-        out.write("</HEAD>\r\n");
-        out.write("<BODY>");
-        out.write("<H1>HTTP Error 501: Not Implemented</h2>\r\n");
-        out.write("</BODY></HTML>\r\n");
+        out.write(String.format(
+                RESPONSE_TEMPLATE,
+                "<title>Not Implemented</title>",
+                "<h1>HTTP Error 501: Not Implemented</h1>"
+        ));
         out.flush();
     }
 
@@ -308,20 +317,17 @@ public class RequestProcessor extends Thread {
      */
     private static void sendForbidden(Writer out, String help) throws IOException {
         sendHeader(out, "403 Forbidden", "text/html", true);
-        out.write("<HTML>\r\n");
-        out.write("<HEAD><TITLE>Forbidden</TITLE>\r\n");
-        out.write("</HEAD>\r\n");
-        out.write("<BODY>");
-        out.write("<H1>HTTP Error 403: Forbidden</h2>\r\n");
-        if (help != null) {
-            out.write(help);
-        }
-        out.write("</BODY></HTML>\r\n");
+        out.write(String.format(
+                RESPONSE_TEMPLATE,
+                "<title>Forbidden</title>",
+                "<h1>HTTP Error 403: Forbidden</h1>" +
+                (help == null ? "" : "<p>"+Utils.escapeReservedCharactersHTML(help) + "</p>")
+        ));
         out.flush();
     }
 
     /**
-     * Sends a 403 error: forbidden
+     * Sends a 400 error: bad request
      *
      * @param out
      *            The writer where the error is written
@@ -332,15 +338,12 @@ public class RequestProcessor extends Thread {
      */
     private static void sendBadRequest(Writer out, String help) throws IOException {
         sendHeader(out, "400 Bad Request", "text/html", true);
-        out.write("<HTML>\r\n");
-        out.write("<HEAD><TITLE>Bad Request</TITLE>\r\n");
-        out.write("</HEAD>\r\n");
-        out.write("<BODY>");
-        out.write("<H1>HTTP Error 400: Bad Request</h2>\r\n");
-        if (help != null) {
-            out.write(help);
-        }
-        out.write("</BODY></HTML>\r\n");
+        out.write(String.format(
+                RESPONSE_TEMPLATE,
+                "<title>Bad Request</title>",
+                "<h1>HTTP Error 400: Bad Request</h1>" +
+                (help == null ? "" : ("<p>" + Utils.escapeReservedCharactersHTML(help) + "</p>"))
+        ));
         out.flush();
     }
 
@@ -361,10 +364,9 @@ public class RequestProcessor extends Thread {
     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();
-        out.write("Date: " + now + "\r\n");
+        out.write("Date: " + new Date() + "\r\n");
         out.write("Server: JOSM RemoteControl\r\n");
-        out.write("Content-type: " + contentType + "\r\n");
+        out.write("Content-type: " + contentType + "; charset=" + RESPONSE_CHARSET.name().toLowerCase(Locale.ENGLISH) + "\r\n");
         out.write("Access-Control-Allow-Origin: *\r\n");
         if (endHeaders)
             out.write("\r\n");
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
index 8d8dd68..965e55d 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
@@ -32,11 +32,7 @@ public class AddNodeHandler extends RequestHandler {
 
     @Override
     protected void handleRequest() {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                 addNode(args);
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> addNode(args));
     }
 
     @Override
@@ -89,7 +85,7 @@ public class AddNodeHandler extends RequestHandler {
 
         if (Main.isDisplayingMapView()) {
             Point p = Main.map.mapView.getPoint(ll);
-            node = Main.map.mapView.getNearestNode(p, OsmPrimitive.isUsablePredicate);
+            node = Main.map.mapView.getNearestNode(p, OsmPrimitive::isUsable);
             if (node != null && node.getCoor().greatCircleDistance(ll) > Main.pref.getDouble("remotecontrol.tolerance", 0.1)) {
                 node = null; // node is too far
             }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
index 75488ac..f27ab8f 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
@@ -72,11 +72,7 @@ public class AddWayHandler extends RequestHandler {
 
     @Override
     protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                way = addWay();
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> way = addWay());
         // parse parameter addtags=tag1=value1|tag2=value2
         AddTagsDialog.addTags(args, sender, Collections.singleton(way));
     }
@@ -130,7 +126,7 @@ public class AddWayHandler extends RequestHandler {
 
         if (Main.isDisplayingMapView()) {
             Point p = Main.map.mapView.getPoint(ll);
-            nd = Main.map.mapView.getNearestNode(p, OsmPrimitive.isUsablePredicate);
+            nd = Main.map.mapView.getNearestNode(p, OsmPrimitive::isUsable);
             if (nd != null && nd.getCoor().greatCircleDistance(ll) > Main.pref.getDouble("remote.tolerance", 0.1)) {
                 nd = null; // node is too far
             }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
index 90ef687..d50884e 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/ImageryHandler.java
@@ -101,14 +101,11 @@ public class ImageryHandler extends RequestHandler.RawURLParseRequestHandler {
                 }
             }
         }
-        GuiHelper.runInEDT(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    Main.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
-                } catch (IllegalArgumentException e) {
-                    Main.error(e, false);
-                }
+        GuiHelper.runInEDT(() -> {
+            try {
+                Main.getLayerManager().addLayer(ImageryLayer.create(imgInfo));
+            } catch (IllegalArgumentException e) {
+                Main.error(e, false);
             }
         });
     }
@@ -133,12 +130,7 @@ public class ImageryHandler extends RequestHandler.RawURLParseRequestHandler {
     @Override
     public String[] getUsageExamples() {
         final String types = Utils.join("|", Utils.transform(Arrays.asList(ImageryInfo.ImageryType.values()),
-                new Utils.Function<ImageryInfo.ImageryType, String>() {
-            @Override
-            public String apply(ImageryInfo.ImageryType x) {
-                return x.getTypeString();
-            }
-        }));
+                ImageryType::getTypeString));
         return new String[] {
             "/imagery?title=osm&type=tms&url=https://a.tile.openstreetmap.org/%7Bzoom%7D/%7Bx%7D/%7By%7D.png",
             "/imagery?title=landsat&type=wms&url=http://irs.gis-lab.info/?" +
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
index 30a07b0..6cf8292 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
@@ -28,6 +28,7 @@ import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
 import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -154,14 +155,11 @@ public class LoadAndZoomHandler extends RequestHandler {
          * deselect objects if parameter addtags given
          */
         if (args.containsKey("addtags")) {
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    DataSet ds = Main.getLayerManager().getEditDataSet();
-                    if (ds == null) // e.g. download failed
-                        return;
-                    ds.clearSelection();
-                }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                DataSet ds = Main.getLayerManager().getEditDataSet();
+                if (ds == null) // e.g. download failed
+                    return;
+                ds.clearSelection();
             });
         }
 
@@ -169,42 +167,36 @@ public class LoadAndZoomHandler extends RequestHandler {
         final Bounds bbox = new Bounds(minlat, minlon, maxlat, maxlon);
         if (args.containsKey("select") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
             // select objects after downloading, zoom to selection.
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    Set<OsmPrimitive> newSel = new HashSet<>();
-                    DataSet ds = Main.getLayerManager().getEditDataSet();
-                    if (ds == null) // e.g. download failed
-                        return;
-                    for (SimplePrimitiveId id : toSelect) {
-                        final OsmPrimitive p = ds.getPrimitiveById(id);
-                        if (p != null) {
-                            newSel.add(p);
-                            forTagAdd.add(p);
-                        }
-                    }
-                    toSelect.clear();
-                    ds.setSelected(newSel);
-                    zoom(newSel, bbox);
-                    if (Main.isDisplayingMapView() && Main.map.relationListDialog != null) {
-                        Main.map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
-                        Main.map.relationListDialog.dataChanged(null);
-                        Main.map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                Set<OsmPrimitive> newSel = new HashSet<>();
+                DataSet ds = Main.getLayerManager().getEditDataSet();
+                if (ds == null) // e.g. download failed
+                    return;
+                for (SimplePrimitiveId id : toSelect) {
+                    final OsmPrimitive p = ds.getPrimitiveById(id);
+                    if (p != null) {
+                        newSel.add(p);
+                        forTagAdd.add(p);
                     }
                 }
+                toSelect.clear();
+                ds.setSelected(newSel);
+                zoom(newSel, bbox);
+                if (Main.isDisplayingMapView() && Main.map.relationListDialog != null) {
+                    Main.map.relationListDialog.selectRelations(null); // unselect all relations to fix #7342
+                    Main.map.relationListDialog.dataChanged(null);
+                    Main.map.relationListDialog.selectRelations(Utils.filteredCollection(newSel, Relation.class));
+                }
             });
         } else if (args.containsKey("search") && PermissionPrefWithDefault.CHANGE_SELECTION.isAllowed()) {
             try {
                 final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"));
-                Main.worker.submit(new Runnable() {
-                    @Override
-                    public void run() {
-                        final DataSet ds = Main.getLayerManager().getEditDataSet();
-                        final Collection<OsmPrimitive> filteredPrimitives = Utils.filter(ds.allPrimitives(), search);
-                        ds.setSelected(filteredPrimitives);
-                        forTagAdd.addAll(filteredPrimitives);
-                        zoom(filteredPrimitives, bbox);
-                    }
+                Main.worker.submit(() -> {
+                    final DataSet ds = Main.getLayerManager().getEditDataSet();
+                    final Collection<OsmPrimitive> filteredPrimitives = SubclassFilteredCollection.filter(ds.allPrimitives(), search);
+                    ds.setSelected(filteredPrimitives);
+                    forTagAdd.addAll(filteredPrimitives);
+                    zoom(filteredPrimitives, bbox);
                 });
             } catch (SearchCompiler.ParseError ex) {
                 Main.error(ex);
@@ -217,16 +209,13 @@ public class LoadAndZoomHandler extends RequestHandler {
 
         // add changeset tags after download if necessary
         if (args.containsKey("changeset_comment") || args.containsKey("changeset_source")) {
-            Main.worker.submit(new Runnable() {
-                @Override
-                public void run() {
-                    if (Main.getLayerManager().getEditDataSet() != null) {
-                        if (args.containsKey("changeset_comment")) {
-                            Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
-                        }
-                        if (args.containsKey("changeset_source")) {
-                            Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
-                        }
+            Main.worker.submit(() -> {
+                if (Main.getLayerManager().getEditDataSet() != null) {
+                    if (args.containsKey("changeset_comment")) {
+                        Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
+                    }
+                    if (args.containsKey("changeset_source")) {
+                        Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
                     }
                 }
             });
@@ -244,13 +233,10 @@ public class LoadAndZoomHandler extends RequestHandler {
             AutoScaleAction.autoScale("selection");
         } else if (Main.isDisplayingMapView()) {
             // make sure this isn't called unless there *is* a MapView
-            GuiHelper.executeByMainWorkerInEDT(new Runnable() {
-                @Override
-                public void run() {
-                    BoundingXYVisitor bbox1 = new BoundingXYVisitor();
-                    bbox1.visit(bbox);
-                    Main.map.mapView.zoomTo(bbox1);
-                }
+            GuiHelper.executeByMainWorkerInEDT(() -> {
+                BoundingXYVisitor bbox1 = new BoundingXYVisitor();
+                bbox1.visit(bbox);
+                Main.map.mapView.zoomTo(bbox1);
             });
         }
     }
@@ -296,7 +282,7 @@ public class LoadAndZoomHandler extends RequestHandler {
                 try {
                     toSelect.add(SimplePrimitiveId.fromString(item));
                 } catch (IllegalArgumentException ex) {
-                    Main.warn("RemoteControl: invalid selection '" + item + "' ignored");
+                    Main.warn(ex, "RemoteControl: invalid selection '" + item + "' ignored");
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
index 59f8c77..39d433c 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
@@ -67,26 +67,18 @@ public class LoadObjectHandler extends RequestHandler {
             final DownloadPrimitivesWithReferrersTask task = new DownloadPrimitivesWithReferrersTask(
                     newLayer, ps, referrers, relationMembers, args.get("layer_name"), null);
             Main.worker.submit(task);
-            Main.worker.submit(new Runnable() {
-                @Override
-                public void run() {
-                    final List<PrimitiveId> downloaded = task.getDownloadedId();
-                    final DataSet ds = Main.getLayerManager().getEditDataSet();
-                    if (downloaded != null) {
-                        GuiHelper.runInEDT(new Runnable() {
-                            @Override
-                            public void run() {
-                                ds.setSelected(downloaded);
-                            }
-                        });
-                        Collection<OsmPrimitive> downlPrim = new HashSet<>();
-                        for (PrimitiveId id : downloaded) {
-                            downlPrim.add(ds.getPrimitiveById(id));
-                        }
-                        AddTagsDialog.addTags(args, sender, downlPrim);
+            Main.worker.submit(() -> {
+                final List<PrimitiveId> downloaded = task.getDownloadedId();
+                final DataSet ds = Main.getLayerManager().getEditDataSet();
+                if (downloaded != null) {
+                    GuiHelper.runInEDT(() -> ds.setSelected(downloaded));
+                    Collection<OsmPrimitive> downlPrim = new HashSet<>();
+                    for (PrimitiveId id : downloaded) {
+                        downlPrim.add(ds.getPrimitiveById(id));
                     }
-                    ps.clear();
+                    AddTagsDialog.addTags(args, sender, downlPrim);
                 }
+                ps.clear();
             });
         }
     }
@@ -108,7 +100,7 @@ public class LoadObjectHandler extends RequestHandler {
             try {
                 ps.add(SimplePrimitiveId.fromString(i));
             } catch (IllegalArgumentException e) {
-                Main.warn("RemoteControl: invalid selection '"+i+"' ignored");
+                Main.warn(e, "RemoteControl: invalid selection '"+i+"' ignored.");
             }
         }
     }
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java
index 599aebe..9bba71f 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/OpenFileHandler.java
@@ -42,11 +42,7 @@ public class OpenFileHandler extends RequestHandler {
 
     @Override
     protected void handleRequest() throws RequestHandlerErrorException, RequestHandlerBadRequestException {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                OpenFileAction.openFiles(Arrays.asList(new File(args.get("filename"))));
-            }
-        });
+        GuiHelper.runInEDTAndWait(() -> OpenFileAction.openFiles(Arrays.asList(new File(args.get("filename")))));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
index 6aaa417..2952bfa 100644
--- a/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java
@@ -246,8 +246,8 @@ public abstract class RequestHandler {
         }
         if (error) {
             throw new RequestHandlerBadRequestException(
-                    "The following keys are mandatory, but have not been provided: "
-                    + Utils.join(", ", missingKeys));
+                    tr("The following keys are mandatory, but have not been provided: {0}",
+                            Utils.join(", ", missingKeys)));
         }
     }
 
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/handler/package-info.java b/src/org/openstreetmap/josm/io/remotecontrol/handler/package-info.java
new file mode 100644
index 0000000..beed543
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/remotecontrol/handler/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for remote control handlers (features exposed to the browser).
+ */
+package org.openstreetmap.josm.io.remotecontrol.handler;
diff --git a/src/org/openstreetmap/josm/io/remotecontrol/package-info.java b/src/org/openstreetmap/josm/io/remotecontrol/package-info.java
new file mode 100644
index 0000000..6ea0d9c
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/remotecontrol/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for remote control system.
+ */
+package org.openstreetmap.josm.io.remotecontrol;
diff --git a/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java b/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java
index 7a907df..6d1e3eb 100644
--- a/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/GenericSessionExporter.java
@@ -8,9 +8,7 @@ import java.awt.Font;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -152,18 +150,8 @@ public abstract class GenericSessionExporter<T extends Layer> extends AbstractSe
             cl.show(cards, "include");
         }
 
-        link.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                cl.show(cards, "link");
-            }
-        });
-        include.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                cl.show(cards, "include");
-            }
-        });
+        link.addActionListener(e -> cl.show(cards, "link"));
+        include.addActionListener(e -> cl.show(cards, "include"));
 
         topRow.add(export, GBC.std());
         topRow.add(lbl, GBC.std());
@@ -174,19 +162,16 @@ public abstract class GenericSessionExporter<T extends Layer> extends AbstractSe
         p.add(include, GBC.eol());
         p.add(cards, GBC.eol().insets(15, 0, 3, 3));
 
-        export.addItemListener(new ItemListener() {
-            @Override
-            public void itemStateChanged(ItemEvent e) {
-                if (e.getStateChange() == ItemEvent.DESELECTED) {
-                    GuiHelper.setEnabledRec(p, false);
-                    export.setEnabled(true);
-                } else {
-                    GuiHelper.setEnabledRec(p, true);
-                    if (save != null && saveAction != null) {
-                        save.setEnabled(saveAction.isEnabled());
-                    }
-                    link.setEnabled(file != null && file.exists());
+        export.addItemListener(e -> {
+            if (e.getStateChange() == ItemEvent.DESELECTED) {
+                GuiHelper.setEnabledRec(p, false);
+                export.setEnabled(true);
+            } else {
+                GuiHelper.setEnabledRec(p, true);
+                if (save != null && saveAction != null) {
+                    save.setEnabled(saveAction.isEnabled());
                 }
+                link.setEnabled(file != null && file.exists());
             }
         });
         return p;
diff --git a/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java b/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
index 26b6e46..cc60354 100644
--- a/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
@@ -116,9 +116,7 @@ public class GeoImageSessionImporter implements SessionLayerImporter {
             }
             // TODO: handle thumbnail loading
         } catch (NumberFormatException e) {
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 }
diff --git a/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java b/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
index 47b323c..31988a7 100644
--- a/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
+++ b/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java
@@ -81,13 +81,9 @@ public class ImagerySessionExporter extends AbstractSessionExporter<ImageryLayer
         ImageryPreferenceEntry e = new ImageryPreferenceEntry(layer.getInfo());
         Map<String, String> data = new LinkedHashMap<>(Preferences.serializeStruct(e, ImageryPreferenceEntry.class));
         if (layer instanceof AbstractTileSourceLayer) {
-            AbstractTileSourceLayer tsLayer = (AbstractTileSourceLayer) layer;
-            data.put("automatic-downloading", Boolean.toString(tsLayer.autoLoad));
-            data.put("automatically-change-resolution", Boolean.toString(tsLayer.autoZoom));
-            data.put("show-errors", Boolean.toString(tsLayer.showErrors));
+            AbstractTileSourceLayer<?> tsLayer = (AbstractTileSourceLayer<?>) layer;
+            tsLayer.getDisplaySettings().storeTo(data);
         }
-        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 262790d..df5f135 100644
--- a/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
+++ b/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java
@@ -50,21 +50,8 @@ public class ImagerySessionImporter implements SessionLayerImporter {
         ImageryInfo i = new ImageryInfo(prefEntry);
         ImageryLayer layer = ImageryLayer.create(i);
         if (layer instanceof AbstractTileSourceLayer) {
-            AbstractTileSourceLayer tsLayer = (AbstractTileSourceLayer) layer;
-            if (attributes.containsKey("automatic-downloading")) {
-                tsLayer.autoLoad = Boolean.parseBoolean(attributes.get("automatic-downloading"));
-            }
-
-            if (attributes.containsKey("automatically-change-resolution")) {
-                tsLayer.autoZoom = Boolean.parseBoolean(attributes.get("automatically-change-resolution"));
-            }
-
-            if (attributes.containsKey("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")));
+            AbstractTileSourceLayer<?> tsLayer = (AbstractTileSourceLayer<?>) layer;
+            tsLayer.getDisplaySettings().loadFrom(attributes);
         }
         return layer;
     }
diff --git a/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java b/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
index f2f29d6..f791fa7 100644
--- a/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
+++ b/src/org/openstreetmap/josm/io/session/SessionLayerImporter.java
@@ -12,7 +12,9 @@ import org.w3c.dom.Element;
 /**
  * Session layer importer.
  * @since 4668
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface SessionLayerImporter {
 
     /**
diff --git a/src/org/openstreetmap/josm/io/session/SessionReader.java b/src/org/openstreetmap/josm/io/session/SessionReader.java
index fac766a..f1bf245 100644
--- a/src/org/openstreetmap/josm/io/session/SessionReader.java
+++ b/src/org/openstreetmap/josm/io/session/SessionReader.java
@@ -552,19 +552,17 @@ public class SessionReader {
 
         public void show(final String title, final String message, final int icon, final ProgressMonitor progressMonitor) {
             try {
-                SwingUtilities.invokeAndWait(new Runnable() {
-                    @Override public void run() {
-                        ExtendedDialog dlg = new ExtendedDialog(
-                                Main.parent,
-                                title,
-                                new String[] {tr("Cancel"), tr("Skip layer and continue")}
-                                );
-                        dlg.setButtonIcons(new String[] {"cancel", "dialogs/next"});
-                        dlg.setIcon(icon);
-                        dlg.setContent(message);
-                        dlg.showDialog();
-                        cancel = dlg.getValue() != 2;
-                    }
+                SwingUtilities.invokeAndWait(() -> {
+                    ExtendedDialog dlg = new ExtendedDialog(
+                            Main.parent,
+                            title,
+                            new String[] {tr("Cancel"), tr("Skip layer and continue")}
+                            );
+                    dlg.setButtonIcons(new String[] {"cancel", "dialogs/next"});
+                    dlg.setIcon(icon);
+                    dlg.setContent(message);
+                    dlg.showDialog();
+                    cancel = dlg.getValue() != 2;
                 });
             } catch (InvocationTargetException | InterruptedException ex) {
                 throw new RuntimeException(ex);
@@ -607,7 +605,7 @@ public class SessionReader {
         }
     }
 
-    private static InputStream getZipInputStream(ZipFile zipFile) throws ZipException, IOException, IllegalDataException {
+    private static InputStream getZipInputStream(ZipFile zipFile) throws IOException, IllegalDataException {
         ZipEntry josEntry = null;
         Enumeration<? extends ZipEntry> entries = zipFile.entries();
         while (entries.hasMoreElements()) {
diff --git a/src/org/openstreetmap/josm/io/session/package-info.java b/src/org/openstreetmap/josm/io/session/package-info.java
new file mode 100644
index 0000000..8326f44
--- /dev/null
+++ b/src/org/openstreetmap/josm/io/session/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides the classes for user sessions import/export.
+ */
+package org.openstreetmap.josm.io.session;
diff --git a/src/org/openstreetmap/josm/plugins/Plugin.java b/src/org/openstreetmap/josm/plugins/Plugin.java
index cfb6832..55abcb6 100644
--- a/src/org/openstreetmap/josm/plugins/Plugin.java
+++ b/src/org/openstreetmap/josm/plugins/Plugin.java
@@ -145,11 +145,7 @@ public abstract class Plugin implements MapFrameListener {
         File pluginDir = Main.pref.getPluginsDirectory();
         File pluginJar = new File(pluginDir, info.name + ".jar");
         final URL pluginJarUrl = Utils.fileToURL(pluginJar);
-        return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
-              @Override
-              public ClassLoader run() {
-                  return new URLClassLoader(new URL[] {pluginJarUrl}, Main.class.getClassLoader());
-              }
-        });
+        return AccessController.doPrivileged((PrivilegedAction<ClassLoader>)
+                () -> new URLClassLoader(new URL[] {pluginJarUrl}, Main.class.getClassLoader()));
     }
 }
diff --git a/src/org/openstreetmap/josm/plugins/PluginHandler.java b/src/org/openstreetmap/josm/plugins/PluginHandler.java
index 83c2f64..342caa5 100644
--- a/src/org/openstreetmap/josm/plugins/PluginHandler.java
+++ b/src/org/openstreetmap/josm/plugins/PluginHandler.java
@@ -34,7 +34,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.FutureTask;
 import java.util.jar.JarFile;
@@ -67,6 +66,7 @@ import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -131,6 +131,7 @@ public final class PluginHandler {
             new DeprecatedPlugin("trafficFlowDirection", tr("replaced by new {0} plugin", "ImproveOsm")),
             new DeprecatedPlugin("kendzi3d-jogl", tr("replaced by new {0} plugin", "jogl")),
             new DeprecatedPlugin("josm-geojson", tr("replaced by new {0} plugin", "geojson")),
+            new DeprecatedPlugin("proj4j", inCore),
         });
     }
 
@@ -258,6 +259,7 @@ public final class PluginHandler {
             sources.add(ClassLoader.getSystemClassLoader());
             sources.add(org.openstreetmap.josm.gui.MainApplication.class.getClassLoader());
         } catch (SecurityException ex) {
+            Main.debug(ex);
             sources.add(ImageProvider.class.getClassLoader());
         }
     }
@@ -468,9 +470,7 @@ public final class PluginHandler {
                 try {
                     OnlineResource.JOSM_WEBSITE.checkOfflineAccess(updateSite, Main.getJOSMWebsite());
                 } catch (OfflineAccessException e) {
-                    if (Main.isTraceEnabled()) {
-                        Main.trace(e.getMessage());
-                    }
+                    Main.trace(e);
                     return false;
                 }
             }
@@ -533,43 +533,37 @@ public final class PluginHandler {
         Main.worker.submit(pluginInfoDownloadTask);
 
         // Continuation
-        Main.worker.submit(new Runnable() {
-            @Override
-            public void run() {
-                // Build list of plugins to download
-                Set<PluginInformation> toDownload = new HashSet<>(pluginInfoDownloadTask.getAvailablePlugins());
-                for (Iterator<PluginInformation> it = toDownload.iterator(); it.hasNext();) {
-                    PluginInformation info = it.next();
-                    if (!missingRequiredPlugin.contains(info.getName())) {
-                        it.remove();
-                    }
+        Main.worker.submit(() -> {
+            // Build list of plugins to download
+            Set<PluginInformation> toDownload = new HashSet<>(pluginInfoDownloadTask.getAvailablePlugins());
+            for (Iterator<PluginInformation> it = toDownload.iterator(); it.hasNext();) {
+                PluginInformation info = it.next();
+                if (!missingRequiredPlugin.contains(info.getName())) {
+                    it.remove();
                 }
-                // Check if something has still to be downloaded
-                if (!toDownload.isEmpty()) {
-                    // download plugins
-                    final PluginDownloadTask task = new PluginDownloadTask(parent, toDownload, tr("Download plugins"));
-                    Main.worker.submit(task);
-                    Main.worker.submit(new Runnable() {
-                        @Override
-                        public void run() {
-                            // restart if some plugins have been downloaded
-                            if (!task.getDownloadedPlugins().isEmpty()) {
-                                // update plugin list in preferences
-                                Set<String> plugins = new HashSet<>(Main.pref.getCollection("plugins"));
-                                for (PluginInformation plugin : task.getDownloadedPlugins()) {
-                                    plugins.add(plugin.name);
-                                }
-                                Main.pref.putCollection("plugins", plugins);
-                                // restart
-                                new RestartAction().actionPerformed(null);
-                            } else {
-                                Main.warn("No plugin downloaded, restart canceled");
-                            }
+            }
+            // Check if something has still to be downloaded
+            if (!toDownload.isEmpty()) {
+                // download plugins
+                final PluginDownloadTask task = new PluginDownloadTask(parent, toDownload, tr("Download plugins"));
+                Main.worker.submit(task);
+                Main.worker.submit(() -> {
+                    // restart if some plugins have been downloaded
+                    if (!task.getDownloadedPlugins().isEmpty()) {
+                        // update plugin list in preferences
+                        Set<String> plugins = new HashSet<>(Main.pref.getCollection("plugins"));
+                        for (PluginInformation plugin : task.getDownloadedPlugins()) {
+                            plugins.add(plugin.name);
                         }
-                    });
-                } else {
-                    Main.warn("No plugin to download, operation canceled");
-                }
+                        Main.pref.putCollection("plugins", plugins);
+                        // restart
+                        new RestartAction().actionPerformed(null);
+                    } else {
+                        Main.warn("No plugin downloaded, restart canceled");
+                    }
+                });
+            } else {
+                Main.warn("No plugin to download, operation canceled");
             }
         });
     }
@@ -664,12 +658,8 @@ public final class PluginHandler {
      */
     public static synchronized DynamicURLClassLoader getPluginClassLoader() {
         if (pluginClassLoader == null) {
-            pluginClassLoader = AccessController.doPrivileged(new PrivilegedAction<DynamicURLClassLoader>() {
-                @Override
-                public DynamicURLClassLoader run() {
-                    return new DynamicURLClassLoader(new URL[0], Main.class.getClassLoader());
-                }
-            });
+            pluginClassLoader = AccessController.doPrivileged((PrivilegedAction<DynamicURLClassLoader>)
+                    () -> new DynamicURLClassLoader(new URL[0], Main.class.getClassLoader()));
             sources.add(0, pluginClassLoader);
         }
         return pluginClassLoader;
@@ -757,17 +747,7 @@ public final class PluginHandler {
             // sort the plugins according to their "staging" equivalence class. The
             // lower the value of "stage" the earlier the plugin should be loaded.
             //
-            Collections.sort(
-                    toLoad,
-                    new Comparator<PluginInformation>() {
-                        @Override
-                        public int compare(PluginInformation o1, PluginInformation o2) {
-                            if (o1.stage < o2.stage) return -1;
-                            if (o1.stage == o2.stage) return 0;
-                            return 1;
-                        }
-                    }
-            );
+            toLoad.sort(Comparator.comparingInt(o -> o.stage));
             if (toLoad.isEmpty())
                 return;
 
@@ -995,32 +975,19 @@ public final class PluginHandler {
             monitor.beginTask("");
 
             // try to download the plugin lists
-            //
             ReadRemotePluginInformationTask task1 = new ReadRemotePluginInformationTask(
                     monitor.createSubTaskMonitor(1, false),
                     Main.pref.getOnlinePluginSites(), displayErrMsg
             );
             task1.run();
-            List<PluginInformation> allPlugins = null;
+            List<PluginInformation> allPlugins = task1.getAvailablePlugins();
 
             try {
-                allPlugins = task1.getAvailablePlugins();
                 plugins = buildListOfPluginsToLoad(parent, monitor.createSubTaskMonitor(1, false));
                 // If only some plugins have to be updated, filter the list
                 if (pluginsWanted != null && !pluginsWanted.isEmpty()) {
-                    for (Iterator<PluginInformation> it = plugins.iterator(); it.hasNext();) {
-                        PluginInformation pi = it.next();
-                        boolean found = false;
-                        for (PluginInformation piw : pluginsWanted) {
-                            if (pi.name.equals(piw.name)) {
-                                found = true;
-                                break;
-                            }
-                        }
-                        if (!found) {
-                            it.remove();
-                        }
-                    }
+                    final Collection<String> pluginsWantedName = Utils.transform(pluginsWanted, piw -> piw.name);
+                    plugins = SubclassFilteredCollection.filter(plugins, pi -> pluginsWantedName.contains(pi.name));
                 }
             } catch (RuntimeException e) {
                 Main.warn(tr("Failed to download plugin information list"));
@@ -1029,11 +996,12 @@ public final class PluginHandler {
             }
 
             // filter plugins which actually have to be updated
-            //
             Collection<PluginInformation> pluginsToUpdate = new ArrayList<>();
-            for (PluginInformation pi: plugins) {
-                if (pi.isUpdateRequired()) {
-                    pluginsToUpdate.add(pi);
+            if (plugins != null) {
+                for (PluginInformation pi: plugins) {
+                    if (pi.isUpdateRequired()) {
+                        pluginsToUpdate.add(pi);
+                    }
                 }
             }
 
@@ -1050,14 +1018,14 @@ public final class PluginHandler {
                     // Iterate on required plugins, if they need themselves another plugins (i.e A needs B, but B needs C)
                     while (!additionalPlugins.isEmpty()) {
                         // Install the additional plugins to load them later
-                        plugins.addAll(additionalPlugins);
+                        if (plugins != null)
+                            plugins.addAll(additionalPlugins);
                         additionalPlugins = findRequiredPluginsToDownload(additionalPlugins, allPlugins, pluginsToDownload);
                         pluginsToDownload.addAll(additionalPlugins);
                     }
                 }
 
                 // try to update the locally installed plugins
-                //
                 pluginDownloadTask = new PluginDownloadTask(
                         monitor.createSubTaskMonitor(1, false),
                         pluginsToDownload,
@@ -1073,11 +1041,9 @@ public final class PluginHandler {
                 }
 
                 // Update Plugin info for downloaded plugins
-                //
                 refreshLocalUpdatedPluginInfo(pluginDownloadTask.getDownloadedPlugins());
 
                 // notify user if downloading a locally installed plugin failed
-                //
                 if (!pluginDownloadTask.getFailedPlugins().isEmpty()) {
                     alertFailedPluginUpdate(parent, pluginDownloadTask.getFailedPlugins());
                     return plugins;
@@ -1088,7 +1054,6 @@ public final class PluginHandler {
         }
         if (pluginsWanted == null) {
             // if all plugins updated, remember the update because it was successful
-            //
             Main.pref.putInteger("pluginmanager.version", Version.getInstance().getVersion());
             Main.pref.put("pluginmanager.lastupdate", Long.toString(System.currentTimeMillis()));
         }
@@ -1172,12 +1137,7 @@ public final class PluginHandler {
         if (!pluginDir.exists() || !pluginDir.isDirectory() || !pluginDir.canWrite())
             return;
 
-        final File[] files = pluginDir.listFiles(new FilenameFilter() {
-            @Override
-            public boolean accept(File dir, String name) {
-                return name.endsWith(".jar.new");
-            }
-        });
+        final File[] files = pluginDir.listFiles((FilenameFilter) (dir, name) -> name.endsWith(".jar.new"));
         if (files == null)
             return;
 
@@ -1197,7 +1157,7 @@ public final class PluginHandler {
                 new JarFile(updatedPlugin).close();
             } catch (IOException e) {
                 if (dowarn) {
-                    Main.warn(tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. {2}",
+                    Main.warn(e, tr("Failed to install plugin ''{0}'' from temporary download file ''{1}''. {2}",
                             plugin.toString(), updatedPlugin.toString(), e.getLocalizedMessage()));
                 }
                 continue;
@@ -1308,21 +1268,16 @@ public final class PluginHandler {
            .append("</html>");
 
         try {
-            FutureTask<Integer> task = new FutureTask<>(new Callable<Integer>() {
-                @Override
-                public Integer call() {
-                    return HelpAwareOptionPane.showOptionDialog(
-                            Main.parent,
-                            msg.toString(),
-                            tr("Update plugins"),
-                            JOptionPane.QUESTION_MESSAGE,
-                            null,
-                            options,
-                            options[0],
-                            ht("/ErrorMessages#ErrorInPlugin")
-                    );
-                }
-            });
+            FutureTask<Integer> task = new FutureTask<>(() -> HelpAwareOptionPane.showOptionDialog(
+                    Main.parent,
+                    msg.toString(),
+                    tr("Update plugins"),
+                    JOptionPane.QUESTION_MESSAGE,
+                    null,
+                    options,
+                    options[0],
+                    ht("/ErrorMessages#ErrorInPlugin")
+            ));
             GuiHelper.runInEDT(task);
             return task.get();
         } catch (InterruptedException | ExecutionException e) {
@@ -1393,17 +1348,12 @@ public final class PluginHandler {
             // deactivate the plugin
             plugins.remove(plugin.getPluginInformation().name);
             Main.pref.putCollection("plugins", plugins);
-            GuiHelper.runInEDTAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    JOptionPane.showMessageDialog(
-                            Main.parent,
-                            tr("The plugin has been removed from the configuration. Please restart JOSM to unload the plugin."),
-                            tr("Information"),
-                            JOptionPane.INFORMATION_MESSAGE
-                    );
-                }
-            });
+            GuiHelper.runInEDTAndWait(() -> JOptionPane.showMessageDialog(
+                    Main.parent,
+                    tr("The plugin has been removed from the configuration. Please restart JOSM to unload the plugin."),
+                    tr("Information"),
+                    JOptionPane.INFORMATION_MESSAGE
+            ));
             return null;
         default:
             // user doesn't want to deactivate the plugin
@@ -1413,25 +1363,17 @@ public final class PluginHandler {
 
     /**
      * Returns the list of loaded plugins as a {@code String} to be displayed in status report. Useful for bug reports.
-     * @return The list of loaded plugins (one plugin per line)
+     * @return The list of loaded plugins
      */
-    public static String getBugReportText() {
-        StringBuilder text = new StringBuilder();
-        List<String> pl = new LinkedList<>(Main.pref.getCollection("plugins", new LinkedList<String>()));
+    public static Collection<String> getBugReportInformation() {
+        final Collection<String> pl = new TreeSet<>(Main.pref.getCollection("plugins", new LinkedList<>()));
         for (final PluginProxy pp : pluginList) {
             PluginInformation pi = pp.getPluginInformation();
             pl.remove(pi.name);
             pl.add(pi.name + " (" + (pi.localversion != null && !pi.localversion.isEmpty()
                     ? pi.localversion : "unknown") + ')');
         }
-        Collections.sort(pl);
-        if (!pl.isEmpty()) {
-            text.append("Plugins:\n");
-        }
-        for (String s : pl) {
-            text.append("- ").append(s).append('\n');
-        }
-        return text.toString();
+        return pl;
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/plugins/PluginInformation.java b/src/org/openstreetmap/josm/plugins/PluginInformation.java
index 8020335..81eb35f 100644
--- a/src/org/openstreetmap/josm/plugins/PluginInformation.java
+++ b/src/org/openstreetmap/josm/plugins/PluginInformation.java
@@ -215,6 +215,7 @@ public class PluginInformation {
                 try {
                     s = tr(s);
                 } catch (IllegalArgumentException e) {
+                    Main.debug(e);
                     Main.info(tr("Invalid plugin description ''{0}'' in plugin {1}", s, name));
                 }
             }
diff --git a/src/org/openstreetmap/josm/plugins/PluginProxy.java b/src/org/openstreetmap/josm/plugins/PluginProxy.java
index 07be142..6064deb 100644
--- a/src/org/openstreetmap/josm/plugins/PluginProxy.java
+++ b/src/org/openstreetmap/josm/plugins/PluginProxy.java
@@ -44,6 +44,7 @@ public class PluginProxy extends Plugin {
         try {
             plugin.getClass().getMethod("mapFrameInitialized", MapFrame.class, MapFrame.class).invoke(plugin, oldFrame, newFrame);
         } catch (NoSuchMethodException e) {
+            Main.trace(e);
             Main.debug("Plugin "+plugin+" does not define mapFrameInitialized");
         } catch (InvocationTargetException | IllegalAccessException | IllegalArgumentException e) {
             handlePluginException(e);
@@ -55,6 +56,7 @@ public class PluginProxy extends Plugin {
         try {
             return (PreferenceSetting) plugin.getClass().getMethod("getPreferenceSetting").invoke(plugin);
         } catch (NoSuchMethodException e) {
+            Main.trace(e);
             Main.debug("Plugin "+plugin+" does not define getPreferenceSetting");
             return null;
         } catch (InvocationTargetException | IllegalAccessException | IllegalArgumentException e) {
@@ -68,6 +70,7 @@ public class PluginProxy extends Plugin {
         try {
             plugin.getClass().getMethod("addDownloadSelection", List.class).invoke(plugin, list);
         } catch (NoSuchMethodException e) {
+            Main.trace(e);
             Main.debug("Plugin "+plugin+" does not define addDownloadSelection");
         } catch (InvocationTargetException | IllegalAccessException | IllegalArgumentException e) {
             handlePluginException(e);
diff --git a/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java b/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java
index ab1d8f7..17e1980 100644
--- a/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java
+++ b/src/org/openstreetmap/josm/plugins/ReadLocalPluginInformationTask.java
@@ -46,6 +46,10 @@ public class ReadLocalPluginInformationTask extends PleaseWaitRunnable {
         availablePlugins = new HashMap<>();
     }
 
+    /**
+     * Constructs a new {@code ReadLocalPluginInformationTask}.
+     * @param monitor progress monitor
+     */
     public ReadLocalPluginInformationTask(ProgressMonitor monitor) {
         super(tr("Reading local plugin information.."), monitor, false);
         availablePlugins = new HashMap<>();
@@ -76,14 +80,7 @@ public class ReadLocalPluginInformationTask extends PleaseWaitRunnable {
     }
 
     private static File[] listFiles(File pluginsDirectory, final String regex) {
-        return pluginsDirectory.listFiles(
-                new FilenameFilter() {
-                    @Override
-                    public boolean accept(File dir, String name) {
-                        return name.matches(regex);
-                    }
-                }
-        );
+        return pluginsDirectory.listFiles((FilenameFilter) (dir, name) -> name.matches(regex));
     }
 
     protected void scanSiteCacheFiles(ProgressMonitor monitor, File pluginsDirectory) {
@@ -107,12 +104,7 @@ public class ReadLocalPluginInformationTask extends PleaseWaitRunnable {
 
     protected void scanPluginFiles(ProgressMonitor monitor, File pluginsDirectory) {
         File[] pluginFiles = pluginsDirectory.listFiles(
-                new FilenameFilter() {
-                    @Override
-                    public boolean accept(File dir, String name) {
-                        return name.endsWith(".jar") || name.endsWith(".jar.new");
-                    }
-                }
+                (FilenameFilter) (dir, name) -> name.endsWith(".jar") || name.endsWith(".jar.new")
         );
         if (pluginFiles == null || pluginFiles.length == 0)
             return;
@@ -130,7 +122,7 @@ public class ReadLocalPluginInformationTask extends PleaseWaitRunnable {
                     processJarFile(f, pluginName);
                 }
             } catch (PluginException e) {
-                Main.warn("PluginException: "+e.getMessage());
+                Main.warn(e, "PluginException: ");
                 Main.warn(tr("Failed to scan file ''{0}'' for plugin information. Skipping.", fname));
             }
             monitor.worked(1);
diff --git a/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java b/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
index 4050205..a8654bf 100644
--- a/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
+++ b/src/org/openstreetmap/josm/plugins/ReadRemotePluginInformationTask.java
@@ -199,27 +199,25 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
 
     private static void displayErrorMessage(final ProgressMonitor monitor, final String msg, final String details, final String title,
             final String firstMessage) {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override public void run() {
-                JPanel panel = new JPanel(new GridBagLayout());
-                panel.add(new JLabel(firstMessage), GBC.eol().insets(0, 0, 0, 10));
-                StringBuilder b = new StringBuilder();
-                for (String part : msg.split("(?<=\\G.{200})")) {
-                    b.append(part).append('\n');
-                }
-                panel.add(new JLabel("<html><body width=\"500\"><b>"+b.toString().trim()+"</b></body></html>"), GBC.eol().insets(0, 0, 0, 10));
-                if (details != null && !details.isEmpty()) {
-                    panel.add(new JLabel(tr("Details:")), GBC.eol().insets(0, 0, 0, 10));
-                    JosmTextArea area = new JosmTextArea(details);
-                    area.setEditable(false);
-                    area.setLineWrap(true);
-                    area.setWrapStyleWord(true);
-                    JScrollPane scrollPane = new JScrollPane(area);
-                    scrollPane.setPreferredSize(new Dimension(500, 300));
-                    panel.add(scrollPane, GBC.eol().fill());
-                }
-                JOptionPane.showMessageDialog(monitor.getWindowParent(), panel, title, JOptionPane.ERROR_MESSAGE);
+        GuiHelper.runInEDTAndWait(() -> {
+            JPanel panel = new JPanel(new GridBagLayout());
+            panel.add(new JLabel(firstMessage), GBC.eol().insets(0, 0, 0, 10));
+            StringBuilder b = new StringBuilder();
+            for (String part : msg.split("(?<=\\G.{200})")) {
+                b.append(part).append('\n');
+            }
+            panel.add(new JLabel("<html><body width=\"500\"><b>"+b.toString().trim()+"</b></body></html>"), GBC.eol().insets(0, 0, 0, 10));
+            if (details != null && !details.isEmpty()) {
+                panel.add(new JLabel(tr("Details:")), GBC.eol().insets(0, 0, 0, 10));
+                JosmTextArea area = new JosmTextArea(details);
+                area.setEditable(false);
+                area.setLineWrap(true);
+                area.setWrapStyleWord(true);
+                JScrollPane scrollPane = new JScrollPane(area);
+                scrollPane.setPreferredSize(new Dimension(500, 300));
+                panel.add(scrollPane, GBC.eol().fill());
             }
+            JOptionPane.showMessageDialog(monitor.getWindowParent(), panel, title, JOptionPane.ERROR_MESSAGE);
         });
     }
 
@@ -295,13 +293,8 @@ public class ReadRemotePluginInformationTask extends PleaseWaitRunnable {
         List<File> siteCacheFiles = new LinkedList<>();
         for (String location : PluginInformation.getPluginLocations()) {
             File[] f = new File(location).listFiles(
-                    new FilenameFilter() {
-                        @Override
-                        public boolean accept(File dir, String name) {
-                            return name.matches("^([0-9]+-)?site.*\\.txt$") ||
-                            name.matches("^([0-9]+-)?site.*-icons\\.zip$");
-                        }
-                    }
+                    (FilenameFilter) (dir, name) -> name.matches("^([0-9]+-)?site.*\\.txt$") ||
+                                                    name.matches("^([0-9]+-)?site.*-icons\\.zip$")
             );
             if (f != null && f.length > 0) {
                 siteCacheFiles.addAll(Arrays.asList(f));
diff --git a/src/org/openstreetmap/josm/tools/AudioUtil.java b/src/org/openstreetmap/josm/tools/AudioUtil.java
index dfc0b56..55c3495 100644
--- a/src/org/openstreetmap/josm/tools/AudioUtil.java
+++ b/src/org/openstreetmap/josm/tools/AudioUtil.java
@@ -40,9 +40,7 @@ public final class AudioUtil {
             double calibration = Main.pref.getDouble("audio.calibration", 1.0 /* default, ratio */);
             return naturalLength / calibration;
         } catch (UnsupportedAudioFileException | IOException e) {
-            if (Main.isDebugEnabled()) {
-                Main.debug(e.getMessage());
-            }
+            Main.debug(e);
             return 0.0;
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/Base64.java b/src/org/openstreetmap/josm/tools/Base64.java
deleted file mode 100644
index 5ff21b7..0000000
--- a/src/org/openstreetmap/josm/tools/Base64.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools;
-
-import java.nio.ByteBuffer;
-
-/**
- * This class implements an encoder for encoding byte and character data using the
- * <a href="https://en.wikipedia.org/wiki/Base64">Base64</a> encoding scheme as specified in
- * <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a> ("base64", default) and
- * <a href="http://tools.ietf.org/html/rfc4648#section-4">RFC 4648</a> ("base64url").
- * @since 195
- */
-public final class Base64 {
-    // TODO: Remove this class when switching to Java 8 (finally integrated in Java SE as java.util.Base64.Encoder)
-
-    private Base64() {
-        // Hide default constructor for utils classes
-    }
-
-    /** "base64": RFC 2045 default encoding */
-    private static String encDefault = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-    /** "base64url": RFC 4648 url-safe encoding */
-    private static String encUrlSafe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
-
-    /**
-     * Encodes all characters from the specified string into a new String using the Base64 default encoding scheme.
-     * @param s the string to encode
-     * @return A new string containing the resulting encoded characters.
-     */
-    public static String encode(String s) {
-        return encode(s, false);
-    }
-
-    /**
-     * Encodes all characters from the specified string into a new String using a supported Base64 encoding scheme.
-     * @param s the string to encode
-     * @param urlsafe if {@code true}, uses "base64url" encoding, otherwise use the "base64" default encoding
-     * @return A new string containing the resulting encoded characters.
-     * @since 3840
-     */
-    public static String encode(String s, boolean urlsafe) {
-        StringBuilder out = new StringBuilder();
-        String enc = urlsafe ? encUrlSafe : encDefault;
-        for (int i = 0; i < (s.length()+2)/3; ++i) {
-            int l = Math.min(3, s.length()-i*3);
-            String buf = s.substring(i*3, i*3+l);
-            out.append(enc.charAt(buf.charAt(0) >> 2));
-            out.append(enc.charAt(
-                                  (buf.charAt(0) & 0x03) << 4 |
-                                  (l == 1 ? 0 : (buf.charAt(1) & 0xf0) >> 4)));
-            out.append(l > 1 ? enc.charAt((buf.charAt(1) & 0x0f) << 2 | (l == 2 ? 0 : (buf.charAt(2) & 0xc0) >> 6)) : '=');
-            out.append(l > 2 ? enc.charAt(buf.charAt(2) & 0x3f) : '=');
-        }
-        return out.toString();
-    }
-
-    /**
-     * Encodes all remaining bytes from the specified byte buffer into a new string using the Base64 default encoding scheme.
-     * Upon return, the source buffer's position will be updated to its limit; its limit will not have been changed.
-     * @param s the source ByteBuffer to encode
-     * @return A new string containing the resulting encoded characters.
-     */
-    public static String encode(ByteBuffer s) {
-        return encode(s, false);
-    }
-
-    /**
-     * Encodes all remaining bytes from the specified byte buffer into a new string using a supported Base64 encoding scheme.
-     * Upon return, the source buffer's position will be updated to its limit; its limit will not have been changed.
-     * @param s the source ByteBuffer to encode
-     * @param urlsafe if {@code true}, uses "base64url" encoding, otherwise use the "base64" default encoding
-     * @return A new string containing the resulting encoded characters.
-     * @since 3840
-     */
-    public static String encode(ByteBuffer s, boolean urlsafe) {
-        StringBuilder out = new StringBuilder();
-        String enc = urlsafe ? encUrlSafe : encDefault;
-        // Read 3 bytes at a time.
-        for (int i = 0; i < (s.limit()+2)/3; ++i) {
-            int l = Math.min(3, s.limit()-i*3);
-            int byte0 = s.get() & 0xff;
-            int byte1 = l > 1 ? s.get() & 0xff : 0;
-            int byte2 = l > 2 ? s.get() & 0xff : 0;
-
-            out.append(enc.charAt(byte0 >> 2));
-            out.append(enc.charAt(
-                                  (byte0 & 0x03) << 4 |
-                                  (l == 1 ? 0 : (byte1 & 0xf0) >> 4)));
-            out.append(l > 1 ? enc.charAt((byte1 & 0x0f) << 2 | (l == 2 ? 0 : (byte2 & 0xc0) >> 6)) : '=');
-            out.append(l > 2 ? enc.charAt(byte2 & 0x3f) : '=');
-        }
-        return out.toString();
-    }
-}
diff --git a/src/org/openstreetmap/josm/tools/Destroyable.java b/src/org/openstreetmap/josm/tools/Destroyable.java
index ed2544d..0926537 100644
--- a/src/org/openstreetmap/josm/tools/Destroyable.java
+++ b/src/org/openstreetmap/josm/tools/Destroyable.java
@@ -7,7 +7,10 @@ package org.openstreetmap.josm.tools;
  * on those objects.
  *
  * @author immanuel.scholz
+ * @since   208 (creation)
+ * @since 10600 (functional interface)
  */
+ at FunctionalInterface
 public interface Destroyable {
 
     /**
diff --git a/src/org/openstreetmap/josm/tools/Diff.java b/src/org/openstreetmap/josm/tools/Diff.java
index ba4afae..08d6379 100644
--- a/src/org/openstreetmap/josm/tools/Diff.java
+++ b/src/org/openstreetmap/josm/tools/Diff.java
@@ -178,7 +178,10 @@ public class Diff {
                 --fmax;
             }
             for (d = fmax; d >= fmin; d -= 2) {
-                int x, y, tlo = fd[fdiagoff + d - 1], thi = fd[fdiagoff + d + 1];
+                int x;
+                int y;
+                int tlo = fd[fdiagoff + d - 1];
+                int thi = fd[fdiagoff + d + 1];
 
                 if (tlo >= thi) {
                     x = tlo + 1;
@@ -290,22 +293,24 @@ public class Diff {
 
     /** Discard lines from one file that have no matches in the other file.
      */
-    private void discard_confusing_lines() {
-        filevec[0].discard_confusing_lines(filevec[1]);
-        filevec[1].discard_confusing_lines(filevec[0]);
+    private void discardConfusingLines() {
+        filevec[0].discardConfusingLines(filevec[1]);
+        filevec[1].discardConfusingLines(filevec[0]);
     }
 
     /**
      * Adjust inserts/deletes of blank lines to join changes as much as possible.
      */
-    private void shift_boundaries() {
-        filevec[0].shift_boundaries(filevec[1]);
-        filevec[1].shift_boundaries(filevec[0]);
+    private void shiftBoundaries() {
+        filevec[0].shiftBoundaries(filevec[1]);
+        filevec[1].shiftBoundaries(filevec[0]);
     }
 
     /**
      * Script builder.
+     * @since 10600 (functional interface)
      */
+    @FunctionalInterface
     public interface ScriptBuilder {
         /**
          * Scan the tables of which lines are inserted and deleted, producing an edit script.
@@ -314,19 +319,20 @@ public class Diff {
          * @param changed1 true for lines in 2nd file which do not match 1st
          * @param len1 number of lines in 2nd file
          * @return a linked list of changes - or null
+         * @since 10600 (renamed)
          */
-        Change build_script(
+        Change buildScript(
                 boolean[] changed0, int len0,
                 boolean[] changed1, int len1
         );
     }
 
-    /** Scan the tables of which lines are inserted and deleted,
-     producing an edit script in reverse order.  */
-
+    /**
+     * Scan the tables of which lines are inserted and deleted, producing an edit script in reverse order.
+     */
     static class ReverseScript implements ScriptBuilder {
         @Override
-        public Change build_script(
+        public Change buildScript(
                 final boolean[] changed0, int len0,
                 final boolean[] changed1, int len1) {
             Change script = null;
@@ -359,7 +365,7 @@ public class Diff {
         /** Scan the tables of which lines are inserted and deleted,
             producing an edit script in forward order.  */
         @Override
-        public Change build_script(
+        public Change buildScript(
                 final boolean[] changed0, int len0,
                 final boolean[] changed1, int len1) {
             Change script = null;
@@ -399,7 +405,7 @@ public class Diff {
      * @param reverse if {@code true} use {@link #reverseScript} else use {@link #forwardScript}
      * @return the differences of two files
      */
-    public final Change diff_2(final boolean reverse) {
+    public final Change diff2(final boolean reverse) {
         return diff(reverse ? reverseScript : forwardScript);
     }
 
@@ -416,7 +422,7 @@ public class Diff {
 
         // Some lines are obviously insertions or deletions because they don't match anything.
         // Detect them now, and avoid even thinking about them in the main comparison algorithm.
-        discard_confusing_lines();
+        discardConfusingLines();
 
         // Now do the main comparison algorithm, considering just the undiscarded lines.
         xvec = filevec[0].undiscarded;
@@ -434,10 +440,10 @@ public class Diff {
         bdiag = null;
 
         // Modify the results slightly to make them prettier in cases where that can validly be done.
-        shift_boundaries();
+        shiftBoundaries();
 
         // Get the results of comparison in the form of a chain of `struct change's -- an edit script.
-        return bld.build_script(
+        return bld.buildScript(
                 filevec[0].changedFlag,
                 filevec[0].bufferedLines,
                 filevec[1].changedFlag,
@@ -543,7 +549,7 @@ public class Diff {
          * When we discard a line, we also mark it as a deletion or insertion so that it will be printed in the output.
          * @param f the other file
          */
-        void discard_confusing_lines(FileData f) {
+        void discardConfusingLines(FileData f) {
             clear();
             // Set up table of which lines are going to be discarded.
             final byte[] discarded = discardable(f.equivCount());
@@ -563,7 +569,7 @@ public class Diff {
          * @return 0=nondiscardable, 1=discardable or 2=provisionally discardable for each line
          * @see #equivCount()
          */
-        private byte[] discardable(final int[] counts) {
+        private byte[] discardable(final int ... counts) {
             final int end = bufferedLines;
             final byte[] discards = new byte[end];
             final int[] equivs = this.equivs;
@@ -745,19 +751,16 @@ public class Diff {
             }
         }
 
-        /** Adjust inserts/deletes of blank lines to join changes
-       as much as possible.
-
-       We do something when a run of changed lines include a blank
-       line at one end and have an excluded blank line at the other.
-       We are free to choose which blank line is included.
-       `compareseq' always chooses the one at the beginning,
-       but usually it is cleaner to consider the following blank line
-       to be the "change".  The only exception is if the preceding blank line
-       would join this change to other changes.
-      @param f the file being compared against
+        /**
+         * Adjust inserts/deletes of blank lines to join changes as much as possible.
+         *
+         * We do something when a run of changed lines include a blank line at one end and have an excluded blank line at the other.
+         * We are free to choose which blank line is included.
+         * `compareseq' always chooses the one at the beginning, but usually it is cleaner to consider the following blank line
+         * to be the "change". The only exception is if the preceding blank line would join this change to other changes.
+         * @param f the file being compared against
          */
-        void shift_boundaries(FileData f) {
+        void shiftBoundaries(FileData f) {
             final boolean[] changed = changedFlag;
             final boolean[] otherChanged = f.changedFlag;
             int i = 0;
diff --git a/src/org/openstreetmap/josm/tools/ExceptionUtil.java b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
index 68284a5..cda0a7e 100644
--- a/src/org/openstreetmap/josm/tools/ExceptionUtil.java
+++ b/src/org/openstreetmap/josm/tools/ExceptionUtil.java
@@ -140,13 +140,7 @@ public final class ExceptionUtil {
         if (conflict != null) {
             OsmPrimitive firstRefs = conflict.b.iterator().next();
             String objId = Long.toString(conflict.a.getId());
-            Collection<Long> refIds = Utils.transform(conflict.b, new Utils.Function<OsmPrimitive, Long>() {
-
-                @Override
-                public Long apply(OsmPrimitive x) {
-                    return x.getId();
-                }
-            });
+            Collection<Long> refIds = Utils.transform(conflict.b, OsmPrimitive::getId);
             String refIdsString = refIds.size() == 1 ? refIds.iterator().next().toString() : refIds.toString();
             if (conflict.a instanceof Node) {
                 if (firstRefs instanceof Node) {
@@ -480,9 +474,7 @@ public final class ExceptionUtil {
             host = new URL(apiUrl).getHost();
         } catch (MalformedURLException ex) {
             // shouldn't happen
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(ex);
         }
 
         return tr("<html>Failed to open a connection to the remote server<br>" + "''{0}''<br>"
@@ -629,9 +621,7 @@ public final class ExceptionUtil {
             host = new URL(apiUrl).getHost();
         } catch (MalformedURLException ex) {
             // shouldn't happen
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
 
         Main.error(e);
diff --git a/src/org/openstreetmap/josm/tools/FilteredCollection.java b/src/org/openstreetmap/josm/tools/FilteredCollection.java
index c9ff885..50f10a9 100644
--- a/src/org/openstreetmap/josm/tools/FilteredCollection.java
+++ b/src/org/openstreetmap/josm/tools/FilteredCollection.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.tools;
 
 import java.util.Collection;
+import java.util.function.Predicate;
 
 /**
  * The same as SubclassFilteredCollection, but does not restrict the type
diff --git a/src/org/openstreetmap/josm/tools/GBC.java b/src/org/openstreetmap/josm/tools/GBC.java
index 7dd8553..e501edd 100644
--- a/src/org/openstreetmap/josm/tools/GBC.java
+++ b/src/org/openstreetmap/josm/tools/GBC.java
@@ -96,6 +96,17 @@ public final class GBC extends GridBagConstraints {
     }
 
     /**
+     * Adds insets to this GBC.
+     * @param insets The insets in all directions.
+     * @return This constraint for chaining.
+     * @since 10649
+     */
+    public GBC insets(int insets) {
+        insets(insets, insets, insets, insets);
+        return this;
+    }
+
+    /**
      * Specifies how to distribute extra horizontal space.
      * @param weightx   Weight in horizontal direction
      * @param weighty   Weight in vertical direction
diff --git a/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java b/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java
new file mode 100644
index 0000000..63a412d
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/GeoUrlToBounds.java
@@ -0,0 +1,58 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Bounds;
+
+/**
+ * Parses a Geo URL (as specified in <a href="https://tools.ietf.org/html/rfc5870">RFC 5870</a>) into {@link Bounds}.
+ */
+public final class GeoUrlToBounds {
+
+    public static final Pattern PATTERN = Pattern.compile("geo:(?<lat>[+-]?[0-9.]+),(?<lon>[+-]?[0-9.]+)(\\?z=(?<zoom>[0-9]+))?");
+
+    private GeoUrlToBounds() {
+        // Hide default constructor for utils classes
+    }
+
+    /**
+     * Parses a Geo URL (as specified in <a href="https://tools.ietf.org/html/rfc5870">RFC 5870</a>) into {@link Bounds}.
+     * @param url the URL to be parsed
+     * @return the parsed {@link Bounds}
+     */
+    public static Bounds parse(final String url) {
+        CheckParameterUtil.ensureParameterNotNull(url, "url");
+        final Matcher m = PATTERN.matcher(url);
+        if (m.matches()) {
+            final double lat;
+            final double lon;
+            final int zoom;
+            try {
+                lat = Double.parseDouble(m.group("lat"));
+            } catch (NumberFormatException e) {
+                Main.warn(tr("URL does not contain valid {0}", tr("latitude")), e);
+                return null;
+            }
+            try {
+                lon = Double.parseDouble(m.group("lon"));
+            } catch (NumberFormatException e) {
+                Main.warn(tr("URL does not contain valid {0}", tr("longitude")), e);
+                return null;
+            }
+            try {
+                zoom = m.group("zoom") != null ? Integer.parseInt(m.group("zoom")) : 18;
+            } catch (NumberFormatException e) {
+                Main.warn(tr("URL does not contain valid {0}", tr("zoom")), e);
+                return null;
+            }
+            return OsmUrlToBounds.positionToBounds(lat, lon, zoom);
+        } else {
+            return null;
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/Geometry.java b/src/org/openstreetmap/josm/tools/Geometry.java
index 4e955e3..2b0437b 100644
--- a/src/org/openstreetmap/josm/tools/Geometry.java
+++ b/src/org/openstreetmap/josm/tools/Geometry.java
@@ -15,6 +15,7 @@ import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.AddCommand;
@@ -563,9 +564,9 @@ public final class Geometry {
 
         if (inter.isEmpty() || bounds.getHeight()*bounds.getWidth() <= eps) {
             return PolygonIntersection.OUTSIDE;
-        } else if (inter.equals(a1)) {
+        } else if (a2.getBounds2D().contains(a1.getBounds2D()) && inter.equals(a1)) {
             return PolygonIntersection.FIRST_INSIDE_SECOND;
-        } else if (inter.equals(a2)) {
+        } else if (a1.getBounds2D().contains(a2.getBounds2D()) && inter.equals(a2)) {
             return PolygonIntersection.SECOND_INSIDE_FIRST;
         } else {
             return PolygonIntersection.CROSSING;
@@ -910,6 +911,7 @@ public final class Geometry {
             outerRings = MultipolygonBuilder.joinWays(mpm.outers);
             innerRings = MultipolygonBuilder.joinWays(mpm.inners);
         } catch (MultipolygonBuilder.JoinedPolygonCreationException ex) {
+            Main.trace(ex);
             Main.debug("Invalid multipolygon " + multiPolygon);
             return false;
         }
@@ -933,7 +935,7 @@ public final class Geometry {
                 // Inside outer but not inside inner -> the polygon appears to be inside a the multipolygon
                 if (!insideInner) {
                     // Final check using predicate
-                    if (isOuterWayAMatch == null || isOuterWayAMatch.evaluate(out.ways.get(0)
+                    if (isOuterWayAMatch == null || isOuterWayAMatch.test(out.ways.get(0)
                             /* TODO give a better representation of the outer ring to the predicate */)) {
                         return true;
                     }
diff --git a/src/org/openstreetmap/josm/tools/I18n.java b/src/org/openstreetmap/josm/tools/I18n.java
index c2f3ef3..79a4105 100644
--- a/src/org/openstreetmap/josm/tools/I18n.java
+++ b/src/org/openstreetmap/josm/tools/I18n.java
@@ -231,12 +231,12 @@ public final class I18n {
         return MessageFormat.format(gettext(text, context), (Object) null);
     }
 
-    public static String trc_lazy(String context, String text) {
+    public static String trcLazy(String context, String text) {
         if (context == null)
             return tr(text);
         if (text == null)
             return null;
-        return MessageFormat.format(gettext_lazy(text, context), (Object) null);
+        return MessageFormat.format(gettextLazy(text, context), (Object) null);
     }
 
     /**
@@ -336,7 +336,7 @@ public final class I18n {
     }
 
     /* try without context, when context try fails */
-    private static String gettext_lazy(String text, String ctx) {
+    private static String gettextLazy(String text, String ctx) {
         return gettext(text, ctx, true);
     }
 
@@ -381,12 +381,7 @@ public final class I18n {
         v.add(Locale.ENGLISH);
         Locale[] l = new Locale[v.size()];
         l = v.toArray(l);
-        Arrays.sort(l, new Comparator<Locale>() {
-            @Override
-            public int compare(Locale o1, Locale o2) {
-                return o1.toString().compareTo(o2.toString());
-            }
-        });
+        Arrays.sort(l, Comparator.comparing(Locale::toString));
         return l;
     }
 
@@ -491,9 +486,7 @@ public final class I18n {
             }
         } catch (IOException e) {
             // Ignore
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 
@@ -523,9 +516,7 @@ public final class I18n {
             }
         } catch (IOException e) {
             // Ignore exception
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
         return false;
     }
@@ -651,6 +642,7 @@ public final class I18n {
                 }
             }
         } catch (IOException e) {
+            Main.trace(e);
             return false;
         }
         if (!s.isEmpty()) {
@@ -742,12 +734,7 @@ public final class I18n {
     }
 
     public static TranslationAdapter getTranslationAdapter() {
-        return new TranslationAdapter() {
-            @Override
-            public String tr(String text, Object... objects) {
-                return I18n.tr(text, objects);
-            }
-        };
+        return I18n::tr;
     }
 
     /**
diff --git a/src/org/openstreetmap/josm/tools/ImageProvider.java b/src/org/openstreetmap/josm/tools/ImageProvider.java
index d46e495..f14fda5 100644
--- a/src/org/openstreetmap/josm/tools/ImageProvider.java
+++ b/src/org/openstreetmap/josm/tools/ImageProvider.java
@@ -31,8 +31,8 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Base64;
 import java.util.Collection;
-import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -40,6 +40,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeSet;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.regex.Matcher;
@@ -54,7 +55,7 @@ import javax.imageio.ImageReader;
 import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.stream.ImageInputStream;
 import javax.swing.ImageIcon;
-import javax.xml.bind.DatatypeConverter;
+import javax.xml.parsers.ParserConfigurationException;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -75,12 +76,10 @@ import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.Attributes;
-import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
 
 import com.kitfox.svg.SVGDiagram;
 import com.kitfox.svg.SVGException;
@@ -291,7 +290,7 @@ public class ImageProvider {
     /** ordered list of overlay images */
     protected List<ImageOverlay> overlayInfo;
     /** <code>true</code> if icon must be grayed out */
-    protected boolean isDisabled = false;
+    protected boolean isDisabled;
 
     private static SVGUniverse svgUniverse;
 
@@ -309,29 +308,6 @@ public class ImageProvider {
             Executors.newSingleThreadExecutor(Utils.newThreadFactory("image-fetcher-%d", Thread.NORM_PRIORITY));
 
     /**
-     * Callback interface for asynchronous image loading.
-     */
-    public interface ImageCallback {
-        /**
-         * Called when image loading has finished.
-         * @param result the loaded image icon
-         */
-        void finished(ImageIcon result);
-    }
-
-    /**
-     * Callback interface for asynchronous image loading (with delayed scaling possibility).
-     * @since 7693
-     */
-    public interface ImageResourceCallback {
-        /**
-         * Called when image loading has finished.
-         * @param result the loaded image resource
-         */
-        void finished(ImageResource result);
-    }
-
-    /**
      * Constructs a new {@code ImageProvider} from a filename in a given directory.
      * @param subdir subdirectory the image lies in
      * @param name the name of the image. If it does not end with '.png' or '.svg',
@@ -650,6 +626,20 @@ public class ImageProvider {
     }
 
     /**
+     * Load the image in a background thread.
+     *
+     * This method returns immediately and runs the image request asynchronously.
+     *
+     * @return the future of the requested image
+     * @since 10714
+     */
+    public CompletableFuture<ImageIcon> getAsync() {
+        return name.startsWith(HTTP_PROTOCOL) || name.startsWith(WIKI_PROTOCOL)
+                ? CompletableFuture.supplyAsync(this::get, IMAGE_FETCHER)
+                : CompletableFuture.completedFuture(get());
+    }
+
+    /**
      * Execute the image request.
      *
      * @return the requested image or null if the request failed
@@ -682,54 +672,15 @@ public class ImageProvider {
     /**
      * Load the image in a background thread.
      *
-     * This method returns immediately and runs the image request
-     * asynchronously.
-     *
-     * @param callback a callback. It is called, when the image is ready.
-     * This can happen before the call to this method returns or it may be
-     * invoked some time (seconds) later. If no image is available, a null
-     * value is returned to callback (just like {@link #get}).
-     */
-    public void getInBackground(final ImageCallback callback) {
-        if (name.startsWith(HTTP_PROTOCOL) || name.startsWith(WIKI_PROTOCOL)) {
-            Runnable fetch = new Runnable() {
-                @Override
-                public void run() {
-                    ImageIcon result = get();
-                    callback.finished(result);
-                }
-            };
-            IMAGE_FETCHER.submit(fetch);
-        } else {
-            ImageIcon result = get();
-            callback.finished(result);
-        }
-    }
-
-    /**
-     * Load the image in a background thread.
-     *
-     * This method returns immediately and runs the image request
-     * asynchronously.
+     * This method returns immediately and runs the image request asynchronously.
      *
-     * @param callback a callback. It is called, when the image is ready.
-     * This can happen before the call to this method returns or it may be
-     * invoked some time (seconds) later. If no image is available, a null
-     * value is returned to callback (just like {@link #get}).
-     * @since 7693
+     * @return the future of the requested image
+     * @since 10714
      */
-    public void getInBackground(final ImageResourceCallback callback) {
-        if (name.startsWith(HTTP_PROTOCOL) || name.startsWith(WIKI_PROTOCOL)) {
-            Runnable fetch = new Runnable() {
-                @Override
-                public void run() {
-                    callback.finished(getResource());
-                }
-            };
-            IMAGE_FETCHER.submit(fetch);
-        } else {
-            callback.finished(getResource());
-        }
+    public CompletableFuture<ImageResource> getResourceAsync() {
+        return name.startsWith(HTTP_PROTOCOL) || name.startsWith(WIKI_PROTOCOL)
+                ? CompletableFuture.supplyAsync(this::getResource, IMAGE_FETCHER)
+                : CompletableFuture.completedFuture(getResource());
     }
 
     /**
@@ -972,13 +923,14 @@ public class ImageProvider {
                 try {
                     img = read(Utils.fileToURL(cf.getFile()), false, false);
                 } catch (IOException e) {
-                    Main.warn("IOException while reading HTTP image: "+e.getMessage());
+                    Main.warn(e, "IOException while reading HTTP image:");
                 }
                 return img == null ? null : new ImageResource(img);
             default:
                 throw new AssertionError();
             }
         } catch (IOException e) {
+            Main.debug(e);
             return null;
         } finally {
             cf.close();
@@ -998,12 +950,12 @@ public class ImageProvider {
             String data = m.group(3);
             byte[] bytes;
             if (";base64".equals(base64)) {
-                bytes = DatatypeConverter.parseBase64Binary(data);
+                bytes = Base64.getDecoder().decode(data);
             } else {
                 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(ex, "Unable to decode URL data part: "+ex.getMessage() + " (" + data + ')');
                     return null;
                 }
             }
@@ -1025,12 +977,12 @@ public class ImageProvider {
                     // See #10479: for PNG files, always enforce transparency to be sure tNRS chunk is used even not in paletted mode
                     // This can be removed if someday Oracle fixes https://bugs.openjdk.java.net/browse/JDK-6788458
                     // CHECKSTYLE.OFF: LineLength
-                    // hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/828c4fedd29f/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
+                    // hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dc4322602480/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
                     // CHECKSTYLE.ON: LineLength
                     Image img = read(new ByteArrayInputStream(bytes), false, true);
                     return img == null ? null : new ImageResource(img);
                 } catch (IOException e) {
-                    Main.warn("IOException while reading image: "+e.getMessage());
+                    Main.warn(e, "IOException while reading image:");
                 }
             }
         }
@@ -1124,7 +1076,7 @@ public class ImageProvider {
                 }
             }
         } catch (IOException e) {
-            Main.warn(tr("Failed to handle zip file ''{0}''. Exception was: {1}", archive.getName(), e.toString()));
+            Main.warn(e, tr("Failed to handle zip file ''{0}''. Exception was: {1}", archive.getName(), e.toString()));
         }
         return null;
     }
@@ -1150,7 +1102,7 @@ public class ImageProvider {
             try {
                 // See #10479: for PNG files, always enforce transparency to be sure tNRS chunk is used even not in paletted mode
                 // This can be removed if someday Oracle fixes https://bugs.openjdk.java.net/browse/JDK-6788458
-                // hg.openjdk.java.net/jdk7u/jdk7u/jdk/file/828c4fedd29f/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
+                // hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dc4322602480/src/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java#l656
                 img = read(path, false, true);
                 if (Main.isDebugEnabled() && isTransparencyForced(img)) {
                     Main.debug("Transparency has been forced for image "+path.toExternalForm());
@@ -1195,7 +1147,7 @@ public class ImageProvider {
                     if (u != null)
                         return u;
                 } catch (SecurityException e) {
-                    Main.warn(tr(
+                    Main.warn(e, tr(
                             "Failed to access directory ''{0}'' for security reasons. Exception was: {1}",
                             name, e.toString()));
                 }
@@ -1210,7 +1162,7 @@ public class ImageProvider {
                 if (u != null)
                     return u;
             } catch (SecurityException e) {
-                Main.warn(tr(
+                Main.warn(e, tr(
                         "Failed to access directory ''{0}'' for security reasons. Exception was: {1}", dir, e
                         .toString()));
             }
@@ -1263,7 +1215,7 @@ public class ImageProvider {
      */
     private static String getImgUrlFromWikiInfoPage(final String base, final String fn) {
         try {
-            final XMLReader parser = XMLReaderFactory.createXMLReader();
+            final XMLReader parser = Utils.newSafeSAXParser().getXMLReader();
             parser.setContentHandler(new DefaultHandler() {
                 @Override
                 public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
@@ -1275,12 +1227,7 @@ public class ImageProvider {
                 }
             });
 
-            parser.setEntityResolver(new EntityResolver() {
-                @Override
-                public InputSource resolveEntity(String publicId, String systemId) {
-                    return new InputSource(new ByteArrayInputStream(new byte[0]));
-                }
-            });
+            parser.setEntityResolver((publicId, systemId) -> new InputSource(new ByteArrayInputStream(new byte[0])));
 
             CachedFile cf = new CachedFile(base + fn).setDestDir(
                     new File(Main.pref.getUserDataDirectory(), "images").getPath());
@@ -1289,8 +1236,9 @@ public class ImageProvider {
             }
             cf.close();
         } catch (SAXReturnException r) {
+            Main.trace(r);
             return r.getResult();
-        } catch (IOException | SAXException e) {
+        } catch (IOException | SAXException | ParserConfigurationException e) {
             Main.warn("Parsing " + base + fn + " failed:\n" + e);
             return null;
         }
@@ -1503,13 +1451,10 @@ public class ImageProvider {
 
         // Check if the presets have icons for nodes/relations.
         if (!OsmPrimitiveType.WAY.equals(primitive.getType())) {
-            final Collection<TaggingPreset> presets = new TreeSet<>(new Comparator<TaggingPreset>() {
-                @Override
-                public int compare(TaggingPreset o1, TaggingPreset o2) {
-                    final int o1TypesSize = o1.types == null || o1.types.isEmpty() ? Integer.MAX_VALUE : o1.types.size();
-                    final int o2TypesSize = o2.types == null || o2.types.isEmpty() ? Integer.MAX_VALUE : o2.types.size();
-                    return Integer.compare(o1TypesSize, o2TypesSize);
-                }
+            final Collection<TaggingPreset> presets = new TreeSet<>((o1, o2) -> {
+                final int o1TypesSize = o1.types == null || o1.types.isEmpty() ? Integer.MAX_VALUE : o1.types.size();
+                final int o2TypesSize = o2.types == null || o2.types.isEmpty() ? Integer.MAX_VALUE : o2.types.size();
+                return Integer.compare(o1TypesSize, o2TypesSize);
             });
             presets.addAll(TaggingPresets.getMatchingPresets(primitive));
             for (final TaggingPreset preset : presets) {
@@ -1530,6 +1475,9 @@ public class ImageProvider {
      * @return an image from the given SVG data at the desired dimension.
      */
     public static BufferedImage createImageFromSvg(SVGDiagram svg, Dimension dim) {
+        if (Main.isTraceEnabled()) {
+            Main.trace(String.format("createImageFromSvg: %s %s", svg.getXMLBase(), dim));
+        }
         float sourceWidth = svg.getWidth();
         float sourceHeight = svg.getHeight();
         int realWidth = Math.round(GuiSizesHelper.getSizeDpiAdjusted(sourceWidth));
@@ -1566,7 +1514,7 @@ public class ImageProvider {
                 svg.render(g);
             }
         } catch (SVGException ex) {
-            Main.error("Unable to load svg: {0}", ex.getMessage());
+            Main.error(ex, "Unable to load svg:");
             return null;
         }
         return img;
@@ -1808,7 +1756,7 @@ public class ImageProvider {
      * @param reader The image reader
      * @return the {@code TransparentColor} defined in image reader metadata, or {@code null}
      * @throws IOException if an error occurs during reading
-     * @see <a href="http://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/doc-files/standard_metadata.html">javax_imageio_1.0 metadata</a>
+     * @see <a href="http://docs.oracle.com/javase/8/docs/api/javax/imageio/metadata/doc-files/standard_metadata.html">javax_imageio_1.0 metadata</a>
      * @since 7499
      */
     public static Color getTransparentColor(ColorModel model, ImageReader reader) throws IOException {
@@ -1857,7 +1805,7 @@ public class ImageProvider {
         return null;
     }
 
-    private static Color parseRGB(String[] s) {
+    private static Color parseRGB(String ... s) {
         int[] rgb = new int[3];
         try {
             for (int i = 0; i < 3; i++) {
diff --git a/src/org/openstreetmap/josm/tools/ImageResource.java b/src/org/openstreetmap/josm/tools/ImageResource.java
index 28e2c30..e24db54 100644
--- a/src/org/openstreetmap/josm/tools/ImageResource.java
+++ b/src/org/openstreetmap/josm/tools/ImageResource.java
@@ -48,7 +48,7 @@ public class ImageResource {
     /**
      * <code>true</code> if icon must be grayed out
      */
-    protected boolean isDisabled = false;
+    protected boolean isDisabled;
     /**
      * The base raster image for the final output
      */
@@ -197,6 +197,9 @@ public class ImageResource {
         if (isDisabled) {
             //Use default Swing functionality to make icon look disabled by applying grayscaling filter.
             Icon disabledIcon = UIManager.getLookAndFeel().getDisabledIcon(null, new ImageIcon(bimg));
+            if (disabledIcon == null) {
+                return null;
+            }
 
             //Convert Icon to ImageIcon with BufferedImage inside
             bimg = new BufferedImage(bimg.getWidth(), bimg.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
diff --git a/src/org/openstreetmap/josm/tools/MemoryManager.java b/src/org/openstreetmap/josm/tools/MemoryManager.java
new file mode 100644
index 0000000..3da0329
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/MemoryManager.java
@@ -0,0 +1,190 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Supplier;
+
+import org.openstreetmap.josm.Main;
+
+/**
+ * This class allows all components of JOSM to register reclaimable amounts to memory.
+ * <p>
+ * It can be used to hold imagery caches or other data that can be reconstructed form disk/web if required.
+ * <p>
+ * Reclaimable storage implementations may be added in the future.
+ *
+ * @author Michael Zangl
+ * @since 10588
+ */
+public class MemoryManager {
+    /**
+     * assumed minimum JOSM memory footprint
+     */
+    private static final long JOSM_CORE_FOOTPRINT = 50L * 1024L * 1024L;
+
+    private static final MemoryManager INSTANCE = new MemoryManager();
+
+    private final ArrayList<MemoryHandle<?>> activeHandles = new ArrayList<>();
+
+    protected MemoryManager() {
+    }
+
+    /**
+     * Allocates a basic, fixed memory size.
+     * <p>
+     * If there is enough free memory, the factory is used to procude one element which is then returned as memory handle.
+     * <p>
+     * You should invoke {@link MemoryHandle#free()} if you do not need that handle any more.
+     * @param <T> The content type of the memory-
+     * @param name A name for the memory area. Only used for debugging.
+     * @param maxBytes The maximum amount of bytes the content may have
+     * @param factory The factory to use to procude the content if there is sufficient memory.
+     * @return A memory handle to the content.
+     * @throws NotEnoughMemoryException If there is not enough memory to allocate.
+     */
+    public synchronized <T> MemoryHandle<T> allocateMemory(String name, long maxBytes, Supplier<T> factory) throws NotEnoughMemoryException {
+        if (isAvailable(maxBytes)) {
+            T content = factory.get();
+            if (content == null) {
+                throw new IllegalArgumentException("Factory did not return a content element.");
+            }
+            Main.info(MessageFormat.format("Allocate for {0}: {1} MB of memory. Available: {2} MB.",
+                    name, maxBytes / 1024 / 1024, getAvailableMemory() / 1024 / 1024));
+            MemoryHandle<T> handle = new ManualFreeMemoryHandle<>(name, content, maxBytes);
+            activeHandles.add(handle);
+            return handle;
+        } else {
+            throw new NotEnoughMemoryException(maxBytes);
+        }
+    }
+
+    /**
+     * Check if that memory is available
+     * @param maxBytes The memory to check for
+     * @return <code>true</code> if that memory is available.
+     */
+    public synchronized boolean isAvailable(long maxBytes) {
+        if (maxBytes < 0) {
+            throw new IllegalArgumentException(MessageFormat.format("Cannot allocate negative number of bytes: {0}", maxBytes));
+        }
+        return getAvailableMemory() >= maxBytes;
+    }
+
+    /**
+     * Gets the maximum amount of memory available for use in this manager.
+     * @return The maximum amount of memory.
+     */
+    public synchronized long getMaxMemory() {
+        return Runtime.getRuntime().maxMemory() - JOSM_CORE_FOOTPRINT;
+    }
+
+    /**
+     * Gets the memory that is considered free.
+     * @return The memory that can be used for new allocations.
+     */
+    public synchronized long getAvailableMemory() {
+        return getMaxMemory() - activeHandles.stream().mapToLong(MemoryHandle::getSize).sum();
+    }
+
+    /**
+     * Get the global memory manager instance.
+     * @return The memory manager.
+     */
+    public static MemoryManager getInstance() {
+        return INSTANCE;
+    }
+
+    /**
+     * Reset the state of this manager to the default state.
+     * @return true if there were entries that have been reset.
+     */
+    protected synchronized List<MemoryHandle<?>> resetState() {
+        ArrayList<MemoryHandle<?>> toFree = new ArrayList<>(activeHandles);
+        toFree.forEach(MemoryHandle::free);
+        return toFree;
+    }
+
+    /**
+     * A memory area managed by the {@link MemoryManager}.
+     * @author Michael Zangl
+     * @param <T> The content type.
+     */
+    public interface MemoryHandle<T> {
+
+        /**
+         * Gets the content of this memory area.
+         * <p>
+         * This method should be the prefered access to the memory since it will do error checking when {@link #free()} was called.
+         * @return The memory area content.
+         */
+        T get();
+
+        /**
+         * Get the size that was requested for this memory area.
+         * @return the size
+         */
+        long getSize();
+
+        /**
+         * Manually release this memory area. There should be no memory consumed by this afterwards.
+         */
+        void free();
+    }
+
+    private class ManualFreeMemoryHandle<T> implements MemoryHandle<T> {
+        private final String name;
+        private T content;
+        private final long size;
+
+        ManualFreeMemoryHandle(String name, T content, long size) {
+            this.name = name;
+            this.content = content;
+            this.size = size;
+        }
+
+        @Override
+        public T get() {
+            if (content == null) {
+                throw new IllegalStateException(MessageFormat.format("Memory area was accessed after free(): {0}", name));
+            }
+            return content;
+        }
+
+        @Override
+        public long getSize() {
+            return size;
+        }
+
+        @Override
+        public void free() {
+            if (content == null) {
+                throw new IllegalStateException(MessageFormat.format("Memory area was already marked as freed: {0}", name));
+            }
+            content = null;
+            synchronized (MemoryManager.this) {
+                activeHandles.remove(this);
+            }
+        }
+
+        @Override
+        public String toString() {
+            return "MemoryHandle [name=" + name + ", size=" + size + ']';
+        }
+    }
+
+    /**
+     * This exception is thrown if there is not enough memory for allocating the given object.
+     * @author Michael Zangl
+     */
+    public static class NotEnoughMemoryException extends Exception {
+        NotEnoughMemoryException(long memoryBytesRequired) {
+            super(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));
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/MultiLineFlowLayout.java b/src/org/openstreetmap/josm/tools/MultiLineFlowLayout.java
new file mode 100644
index 0000000..85f9b46
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/MultiLineFlowLayout.java
@@ -0,0 +1,109 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Insets;
+import java.util.function.Function;
+
+/**
+ * This is an extension of the flow layout that preferes wrapping the text instead of increasing the component width
+ * when there is not enough space.
+ * <p>
+ * This allows for a better preffered size computation.
+ * It should be used in all places where a flow layout fills the full width of the parent container.
+ * <p>
+ * This does not support baseline alignment.
+ * @author Michael Zangl
+ * @since 10622
+ */
+public class MultiLineFlowLayout extends FlowLayout {
+    /**
+     * Same as {@link FlowLayout#FlowLayout()}
+     */
+    public MultiLineFlowLayout() {
+        super();
+    }
+
+    /**
+     * Same as {@link FlowLayout#FlowLayout(int, int, int)}
+     * @param align Alignment
+     * @param hgap horizontal gap
+     * @param vgap vertical gap
+     */
+    public MultiLineFlowLayout(int align, int hgap, int vgap) {
+        super(align, hgap, vgap);
+    }
+
+    /**
+     * Same as {@link FlowLayout#FlowLayout(int)}
+     * @param align Alignment
+     */
+    public MultiLineFlowLayout(int align) {
+        super(align);
+    }
+
+    @Override
+    public Dimension preferredLayoutSize(Container target) {
+        return getLayoutSize(target, Component::getPreferredSize);
+    }
+
+    @Override
+    public Dimension minimumLayoutSize(Container target) {
+        return getLayoutSize(target, Component::getMinimumSize);
+    }
+
+    private Dimension getLayoutSize(Container target, Function<Component, Dimension> baseSize) {
+        synchronized (target.getTreeLock()) {
+            int outerWidth = getWidthOf(target);
+
+            Insets insets = target.getInsets();
+            int containerWidth = outerWidth - insets.left - insets.right - getHgap() * 2;
+
+            int x = 0;
+            int totalHeight = insets.top + insets.bottom + getVgap() * 2;
+            int rowHeight = 0;
+            for (int i = 0; i < target.getComponentCount(); i++) {
+                Component child = target.getComponent(i);
+                if (!child.isVisible()) {
+                    continue;
+                }
+                Dimension size = baseSize.apply(child);
+                if (x != 0) {
+                    x += getHgap();
+                }
+                x += size.getWidth();
+                if (x > containerWidth) {
+                    totalHeight += rowHeight + getVgap();
+                    rowHeight = 0;
+                    x = 0;
+                }
+
+                rowHeight = Math.max(rowHeight, size.height);
+            }
+            totalHeight += rowHeight;
+
+            return new Dimension(outerWidth, totalHeight);
+        }
+    }
+
+    private static int getWidthOf(Container target) {
+        Container current = target;
+        while (current.getWidth() == 0 && current.getParent() != null) {
+            current = current.getParent();
+        }
+        int width = current.getWidth();
+        if (width == 0) {
+            return Integer.MAX_VALUE;
+        } else {
+            return width;
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "MultiLineFlowLayout [align=" + getAlignment() + ']';
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java b/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
index 5a8ae95..34c6ac7 100644
--- a/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
+++ b/src/org/openstreetmap/josm/tools/MultikeyActionsHandler.java
@@ -6,7 +6,6 @@ import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.KeyEventDispatcher;
 import java.awt.KeyboardFocusManager;
 import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.util.HashMap;
 import java.util.Map;
@@ -62,12 +61,7 @@ public final class MultikeyActionsHandler {
                 JMenuItem item = new JMenuItem(formatMenuText(action.shortcut.getKeyStroke(),
                         String.valueOf(info.getShortcut()), info.getDescription()));
                 item.setMnemonic(info.getShortcut());
-                item.addActionListener(new ActionListener() {
-                    @Override
-                    public void actionPerformed(ActionEvent e) {
-                        action.action.executeMultikeyAction(info.getIndex(), false);
-                    }
-                });
+                item.addActionListener(e -> action.action.executeMultikeyAction(info.getIndex(), false));
                 layers.add(item);
             }
 
@@ -78,12 +72,7 @@ public final class MultikeyActionsHandler {
                             KeyEvent.getKeyText(action.shortcut.getKeyStroke().getKeyCode()),
                             "Repeat " + lastLayer.getDescription()));
                     repeateItem.setMnemonic(action.shortcut.getKeyStroke().getKeyCode());
-                    repeateItem.addActionListener(new ActionListener() {
-                        @Override
-                        public void actionPerformed(ActionEvent e) {
-                            action.action.executeMultikeyAction(-1, true);
-                        }
-                    });
+                    repeateItem.addActionListener(e -> action.action.executeMultikeyAction(-1, true));
                     layers.add(repeateItem);
                 }
             }
diff --git a/src/org/openstreetmap/josm/tools/OpenBrowser.java b/src/org/openstreetmap/josm/tools/OpenBrowser.java
index 9253749..ff08bcf 100644
--- a/src/org/openstreetmap/josm/tools/OpenBrowser.java
+++ b/src/org/openstreetmap/josm/tools/OpenBrowser.java
@@ -58,7 +58,7 @@ public final class OpenBrowser {
                     } catch (IOException e) {
                         // Workaround for KDE (Desktop API is severely flawed)
                         // see https://bugs.openjdk.java.net/browse/JDK-6486393
-                        Main.warn("Desktop class failed. Platform dependent fall back for open url in browser.");
+                        Main.warn(e, "Desktop class failed. Platform dependent fall back for open url in browser.");
                         displayUrlFallback(uri);
                     }
                 }
@@ -71,6 +71,7 @@ public final class OpenBrowser {
                 Main.warn("Desktop class is not supported. Platform dependent fall back for open url in browser.");
                 displayUrlFallback(uri);
             } catch (IOException e) {
+                Main.debug(e);
                 return e.getMessage();
             }
         }
@@ -89,6 +90,7 @@ public final class OpenBrowser {
         try {
             return displayUrl(new URI(url));
         } catch (URISyntaxException e) {
+            Main.debug(e);
             return e.getMessage();
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java b/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
index 126206c..71fa139 100644
--- a/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
+++ b/src/org/openstreetmap/josm/tools/OverpassTurboQueryWizard.java
@@ -38,8 +38,8 @@ public final class OverpassTurboQueryWizard {
 
     private OverpassTurboQueryWizard() {
 
-        try (final CachedFile file = new CachedFile("resource://data/overpass-wizard.js");
-             final Reader reader = file.getContentReader()) {
+        try (CachedFile file = new CachedFile("resource://data/overpass-wizard.js");
+             Reader reader = file.getContentReader()) {
             engine.eval("var console = {error: " + Main.class.getCanonicalName() + ".warn};");
             engine.eval("var global = {};");
             engine.eval(reader);
@@ -68,7 +68,9 @@ public final class OverpassTurboQueryWizard {
                 throw new UncheckedParseException();
             }
             String query = (String) result;
-            query = query.replace("[bbox:{{bbox}}]", "");
+            if (query != null) {
+                query = query.replace("[bbox:{{bbox}}]", "");
+            }
             return query;
         } catch (NoSuchMethodException e) {
             throw new IllegalStateException(e);
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
index 062451f..2af30cb 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
@@ -66,6 +66,7 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements InvocationHa
                 // enable full screen
                 enableOSXFullscreen((Window) Main.parent);
             } catch (IllegalAccessException e) {
+                Main.debug(e);
                 // with Java 9, module java.desktop does not export com.apple.eawt, use new Desktop API instead
                 setHandlers(Desktop.class, quitHandler, aboutHandler, openFilesHandler, preferencesHandler, proxy, Desktop.getDesktop());
             }
@@ -73,11 +74,6 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements InvocationHa
             // 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);
-        }
     }
 
     protected void setHandlers(Class<?> appClass, Class<?> quitHandler, Class<?> aboutHandler,
@@ -93,6 +89,7 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements InvocationHa
         try {
             return Class.forName("com.apple.eawt."+className);
         } catch (ClassNotFoundException e) {
+            Main.trace(e);
             return Class.forName("java.awt.desktop."+className);
         }
     }
@@ -152,6 +149,7 @@ public class PlatformHookOsx extends PlatformHookUnixoid implements InvocationHa
                 try {
                     args[1].getClass().getDeclaredMethod(closed ? "performQuit" : "cancelQuit").invoke(args[1]);
                 } catch (IllegalAccessException e) {
+                    Main.debug(e);
                     // with Java 9, module java.desktop does not export com.apple.eawt, use new Desktop API instead
                     Class.forName("java.awt.desktop.QuitResponse").getMethod(closed ? "performQuit" : "cancelQuit").invoke(args[1]);
                 }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
index 6d4433f..31303a3 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
@@ -112,24 +112,7 @@ public class PlatformHookUnixoid implements PlatformHook {
 
     @Override
     public void startupHook() {
-        if (isDebianOrUbuntu()) {
-            // Invite users to install Java 8 if they are still with Java 7 and using a compatible distrib (Debian >= 8 or Ubuntu >= 15.10)
-            String java = System.getProperty("java.version");
-            String os = getOSDescription();
-            if (java != null && java.startsWith("1.7") && os != null && (
-                    os.startsWith("Linux Debian GNU/Linux 8") || os.matches("^Linux Ubuntu 1[567].*"))) {
-                String url;
-                // apturl does not exist on Debian (see #8465)
-                if (os.startsWith("Linux Debian")) {
-                    url = "https://packages.debian.org/jessie-backports/openjdk-8-jre";
-                } else if (getPackageDetails("apturl") != null) {
-                    url = "apt://openjdk-8-jre";
-                } else {
-                    url = "http://packages.ubuntu.com/xenial/openjdk-8-jre";
-                }
-                askUpdateJava(java, url);
-            }
-        }
+        // Do nothing
     }
 
     @Override
@@ -208,10 +191,8 @@ public class PlatformHookUnixoid implements PlatformHook {
             String dist = Utils.execOutput(Arrays.asList("lsb_release", "-i", "-s"));
             return "Debian".equalsIgnoreCase(dist) || "Ubuntu".equalsIgnoreCase(dist) || "Mint".equalsIgnoreCase(dist);
         } catch (IOException e) {
-            if (Main.isDebugEnabled()) {
-                // lsb_release is not available on all Linux systems, so don't log at warning level
-                Main.debug(e.getMessage());
-            }
+            // lsb_release is not available on all Linux systems, so don't log at warning level
+            Main.debug(e);
             return false;
         }
     }
@@ -271,8 +252,10 @@ public class PlatformHookUnixoid implements PlatformHook {
      */
     public String getJavaPackageDetails() {
         String home = System.getProperty("java.home");
-        if (home.contains("java-7-openjdk") || home.contains("java-1.7.0-openjdk")) {
-            return getPackageDetails("openjdk-7-jre", "java-1_7_0-openjdk", "java-1.7.0-openjdk");
+        if (home.contains("java-8-openjdk") || home.contains("java-1.8.0-openjdk")) {
+            return getPackageDetails("openjdk-8-jre", "java-1_8_0-openjdk", "java-1.8.0-openjdk");
+        } else if (home.contains("java-9-openjdk") || home.contains("java-1.9.0-openjdk")) {
+            return getPackageDetails("openjdk-9-jre", "java-1_9_0-openjdk", "java-1.9.0-openjdk");
         } else if (home.contains("icedtea")) {
             return getPackageDetails("icedtea-bin");
         } else if (home.contains("oracle")) {
@@ -298,6 +281,23 @@ public class PlatformHookUnixoid implements PlatformHook {
         return null;
     }
 
+    /**
+     * Get the Gnome ATK wrapper package name including detailed version.
+     *
+     * Debian and Ubuntu derivatives come with a pre-enabled accessibility software
+     * completely buggy that makes Swing crash in a lot of different ways.
+     *
+     * Simply return {@code null} if it's not found.
+     *
+     * @return The package name and package version if it can be identified, null otherwise
+     */
+    public String getAtkWrapperPackageDetails() {
+        if (isOpenJDK() && isDebianOrUbuntu()) {
+            return getPackageDetails("libatk-wrapper-java");
+        }
+        return null;
+    }
+
     protected String buildOSDescription() {
         String osName = System.getProperty("os.name");
         if ("Linux".equalsIgnoreCase(osName)) {
@@ -317,6 +317,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                     }
                 }
             } catch (IOException e) {
+                Main.debug(e);
                 // Non LSB-compliant Linux system. List of common fallback release files: http://linuxmafia.com/faq/Admin/release-files.html
                 for (LinuxReleaseInfo info : new LinuxReleaseInfo[]{
                         new LinuxReleaseInfo("/etc/lsb-release", "DISTRIB_DESCRIPTION", "DISTRIB_ID", "DISTRIB_RELEASE"),
@@ -417,9 +418,7 @@ public class PlatformHookUnixoid implements PlatformHook {
                         }
                     } catch (IOException e) {
                         // Ignore
-                        if (Main.isTraceEnabled()) {
-                            Main.trace(e.getMessage());
-                        }
+                        Main.trace(e);
                     }
                 }
             }
@@ -433,43 +432,35 @@ public class PlatformHookUnixoid implements PlatformHook {
         }
     }
 
-    protected void askUpdateJava(String version) {
-        if (!GraphicsEnvironment.isHeadless()) {
-            askUpdateJava(version, "https://www.java.com/download");
-        }
-    }
-
+    // Method unused, but kept for translation already done. To reuse during Java 9 migration
     protected void askUpdateJava(final String version, final String url) {
-        GuiHelper.runInEDTAndWait(new Runnable() {
-            @Override
-            public void run() {
-                ExtendedDialog ed = new ExtendedDialog(
-                        Main.parent,
-                        tr("Outdated Java version"),
-                        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[]{"ok", "java", "cancel"}).setCancelButton(3);
-                    ed.setMinimumSize(new Dimension(480, 300));
-                    ed.setIcon(JOptionPane.WARNING_MESSAGE);
-                    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.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.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() == 2) {
-                        try {
-                            openUrl(url);
-                        } catch (IOException e) {
-                            Main.warn(e);
-                        }
+        GuiHelper.runInEDTAndWait(() -> {
+            ExtendedDialog ed = new ExtendedDialog(
+                    Main.parent,
+                    tr("Outdated Java version"),
+                    new String[]{tr("OK"), tr("Update Java"), tr("Cancel")});
+            // Check if the dialog has not already been permanently hidden by user
+            if (!ed.toggleEnable("askUpdateJava9").toggleCheckState()) {
+                ed.setButtonIcons(new String[]{"ok", "java", "cancel"}).setCancelButton(3);
+                ed.setMinimumSize(new Dimension(480, 300));
+                ed.setIcon(JOptionPane.WARNING_MESSAGE);
+                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.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>"); // TODO: change date once Java 8 EOL is announced
+                }
+                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() == 2) {
+                    try {
+                        openUrl(url);
+                    } catch (IOException e) {
+                        Main.warn(e);
                     }
                 }
             }
diff --git a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
index f5b996d..2dac887 100644
--- a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
+++ b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
@@ -63,11 +63,7 @@ public class PlatformHookWindows extends PlatformHookUnixoid {
 
     @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);
-        }
+        // Do nothing
     }
 
     private static final byte[] INSECURE_PUBLIC_KEY = new byte[] {
@@ -245,6 +241,7 @@ public class PlatformHookWindows extends PlatformHookUnixoid {
                 } catch (InvalidKeyException | NoSuchProviderException | SignatureException e) {
                     // If exception this is not a certificate related to JOSM, just trace it
                     Main.trace(alias + " --> " + e.getClass().getName());
+                    Main.trace(e);
                 }
             }
         }
@@ -270,7 +267,7 @@ public class PlatformHookWindows extends PlatformHookUnixoid {
                 try {
                     ks.deleteEntry(alias);
                 } catch (KeyStoreException e) {
-                    Main.error(tr("Unable to remove insecure certificate from keystore: {0}", e.getMessage()));
+                    Main.error(e, tr("Unable to remove insecure certificate from keystore: {0}", e.getMessage()));
                 }
             }
         }
diff --git a/src/org/openstreetmap/josm/tools/Predicate.java b/src/org/openstreetmap/josm/tools/Predicate.java
deleted file mode 100644
index 969300c..0000000
--- a/src/org/openstreetmap/josm/tools/Predicate.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.tools;
-
-/**
- * Used to identify objects that fulfill a certain condition, e.g. when filtering a collection.
- *
- * @param <T> The objects type
- * @since 3177
- */
-public interface Predicate<T> {
-
-    /**
-     * Determines whether the object passes the test or not
-     * @param object The object to evaluate
-     * @return {@code true} if the object passes the test, {@code false} otherwise
-     */
-    boolean evaluate(T object);
-}
diff --git a/src/org/openstreetmap/josm/tools/Predicates.java b/src/org/openstreetmap/josm/tools/Predicates.java
index 5d072c3..e9b927b 100644
--- a/src/org/openstreetmap/josm/tools/Predicates.java
+++ b/src/org/openstreetmap/josm/tools/Predicates.java
@@ -3,13 +3,16 @@ package org.openstreetmap.josm.tools;
 
 import java.util.Collection;
 import java.util.Objects;
+import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 
 /**
  * Utility class for creating {@link Predicate}s.
+ * @deprecated Use corresponding lambda expressions instead
  */
+ at Deprecated
 public final class Predicates {
 
     private Predicates() {
@@ -22,12 +25,7 @@ public final class Predicates {
      * @since 10040
      */
     public static <T> Predicate<T> alwaysTrue() {
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T object) {
-                return true;
-            }
-        };
+        return o -> true;
     }
 
     /**
@@ -37,27 +35,7 @@ public final class Predicates {
      * @since 10040
      */
     public static <T> Predicate<T> alwaysFalse() {
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T object) {
-                return false;
-            }
-        };
-    }
-
-    /**
-     * Returns the negation of {@code predicate}.
-     * @param <T> type of items
-     * @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>() {
-            @Override
-            public boolean evaluate(T obj) {
-                return !predicate.evaluate(obj);
-            }
-        };
+        return o -> false;
     }
 
     /**
@@ -67,12 +45,7 @@ public final class Predicates {
      * @return a {@link Predicate} executing {@link Objects#equals}
      */
     public static <T> Predicate<T> equalTo(final T ref) {
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T obj) {
-                return Objects.equals(obj, ref);
-            }
-        };
+        return obj -> Objects.equals(obj, ref);
     }
 
     /**
@@ -84,12 +57,7 @@ public final class Predicates {
      */
     public static <T> Predicate<T> isOfClass(final Class<? extends T> clazz) {
         CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T obj) {
-                return obj != null && obj.getClass() == clazz;
-            }
-        };
+        return obj -> obj != null && obj.getClass() == clazz;
     }
 
     /**
@@ -102,12 +70,7 @@ public final class Predicates {
      */
     public static <T> Predicate<T> isInstanceOf(final Class<? extends T> clazz) {
         CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T o) {
-                return clazz.isInstance(o);
-            }
-        };
+        return clazz::isInstance;
     }
 
     /**
@@ -116,12 +79,7 @@ public final class Predicates {
      * @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>() {
-            @Override
-            public boolean evaluate(String string) {
-                return pattern.matcher(string).matches();
-            }
-        };
+        return string -> pattern.matcher(string).matches();
     }
 
     /**
@@ -130,12 +88,7 @@ public final class Predicates {
      * @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>() {
-            @Override
-            public boolean evaluate(String string) {
-                return pattern.matcher(string).find();
-            }
-        };
+        return pattern.asPredicate();
     }
 
     /**
@@ -144,12 +97,7 @@ public final class Predicates {
      * @return a {@link Predicate} executing {@link String#contains(CharSequence)}
      */
     public static Predicate<String> stringContains(final String pattern) {
-        return new Predicate<String>() {
-            @Override
-            public boolean evaluate(String string) {
-                return string.contains(pattern);
-            }
-        };
+        return string -> string.contains(pattern);
     }
 
     /**
@@ -159,12 +107,7 @@ public final class Predicates {
      * @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>() {
-            @Override
-            public boolean evaluate(OsmPrimitive p) {
-                return p.hasTag(key, values);
-            }
-        };
+        return p -> p.hasTag(key, values);
     }
 
     /**
@@ -173,12 +116,7 @@ public final class Predicates {
      * @return a {@link Predicate} executing {@link OsmPrimitive#hasKey(String)}
      */
     public static Predicate<OsmPrimitive> hasKey(final String key) {
-        return new Predicate<OsmPrimitive>() {
-            @Override
-            public boolean evaluate(OsmPrimitive p) {
-                return p.hasKey(key);
-            }
-        };
+        return p -> p.hasKey(key);
     }
 
     /**
@@ -188,12 +126,7 @@ public final class Predicates {
      * @return a {@link Predicate} executing {@link Collection#contains(Object)}
      */
     public static <T> Predicate<T> inCollection(final Collection<? extends T> target) {
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T object) {
-                return target.contains(object);
-            }
-        };
+        return target::contains;
     }
 
     /**
@@ -202,12 +135,7 @@ public final class Predicates {
      * @return a {@link Predicate} testing whether objects are {@code null}
      */
     public static <T> Predicate<T> isNull() {
-        return new Predicate<T>() {
-            @Override
-            public boolean evaluate(T object) {
-                return object == null;
-            }
-        };
+        return Objects::isNull;
     }
 
 }
diff --git a/src/org/openstreetmap/josm/tools/StreamUtils.java b/src/org/openstreetmap/josm/tools/StreamUtils.java
new file mode 100644
index 0000000..274406f
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/StreamUtils.java
@@ -0,0 +1,42 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+import java.util.StringJoiner;
+import java.util.stream.Collector;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+
+/**
+ * Utility methods for streams.
+ * @author Michael Zangl
+ */
+public final class StreamUtils {
+
+    /**
+     * Utility class
+     */
+    private StreamUtils() {}
+
+    /**
+     * Returns a sequential {@code Stream} with the iterable as its source.
+     * @param <T> The element type to iterate over
+     * @param iterable The iterable
+     * @return The stream of for that iterable.
+     * @since 10718
+     */
+    public static <T> Stream<T> toStream(Iterable<T> iterable) {
+        return StreamSupport.stream(iterable.spliterator(), false);
+    }
+
+    /**
+     * Creates a new Collector that collects the items and returns them as HTML unordered list.
+     * @return The collector.
+     * @since 10638
+     */
+    public static Collector<String, ?, String> toHtmlList() {
+        return Collector.of(
+                () -> new StringJoiner("</li><li>", "<ul><li>", "</li></ul>").setEmptyValue("<ul></ul>"),
+                StringJoiner::add, StringJoiner::merge, StringJoiner::toString
+        );
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java b/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
index ed6531a..c515454 100644
--- a/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
+++ b/src/org/openstreetmap/josm/tools/SubclassFilteredCollection.java
@@ -5,12 +5,15 @@ import java.util.AbstractCollection;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
+import java.util.function.Predicate;
 
 /**
  * Filtered view of a collection.
  * (read-only collection, but elements can be changed, of course)
  * Lets you iterate through those elements of a given collection that satisfy a
  * certain condition (imposed by a predicate).
+ * <p>
+ * The behaviour of this class is undefined if the underlying collection is changed.
  * @param <S> element type of the underlying collection
  * @param <T> element type of filtered collection (and subclass of S). The predicate
  *      must accept only objects of type T.
@@ -35,7 +38,7 @@ public class SubclassFilteredCollection<S, T extends S> extends AbstractCollecti
             if (current == null) {
                 while (iterator.hasNext()) {
                     current = iterator.next();
-                    if (predicate.evaluate(current))
+                    if (predicate.test(current))
                         return;
                 }
                 current = null;
@@ -69,6 +72,7 @@ public class SubclassFilteredCollection<S, T extends S> extends AbstractCollecti
      * Constructs a new {@code SubclassFilteredCollection}.
      * @param collection The base collection to filter
      * @param predicate The predicate to use as filter
+     * @see #filter(Collection, Predicate) for an alternative way to construct this.
      */
     public SubclassFilteredCollection(Collection<? extends S> collection, Predicate<? super S> predicate) {
         this.collection = collection;
@@ -97,4 +101,15 @@ public class SubclassFilteredCollection<S, T extends S> extends AbstractCollecti
     public boolean isEmpty() {
         return !iterator().hasNext();
     }
+
+    /**
+     * Create a new filtered collection without any constraints on the predicate type.
+     * @param <T> The collection type.
+     * @param collection The collection to filter.
+     * @param predicate The predicate to filter for.
+     * @return The filtered collection. It is a {@code Collection<T>}.
+     */
+    public static <T> SubclassFilteredCollection<T, T> filter(Collection<? extends T> collection, Predicate<T> predicate) {
+        return new SubclassFilteredCollection<>(collection, predicate);
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/TextTagParser.java b/src/org/openstreetmap/josm/tools/TextTagParser.java
index a6aa70b..e836940 100644
--- a/src/org/openstreetmap/josm/tools/TextTagParser.java
+++ b/src/org/openstreetmap/josm/tools/TextTagParser.java
@@ -18,6 +18,7 @@ import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.help.HelpUtil;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.io.XmlWriter;
@@ -149,7 +150,7 @@ public final class TextTagParser {
         }
     }
 
-    protected static String unescape(String k) {
+    static String unescape(String k) {
         if (!(k.startsWith("\"") && k.endsWith("\""))) {
             if (k.contains("=")) {
                 // '=' not in quotes will be treated as an error!
@@ -290,7 +291,7 @@ public final class TextTagParser {
         int r = ed.getValue();
         if (r == 0) r = 2;
         // clean clipboard if user asked
-        if (r == 3) Utils.copyToClipboard("");
+        if (r == 3) ClipboardUtils.copyString("");
         return r;
     }
 
@@ -325,6 +326,6 @@ public final class TextTagParser {
 
         int r = ed.getValue();
         // clean clipboard if user asked
-        if (r == 2) Utils.copyToClipboard("");
+        if (r == 2) ClipboardUtils.copyString("");
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/Utils.java b/src/org/openstreetmap/josm/tools/Utils.java
index bc151aa..461d3a1 100644
--- a/src/org/openstreetmap/josm/tools/Utils.java
+++ b/src/org/openstreetmap/josm/tools/Utils.java
@@ -7,14 +7,8 @@ import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.awt.Color;
 import java.awt.Font;
-import java.awt.HeadlessException;
-import java.awt.Toolkit;
 import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.ClipboardOwner;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.StringSelection;
 import java.awt.datatransfer.Transferable;
-import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.font.FontRenderContext;
 import java.awt.font.GlyphVector;
 import java.io.BufferedReader;
@@ -55,8 +49,11 @@ import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ForkJoinWorkerThread;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
@@ -71,6 +68,7 @@ import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -104,14 +102,17 @@ public final class Utils {
 
     /**
      * Tests whether {@code predicate} applies to at least one element from {@code collection}.
+     * <p>
      * @param <T> type of items
      * @param collection the collection
      * @param predicate the predicate
      * @return {@code true} if {@code predicate} applies to at least one element from {@code collection}
+     * @deprecated use {@link Stream#anyMatch(Predicate)} instead.
      */
+    @Deprecated
     public static <T> boolean exists(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         for (T item : collection) {
-            if (predicate.evaluate(item)) {
+            if (predicate.test(item)) {
                 return true;
             }
         }
@@ -120,13 +121,16 @@ public final class Utils {
 
     /**
      * Tests whether {@code predicate} applies to all elements from {@code collection}.
+     * <p>
      * @param <T> type of items
      * @param collection the collection
      * @param predicate the predicate
      * @return {@code true} if {@code predicate} applies to all elements from {@code collection}
+     * @deprecated use {@link Stream#allMatch(Predicate)} instead.
      */
+    @Deprecated
     public static <T> boolean forAll(Iterable<? extends T> collection, Predicate<? super T> predicate) {
-        return !exists(collection, Predicates.not(predicate));
+        return !exists(collection, predicate.negate());
     }
 
     /**
@@ -137,7 +141,8 @@ public final class Utils {
      * @return <code>true</code> if that item exists in the collection.
      */
     public static <T> boolean exists(Iterable<T> collection, Class<? extends T> clazz) {
-        return exists(collection, Predicates.<T>isInstanceOf(clazz));
+        CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
+        return StreamUtils.toStream(collection).anyMatch(clazz::isInstance);
     }
 
     /**
@@ -149,7 +154,7 @@ public final class Utils {
      */
     public static <T> T find(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         for (T item : collection) {
-            if (predicate.evaluate(item)) {
+            if (predicate.test(item)) {
                 return item;
             }
         }
@@ -165,20 +170,8 @@ public final class Utils {
      */
     @SuppressWarnings("unchecked")
     public static <T> T find(Iterable<? extends Object> collection, Class<? extends T> clazz) {
-        return (T) find(collection, Predicates.<Object>isInstanceOf(clazz));
-    }
-
-    /**
-     * Creates a new {@link FilteredCollection}.
-     * @param <T> The collection type.
-     * @param collection The collection to filter.
-     * @param predicate The predicate to filter for.
-     * @return The new {@link FilteredCollection}
-     */
-    @SuppressWarnings("unused")
-    public static <T> Collection<T> filter(Collection<? extends T> collection, Predicate<? super T> predicate) {
-        // Diamond operator does not work with Java 9 here
-        return new FilteredCollection<T>(collection, predicate);
+        CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
+        return (T) find(collection, clazz::isInstance);
     }
 
     /**
@@ -207,7 +200,8 @@ public final class Utils {
      * @return a read-only filtered collection
      */
     public static <S, T extends S> SubclassFilteredCollection<S, T> filteredCollection(Collection<S> collection, final Class<T> clazz) {
-        return new SubclassFilteredCollection<>(collection, Predicates.<S>isInstanceOf(clazz));
+        CheckParameterUtil.ensureParameterNotNull(clazz, "clazz");
+        return new SubclassFilteredCollection<>(collection, clazz::isInstance);
     }
 
     /**
@@ -220,7 +214,7 @@ public final class Utils {
     public static <T> int indexOf(Iterable<? extends T> collection, Predicate<? super T> predicate) {
         int i = 0;
         for (T item : collection) {
-            if (predicate.evaluate(item))
+            if (predicate.test(item))
                 return i;
             i++;
         }
@@ -228,41 +222,6 @@ public final class Utils {
     }
 
     /**
-     * Returns the minimum of three values.
-     * @param   a   an argument.
-     * @param   b   another argument.
-     * @param   c   another argument.
-     * @return  the smaller of {@code a}, {@code b} and {@code c}.
-     */
-    public static int min(int a, int b, int c) {
-        if (b < c) {
-            if (a < b)
-                return a;
-            return b;
-        } else {
-            if (a < c)
-                return a;
-            return c;
-        }
-    }
-
-    /**
-     * Returns the greater of four {@code int} values. That is, the
-     * result is the argument closer to the value of
-     * {@link Integer#MAX_VALUE}. If the arguments have the same value,
-     * the result is that same value.
-     *
-     * @param   a   an argument.
-     * @param   b   another argument.
-     * @param   c   another argument.
-     * @param   d   another argument.
-     * @return  the larger of {@code a}, {@code b}, {@code c} and {@code d}.
-     */
-    public static int max(int a, int b, int c, int d) {
-        return Math.max(Math.max(a, b), Math.max(c, d));
-    }
-
-    /**
      * Ensures a logical condition is met. Otherwise throws an assertion error.
      * @param condition the condition to be met
      * @param message Formatted error message to raise if condition is not met
@@ -324,13 +283,7 @@ public final class Utils {
      * @return An unordered HTML list
      */
     public static String joinAsHtmlUnorderedList(Iterable<?> values) {
-        StringBuilder sb = new StringBuilder(1024);
-        sb.append("<ul>");
-        for (Object i : values) {
-            sb.append("<li>").append(i).append("</li>");
-        }
-        sb.append("</ul>");
-        return sb.toString();
+        return StreamUtils.toStream(values).map(Object::toString).collect(StreamUtils.toHtmlList());
     }
 
     /**
@@ -355,7 +308,7 @@ public final class Utils {
      * @return null if val is null, the corresponding int if val is in the
      *         range 0...1. If val is outside that range, return 255
      */
-    public static Integer color_float2int(Float val) {
+    public static Integer colorFloat2int(Float val) {
         if (val == null)
             return null;
         if (val < 0 || val > 1)
@@ -369,7 +322,7 @@ public final class Utils {
      * @param val integer value
      * @return corresponding float value in range 0 <= x <= 1
      */
-    public static Float color_int2float(Integer val) {
+    public static Float colorInt2float(Integer val) {
         if (val == null)
             return null;
         if (val < 0 || val > 255)
@@ -406,7 +359,7 @@ public final class Utils {
      * @return A copy of the original array, or {@code null} if {@code array} is null
      * @since 6222
      */
-    public static char[] copyArray(char[] array) {
+    public static char[] copyArray(char ... array) {
         if (array != null) {
             return Arrays.copyOf(array, array.length);
         }
@@ -419,7 +372,7 @@ public final class Utils {
      * @return A copy of the original array, or {@code null} if {@code array} is null
      * @since 7436
      */
-    public static int[] copyArray(int[] array) {
+    public static int[] copyArray(int ... array) {
         if (array != null) {
             return Arrays.copyOf(array, array.length);
         }
@@ -491,6 +444,20 @@ public final class Utils {
     }
 
     /**
+     * Deletes a file and log a default warning if the file exists but the deletion fails.
+     * @param file file to delete
+     * @return {@code true} if and only if the file does not exist or is successfully deleted; {@code false} otherwise
+     * @since 10569
+     */
+    public static boolean deleteFileIfExists(File file) {
+        if (file.exists()) {
+            return deleteFile(file);
+        } else {
+            return true;
+        }
+    }
+
+    /**
      * Deletes a file and log a default warning if the deletion fails.
      * @param file file to delete
      * @return {@code true} if and only if the file is successfully deleted; {@code false} otherwise
@@ -562,12 +529,7 @@ public final class Utils {
      * @param zip the zip file. May be null.
      */
     public static void close(ZipFile zip) {
-        if (zip == null) return;
-        try {
-            zip.close();
-        } catch (IOException e) {
-            Main.warn(e);
-        }
+        close((Closeable) zip);
     }
 
     /**
@@ -623,20 +585,11 @@ public final class Utils {
      * Copies the string {@code s} to system clipboard.
      * @param s string to be copied to clipboard.
      * @return true if succeeded, false otherwise.
+     * @deprecated Use {@link ClipboardUtils#copyString(String)}. To be removed end of 2016.
      */
+    @Deprecated
     public static boolean copyToClipboard(String s) {
-        try {
-            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(s), new ClipboardOwner() {
-                @Override
-                public void lostOwnership(Clipboard clpbrd, Transferable t) {
-                    // Do nothing
-                }
-            });
-            return true;
-        } catch (IllegalStateException | HeadlessException ex) {
-            Main.error(ex);
-            return false;
-        }
+        return ClipboardUtils.copyString(s);
     }
 
     /**
@@ -644,43 +597,21 @@ public final class Utils {
      * @param clipboard clipboard from which contents are retrieved
      * @return clipboard contents if available, {@code null} otherwise.
      * @since 8429
+     * @deprecated Use {@link ClipboardUtils#getClipboardContent(Clipboard)} instead. To be removed end of 2016.
      */
+    @Deprecated
     public static Transferable getTransferableContent(Clipboard clipboard) {
-        Transferable t = null;
-        for (int tries = 0; t == null && tries < 10; tries++) {
-            try {
-                t = clipboard.getContents(null);
-            } catch (IllegalStateException e) {
-                // Clipboard currently unavailable.
-                // On some platforms, the system clipboard is unavailable while it is accessed by another application.
-                try {
-                    Thread.sleep(1);
-                } catch (InterruptedException ex) {
-                    Main.warn("InterruptedException in "+Utils.class.getSimpleName()+" while getting clipboard content");
-                }
-            } catch (NullPointerException e) {
-                // JDK-6322854: On Linux/X11, NPE can happen for unknown reasons, on all versions of Java
-                Main.error(e);
-            }
-        }
-        return t;
+        return ClipboardUtils.getClipboardContent(clipboard);
     }
 
     /**
      * Extracts clipboard content as string.
      * @return string clipboard contents if available, {@code null} otherwise.
+     * @deprecated Use {@link ClipboardUtils#getClipboardStringContent()}. To be removed end of 2016
      */
+    @Deprecated
     public static String getClipboardContent() {
-        try {
-            Transferable t = getTransferableContent(Toolkit.getDefaultToolkit().getSystemClipboard());
-            if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
-                return (String) t.getTransferData(DataFlavor.stringFlavor);
-            }
-        } catch (UnsupportedFlavorException | IOException | HeadlessException ex) {
-            Main.error(ex);
-            return null;
-        }
-        return null;
+        return ClipboardUtils.getClipboardStringContent();
     }
 
     /**
@@ -779,24 +710,8 @@ public final class Utils {
     }
 
     /**
-     * Represents a function that can be applied to objects of {@code A} and
-     * returns objects of {@code B}.
-     * @param <A> class of input objects
-     * @param <B> class of transformed objects
-     */
-    public interface Function<A, B> {
-
-        /**
-         * Applies the function on {@code x}.
-         * @param x an object of
-         * @return the transformed object
-         */
-        B apply(A x);
-    }
-
-    /**
      * Transforms the collection {@code c} into an unmodifiable collection and
-     * applies the {@link org.openstreetmap.josm.tools.Utils.Function} {@code f} on each element upon access.
+     * applies the {@link Function} {@code f} on each element upon access.
      * @param <A> class of input collection
      * @param <B> class of transformed collection
      * @param c a collection
@@ -838,7 +753,7 @@ public final class Utils {
 
     /**
      * Transforms the list {@code l} into an unmodifiable list and
-     * applies the {@link org.openstreetmap.josm.tools.Utils.Function} {@code f} on each element upon access.
+     * applies the {@link Function} {@code f} on each element upon access.
      * @param <A> class of input collection
      * @param <B> class of transformed collection
      * @param l a collection
@@ -942,7 +857,7 @@ public final class Utils {
         return strip(str, stripChars(skipChars));
     }
 
-    private static String strip(final String str, final char[] skipChars) {
+    private static String strip(final String str, final char ... skipChars) {
 
         int start = 0;
         int end = str.length();
@@ -1332,12 +1247,15 @@ public final class Utils {
      * @since 10294
      */
     public static boolean isValidUrl(String url) {
-        try {
-            new URL(url);
-            return true;
-        } catch (MalformedURLException | NullPointerException e) {
-            return false;
+        if (url != null) {
+            try {
+                new URL(url);
+                return true;
+            } catch (MalformedURLException e) {
+                Main.trace(e);
+            }
         }
+        return false;
     }
 
     /**
@@ -1384,12 +1302,7 @@ public final class Utils {
      * @return an executor
      */
     public static Executor newDirectExecutor() {
-        return new Executor() {
-            @Override
-            public void execute(Runnable command) {
-                command.run();
-            }
-        };
+        return Runnable::run;
     }
 
     /**
@@ -1630,14 +1543,11 @@ public final class Utils {
      */
     public static void setObjectsAccessible(final AccessibleObject ... objects) {
         if (objects != null && objects.length > 0) {
-            AccessController.doPrivileged(new PrivilegedAction<Object>() {
-                @Override
-                public Object run() {
-                    for (AccessibleObject o : objects) {
-                        o.setAccessible(true);
-                    }
-                    return null;
+            AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
+                for (AccessibleObject o : objects) {
+                    o.setAccessible(true);
                 }
+                return null;
             });
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/WindowGeometry.java b/src/org/openstreetmap/josm/tools/WindowGeometry.java
index 5d428ea..91306ed 100644
--- a/src/org/openstreetmap/josm/tools/WindowGeometry.java
+++ b/src/org/openstreetmap/josm/tools/WindowGeometry.java
@@ -88,9 +88,7 @@ public class WindowGeometry {
         try {
             initFromPreferences(preferenceKey);
         } catch (WindowGeometryException e) {
-            if (Main.isDebugEnabled()) {
-                Main.debug(e.getMessage());
-            }
+            Main.debug(e);
             initFromWindowGeometry(defaultGeometry);
         }
     }
diff --git a/src/org/openstreetmap/josm/tools/XmlObjectParser.java b/src/org/openstreetmap/josm/tools/XmlObjectParser.java
index cf12342..4a0a070 100644
--- a/src/org/openstreetmap/josm/tools/XmlObjectParser.java
+++ b/src/org/openstreetmap/josm/tools/XmlObjectParser.java
@@ -203,6 +203,7 @@ public class XmlObjectParser implements Iterable<Object> {
                     fields.put(s, f);
                     return f;
                 } catch (NoSuchFieldException ex) {
+                    Main.trace(ex);
                     fields.put(s, null);
                     return null;
                 }
@@ -250,7 +251,7 @@ public class XmlObjectParser implements Iterable<Object> {
                 reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
             } catch (SAXException e) {
                 // Exception very unlikely to happen, so no need to translate this
-                Main.error("Cannot disable 'load-external-dtd' feature: "+e.getMessage());
+                Main.error(e, "Cannot disable 'load-external-dtd' feature:");
             }
             reader.parse(new InputSource(in));
             queueIterator = queue.iterator();
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReport.java b/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
index f74af94..d47586f 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReport.java
@@ -1,6 +1,13 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools.bugreport;
 
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.io.StringWriter;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.openstreetmap.josm.actions.ShowStatusReportAction;
+
 /**
  * This class contains utility methods to create and handle a bug report.
  * <p>
@@ -13,30 +20,140 @@ package org.openstreetmap.josm.tools.bugreport;
  * <p>
  * You should then add some debug information there. This can be the OSM ids that caused the error, information on the data you were working on
  * or other local variables. Make sure that no excpetions may occur while computing the values. It is best to send plain local variables to
- * put(...). Then simply throw the throwable you got from the bug report. The global exception handler will do the rest.
+ * put(...). If you need to do computations, put them into a lambda expression. Then simply throw the throwable you got from the bug report.
+ * The global exception handler will do the rest.
  * <pre>
  * int id = ...;
  * String tag = "...";
  * try {
  *   ... your code ...
- * } catch (Throwable t) {
- *   throw BugReport.intercept(t).put("id", id).put("tag", tag);
+ * } catch (RuntimeException t) {
+ *   throw BugReport.intercept(t).put("id", id).put("tag", () -> x.getTag());
  * }
  * </pre>
  *
  * Instead of re-throwing, you can call {@link ReportedException#warn()}. This will display a warning to the user and allow it to either report
- * the execption or ignore it.
+ * the exception or ignore it.
  *
  * @author Michael Zangl
  * @since 10285
  */
-public final class BugReport {
+public final class BugReport implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private boolean includeStatusReport = true;
+    private boolean includeData = true;
+    private boolean includeAllStackTraces;
+    private final ReportedException exception;
+    private final CopyOnWriteArrayList<BugReportListener> listeners = new CopyOnWriteArrayList<>();
+
     /**
      * Create a new bug report
      * @param e The {@link ReportedException} to use. No more data should be added after creating the report.
      */
-    private BugReport(ReportedException e) {
-        // TODO: Use this class to create the bug report.
+    BugReport(ReportedException e) {
+        this.exception = e;
+        includeAllStackTraces = e.mayHaveConcurrentSource();
+    }
+
+    /**
+     * Determines if this report should include a system status report
+     * @return <code>true</code> to include it.
+     * @since 10597
+     */
+    public boolean isIncludeStatusReport() {
+        return includeStatusReport;
+    }
+
+    /**
+     * Set if this report should include a system status report
+     * @param includeStatusReport if the status report should be included
+     * @since 10585
+     */
+    public void setIncludeStatusReport(boolean includeStatusReport) {
+        this.includeStatusReport = includeStatusReport;
+        fireChange();
+    }
+
+    /**
+     * Determines if this report should include the data that was traced.
+     * @return <code>true</code> to include it.
+     * @since 10597
+     */
+    public boolean isIncludeData() {
+        return includeData;
+    }
+
+    /**
+     * Set if this report should include the data that was traced.
+     * @param includeData if data should be included
+     * @since 10585
+     */
+    public void setIncludeData(boolean includeData) {
+        this.includeData = includeData;
+        fireChange();
+    }
+
+    /**
+     * Determines if this report should include the stack traces for all other threads.
+     * @return <code>true</code> to include it.
+     * @since 10597
+     */
+    public boolean isIncludeAllStackTraces() {
+        return includeAllStackTraces;
+    }
+
+    /**
+     * Sets if this report should include the stack traces for all other threads.
+     * @param includeAllStackTraces if all stack traces should be included
+     * @since 10585
+     */
+    public void setIncludeAllStackTraces(boolean includeAllStackTraces) {
+        this.includeAllStackTraces = includeAllStackTraces;
+        fireChange();
+    }
+
+    /**
+     * Gets the full string that should be send as error report.
+     * @return The string.
+     * @since 10585
+     */
+    public String getReportText() {
+        StringWriter stringWriter = new StringWriter();
+        PrintWriter out = new PrintWriter(stringWriter);
+        if (isIncludeStatusReport()) {
+            out.println(ShowStatusReportAction.getReportHeader());
+        }
+        if (isIncludeData()) {
+            exception.printReportDataTo(out);
+        }
+        exception.printReportStackTo(out);
+        if (isIncludeAllStackTraces()) {
+            exception.printReportThreadsTo(out);
+        }
+        return stringWriter.toString().replaceAll("\r", "");
+    }
+
+    /**
+     * Add a new change listener.
+     * @param listener The listener
+     * @since 10585
+     */
+    public void addChangeListener(BugReportListener listener) {
+        listeners.add(listener);
+    }
+
+    /**
+     * Remove a change listener.
+     * @param listener The listener
+     * @since 10585
+     */
+    public void removeChangeListener(BugReportListener listener) {
+        listeners.remove(listener);
+    }
+
+    private void fireChange() {
+        listeners.stream().forEach(l -> l.bugReportChanged(this));
     }
 
     /**
@@ -74,4 +191,18 @@ public final class BugReport {
         }
         return "?";
     }
+
+    /**
+     * A listener that listens to changes to this report.
+     * @author Michael Zangl
+     * @since 10585
+     */
+    @FunctionalInterface
+    public interface BugReportListener {
+        /**
+         * Called whenever this bug report was changed, e.g. the data to be included in it.
+         * @param report The report that was changed.
+         */
+        void bugReportChanged(BugReport report);
+    }
 }
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
new file mode 100644
index 0000000..f4dec4c
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportDialog.java
@@ -0,0 +1,204 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools.bugreport;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Component;
+import java.awt.Frame;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.BorderFactory;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.KeyStroke;
+import javax.swing.UIManager;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.ExpertToggleAction;
+import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
+import org.openstreetmap.josm.gui.widgets.UrlLabel;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+/**
+ * This is a dialog that can be used to display a bug report.
+ * <p>
+ * It displays the bug to the user and asks the user to submit a bug report.
+ * @author Michael Zangl
+ * @since 10649
+ */
+public class BugReportDialog extends JDialog {
+    private static final int MAX_MESSAGE_SIZE = 500;
+    // This is explicitly not an ExtendedDialog - we still want to be able to display bug reports if there are problems with preferences/..
+    private final JPanel content = new JPanel(new GridBagLayout());
+    private final BugReport report;
+    private final DebugTextDisplay textPanel;
+    private JCheckBox cbSuppress;
+
+    /**
+     * Create a new dialog.
+     * @param report The report to display the dialog for.
+     */
+    public BugReportDialog(BugReport report) {
+        super(findParent(), tr("You have encountered a bug in JOSM"));
+        this.report = report;
+        textPanel = new DebugTextDisplay(report);
+        setContentPane(content);
+
+        addMessageSection();
+
+        addUpToDateSection();
+        // TODO: Notify user about plugin updates
+
+        addCreateTicketSection();
+
+        if (ExpertToggleAction.isExpert()) {
+            addDebugTextSection();
+        }
+
+        addIgnoreButton();
+
+        pack();
+        setModal(true);
+        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+
+        getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "escape");
+        getRootPane().getActionMap().put("escape", new AbstractAction() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                closeDialog();
+            }
+        });
+    }
+
+    /**
+     * The message informing the user what happened.
+     */
+    private void addMessageSection() {
+        String message = tr(
+                "An unexpected exception occurred.\n" + "This is always a coding error. If you are running the latest "
+                        + "version of JOSM, please consider being kind and file a bug report.");
+        Icon icon = UIManager.getIcon("OptionPane.errorIcon");
+
+        JPanel panel = new JPanel(new GridBagLayout());
+
+        panel.add(new JLabel(icon), GBC.std().insets(0, 0, 10, 0));
+        JMultilineLabel messageLabel = new JMultilineLabel(message);
+        messageLabel.setMaxWidth(MAX_MESSAGE_SIZE);
+        panel.add(messageLabel, GBC.eol().fill());
+        content.add(panel, GBC.eop().fill(GBC.HORIZONTAL).insets(20));
+    }
+
+    private void addDebugTextSection() {
+        JPanel panel = new JPanel(new GridBagLayout());
+        addBorder(panel, tr("Debug information"));
+        panel.add(textPanel, GBC.eop().fill());
+
+        panel.add(new JLabel(tr("Manually report at:")), GBC.std());
+        panel.add(new UrlLabel(Main.getJOSMWebsite() + "/newticket"), GBC.std().fill(GBC.HORIZONTAL));
+        JButton copy = new JButton("Copy to clipboard");
+        copy.addActionListener(e -> textPanel.copyToClippboard());
+        panel.add(copy, GBC.eol().anchor(GBC.EAST));
+        content.add(panel, GBC.eop().fill());
+    }
+
+    private void addUpToDateSection() {
+        JPanel panel = new JosmUpdatePanel();
+        addBorder(panel, tr("Is JOSM up to date?"));
+        content.add(panel, GBC.eop().fill(GBC.HORIZONTAL));
+    }
+
+    private void addCreateTicketSection() {
+        JPanel panel = new JPanel(new GridBagLayout());
+        addBorder(panel, tr("Send bug report"));
+
+        JMultilineLabel helpText = new JMultilineLabel(
+                tr("If you are running the latest version of JOSM and the plugins, "
+                        + "please file a bug report in our bugtracker.\n"
+                        + "There the error information should already be "
+                        + "filled in for you. Please include information on how to reproduce "
+                        + "the error and try to supply as much detail as possible."));
+        helpText.setMaxWidth(MAX_MESSAGE_SIZE);
+        panel.add(helpText, GBC.eop().fill(GridBagConstraints.HORIZONTAL));
+
+        if (ExpertToggleAction.isExpert()) {
+            // The default settings should be fine in most situations.
+            panel.add(new BugReportSettingsPanel(report), GBC.eop().fill(GBC.HORIZONTAL));
+        }
+
+        JButton sendBugReportButton = new JButton(tr("Report Bug"), ImageProvider.get("bug"));
+        sendBugReportButton.addActionListener(e -> sendBug());
+        panel.add(sendBugReportButton, GBC.eop().anchor(GBC.EAST));
+        content.add(panel, GBC.eop().fill(GBC.HORIZONTAL));
+    }
+
+    private static void addBorder(JPanel panel, String title) {
+        panel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(title), BorderFactory
+                .createEmptyBorder(10, 10, 10, 10)));
+    }
+
+    private void addIgnoreButton() {
+        JPanel panel = new JPanel(new GridBagLayout());
+        cbSuppress = new JCheckBox(tr("Suppress further error dialogs for this session."));
+        cbSuppress.setVisible(false);
+        panel.add(cbSuppress, GBC.std().fill(GBC.HORIZONTAL));
+        JButton ignore = new JButton(tr("Ignore this error."));
+        ignore.addActionListener(e -> closeDialog());
+        panel.add(ignore, GBC.eol());
+        content.add(panel, GBC.eol().fill(GBC.HORIZONTAL).insets(20));
+    }
+
+    /**
+     * Shows or hides the suppress errors button
+     * @param showSuppress <code>true</code> to show the suppress errors checkbox.
+     */
+    public void setShowSuppress(boolean showSuppress) {
+        cbSuppress.setVisible(showSuppress);
+        pack();
+    }
+
+    /**
+     * Check if the checkbox to suppress further errors was selected
+     * @return <code>true</code> if the user wishes to suppress errors.
+     */
+    public boolean shouldSuppressFurtherErrors() {
+        return cbSuppress.isSelected();
+    }
+
+    private void closeDialog() {
+        setVisible(false);
+    }
+
+    private void sendBug() {
+        BugReportSender.reportBug(textPanel.getCodeText());
+    }
+
+    /**
+     * A safe way to find a matching parent frame.
+     * @return The parent frame.
+     */
+    private static Frame findParent() {
+        Component current = Main.parent;
+        try {
+            // avoid cycles/invalid hirarchies
+            for (int i = 0; i < 20 && current != null; i++) {
+                if (current instanceof Frame) {
+                    return (Frame) current;
+                }
+                current = current.getParent();
+            }
+        } catch (RuntimeException e) {
+            BugReport.intercept(e).put("current", current).warn();
+        }
+        return null;
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandler.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandler.java
index 155a1b3..461b73f 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandler.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandler.java
@@ -1,35 +1,15 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.tools.bugreport;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import java.awt.Component;
 import java.awt.GraphicsEnvironment;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
 import javax.swing.JOptionPane;
-import javax.swing.JPanel;
 import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.actions.ReportBugAction;
-import org.openstreetmap.josm.actions.ShowStatusReportAction;
-import org.openstreetmap.josm.data.Version;
-import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.preferences.plugin.PluginPreference;
-import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
-import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.plugins.PluginDownloadTask;
 import org.openstreetmap.josm.plugins.PluginHandler;
-import org.openstreetmap.josm.tools.GBC;
-import org.openstreetmap.josm.tools.WikiReader;
 
 /**
  * An exception handler that asks the user to send a bug report.
@@ -78,75 +58,14 @@ public final class BugReportExceptionHandler implements Thread.UncaughtException
         }
 
         static void askForBugReport(final Throwable e) {
-            String[] buttonTexts = new String[] {tr("Do nothing"), tr("Report Bug")};
-            String[] buttonIcons = new String[] {"cancel", "bug"};
-            int defaultButtonIdx = 1;
-            String message = tr("An unexpected exception occurred.<br>" +
-                    "This is always a coding error. If you are running the latest<br>" +
-                    "version of JOSM, please consider being kind and file a bug report."
-                    );
-            // Check user is running current tested version, the error may already be fixed
-            int josmVersion = Version.getInstance().getVersion();
-            if (josmVersion != Version.JOSM_UNKNOWN_VERSION) {
-                try {
-                    int latestVersion = Integer.parseInt(new WikiReader().
-                            read(Main.getJOSMWebsite()+"/wiki/TestedVersion?format=txt").trim());
-                    if (latestVersion > josmVersion) {
-                        buttonTexts = new String[] {tr("Do nothing"), tr("Update JOSM"), tr("Report Bug")};
-                        buttonIcons = new String[] {"cancel", "download", "bug"};
-                        defaultButtonIdx = 2;
-                        message = tr("An unexpected exception occurred. This is always a coding error.<br><br>" +
-                                "However, you are running an old version of JOSM ({0}),<br>" +
-                                "instead of using the current tested version (<b>{1}</b>).<br><br>"+
-                                "<b>Please update JOSM</b> before considering to file a bug report.",
-                                String.valueOf(josmVersion), String.valueOf(latestVersion));
-                    }
-                } catch (IOException | NumberFormatException ex) {
-                    Main.warn(ex, "Unable to detect latest version of JOSM:");
-                }
-            }
-            // Build panel
-            JPanel pnl = new JPanel(new GridBagLayout());
-            pnl.add(new JLabel("<html>" + message + "</html>"), GBC.eol());
-            JCheckBox cbSuppress = null;
-            if (exceptionCounter > 1) {
-                cbSuppress = new JCheckBox(tr("Suppress further error dialogs for this session."));
-                pnl.add(cbSuppress, GBC.eol());
-            }
             if (GraphicsEnvironment.isHeadless()) {
                 return;
             }
-            // Show dialog
-            ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Unexpected Exception"), buttonTexts);
-            ed.setButtonIcons(buttonIcons);
-            ed.setIcon(JOptionPane.ERROR_MESSAGE);
-            ed.setCancelButton(1);
-            ed.setDefaultButton(defaultButtonIdx);
-            ed.setContent(pnl);
-            ed.setFocusOnDefaultButton(true);
-            ed.showDialog();
-            if (cbSuppress != null && cbSuppress.isSelected()) {
-                suppressExceptionDialogs = true;
-            }
-            if (ed.getValue() <= 1) {
-                // "Do nothing"
-                return;
-            } else if (ed.getValue() < buttonTexts.length) {
-                // "Update JOSM"
-                try {
-                    Main.platform.openUrl(Main.getJOSMWebsite());
-                } catch (IOException ex) {
-                    Main.warn(ex, "Unable to access JOSM website:");
-                }
-            } else {
-                // "Report bug"
-                try {
-                    JPanel p = buildPanel(e);
-                    JOptionPane.showMessageDialog(Main.parent, p, tr("You have encountered a bug in JOSM"), JOptionPane.ERROR_MESSAGE);
-                } catch (RuntimeException ex) {
-                    Main.error(ex);
-                }
-            }
+            BugReport report = new BugReport(BugReport.intercept(e));
+            BugReportDialog dialog = new BugReportDialog(report);
+            dialog.setShowSuppress(exceptionCounter > 1);
+            dialog.setVisible(true);
+            suppressExceptionDialogs = dialog.shouldSuppressFurtherErrors();
         }
 
         @Override
@@ -195,59 +114,6 @@ public final class BugReportExceptionHandler implements Thread.UncaughtException
         }
     }
 
-    static JPanel buildPanel(final Throwable e) {
-        StringWriter stack = new StringWriter();
-        PrintWriter writer = new PrintWriter(stack);
-        if (e instanceof ReportedException) {
-            // Temporary!
-            ((ReportedException) e).printReportDataTo(writer);
-            ((ReportedException) e).printReportStackTo(writer);
-        } else {
-            e.printStackTrace(writer);
-        }
-
-        String text = ShowStatusReportAction.getReportHeader() + stack.getBuffer().toString();
-        text = text.replaceAll("\r", "");
-
-        JPanel p = new JPanel(new GridBagLayout());
-        p.add(new JMultilineLabel(
-                tr("You have encountered an error in JOSM. Before you file a bug report " +
-                        "make sure you have updated to the latest version of JOSM here:")),
-                        GBC.eol().fill(GridBagConstraints.HORIZONTAL));
-        p.add(new UrlLabel(Main.getJOSMWebsite(), 2), GBC.eop().insets(8, 0, 0, 0));
-        p.add(new JMultilineLabel(
-                tr("You should also update your plugins. If neither of those help please " +
-                        "file a bug report in our bugtracker using this link:")),
-                        GBC.eol().fill(GridBagConstraints.HORIZONTAL));
-        p.add(new JButton(new ReportBugAction(text)), GBC.eop().insets(8, 0, 0, 0));
-        p.add(new JMultilineLabel(
-                tr("There the error information provided below should already be " +
-                        "filled in for you. Please include information on how to reproduce " +
-                        "the error and try to supply as much detail as possible.")),
-                        GBC.eop().fill(GridBagConstraints.HORIZONTAL));
-        p.add(new JMultilineLabel(
-                tr("Alternatively, if that does not work you can manually fill in the information " +
-                        "below at this URL:")), GBC.eol().fill(GridBagConstraints.HORIZONTAL));
-        p.add(new UrlLabel(Main.getJOSMWebsite()+"/newticket", 2), GBC.eop().insets(8, 0, 0, 0));
-
-        // Wiki formatting for manual copy-paste
-        DebugTextDisplay textarea = new DebugTextDisplay(text);
-
-        if (textarea.copyToClippboard()) {
-            p.add(new JLabel(tr("(The text has already been copied to your clipboard.)")),
-                    GBC.eop().fill(GridBagConstraints.HORIZONTAL));
-        }
-
-        p.add(textarea, GBC.eop().fill());
-
-        for (Component c: p.getComponents()) {
-            if (c instanceof JMultilineLabel) {
-                ((JMultilineLabel) c).setMaxWidth(400);
-            }
-        }
-        return p;
-    }
-
     /**
      * Determines if an exception is currently being handled
      * @return {@code true} if an exception is currently being handled, {@code false} otherwise
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java
index 04269a5..4035dcf 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportSender.java
@@ -9,10 +9,8 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLEncoder;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
+import java.util.Base64;
 
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
@@ -26,7 +24,6 @@ import javax.xml.xpath.XPathFactory;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
-import org.openstreetmap.josm.tools.Base64;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.HttpClient.Response;
@@ -83,8 +80,7 @@ public class BugReportSender extends Thread {
     private String pasteDebugText() throws BugReportSenderException {
         try {
             String text = Utils.strip(statusText);
-            ByteBuffer buffer = Charset.forName("UTF-8").encode(CharBuffer.wrap(text));
-            String pdata = Base64.encode(buffer, false);
+            String pdata = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
             String postQuery = "pdata=" + URLEncoder.encode(pdata, "UTF-8");
             HttpClient client = HttpClient.create(new URL(getJOSMTicketURL()), "POST")
                     .setHeader("Content-Type", "application/x-www-form-urlencoded")
@@ -131,19 +127,16 @@ public class BugReportSender extends Thread {
 
     private void failed(String string) {
         errorMessage = string;
-        SwingUtilities.invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                JPanel errorPanel = new JPanel(new GridBagLayout());
-                errorPanel.add(new JMultilineLabel(
-                        tr("Opening the bug report failed. Please report manually using this website:")),
-                        GBC.eol().fill(GridBagConstraints.HORIZONTAL));
-                errorPanel.add(new UrlLabel(Main.getJOSMWebsite() + "/newticket", 2), GBC.eop().insets(8, 0, 0, 0));
-                errorPanel.add(new DebugTextDisplay(statusText));
-
-                JOptionPane.showMessageDialog(Main.parent, errorPanel, tr("You have encountered a bug in JOSM"),
-                        JOptionPane.ERROR_MESSAGE);
-            }
+        SwingUtilities.invokeLater(() -> {
+            JPanel errorPanel = new JPanel(new GridBagLayout());
+            errorPanel.add(new JMultilineLabel(
+                    tr("Opening the bug report failed. Please report manually using this website:")),
+                    GBC.eol().fill(GridBagConstraints.HORIZONTAL));
+            errorPanel.add(new UrlLabel(Main.getJOSMWebsite() + "/newticket", 2), GBC.eop().insets(8, 0, 0, 0));
+            errorPanel.add(new DebugTextDisplay(statusText));
+
+            JOptionPane.showMessageDialog(Main.parent, errorPanel, tr("You have encountered a bug in JOSM"),
+                    JOptionPane.ERROR_MESSAGE);
         });
     }
 
diff --git a/src/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanel.java b/src/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanel.java
new file mode 100644
index 0000000..9d8c1a4
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/bugreport/BugReportSettingsPanel.java
@@ -0,0 +1,38 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools.bugreport;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import javax.swing.BoxLayout;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+
+/**
+ * This panel displays the settings that can be changed before submitting a bug report to the web page.
+ * @author Michael Zangl
+ * @since 10585
+ */
+public class BugReportSettingsPanel extends JPanel {
+    /**
+     * Creates the new settings panel.
+     * @param report The report this panel should influence.
+     */
+    public BugReportSettingsPanel(BugReport report) {
+        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+
+        JCheckBox statusReport = new JCheckBox(tr("Include the system status report."));
+        statusReport.setSelected(report.isIncludeStatusReport());
+        statusReport.addChangeListener(e -> report.setIncludeStatusReport(statusReport.isSelected()));
+        add(statusReport);
+
+        JCheckBox data = new JCheckBox(tr("Include information about the data you were working on."));
+        data.setSelected(report.isIncludeData());
+        data.addChangeListener(e -> report.setIncludeData(data.isSelected()));
+        add(data);
+
+        JCheckBox allStackTraces = new JCheckBox(tr("Include all stack traces."));
+        allStackTraces.setSelected(report.isIncludeAllStackTraces());
+        allStackTraces.addChangeListener(e -> report.setIncludeAllStackTraces(allStackTraces.isSelected()));
+        add(allStackTraces);
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java b/src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java
index 28f88ac..05ee0e1 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/DebugTextDisplay.java
@@ -5,6 +5,7 @@ import java.awt.Dimension;
 
 import javax.swing.JScrollPane;
 
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -14,15 +15,16 @@ import org.openstreetmap.josm.tools.Utils;
  * @since 10055
  */
 public class DebugTextDisplay extends JScrollPane {
-    private final String text;
+    private static final String CODE_PATTERN = "{{{%n%s%n}}}";
+    private String text;
+    private JosmTextArea textArea;
 
     /**
-     * Creates a new text are with the fixed text
-     * @param textToDisplay The text to display.
+     * Creates a new text area.
+     * @since 10585
      */
-    public DebugTextDisplay(String textToDisplay) {
-        text = "{{{\n" + Utils.strip(textToDisplay) + "\n}}}";
-        JosmTextArea textArea = new JosmTextArea(text);
+    private DebugTextDisplay() {
+        textArea = new JosmTextArea();
         textArea.setCaretPosition(0);
         textArea.setEditable(false);
         setViewportView(textArea);
@@ -30,10 +32,49 @@ public class DebugTextDisplay extends JScrollPane {
     }
 
     /**
-     * Copies the debug text to the clippboard.
+     * Creates a new text area with an inital text to display
+     * @param textToDisplay The text to display.
+     */
+    public DebugTextDisplay(String textToDisplay) {
+        this();
+        setCodeText(textToDisplay);
+    }
+
+    /**
+     * Creates a new text area that displays the bug report data
+     * @param report The bug report data to display.
+     * @since 10585
+     */
+    public DebugTextDisplay(BugReport report) {
+        this();
+        setCodeText(report.getReportText());
+        report.addChangeListener(e -> setCodeText(report.getReportText()));
+    }
+
+    /**
+     * Sets the text that should be displayed in this view.
+     * @param textToDisplay The text
+     */
+    private void setCodeText(String textToDisplay) {
+        text = Utils.strip(textToDisplay).replaceAll("\r", "");
+        textArea.setText(String.format(CODE_PATTERN, text));
+        textArea.setCaretPosition(0);
+    }
+
+    /**
+     * Copies the debug text to the clipboard. This includes the code tags for trac.
      * @return <code>true</code> if copy was successful
      */
     public boolean copyToClippboard() {
-        return Utils.copyToClipboard(text);
+        return ClipboardUtils.copyString(String.format(CODE_PATTERN, text));
+    }
+
+    /**
+     * Gets the text this are displays, without the code tag.
+     * @return The stripped text set by {@link #setCodeText(String)}
+     * @since 10585
+     */
+    public String getCodeText() {
+        return text;
     }
 }
diff --git a/src/org/openstreetmap/josm/tools/bugreport/JosmUpdatePanel.java b/src/org/openstreetmap/josm/tools/bugreport/JosmUpdatePanel.java
new file mode 100644
index 0000000..18af149
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/bugreport/JosmUpdatePanel.java
@@ -0,0 +1,103 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools.bugreport;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.GridBagLayout;
+import java.io.IOException;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
+import org.openstreetmap.josm.gui.widgets.UrlLabel;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.WikiReader;
+
+/**
+ * This is a panel that displays the current JOSM version and the ability to update JOSM.
+ * @author Michael Zangl
+ * @since 10649
+ */
+public class JosmUpdatePanel extends JPanel {
+    private final JMultilineLabel testedVersionField;
+    private final int josmVersion;
+
+    /**
+     * Create a new {@link JosmUpdatePanel}
+     */
+    public JosmUpdatePanel() {
+        super(new GridBagLayout());
+        josmVersion = Version.getInstance().getVersion();
+
+        add(new JMultilineLabel(tr("Your current version of JOSM is {0}", josmVersion)), GBC.eop().fill(GBC.HORIZONTAL));
+        testedVersionField = new JMultilineLabel(tr("JOSM is searching for updates..."));
+        add(testedVersionField, GBC.eop().fill(GBC.HORIZONTAL));
+
+        checkCurrentVersion();
+    }
+
+    private void checkCurrentVersion() {
+        new Thread(this::readCurrentVersion, "JOSM version checker").start();
+    }
+
+    private void readCurrentVersion() {
+        int testedVersion = getTestedVersion();
+
+        if (testedVersion < 0) {
+            SwingUtilities.invokeLater(this::displayError);
+        } else if (josmVersion < testedVersion) {
+            SwingUtilities.invokeLater(() -> displayOutOfDate(testedVersion));
+        } else {
+            SwingUtilities.invokeLater(this::displayUpToDate);
+        }
+    }
+
+    private static int getTestedVersion() {
+        try {
+            String testedString = new WikiReader().read(Main.getJOSMWebsite() + "/wiki/TestedVersion?format=txt");
+            return Integer.parseInt(testedString.trim());
+        } catch (NumberFormatException | IOException e) {
+            Main.warn(e, "Unable to detect latest version of JOSM:");
+            return -1;
+        }
+    }
+
+    /**
+     * Display that there was an error while checking the current version.
+     */
+    private void displayError() {
+        testedVersionField.setText(tr("An error occured while checking if your JOSM instance is up to date."));
+        showUpdateButton();
+    }
+
+    private void displayUpToDate() {
+        testedVersionField.setText(tr("JOSM is up to date."));
+    }
+
+    private void displayOutOfDate(int testedVersion) {
+        testedVersionField
+                .setText(tr("JOSM is out of date. The current version is {0}. Try updateing JOSM.", testedVersion));
+        showUpdateButton();
+    }
+
+    private void showUpdateButton() {
+        add(new JMultilineLabel(tr("Before you file a bug report make sure you have updated to the latest version of JOSM here:")), GBC.eol());
+        add(new UrlLabel(Main.getJOSMWebsite(), 2), GBC.eop().insets(8, 0, 0, 0));
+        JButton updateButton = new JButton(tr("Update JOSM"), ImageProvider.get("download"));
+        updateButton.addActionListener(e -> openJosmUpdateSite());
+        add(updateButton, GBC.eol().anchor(GBC.EAST));
+    }
+
+    private static void openJosmUpdateSite() {
+        try {
+            Main.platform.openUrl(Main.getJOSMWebsite());
+        } catch (IOException ex) {
+            Main.warn(ex, "Unable to access JOSM website:");
+        }
+    }
+}
diff --git a/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java b/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
index 1fe31ca..22efa08 100644
--- a/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
+++ b/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
@@ -2,17 +2,24 @@
 package org.openstreetmap.josm.tools.bugreport;
 
 import java.io.PrintWriter;
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.ConcurrentModificationException;
 import java.util.IdentityHashMap;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.function.Supplier;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.StreamUtils;
 
 /**
  * This is a special exception that cannot be directly thrown.
@@ -24,17 +31,19 @@ import org.openstreetmap.josm.Main;
  * @since 10285
  */
 public class ReportedException extends RuntimeException {
-    private static final int MAX_COLLECTION_ENTRIES = 30;
     /**
-     *
+     * How many entries of a collection to include in the bug report.
      */
+    private static final int MAX_COLLECTION_ENTRIES = 30;
+
     private static final long serialVersionUID = 737333873766201033L;
+
     /**
      * We capture all stack traces on exception creation. This allows us to trace synchonization problems better. We cannot be really sure what
      * happened but we at least see which threads
      */
     private final transient Map<Thread, StackTraceElement[]> allStackTraces;
-    private final transient LinkedList<Section> sections = new LinkedList<>();
+    private final LinkedList<Section> sections = new LinkedList<>();
     private final transient Thread caughtOnThread;
     private final Throwable exception;
     private String methodWarningFrom;
@@ -143,17 +152,15 @@ public class ReportedException extends RuntimeException {
             return false;
         }
 
-        Set<Throwable> dejaVu = Collections.newSetFromMap(new IdentityHashMap<Throwable, Boolean>());
-        return hasSameStackTrace(dejaVu, this.exception, e.exception);
+        return hasSameStackTrace(new CauseTraceIterator(), e.exception);
     }
 
-    private static boolean hasSameStackTrace(Set<Throwable> dejaVu, Throwable e1, Throwable e2) {
-        if (dejaVu.contains(e1)) {
-            // cycle. If it was the same until here, we assume both have that cycle.
+    private static boolean hasSameStackTrace(CauseTraceIterator causeTraceIterator, Throwable e2) {
+        if (!causeTraceIterator.hasNext()) {
+            // all done.
             return true;
         }
-        dejaVu.add(e1);
-
+        Throwable e1 = causeTraceIterator.next();
         StackTraceElement[] t1 = e1.getStackTrace();
         StackTraceElement[] t2 = e2.getStackTrace();
 
@@ -166,14 +173,14 @@ public class ReportedException extends RuntimeException {
         if ((c1 == null) != (c2 == null)) {
             return false;
         } else if (c1 != null) {
-            return hasSameStackTrace(dejaVu, c1, c2);
+            return hasSameStackTrace(causeTraceIterator, c2);
         } else {
             return true;
         }
     }
 
     /**
-     * Adds some debug values to this exception.
+     * Adds some debug values to this exception. The value is converted to a string. Errors during conversion are handled.
      *
      * @param key
      *            The key to add this for. Does not need to be unique but it would be nice.
@@ -182,8 +189,23 @@ public class ReportedException extends RuntimeException {
      * @return This exception for easy chaining.
      */
     public ReportedException put(String key, Object value) {
+        return put(key, () -> value);
+    }
+
+    /**
+    * Adds some debug values to this exception. This method automatically catches errors that occur during the production of the value.
+    *
+    * @param key
+    *            The key to add this for. Does not need to be unique but it would be nice.
+    * @param valueSupplier
+    *            A supplier that is called once to get the value.
+    * @return This exception for easy chaining.
+    * @since 10586
+    */
+    public ReportedException put(String key, Supplier<Object> valueSupplier) {
         String string;
         try {
+            Object value = valueSupplier.get();
             if (value == null) {
                 string = "null";
             } else if (value instanceof Collection) {
@@ -227,7 +249,54 @@ public class ReportedException extends RuntimeException {
             .toString();
     }
 
-    private static class SectionEntry {
+
+    /**
+     * Check if this exception may be caused by a threading issue.
+     * @return <code>true</code> if it is.
+     * @since 10585
+     */
+    public boolean mayHaveConcurrentSource() {
+        return StreamUtils.toStream(CauseTraceIterator::new)
+                .anyMatch(t -> t instanceof ConcurrentModificationException || t instanceof InvocationTargetException);
+    }
+
+    /**
+     * Iterates over the causes for this exception. Ignores cycles and aborts iteration then.
+     * @author Michal Zangl
+     * @since 10585
+     */
+    private final class CauseTraceIterator implements Iterator<Throwable> {
+        private Throwable current = exception;
+        private final Set<Throwable> dejaVu = Collections.newSetFromMap(new IdentityHashMap<Throwable, Boolean>());
+
+        @Override
+        public boolean hasNext() {
+            return current != null;
+        }
+
+        @Override
+        public Throwable next() {
+            if (!hasNext()) {
+                throw new NoSuchElementException();
+            }
+            Throwable toReturn = current;
+            advance();
+            return toReturn;
+        }
+
+        private void advance() {
+            dejaVu.add(current);
+            current = current.getCause();
+            if (current != null && dejaVu.contains(current)) {
+                current = null;
+            }
+        }
+    }
+
+    private static class SectionEntry implements Serializable {
+
+        private static final long serialVersionUID = 1L;
+
         private final String key;
         private final String value;
 
@@ -248,7 +317,9 @@ public class ReportedException extends RuntimeException {
         }
     }
 
-    private static class Section {
+    private static class Section implements Serializable {
+
+        private static final long serialVersionUID = 1L;
 
         private final String sectionName;
         private final ArrayList<SectionEntry> entries = new ArrayList<>();
diff --git a/src/org/openstreetmap/josm/tools/bugreport/package-info.java b/src/org/openstreetmap/josm/tools/bugreport/package-info.java
new file mode 100644
index 0000000..80b521d
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/bugreport/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides classes for the bug report system, allowing users to create tickets on issue tracker directly from JOSM.
+ */
+package org.openstreetmap.josm.tools.bugreport;
diff --git a/src/org/openstreetmap/josm/tools/template_engine/CompoundTemplateEntry.java b/src/org/openstreetmap/josm/tools/template_engine/CompoundTemplateEntry.java
index 28b17bd..989971a 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/CompoundTemplateEntry.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/CompoundTemplateEntry.java
@@ -12,7 +12,7 @@ public final class CompoundTemplateEntry implements TemplateEntry {
             return new CompoundTemplateEntry(entry);
     }
 
-    private CompoundTemplateEntry(TemplateEntry[] entries) {
+    private CompoundTemplateEntry(TemplateEntry ... entries) {
         this.entries = entries;
     }
 
diff --git a/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java b/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
index 8c25572..d7bc25b 100644
--- a/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
+++ b/src/org/openstreetmap/josm/tools/template_engine/ContextSwitchTemplate.java
@@ -146,7 +146,7 @@ public class ContextSwitchTemplate implements TemplateEntry {
                 }
             }
             for (OsmPrimitive o: rhs.getPrimitives(root)) {
-                if (condition == null || condition.match(o) && !result.contains(o)) {
+                if (condition == null || (condition.match(o) && !result.contains(o))) {
                     result.add(o);
                 }
             }
diff --git a/src/org/openstreetmap/josm/tools/template_engine/package-info.java b/src/org/openstreetmap/josm/tools/template_engine/package-info.java
new file mode 100644
index 0000000..743a0ad
--- /dev/null
+++ b/src/org/openstreetmap/josm/tools/template_engine/package-info.java
@@ -0,0 +1,6 @@
+// License: GPL. For details, see LICENSE file.
+
+/**
+ * Provides classes for a generic template engine used in presets, name rendering and search function.
+ */
+package org.openstreetmap.josm.tools.template_engine;
diff --git a/styles/standard/elemstyles.mapcss b/styles/standard/elemstyles.mapcss
index f763e88..7538a76 100644
--- a/styles/standard/elemstyles.mapcss
+++ b/styles/standard/elemstyles.mapcss
@@ -64,57 +64,57 @@ setting::partial_fill {
 /*********************/
 
 relation[restriction=no_left_turn][!setting("alt_turn_icons")] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_left_turn_red.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_left_turn_red.png";
     set icon_z17;
     text: auto;
 }
 relation[restriction=no_left_turn][setting("alt_turn_icons")] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_left_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_left_turn.svg";
     set icon_z17;
     text: auto;
 }
 relation[restriction=no_right_turn][!setting("alt_turn_icons")] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_right_turn_red.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_right_turn_red.png";
     set icon_z17;
     text: auto;
 }
 relation[restriction=no_right_turn][setting("alt_turn_icons")] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_right_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_right_turn.svg";
     set icon_z17;
     text: auto;
 }
 relation[restriction=no_straight_on][!setting("alt_turn_icons")] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_straight_on_red.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_straight_on_red.png";
     set icon_z17;
     text: auto;
 }
 relation[restriction=no_straight_on][setting("alt_turn_icons")] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_straight_on.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_straight_on.svg";
     set icon_z17;
     text: auto;
 }
 relation[restriction=no_u_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_u_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_u_turn.svg";
     set icon_z17;
     text: auto;
 }
 relation[restriction=only_left_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_left_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_left_turn.svg";
     set icon_z17;
     text: auto;
 }
 relation[restriction=only_right_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_right_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_right_turn.svg";
     set icon_z17;
     text: auto;
 }
 relation[restriction=only_straight_on] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_straight_on.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_straight_on.svg";
     set icon_z17;
     text: auto;
 }
 node[restriction] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
     text: auto;
 }
@@ -154,7 +154,7 @@ node[tunnel?],
 node[tunnel?!],
 node[cutting?!],
 node[embankment?!] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -187,88 +187,88 @@ way[access=destination]::core_access {
     dashes: 2,2;
 }
 node[traffic_sign][access?!] {
-    icon-image: "vehicle/restriction/access.png";
+    icon-image: "presets/vehicle/restriction/restrictions.svg";
     set icon_z17;
 }
 node[traffic_sign][access=permissive][!is_prop_set(icon-image)],
 node[traffic_sign][access=private][!is_prop_set(icon-image)],
 node[traffic_sign][access=destination][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[traffic_sign][bicycle?!] {
-    icon-image: "vehicle/restriction/bicycle.png";
+    icon-image: "presets/vehicle/restriction/bicycle.svg";
     set icon_z17;
 }
 node[traffic_sign][bicycle=designated] {
-    icon-image: "vehicle/restriction/bicycle-designated.png";
+    icon-image: "presets/vehicle/restriction/bicycle-designated.svg";
     set icon_z17;
 }
 node[traffic_sign][foot?!] {
-    icon-image: "vehicle/restriction/foot.png";
+    icon-image: "presets/vehicle/restriction/foot.svg";
     set icon_z17;
 }
 node[traffic_sign][foot=designated] {
-    icon-image: "vehicle/restriction/foot-designated.png";
+    icon-image: "presets/vehicle/restriction/foot-designated.svg";
     set icon_z17;
 }
 node[traffic_sign][goods?!],
 node[traffic_sign][hgv?!] {
-    icon-image: "vehicle/restriction/goods.png";
+    icon-image: "presets/vehicle/restriction/goods.svg";
     set icon_z17;
 }
 node[traffic_sign][horse?!] {
-    icon-image: "vehicle/restriction/horse.png";
+    icon-image: "presets/vehicle/restriction/horse.svg";
     set icon_z17;
 }
 node[traffic_sign][horse=designated] {
-    icon-image: "vehicle/restriction/horse-designated.png";
+    icon-image: "presets/vehicle/restriction/horse-designated.svg";
     set icon_z17;
 }
 node[traffic_sign][motorcycle?!] {
-    icon-image: "vehicle/restriction/motorbike.png";
+    icon-image: "presets/vehicle/restriction/motorbike.svg";
     set icon_z17;
 }
 node[traffic_sign][motorcar?!] {
-    icon-image: "vehicle/restriction/motorcar.png";
+    icon-image: "presets/vehicle/restriction/motorcar.svg";
     set icon_z17;
 }
 node[traffic_sign][psv?!] {
-    icon-image: "vehicle/restriction/psv.png";
+    icon-image: "presets/vehicle/restriction/psv.svg";
     set icon_z17;
 }
 node[traffic_sign][motorboat?!][!is_prop_set(icon-image)],
 node[traffic_sign][boat?!][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[noexit=yes] {
-    icon-image: "vehicle/restriction/dead_end.png";
+    icon-image: "presets/vehicle/restriction/dead_end.svg";
     set icon_z17;
 }
 node[traffic_sign][maxweight] {
-    icon-image: "vehicle/restriction/maxweight.png";
+    icon-image: "presets/vehicle/restriction/maxweight.svg";
     set icon_z17;
 }
 node[traffic_sign][maxheight] {
-    icon-image: "vehicle/restriction/maxheight.png";
+    icon-image: "presets/vehicle/restriction/maxheight.svg";
     set icon_z17;
 }
 node[traffic_sign][maxwidth] {
-    icon-image: "vehicle/restriction/maxwidth.png";
+    icon-image: "presets/vehicle/restriction/maxwidth.svg";
     set icon_z17;
 }
 node[traffic_sign][maxlength] {
-    icon-image: "vehicle/restriction/maxlength.png";
+    icon-image: "presets/vehicle/restriction/maxlength.svg";
     set icon_z17;
 }
 node[traffic_sign][minspeed] {
-    icon-image: "vehicle/restriction/minspeed.png";
+    icon-image: "presets/vehicle/restriction/minspeed.svg";
     set icon_z17;
 }
 node[traffic_sign][maxstay][!is_prop_set(icon-image)],
 node[traffic_sign][toll][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 
@@ -278,7 +278,7 @@ node[traffic_sign][toll][!is_prop_set(icon-image)] {
 
 node["addr:housenumber"],
 node["addr:postcode"] {
-    icon-image: "misc/housenumber.png";
+    icon-image: "presets/misc/housenumber.png";
     set icon_z17;
 }
 way["addr:interpolation"=odd] {
@@ -304,45 +304,45 @@ area[building:part][!building:part?!] {
     fill-color: buildingpart#dcbbbb;
 }
 node[building][!building?!] {
-    icon-image: "misc/landmark/building.png";
+    icon-image: "presets/landmark/building.svg";
     set icon_z17;
 }
 node[building=garage] {
-    icon-image: "misc/landuse/garages.png";
+    icon-image: "presets/landuse/garages.png";
     set icon_z17;
 }
 node[building=garages] {
-    icon-image: "misc/landuse/garages.png";
+    icon-image: "presets/landuse/garages.png";
     set icon_z17;
 }
 node[building=transformer_tower] {
-    icon-image: "power/transformer_tower.svg";
+    icon-image: "presets/power/transformer_tower.svg";
     set icon_z17;
 }
 node[entrance=yes],
 node[entrance=staircase] {
-    icon-image: "misc/entrance-yes.png";
+    icon-image: "presets/misc/entrance-yes.png";
     set icon_z17;
 }
 node[entrance=main] {
-    icon-image: "misc/entrance-main.png";
+    icon-image: "presets/misc/entrance-main.png";
     set icon_z17;
 }
 node[entrance=service] {
-    icon-image: "misc/entrance-service.png";
+    icon-image: "presets/misc/entrance-service.png";
     set icon_z17;
 }
 node[entrance=exit] {
-    icon-image: "misc/entrance-exit.png";
+    icon-image: "presets/misc/entrance-exit.png";
     set icon_z17;
 }
 node[entrance=emergency] {
-    icon-image: "misc/entrance-emergency.png";
+    icon-image: "presets/misc/entrance-emergency.png";
     set icon_z17;
 }
 node[building=entrance],
 node[building:part] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -356,11 +356,11 @@ way[barrier=bollard] {
     dashes: 3,9;
 }
 node[barrier=bollard] {
-    icon-image: "presets/bollard.png";
+    icon-image: "presets/barrier/bollard.svg";
     set icon_z17;
 }
 node[barrier=gate] {
-    icon-image: "vehicle/gate.png";
+    icon-image: "presets/barrier/gate.png";
     set icon_z17;
 }
 way[barrier=yes],
@@ -380,7 +380,7 @@ way[barrier=kerb] {
 }
 way[barrier=retaining_wall],
 way[barrier=kerb] {
-    repeat-image: "misc/cliff-pattern.png";
+    repeat-image: "presets/misc/cliff-pattern.png";
     repeat-image-align: top;
 }
 node[barrier=hedge],
@@ -389,66 +389,68 @@ node[barrier=guard_rail],
 node[barrier=city_wall],
 node[barrier=retaining_wall],
 node[barrier=ditch] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[barrier=kerb] {
-    icon-image: "vehicle/kerb.svg";
+    icon-image: "presets/barrier/kerb.svg";
     set icon_z17;
 }
 node[barrier=block] {
-    icon-image: "vehicle/block.svg";
+    icon-image: "presets/barrier/block.svg";
     set icon_z17;
 }
 node[barrier=chain] {
-    icon-image: "vehicle/chain.svg";
+    icon-image: "presets/barrier/chain.svg";
     set icon_z17;
 }
 node[barrier=stile] {
-    icon-image: "vehicle/stile.svg";
+    icon-image: "presets/barrier/stile.svg";
     set icon_z17;
 }
 node[barrier=turnstile] {
-    icon-image: "vehicle/turnstile.png";
+    icon-image: "presets/barrier/turnstile.svg";
     set icon_z17;
 }
 node[barrier=cycle_barrier] {
-    icon-image: "vehicle/cycle_barrier.png";
+    icon-image: "presets/barrier/cycle_barrier.svg";
     set icon_z17;
 }
 node[barrier=lift_gate] {
-    icon-image: "vehicle/lift_gate.png";
+    icon-image: "presets/barrier/lift_gate.svg";
     set icon_z17;
 }
 node[barrier=swing_gate] {
-    icon-image: "vehicle/swing_gate.png";
+    icon-image: "presets/barrier/swing_gate.svg";
     set icon_z17;
 }
 area[barrier=toll_booth]:closed {
     fill-color: barrier#F0F050;
 }
 node[barrier=toll_booth] {
-    icon-image: "vehicle/toll_booth.png";
+    icon-image: "presets/barrier/toll_station.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[barrier=entrance] {
-    icon-image: "vehicle/entrance.png";
+    icon-image: "presets/barrier/entrance.svg";
     set icon_z17;
 }
 node[barrier=cattle_grid] {
-    icon-image: "vehicle/cattle_grid.png";
+    icon-image: "presets/barrier/cattle_grid.png";
     set icon_z17;
 }
 node[barrier=border_control] {
-    icon-image: "vehicle/border_control.png";
+    icon-image: "presets/barrier/douane.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[barrier=sally_port] {
-    icon-image: "vehicle/sally_port.png";
+    icon-image: "presets/barrier/sally_port.svg";
     set icon_z17;
 }
 node[barrier=spikes] {
-    icon-image: "vehicle/spikes.svg";
+    icon-image: "presets/barrier/spikes.svg";
     set icon_z17;
 }
 node[barrier=kissing_gate][!is_prop_set(icon-image)],
@@ -456,7 +458,7 @@ node[barrier=bump_gate][!is_prop_set(icon-image)],
 node[barrier=bus_trap][!is_prop_set(icon-image)],
 node[barrier=jersey_barrier][!is_prop_set(icon-image)],
 node[barrier=hampshire_gate][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 
@@ -636,95 +638,95 @@ area[junction=yes] {
     fill-color: junction#c0c0c0;
 }
 node[junction=yes] {
-    icon-image: "vehicle/junction.svg";
+    icon-image: "presets/vehicle/junction.svg";
     set icon_z17;
 }
 node[highway=traffic_mirror] {
-    icon-image: "vehicle/traffic_mirror.svg";
+    icon-image: "presets/vehicle/traffic_mirror.svg";
     set icon_z17;
 }
 node[highway=milestone] {
-    icon-image: "vehicle/milestone.svg";
+    icon-image: "presets/vehicle/milestone.svg";
     set icon_z17;
 }
 node[direction=clockwise] {
-    icon-image: "vehicle/restriction/roundabout_left.svg";
+    icon-image: "presets/vehicle/restriction/roundabout_left.svg";
     set icon_z17;
 }
 node[highway=mini_roundabout] {
-    icon-image: "vehicle/restriction/mini_roundabout_left.svg";
+    icon-image: "presets/vehicle/restriction/mini_roundabout_left.svg";
     set icon_z17;
 }
 node:righthandtraffic[highway=mini_roundabout] {
-    icon-image: "vehicle/restriction/mini_roundabout_right.svg";
+    icon-image: "presets/vehicle/restriction/mini_roundabout_right.svg";
     set icon_z17;
 }
 node[highway=stop] {
-    icon-image: "vehicle/restriction/stop.svg";
+    icon-image: "presets/vehicle/restriction/stop.svg";
     set icon_z17;
 }
 node[highway=give_way] {
-    icon-image: "vehicle/restriction/give_way.svg";
+    icon-image: "presets/vehicle/restriction/give_way.svg";
     set icon_z17;
 }
 node[highway=traffic_signals] {
-    icon-image: "vehicle/traffic_signals.svg";
+    icon-image: "presets/vehicle/traffic_signals.svg";
     set icon_z17;
 }
 node[highway=traffic_signals][crossing][crossing!=no] {
-    icon-image: "vehicle/traffic_signals_crossing.svg";
+    icon-image: "presets/vehicle/traffic_signals_crossing.svg";
     set icon_z17;
 }
 node[highway=traffic_signals][crossing_ref=zebra] {
-    icon-image: "vehicle/traffic_signals_crossing_ref_zebra.svg";
+    icon-image: "presets/vehicle/traffic_signals_crossing_ref_zebra.svg";
     set icon_z17;
 }
 node[highway=traffic_signals][crossing=island] {
-    icon-image: "vehicle/traffic_signals_crossing_island.svg";
+    icon-image: "presets/vehicle/traffic_signals_crossing_island.svg";
     set icon_z17;
 }
 node[highway=traffic_signals][crossing=traffic_signals] {
-    icon-image: "vehicle/traffic_signals_crossing_traffic_signals.svg";
+    icon-image: "presets/vehicle/traffic_signals_crossing_traffic_signals.svg";
     set icon_z17;
 }
 node[highway=street_lamp] {
-    icon-image: "misc/streetlamp.png";
+    icon-image: "presets/misc/streetlamp.png";
     set icon_z17;
 }
 node[highway=speed_camera] {
-    icon-image: "vehicle/restriction/speed_camera.svg";
+    icon-image: "presets/vehicle/restriction/speed_camera.svg";
     set icon_z17;
 }
 relation[type=enforcement] >[role="device"] node {
-    icon-image: "vehicle/restriction/speed_camera.svg";
+    icon-image: "presets/vehicle/restriction/speed_camera.svg";
     set icon_z17;
 }
 node[traffic_sign=city_limit] {
-    icon-image: "vehicle/restriction/city_limit.svg";
+    icon-image: "presets/vehicle/restriction/city_limit.svg";
     set icon_z17;
 }
 node[highway=crossing][crossing!=no] {
-    icon-image: "vehicle/crossing.svg";
+    icon-image: "presets/vehicle/crossing.svg";
     set icon_z17;
 }
 node[highway=crossing][crossing=unmarked] {
-    icon-image: "vehicle/crossing_unmarked.svg";
+    icon-image: "presets/vehicle/crossing_unmarked.svg";
     set icon_z17;
 }
 node[highway=crossing][crossing=island] {
-    icon-image: "vehicle/crossing_island.svg";
+    icon-image: "presets/vehicle/crossing_island.svg";
     set icon_z17;
 }
 node[highway=crossing][crossing_ref=zebra] {
-    icon-image: "vehicle/crossing_ref_zebra.svg";
+    icon-image: "presets/vehicle/crossing_ref_zebra.svg";
     set icon_z17;
 }
 node[highway=crossing][crossing=traffic_signals] {
-    icon-image: "vehicle/crossing_traffic_signals.svg";
+    icon-image: "presets/vehicle/crossing_traffic_signals.svg";
     set icon_z17;
 }
 node[highway=motorway_junction] {
-    icon-image: "vehicle/motorway_junction.svg";
+    icon-image: "presets/vehicle/motorway_junction.svg";
     set icon_z17;
     text: eval(cond(has_tag_key(ref), concat(tag(name), " (", tag(ref), ")"), tag(name)));
 }
@@ -732,18 +734,18 @@ area[highway=services] {
     fill-color: services#c0c0c0;
 }
 node[highway=services] {
-    icon-image: "vehicle/services.svg";
+    icon-image: "presets/vehicle/services.svg";
     set icon_z17;
 }
 area[highway=rest_area] {
     fill-color: services#c0c0c0;
 }
 node[highway=rest_area] {
-    icon-image: "vehicle/rest_area.svg";
+    icon-image: "presets/vehicle/rest_area.svg";
     set icon_z17;
 }
 node[highway=ford], node[ford?] {
-    icon-image: "misc/ford.svg";
+    icon-image: "presets/vehicle/ford.svg";
     set icon_z17;
 }
 way[ford?]::core_ford {
@@ -760,22 +762,22 @@ way[highway=platform] {
     color: highway_platform#c0c0c0;
 }
 node[highway=turning_circle] {
-    icon-image: "vehicle/turning_circle.svg";
+    icon-image: "presets/vehicle/turning_circle.svg";
     set icon_z17;
 }
 node[highway=turning_loop] {
-    icon-image: "vehicle/turning_loop.svg";
+    icon-image: "presets/vehicle/turning_loop.svg";
     set icon_z17;
 }
 node[highway=passing_place] {
-    icon-image: "vehicle/passing_place.svg";
+    icon-image: "presets/vehicle/passing_place.svg";
     set icon_z17;
 }
 area[highway=elevator] {
     fill-color: elevator#a6bace;
 }
 node[highway=elevator] {
-    icon-image: "service/elevator.svg";
+    icon-image: "presets/service/elevator.svg";
     set icon_z17;
 }
 way[highway=construction] {
@@ -784,14 +786,14 @@ way[highway=construction] {
     dashes: 9,9;
 }
 node[highway=construction] {
-    icon-image: "misc/construction.png";
+    icon-image: "presets/misc/construction.svg";
     set icon_z17;
 }
 area[highway=emergency_access_point] {
     fill-color: emergency_access_point#c0c0c0;
 }
 node[highway=emergency_access_point] {
-    icon-image: "service/emergency_access_point.svg";
+    icon-image: "presets/service/emergency_access_point.svg";
     set icon_z17;
 }
 node[highway=motorway], node[highway=motorway_link],
@@ -813,7 +815,7 @@ node[highway=path],
 node[highway=pedestrian],
 node[highway=bus_guideway],
 node[highway=platform] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -822,39 +824,39 @@ node[highway=platform] {
 /************************/
 
 node[traffic_calming] {
-    icon-image: "vehicle/traffic_calming.svg";
+    icon-image: "presets/vehicle/traffic_calming.svg";
     set icon_z17;
 }
 node[traffic_calming=chicane] {
-    icon-image: "vehicle/chicane.svg";
+    icon-image: "presets/vehicle/chicane.svg";
     set icon_z17;
 }
 node[traffic_calming=choker] {
-    icon-image: "vehicle/choker.svg";
+    icon-image: "presets/vehicle/choker.svg";
     set icon_z17;
 }
 node[traffic_calming=island] {
-    icon-image: "vehicle/island.svg";
+    icon-image: "presets/vehicle/island.svg";
     set icon_z17;
 }
 node[traffic_calming=bump] {
-    icon-image: "vehicle/bump.svg";
+    icon-image: "presets/vehicle/bump.svg";
     set icon_z17;
 }
 node[traffic_calming=hump] {
-    icon-image: "vehicle/hump.svg";
+    icon-image: "presets/vehicle/hump.svg";
     set icon_z17;
 }
 node[traffic_calming=table] {
-    icon-image: "vehicle/table.svg";
+    icon-image: "presets/vehicle/table.svg";
     set icon_z17;
 }
 node[traffic_calming=cushion] {
-    icon-image: "vehicle/cushion.svg";
+    icon-image: "presets/vehicle/cushion.svg";
     set icon_z17;
 }
 node[traffic_calming=rumble_strip] {
-    icon-image: "vehicle/rumble_strip.svg";
+    icon-image: "presets/vehicle/rumble_strip.svg";
     set icon_z17;
 }
 /****************/
@@ -862,11 +864,11 @@ node[traffic_calming=rumble_strip] {
 /****************/
 
 node[junction=roundabout] {
-    icon-image: "vehicle/restriction/roundabout_left.svg";
+    icon-image: "presets/vehicle/restriction/roundabout_left.svg";
     set icon_z17;
 }
 node:righthandtraffic[junction=roundabout] {
-    icon-image: "vehicle/restriction/roundabout_right.svg";
+    icon-image: "presets/vehicle/restriction/roundabout_right.svg";
     set icon_z17;
 }
 
@@ -1024,7 +1026,7 @@ way[cycleway=opposite]::core_cycleway {
 node[cycleway=lane], node[cycleway=opposite_lane],
 node[cycleway=track], node[cycleway=opposite_track],
 node[cycleway=opposite] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -1118,7 +1120,7 @@ node[piste:type=skitour],
 node[piste:type=sled],
 node[piste:type=sleigh],
 node[piste:type=snow_park] {
-    icon-image: "sport/skiing.png";
+    icon-image: "presets/sport/skiing.svg";
     set icon_z17;
 }
 
@@ -1127,23 +1129,23 @@ node[piste:type=snow_park] {
 /**************/
 
 node[power=portal] {
-    icon-image: "power/portal.svg";
+    icon-image: "presets/power/portal.svg";
     set icon_z17;
 }
 node[power=tower] {
-    icon-image: "power/tower.svg";
+    icon-image: "presets/power/tower.svg";
     set icon_z17;
 }
 node[power=pole] {
-    icon-image: "power/pole.svg";
+    icon-image: "presets/power/pole.svg";
     set icon_z17;
 }
 node[power=pole][transformer=distribution] {
-    icon-image: "power/pole_transformer.svg";
+    icon-image: "presets/power/pole_transformer.svg";
     set icon_z17;
 }
 node[power=insulator] {
-    icon-image: "power/insulator.svg";
+    icon-image: "presets/power/insulator.svg";
     set icon_z17;
 }
 way[power=portal],
@@ -1162,7 +1164,7 @@ node[power=sub_station],
 node[power=line],
 node[power=cable],
 node[power=minor_line] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 area[power=plant],
@@ -1173,36 +1175,36 @@ area[power=generator] {
     fill-color: power#eeeeee;
 }
 node[man_made=street_cabinet][street_cabinet=power] {
-    icon-image: "power/cable_distribution_cabinet.svg";
+    icon-image: "presets/power/cable_distribution_cabinet.svg";
     set icon_z17;
 }
 node[power=generator] {
-    icon-image: "power/generator.svg";
+    icon-image: "presets/power/generator.svg";
     set icon_z17;
 }
 node[power=substation] {
-    icon-image: "power/substation.svg";
+    icon-image: "presets/power/substation.svg";
     set icon_z17;
 }
 node[power=transformer] {
-    icon-image: "power/transformer.svg";
+    icon-image: "presets/power/transformer.svg";
     set icon_z17;
 }
 
 node[power=switchgear] {
-    icon-image: "power/switchgear.svg";
+    icon-image: "presets/power/switchgear.svg";
     set icon_z17;
 }
 node[power=switch] {
-    icon-image: "power/switch.svg";
+    icon-image: "presets/power/switch.svg";
     set icon_z17;
 }
 node[power=converter] {
-    icon-image: "power/converter.svg";
+    icon-image: "presets/power/converter.svg";
     set icon_z17;
 }
 node[power=compensator] {
-    icon-image: "power/compensator.svg";
+    icon-image: "presets/power/compensator.svg";
     set icon_z17;
 }
 
@@ -1231,54 +1233,54 @@ area[generator:source=waste] {
     fill-color: power#eeeeee;
 }
 node[generator:source=nuclear] {
-    icon-image: "presets/power_source-nuclear.svg";
+    icon-image: "presets/power/power_source-nuclear.svg";
     set icon_z17;
 }
 node[generator:source=wind] {
-    icon-image: "presets/power_source-wind.svg";
+    icon-image: "presets/power/power_source-wind.svg";
     set icon_z17;
 }
 node[generator:source=hydro],
 node[generator:source=tidal],
 node[generator:source=wave],
 node[generator:source=osmotic] {
-    icon-image: "presets/power_source-water.svg";
+    icon-image: "presets/power/power_source-water.svg";
     set icon_z17;
 }
 node[generator:source=geothermal] {
-    icon-image: "presets/power_source-geothermal.svg";
+    icon-image: "presets/power/power_source-geothermal.svg";
     set icon_z17;
 }
 node[generator:source=solar] {
-    icon-image: "presets/power_source-sun.svg";
+    icon-image: "presets/power/power_source-sun.svg";
     set icon_z17;
 }
 node[generator:source=coal] {
-    icon-image: "presets/power_source-coal.svg";
+    icon-image: "presets/power/power_source-coal.svg";
     set icon_z17;
 }
 node[generator:source=gas] {
-    icon-image: "presets/power_source-gas.svg";
+    icon-image: "presets/power/power_source-gas.svg";
     set icon_z17;
 }
 node[generator:source=biomass],
 node[generator:source=biofuel],
 node[generator:source=biogas] {
-    icon-image: "presets/power_source-biofuel.svg";
+    icon-image: "presets/power/power_source-biofuel.svg";
     set icon_z17;
 }
 node[generator:source=oil],
 node[generator:source=diesel],
 node[generator:source=gasoline] {
-    icon-image: "presets/power_source-oil.svg";
+    icon-image: "presets/power/power_source-oil.svg";
     set icon_z17;
 }
 node[generator:source=waste] {
-    icon-image: "presets/power_source-waste.svg";
+    icon-image: "presets/power/power_source-waste.svg";
     set icon_z17;
 }
 node[power_source] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 /*****************/
@@ -1299,42 +1301,44 @@ area[man_made=mineshaft] {
     fill-color: manmade#d8d8d8;
 }
 node[man_made=beacon] {
-    icon-image: "misc/landmark/beacon.png";
+    icon-image: "presets/landmark/beacon.png";
     set icon_z17;
 }
 node[man_made=bridge] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[bridge:support] {
-    icon-image: "transport/bridge/bridge_support.svg";
+    icon-image: "presets/transport/bridge/bridge_support.svg";
     set icon_z17;
 }
 node[man_made=chimney] {
-    icon-image: "misc/landmark/chimney.png";
+    icon-image: "presets/landmark/chimney.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[man_made=flagpole] {
-    icon-image: "misc/flag.png";
+    icon-image: "presets/misc/flag.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[man_made=gasometer] {
-    icon-image: "presets/gasometer.png";
+    icon-image: "presets/landmark/gasometer.svg";
     icon-width: 16;
     set icon_z17;
 }
 node[man_made=silo] {
-    icon-image: "presets/silo.png";
+    icon-image: "presets/landmark/silo.svg";
     icon-width: 16;
     set icon_z17;
 }
 node[man_made=storage_tank] {
-    icon-image: "presets/storage_tank.png";
+    icon-image: "presets/landmark/storage_tank.svg";
     icon-width: 16;
     set icon_z17;
 }
 node[man_made=bunker_silo] {
-    icon-image: "bunker_silo.svg";
+    icon-image: "presets/landmark/bunker_silo.svg";
     set icon_z17;
 }
 area[man_made=groyne]:closed {
@@ -1352,15 +1356,16 @@ way[man_made=breakwater] {
     color: manmade#d8d8d8;
 }
 node[man_made=lighthouse] {
-    icon-image: "misc/landmark/lighthouse.png";
+    icon-image: "presets/landmark/lighthouse.svg";
     set icon_z17;
 }
 node[man_made=monitoring_station] {
-    icon-image: "misc/landmark/measurement_station.png";
+    icon-image: "presets/misc/monitoring_station.png";
+    icon-height: 16;
     set icon_z17;
 }
 node[man_made=mineshaft] {
-    icon-image: "misc/landmark/mine.png";
+    icon-image: "presets/landmark/mine.svg";
     set icon_z17;
 }
 area[man_made=crane]:closed {
@@ -1371,11 +1376,11 @@ way[man_made=crane] {
     color: manmade#d8d8d8;
 }
 node[man_made=crane] {
-    icon-image: "misc/landmark/crane.png";
+    icon-image: "presets/landmark/crane.svg";
     set icon_z17;
 }
 node[man_made=adit] {
-    icon-image: "misc/landmark/adit.png";
+    icon-image: "presets/landmark/adit.svg";
     set icon_z17;
 }
 area[man_made=pier]:closed {
@@ -1386,12 +1391,12 @@ way[man_made=pier] {
     color: pier#660000;
 }
 node[man_made=pier] {
-    icon-image: "nautical/pier.svg";
+    icon-image: "presets/nautical/pier.svg";
     set icon_z17;
 }
 way[embankment?][!highway][!railway][!waterway],
 way[man_made=embankment][!highway][!railway][!waterway] {
-    repeat-image: "misc/embankment-pattern.png";
+    repeat-image: "presets/misc/embankment-pattern.png";
     repeat-image-align: top;
     width: 1;
     color: embankment#c14d00;
@@ -1402,29 +1407,29 @@ way[embankment?][waterway],
 way[man_made=embankment][highway],
 way[man_made=embankment][railway],
 way[man_made=embankment][waterway] {
-    repeat-image: "misc/embankment-pattern-centered.png";
+    repeat-image: "presets/misc/embankment-pattern-centered.png";
 }
 way[man_made=pipeline] {
     width: 2;
     color: pipeline#660000;
 }
 node[pipeline=marker] {
-    icon-image: "misc/pipeline_marker.svg";
+    icon-image: "presets/misc/pipeline_marker.svg";
     set icon_z17;
 }
 node[pipeline=valve] {
-    icon-image: "misc/valve.svg";
+    icon-image: "presets/misc/valve.svg";
     set icon_z17;
 }
 node[man_made=breakwater],
 node[man_made=groyne],
 node[man_made=embankment],
 node[man_made=pipeline] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[man_made=petroleum_well][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 area[man_made=reservoir_covered],
@@ -1440,48 +1445,49 @@ area[man_made=water_works] {
     fill-color: manmade#d8d8d8;
 }
 node[man_made=reservoir_covered] {
-    icon-image: "misc/landmark/reservoir_covered.png";
+    icon-image: "presets/landmark/reservoir_covered.svg";
     set icon_z17;
 }
 node[man_made=surveillance] {
-    icon-image: "presets/surveillance.png";
+    icon-image: "presets/service/surveillance.png";
     icon-width: 16;
     set icon_z17;
 }
 node[man_made=survey_point] {
-    icon-image: "misc/landmark/survey_point.png";
+    icon-image: "presets/landmark/survey_point.svg";
     set icon_z17;
 }
 node[man_made=tower] {
-    icon-image: "misc/landmark/tower.png";
+    icon-image: "presets/landmark/tower.png";
     set icon_z17;
 }
 node[man_made=wastewater_plant] {
-    icon-image: "misc/landmark/wastewater_plant.png";
+    icon-image: "presets/landmark/wastewater_plant.svg";
     set icon_z17;
 }
 node[man_made=watermill] {
-    icon-image: "misc/landmark/watermill.png";
+    icon-image: "presets/landmark/watermill.svg";
     set icon_z17;
 }
 node[man_made=water_tower] {
-    icon-image: "misc/landmark/water_tower.svg";
+    icon-image: "presets/landmark/water_tower.svg";
     set icon_z17;
 }
 node[man_made=water_well] {
-    icon-image: "misc/landmark/water_well.png";
+    icon-image: "presets/landmark/water_well.svg";
     set icon_z17;
 }
 node[man_made=windmill] {
-    icon-image: "misc/landmark/windmill.png";
+    icon-image: "presets/landmark/windmill.svg";
     set icon_z17;
 }
 node[man_made=works] {
-    icon-image: "misc/landmark/works.png";
+    icon-image: "presets/landmark/works.svg";
     set icon_z17;
 }
 node[man_made=water_works] {
-    icon-image: "misc/landmark/water_works.png";
+    icon-image: "presets/landmark/water_works.png";
+    icon-width: 16;
     set icon_z17;
 }
 way[man_made=cutline] {
@@ -1489,7 +1495,7 @@ way[man_made=cutline] {
     color: cutline#99ff55;
 }
 node[man_made=cutline] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -1522,91 +1528,91 @@ area[office=telecommunication] {
     fill-color: office#de5696;
 }
 node[office=accountant] {
-    icon-image: "styles/standard/office/accountant.svg";
+    icon-image: "presets/office/accountant.svg";
     set icon_z17;
 }
 node[office=administrative] {
-    icon-image: "styles/standard/office/administrative.svg";
+    icon-image: "presets/office/administrative.svg";
     set icon_z17;
 }
 node[office=advertising_agency] {
-    icon-image: "styles/standard/office/advertising_agency.svg";
+    icon-image: "presets/office/advertising_agency.svg";
     set icon_z17;
 }
 node[office=architect] {
-    icon-image: "styles/standard/office/architect.svg";
+    icon-image: "presets/office/architect.svg";
     set icon_z17;
 }
 node[office=association] {
-    icon-image: "styles/standard/office/association.svg";
+    icon-image: "presets/office/association.svg";
     set icon_z17;
 }
 node[office=company] {
-    icon-image: "styles/standard/office/private_company.svg";
+    icon-image: "presets/office/private_company.svg";
     set icon_z17;
 }
 node[office=educational_institution] {
-    icon-image: "styles/standard/office/educational_institution.svg";
+    icon-image: "presets/office/educational_institution.svg";
     set icon_z17;
 }
 node[office=employment_agency] {
-    icon-image: "styles/standard/office/employment_agency.svg";
+    icon-image: "presets/office/employment_agency.svg";
     set icon_z17;
 }
 node[office=estate_agent] {
-    icon-image: "styles/standard/office/real_state.svg";
+    icon-image: "presets/office/real_state.svg";
     set icon_z17;
 }
 node[office=foundation] {
-    icon-image: "styles/standard/office/foundation.svg";
+    icon-image: "presets/office/foundation.svg";
     set icon_z17;
 }
 node[office=insurance] {
-    icon-image: "styles/standard/office/insurance.svg";
+    icon-image: "presets/office/insurance.svg";
     set icon_z17;
 }
 node[office=it] {
-    icon-image: "styles/standard/office/it.svg";
+    icon-image: "presets/office/it.svg";
     set icon_z17;
 }
 node[office=lawyer] {
-    icon-image: "styles/standard/office/lawyer.svg";
+    icon-image: "presets/office/lawyer.svg";
     set icon_z17;
 }
 node[office=newspaper] {
-    icon-image: "styles/standard/office/newspaper.svg";
+    icon-image: "presets/office/newspaper.svg";
     set icon_z17;
 }
 node[office=ngo] {
-    icon-image: "styles/standard/office/ong.svg";
+    icon-image: "presets/office/ong.svg";
     set icon_z17;
 }
 node[office=notary] {
-    icon-image: "styles/standard/office/notary.svg";
+    icon-image: "presets/office/notary.svg";
     set icon_z17;
 }
 node[office=political_party] {
-    icon-image: "styles/standard/office/political_party.svg";
+    icon-image: "presets/office/political_party.svg";
     set icon_z17;
 }
 node[office=religion] {
-    icon-image: "styles/standard/office/religion.svg";
+    icon-image: "presets/office/religion.svg";
     set icon_z17;
 }
 node[office=research] {
-    icon-image: "styles/standard/office/research.svg";
+    icon-image: "presets/office/research.svg";
     set icon_z17;
 }
 node[office=tax_advisor] {
-    icon-image: "styles/standard/office/tax_advisor.svg";
+    icon-image: "presets/office/tax_advisor.svg";
     set icon_z17;
 }
 node[office=telecommunication] {
-    icon-image: "styles/standard/office/telecommunication.svg";
+    icon-image: "presets/office/telecommunication.svg";
     set icon_z17;
 }
 node[office=government] {
-    icon-image: "styles/standard/office/government.svg";
+    icon-image: "presets/office/government.svg";
     set icon_z17;
 }
 
@@ -1615,26 +1621,32 @@ node[office=government] {
 /****************/
 
 area[leisure=sports_centre],
+area[leisure=fitness_centre],
 area[leisure=stadium],
 area[leisure=horse_riding],
 area[leisure=water_park] {
     fill-color: leisure#c7f1a3;
 }
 node[leisure=sports_centre] {
-    icon-image: "sport/centre.png";
+    icon-image: "presets/sport/centre.png";
+    set icon_z17;
+}
+node[leisure=fitness_centre] {
+    icon-image: "presets/sport/fitness_centre.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[leisure=stadium] {
-    icon-image: "sport/stadium.png";
+    icon-image: "presets/sport/stadium.png";
     set icon_z17;
 }
 node[leisure=horse_riding] {
-    icon-image: "presets/equestrian.png";
+    icon-image: "presets/leisure/equestrian.png";
     icon-width: 16;
     set icon_z17;
 }
 node[leisure=water_park] {
-    icon-image: "leisure/water_park.png";
+    icon-image: "presets/leisure/water_park.png";
     set icon_z17;
 }
 area[leisure=track][!area?!]:closed {
@@ -1645,21 +1657,21 @@ way[leisure=track] {
     color: leisuretrack#d4f4b9;
 }
 node[leisure=track] {
-    icon-image: "sport/track.png";
+    icon-image: "presets/sport/track.png";
     set icon_z17;
 }
 area[leisure=pitch] {
     fill-color: pitch#baee8d;
 }
 node[leisure=pitch] {
-    icon-image: "sport/pitch.png";
+    icon-image: "presets/sport/pitch.png";
     set icon_z17;
 }
 area[leisure=marina] {
     fill-color: marina#0070cf;
 }
 node[leisure=marina] {
-    icon-image: "nautical/marina.png";
+    icon-image: "presets/nautical/marina.png";
     set icon_z17;
 }
 way[leisure=slipway] {
@@ -1667,7 +1679,7 @@ way[leisure=slipway] {
     color: leisure#c7f1a3;
 }
 node[leisure=slipway] {
-    icon-image: "nautical/slipway.png";
+    icon-image: "presets/nautical/slipway.png";
     set icon_z17;
 }
 area[leisure=fishing],
@@ -1681,46 +1693,46 @@ area[leisure=firepit] {
     fill-color: leisure#c7f1a3;
 }
 node[leisure=fishing] {
-    icon-image: "sport/fishing.png";
+    icon-image: "presets/sport/fishing.png";
     set icon_z17;
 }
 node[leisure=bird_hide] {
-    icon-image: "leisure/bird_hide.svg";
+    icon-image: "presets/leisure/bird_hide.svg";
     set icon_z17;
 }
 node[leisure=nature_reserve] {
-    icon-image: "leisure/nature_reserve.png";
+    icon-image: "presets/leisure/nature_reserve.png";
     set icon_z17;
 }
 node[leisure=park] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[leisure=playground] {
-    icon-image: "leisure/playground.png";
+    icon-image: "presets/leisure/playground.svg";
     set icon_z17;
 }
 node[leisure=garden] {
-    icon-image: "leisure/garden.png";
+    icon-image: "presets/leisure/garden.png";
     set icon_z17;
 }
 node[leisure=common] {
-    icon-image: "leisure/common.png";
+    icon-image: "presets/leisure/common.png";
     set icon_z17;
 }
 node[leisure=firepit] { 
-    icon-image: "leisure/firepit.svg";
+    icon-image: "presets/leisure/firepit.svg";
     set icon_z17;
 }
 node[leisure=picnic_table] {
-    icon-image: "leisure/picnic.png";
+    icon-image: "presets/leisure/picnic.png";
     set icon_z17;
 }
 area[leisure=swimming_pool] {
     fill-color: swimming_pool#51c4ef;
 }
 node[leisure=swimming_pool] {
-    icon-image: "sport/pool.png";
+    icon-image: "presets/sport/swimming.svg";
     set icon_z17;
 }
 area[leisure=fitness_station],
@@ -1731,31 +1743,33 @@ area[leisure=sauna] {
     fill-color: leisure#c7f1a3;
 }
 node[leisure=fitness_station] {
-    icon-image: "leisure/fitness_station.svg";
+    icon-image: "presets/leisure/fitness_station.svg";
     set icon_z17;
 }
 node[leisure=miniature_golf] {
-    icon-image: "sport/miniature_golf.svg";
+    icon-image: "presets/sport/miniature_golf.svg";
     set icon_z17;
 }
 node[leisure=dog_park] {
-    icon-image: "presets/dogpark.png";
+    icon-image: "presets/leisure/dogpark.png";
     icon-width: 16;
     set icon_z17;
 }
 node[leisure=ice_rink] {
-    icon-image: "sport/ice_hockey.png";
+    icon-image: "presets/sport/ice_hockey.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[leisure=sauna] {
-    icon-image: "leisure/sauna.png";
+    icon-image: "presets/leisure/sauna.png";
+    icon-width: 16;
     set icon_z17;
 }
 area[leisure=golf_course] {
     fill-color: leisure#c7f1a3;
 }
 node[leisure=golf_course] {
-    icon-image: "sport/golf/golf.svg";
+    icon-image: "presets/sport/golf/golf.svg";
     set icon_z17;
 }
 
@@ -1766,7 +1780,7 @@ area[golf=tee] {
     fill-color: golf#c7f1a3;
 }
 node[golf=tee] {
-    icon-image: "sport/golf/tee.svg";
+    icon-image: "presets/sport/golf/tee.svg";
     set icon_z17;
 }
 way[golf=hole] {
@@ -1775,7 +1789,7 @@ way[golf=hole] {
     color: golf_hole#808080;
 }
 node[golf=pin] {
-    icon-image: "sport/golf/pin.svg";
+    icon-image: "presets/sport/golf/pin.svg";
     set icon_z17;
 }
 area[golf=bunker] {
@@ -1798,7 +1812,7 @@ area[golf=driving_range] {
     fill-color: golf_driving_range#c7f1a3;
 }
 node[golf=driving_range] {
-    icon-image: "sport/golf/driving_range.svg";
+    icon-image: "presets/sport/golf/driving_range.svg";
     set icon_z17;
 }
 
@@ -1807,11 +1821,11 @@ node[golf=driving_range] {
 /********************/
 
 node[advertising=column] {
-    icon-image: "leisure/advertising_column.svg";
+    icon-image: "presets/leisure/advertising_column.svg";
     set icon_z17;
 }
 node[advertising=billboard] {
-    icon-image: "leisure/billboard.svg";
+    icon-image: "presets/leisure/billboard.svg";
     set icon_z17;
 }
 
@@ -1908,343 +1922,362 @@ area[shop=bag] {
     fill-color: shop#00005f;
 }
 node[shop=supermarket] {
-    icon-image: "shop/supermarket.svg";
+    icon-image: "presets/shop/supermarket.svg";
     set icon_z17;
 }
 node[shop=convenience] {
-    icon-image: "shop/convenience.png";
+    icon-image: "presets/shop/convenience.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=bakery] {
-    icon-image: "shop/groceries/bakery.png";
+    icon-image: "presets/shop/groceries/bakery.png";
     set icon_z17;
 }
 node[shop=butcher] {
-    icon-image: "shop/groceries/butcher.png";
+    icon-image: "presets/shop/groceries/butcher.png";
     set icon_z17;
 }
 node[shop=bicycle] {
-    icon-image: "sport/bicycle.png";
+    icon-image: "presets/shop/bicycle.svg";
     set icon_z17;
 }
 node[shop=doityourself] {
-    icon-image: "shop/diy_store.png";
+    icon-image: "presets/shop/diy_store.svg";
     set icon_z17;
 }
 node[shop=dry_cleaning],
 node[shop=laundry] {
-    icon-image: "shop/laundry.png";
+    icon-image: "presets/shop/laundry.svg";
     set icon_z17;
 }
 node[shop=outdoor] {
-    icon-image: "shop/outdoor.png";
+    icon-image: "presets/shop/outdoor.svg";
     set icon_z17;
 }
 node[shop=kiosk] {
-    icon-image: "shop/kiosk.png";
+    icon-image: "presets/shop/kiosk.svg";
     set icon_z17;
 }
 node[shop=beverages] {
-    icon-image: "shop/beverages.png";
+    icon-image: "presets/shop/beverages.svg";
     set icon_z17;
 }
 node[shop=alcohol] {
-    icon-image: "shop/alcohol.png";
+    icon-image: "presets/shop/alcohol.svg";
     set icon_z17;
 }
 node[shop=books] {
-    icon-image: "shop/book.svg";
+    icon-image: "presets/shop/book.svg";
     set icon_z17;
 }
 node[shop=boutique] {
-    icon-image: "shop/boutique.png";
+    icon-image: "presets/shop/boutique.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=car],
 node[shop=car_dealer] {
-    icon-image: "vehicle.png";
+    icon-image: "presets/shop/vehicle.svg";
     set icon_z17;
 }
 node[shop=car_repair] {
-    icon-image: "vehicle/repair_shop.png";
+    icon-image: "presets/vehicle/repair_shop.svg";
     set icon_z17;
 }
 node[shop=tyres] {
-    icon-image: "vehicle/tyres.png";
+    icon-image: "presets/vehicle/tyres.svg";
     set icon_z17;
 }
 node[shop=chemist] {
-    icon-image: "shop/chemist.png";
+    icon-image: "presets/shop/chemist.svg";
     set icon_z17;
 }
 node[shop=tobacco] {
-    icon-image: "shop/tobacco.svg";
+    icon-image: "presets/shop/tobacco.svg";
     set icon_z17;
 }
 node[shop=clothes] {
-    icon-image: "shop/clothes.png";
+    icon-image: "presets/shop/clothes.svg";
     set icon_z17;
 }
 node[shop=computer] {
-    icon-image: "shop/computer.png";
+    icon-image: "presets/shop/computer.svg";
     set icon_z17;
 }
 node[shop=confectionery] {
-    icon-image: "shop/groceries/confectionery.png";
+    icon-image: "presets/shop/groceries/confectionery.svg";
     set icon_z17;
 }
 node[shop=copyshop] {
-    icon-image: "shop/copyshop.png";
+    icon-image: "presets/shop/copyshop.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=curtain] {
-    icon-image: "shop/curtain.png";
+    icon-image: "presets/shop/curtain.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=cycle_repair] {
-    icon-image: "sport/bicycle.png";
+    icon-image: "presets/shop/bicycle.svg";
     set icon_z17;
 }
 node[shop=department_store] {
-    icon-image: "shop/mall.png";
+    icon-image: "presets/shop/mall.svg";
     set icon_z17;
 }
 node[shop=deli] {
-    icon-image: "shop/groceries/deli.png";
+    icon-image: "presets/shop/groceries/deli.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=electronics] {
-    icon-image: "shop/electronics.png";
+    icon-image: "presets/shop/electronics.svg";
     set icon_z17;
 }
 node[shop=erotic] {
-    icon-image: "shop/erotic.png";
+    icon-image: "presets/shop/erotic.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=furniture] {
-    icon-image: "shop/furniture.png";
+    icon-image: "presets/shop/furniture.svg";
     set icon_z17;
 }
 node[shop=fabric] {
-    icon-image: "shop/fabric.png";
+    icon-image: "presets/shop/fabric.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=florist] {
-    icon-image: "shop/florist.png";
+    icon-image: "presets/shop/florist.svg";
     set icon_z17;
 }
 node[shop=frame] {
-    icon-image: "shop/frame.png";
+    icon-image: "presets/shop/frame.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=gift] {
-    icon-image: "presets/present.svg";
+    icon-image: "presets/shop/present.svg";
     set icon_z17;
 }
 node[shop=greengrocer] {
-    icon-image: "shop/groceries/greengrocer.png";
+    icon-image: "presets/shop/groceries/greengrocer.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=garden_centre] {
-    icon-image: "shop/garden_centre.png";
+    icon-image: "presets/shop/garden_centre.svg";
     set icon_z17;
 }
 node[shop=hairdresser] {
-    icon-image: "shop/hairdresser.png";
+    icon-image: "presets/shop/hairdresser.svg";
     set icon_z17;
 }
 node[shop=hardware] {
-    icon-image: "shop/hardware.png";
+    icon-image: "presets/shop/hardware.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=hearing_aids] {
-    icon-image: "shop/hearing_aids.png";
+    icon-image: "presets/shop/hearing_aids.png";
+    icon-height: 16;
     set icon_z17;
 }
 node[shop=hifi] {
-    icon-image: "shop/hifi.svg";
+    icon-image: "presets/shop/hifi.svg";
     set icon_z17;
 }
 node[shop=houseware] {
-    icon-image: "shop/houseware.svg";
+    icon-image: "presets/shop/houseware.svg";
     set icon_z17;
 }
 node[shop=jewelry] {
-    icon-image: "shop/jewelry.png";
+    icon-image: "presets/shop/jewelry.svg";
     set icon_z17;
 }
 node[shop=kitchen] {
-    icon-image: "shop/kitchen.png";
+    icon-image: "presets/shop/kitchen.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=mall] {
-    icon-image: "shop/mall.png";
+    icon-image: "presets/shop/mall.svg";
     set icon_z17;
 }
 node[shop=mobile_phone] {
-    icon-image: "shop/mobile_phone.png";
+    icon-image: "presets/shop/mobile_phone.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=motorcycle] {
-    icon-image: "vehicle/motorbike.png";
+    icon-image: "presets/vehicle/motorbike.svg";
     set icon_z17;
 }
 node[shop=musical_instrument] {
-    icon-image: "shop/musical_instrument.png";
+    icon-image: "presets/shop/musical_instrument.png";
+    icon-height: 16;
     set icon_z17;
 }
 node[shop=newsagent] {
-    icon-image: "shop/news.svg";
+    icon-image: "presets/shop/news.svg";
     set icon_z17;
 }
 node[shop=optician] {
-    icon-image: "shop/optician.svg";
+    icon-image: "presets/shop/optician.svg";
     set icon_z17;
 }
 node[shop=medical_supply] {
-    icon-image: "shop/medical_supply.svg";
+    icon-image: "presets/shop/medical_supply.svg";
     set icon_z17;
 }
 node[shop=paint] {
-    icon-image: "shop/paint.png";
+    icon-image: "presets/shop/paint.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=pawnbroker] {
-    icon-image: "presets/pawnbroker.svg";
+    icon-image: "presets/shop/pawnbroker.svg";
     set icon_z17;
 }
 node[shop=seafood] {
-    icon-image: "shop/groceries/seafood.png";
+    icon-image: "presets/shop/groceries/seafood.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=shoes] {
-    icon-image: "shop/shoes.png";
+    icon-image: "presets/shop/shoes.svg";
     set icon_z17;
 }
 node[shop=sports] {
-    icon-image: "sport/multi.png";
+    icon-image: "presets/sport/multi.svg";
     set icon_z17;
 }
 node[shop=stationery] {
-    icon-image: "shop/stationery.png";
+    icon-image: "presets/shop/stationery.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=tailor] {
-    icon-image: "shop/tailor.png";
+    icon-image: "presets/shop/tailor.svg";
     set icon_z17;
 }
 node[shop=travel_agency] {
-    icon-image: "presets/travel.png";
+    icon-image: "presets/shop/travel.png";
     icon-width: 16;
     set icon_z17;
 }
 node[shop=toys] {
-    icon-image: "shop/toys.png";
+    icon-image: "presets/shop/toys.svg";
     set icon_z17;
 }
 node[shop=vacuum_cleaner] {
-    icon-image: "shop/vacuum_cleaner.png";
+    icon-image: "presets/shop/vacuum_cleaner.png";
+    icon-height: 16;
     set icon_z17;
 }
 node[shop=variety_store] {
-    icon-image: "shop/variety_store.png";
+    icon-image: "presets/shop/variety_store.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[shop=video] {
-    icon-image: "shop/video.png";
+    icon-image: "presets/shop/video.png";
     set icon_z17;
 }
 node[shop=bookmaker] {
-    icon-image: "presets/lottery.svg";
+    icon-image: "presets/shop/lottery.svg";
     set icon_z17;
 }
 node[shop=lottery] {
-    icon-image: "presets/lottery.svg";
+    icon-image: "presets/shop/lottery.svg";
     set icon_z17;
 }
 /* duplicate of shopping_centre? */
 node[shop=shopping_centre] {
-    icon-image: "shop/mall.png";
+    icon-image: "presets/shop/mall.svg";
     set icon_z17;
 }
 node[shop=pet] {
-    icon-image: "shop/pet.svg";
+    icon-image: "presets/shop/pet.svg";
     set icon_z17;
 }
 node[shop=photo] {
-    icon-image: "shop/photo.svg";
+    icon-image: "presets/shop/photo.svg";
     set icon_z17;
 }
 node[shop=ticket] {
-    icon-image: "shop/ticket.svg";
+    icon-image: "presets/shop/ticket.svg";
     set icon_z17;
 }
 node[shop=interior_decoration] {
-    icon-image: "shop/interior_decoration.svg";
+    icon-image: "presets/shop/interior_decoration.svg";
     set icon_z17;
 }
 node[shop=car_parts] {
-    icon-image: "vehicle/car_parts.svg";
+    icon-image: "presets/vehicle/car_parts.svg";
     set icon_z17;
 }
 node[shop=video_games] {
-    icon-image: "shop/video_games.png";
+    icon-image: "presets/shop/video_games.png";
     set icon_z17;
 }
 node[shop=bed] {
-    icon-image: "shop/bed.svg";
+    icon-image: "presets/shop/bed.svg";
     set icon_z17;
 }
 node[shop=beauty] {
-    icon-image: "shop/beauty.svg";
+    icon-image: "presets/shop/beauty.svg";
     set icon_z17;
 }
 node[shop=cosmetics] {
-    icon-image: "shop/cosmetics.svg";
+    icon-image: "presets/shop/cosmetics.svg";
     set icon_z17;
 }
 node[shop=perfumery] {
-    icon-image: "shop/perfumery.svg";
+    icon-image: "presets/shop/perfumery.svg";
     set icon_z17;
 }
 node[shop=tea] {
-    icon-image: "shop/groceries/tea.svg";
+    icon-image: "presets/shop/groceries/tea.svg";
     set icon_z17;
 }
 node[shop=coffee] {
-    icon-image: "shop/groceries/coffee.svg";
+    icon-image: "presets/shop/groceries/coffee.svg";
     set icon_z17;
 }
 node[shop=antiques] {
-    icon-image: "shop/antique.svg";
+    icon-image: "presets/shop/antique.svg";
     set icon_z17;
 }
 node[shop=music] {
-    icon-image: "shop/music.svg";
+    icon-image: "presets/shop/music.svg";
     set icon_z17;
 }
 node[shop=funeral_directors] {
-    icon-image: "shop/funeral_directors.svg";
+    icon-image: "presets/shop/funeral_directors.svg";
     set icon_z17;
 }
 node[shop=wine] {
-    icon-image: "shop/wine.svg";
+    icon-image: "presets/shop/wine.svg";
     set icon_z17;
 }
 node[shop=farm] {
-    icon-image: "presets/apple.png";
+    icon-image: "presets/shop/groceries/apple.png";
     set icon_z17;
 }
 node[shop=tattoo] {
-    icon-image: "shop/tattoo.svg";
+    icon-image: "presets/shop/tattoo.svg";
     set icon_z17;
 }
 node[shop=art] {
-    icon-image: "shop/art.svg";
+    icon-image: "presets/shop/art.svg";
     set icon_z17;
 }
 node[shop=bag] {
-    icon-image: "shop/bag.svg";
+    icon-image: "presets/shop/bag.svg";
     set icon_z17;
 }
 
@@ -2256,39 +2289,39 @@ area[emergency=water_tank] {
     fill-color: emergency#eeeeee;
 }
 node[emergency=ambulance_station] {
-    icon-image: "emergency/ambulance_station.svg";
+    icon-image: "presets/emergency/ambulance_station.svg";
     set icon_z17;
 }
 node[emergency=water_tank] {
-    icon-image: "emergency/water_tank.svg";
+    icon-image: "presets/emergency/water_tank.svg";
     set icon_z17;
 }
 node[emergency=phone] {
-    icon-image: "vehicle/emergency_phone.png";
+    icon-image: "presets/vehicle/emergency_phone.svg";
     set icon_z17;
 }
 node[emergency=defibrillator] {
-    icon-image: "presets/aed.svg";
+    icon-image: "presets/emergency/aed.svg";
     set icon_z17;
 }
 node[emergency=fire_hydrant] {
-    icon-image: "service/fire_hydrant.png";
+    icon-image: "presets/service/fire_hydrant.svg";
     set icon_z17;
 }
 node[emergency=fire_extinguisher] {
-    icon-image: "emergency/fire_extinguisher.svg";
+    icon-image: "presets/emergency/fire_extinguisher.svg";
     set icon_z17;
 }
 node[emergency=fire_hose] {
-    icon-image: "emergency/fire_hose.svg";
+    icon-image: "presets/emergency/fire_hose.svg";
     set icon_z17;
 }
 node[emergency=assembly_point] {
-    icon-image: "emergency/assembly_point.svg";
+    icon-image: "presets/emergency/assembly_point.svg";
     set icon_z17;
 }
 node[emergency=siren] {
-    icon-image: "emergency/siren.svg";
+    icon-image: "presets/emergency/siren.svg";
     set icon_z17;
 }
 
@@ -2311,51 +2344,55 @@ area[amenity=ice_cream] {
     fill-color: amenity#ecba52;
 }
 node[amenity=pub] {
-    icon-image: "food/pub.png";
+    icon-image: "presets/food/pub.png";
+    icon-height: 16;
     set icon_z17;
 }
 node[amenity=biergarten] {
-    icon-image: "food/biergarten.png";
+    icon-image: "presets/food/biergarten.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[amenity=nightclub] {
-    icon-image: "leisure/discoball.svg";
+    icon-image: "presets/leisure/discoball.svg";
     set icon_z17;
 }
 node[amenity=stripclub] {
-    icon-image: "leisure/nightclub.png";
+    icon-image: "presets/leisure/nightclub.png";
     set icon_z17;
 }
 node[amenity=casino] {
-    icon-image: "leisure/casino.svg";
+    icon-image: "presets/leisure/casino.svg";
     set icon_z17;
 }
 node[amenity=brothel] {
-    icon-image: "leisure/stripclub.png";
+    icon-image: "presets/leisure/stripclub.png";
     set icon_z17;
 }
 node[amenity=cafe] {
-    icon-image: "food/cafe.png";
+    icon-image: "presets/food/cafe.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[amenity=restaurant] {
-    icon-image: "food/restaurant.svg";
+    icon-image: "presets/food/restaurant.svg";
     set icon_z17;
 }
 node[amenity=food_court] {
-    icon-image: "food/restaurant.png";
+    icon-image: "presets/food/food_court.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[amenity=fast_food] {
-    icon-image: "food/fastfood.png";
+    icon-image: "presets/food/fastfood.png";
     set icon_z17;
 }
 node[amenity=bar] {
-    icon-image: "food/bar.png";
+    icon-image: "presets/food/bar.svg";
     set icon_z17;
 }
 node[amenity=ice_cream] {
-    icon-image: "food/icecream.png";
+    icon-image: "presets/food/icecream.png";
     set icon_z17;
 }
 area[amenity=bicycle_parking]:closed {
@@ -2378,85 +2415,85 @@ area[amenity=fuel] {
     fill-color: amenity_traffic#f7efb7;
 }
 node[amenity=parking_space] {
-    icon-image: "vehicle/parking/parking_space.svg";
+    icon-image: "presets/vehicle/parking/parking_space.svg";
     set icon_z17;
 }
 node[amenity=parking] {
-    icon-image: "vehicle/parking.png";
+    icon-image: "presets/vehicle/parking/parking.svg";
     set icon_z17;
 }
 node[amenity=parking_entrance] {
-    icon-image: "vehicle/parking.png";
+    icon-image: "presets/vehicle/parking/parking.svg";
     set icon_z17;
 }
 node[amenity=parking_entrance][parking=multi-storey],
 node[amenity=parking][parking=multi-storey] {
-    icon-image: "vehicle/parking/multi-storey.png";
+    icon-image: "presets/vehicle/parking/multi-storey.svg";
     set icon_z17;
 }
 node[amenity=parking_entrance][parking=underground],
 node[amenity=parking][parking=underground] {
-    icon-image: "vehicle/parking/underground.png";
+    icon-image: "presets/vehicle/parking/underground.svg";
     set icon_z17;
 }
 node[amenity=motorcycle_parking] {
-    icon-image: "vehicle/parking/motorbike.png";
+    icon-image: "presets/vehicle/parking/motorbike.svg";
     set icon_z17;
 }
 node[amenity=bicycle_parking] {
-    icon-image: "vehicle/parking/bicycle.png";
+    icon-image: "presets/vehicle/parking/bicycle.svg";
     set icon_z17;
 }
 node[park_ride][park_ride!=no] {
-    icon-image: "vehicle/parking/park_ride.svg";
+    icon-image: "presets/vehicle/parking/park_ride.svg";
     set icon_z17;
 }
 node[amenity=parking_space][wheelchair?] {
-    icon-image: "vehicle/parking/handicapped.png";
+    icon-image: "presets/vehicle/parking/handicapped.svg";
     set icon_z17;
 }
 node[amenity=bicycle_rental] {
-    icon-image: "vehicle/rental/bicycle.png";
+    icon-image: "presets/vehicle/bicycle_rental.svg";
     set icon_z17;
 }
 node[amenity=bicycle_repair_station] {
-    icon-image: "vehicle/bicycle_repair_station.svg";
+    icon-image: "presets/vehicle/bicycle_repair_station.svg";
     set icon_z17;
 }
 node[amenity=car_rental] {
-    icon-image: "vehicle/rental/car.png";
+    icon-image: "presets/vehicle/car_rental.svg";
     set icon_z17;
 }
 node[amenity=car_sharing] {
-    icon-image: "vehicle/car_sharing.png";
+    icon-image: "presets/vehicle/car_sharing.svg";
     set icon_z17;
 }
 node[amenity=car_wash] {
-    icon-image: "vehicle/car_wash.png";
+    icon-image: "presets/vehicle/car_wash.svg";
     set icon_z17;
 }
 node[amenity=taxi] {
-    icon-image: "transport/taxi.png";
+    icon-image: "presets/transport/taxi.svg";
     set icon_z17;
 }
 node[amenity=fuel] {
-    icon-image: "vehicle/fuel.png";
+    icon-image: "presets/vehicle/fuel.svg";
     set icon_z17;
 }
 node[amenity=charging_station] {
-    icon-image: "vehicle/fuel/charging_station.png";
+    icon-image: "presets/vehicle/charging_station.png";
     set icon_z17;
 }
 node[amenity=grit_bin] {
-    icon-image: "misc/grit_bin.svg";
+    icon-image: "presets/misc/grit_bin.svg";
     set icon_z17;
 }
 node[amenity=telephone] {
-    icon-image: "service/telephone.png";
+    icon-image: "presets/service/telephone.svg";
     set icon_z17;
 }
 node[amenity=clock] {
-    icon-image: "service/clock.svg";
+    icon-image: "presets/service/clock.svg";
     set icon_z17;
 }
 area[amenity=toilets],
@@ -2466,33 +2503,33 @@ area[amenity=sanitary_dump_station] {
     fill-color: amenity_light#f7efb7;
 }
 node[amenity=toilets] {
-    icon-image: "service/toilets.png";
+    icon-image: "presets/service/toilets.svg";
     set icon_z17;
 }
 node[amenity=shower] { 
-    icon-image: "service/shower.svg";
+    icon-image: "presets/service/shower.svg";
     set icon_z17;
 }
 node[amenity=recycling] {
-    icon-image: "service/recycling/recycling.svg";
+    icon-image: "presets/service/recycling/recycling.svg";
     set icon_z17;
 }
 node[amenity=recycling][recycling_type=container] {
-    icon-image: "service/recycling/recycling_container.svg";
+    icon-image: "presets/service/recycling/recycling_container.svg";
 }
 node[amenity=recycling][recycling_type=centre] {
-    icon-image: "service/recycling/recycling_centre.svg";
+    icon-image: "presets/service/recycling/recycling_centre.svg";
 }
 node[amenity=waste_basket] {
-    icon-image: "service/recycling/trash-bin.png";
+    icon-image: "presets/service/recycling/trash-bin.svg";
     set icon_z17;
 }
 node[amenity=waste_disposal] {
-    icon-image: "service/recycling/waste_disposal.png";
+    icon-image: "presets/service/recycling/waste_disposal.png";
     set icon_z17;
 }
 node[amenity=sanitary_dump_station] {
-    icon-image: "service/recycling/sanitary_dump_station.svg";
+    icon-image: "presets/service/recycling/sanitary_dump_station.svg";
     set icon_z17;
 }
 area[amenity=townhall],
@@ -2501,15 +2538,17 @@ area[amenity=community_centre] {
     fill-color: amenity_light#f7efb7;
 }
 node[amenity=townhall] {
-    icon-image: "presets/townhall.png";
+    icon-image: "presets/service/townhall.png";
     set icon_z17;
 }
 node[amenity=embassy] {
-    icon-image: "service/administration/embassy.png";
+    icon-image: "presets/service/embassy.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[amenity=community_centre] {
-    icon-image: "service/community_centre.png";
+    icon-image: "presets/service/community_centre.png";
+    icon-width: 16;
     set icon_z17;
 }
 area[amenity=water_point],
@@ -2517,15 +2556,15 @@ area[amenity=fountain] {
     fill-color: light_water#00005f;
 }
 node[amenity=drinking_water] {
-    icon-image: "food/drinking_water.png";
+    icon-image: "presets/food/drinking_water.png";
     set icon_z17;
 }
 node[amenity=water_point] {
-    icon-image: "accommodation/camping/water.png";
+    icon-image: "presets/accommodation/water.svg";
     set icon_z17;
 }
 node[amenity=fountain] {
-    icon-image: "misc/fountain.png";
+    icon-image: "presets/misc/fountain.png";
     set icon_z17;
 }
 area[amenity=place_of_worship],
@@ -2541,99 +2580,100 @@ area[amenity=driving_school] {
     fill-color: amenity_light#f7efb7;
 }
 node[amenity=place_of_worship] {
-    icon-image: "religion.png";
+    icon-image: "presets/religion/religion.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=bahai] {
-    icon-image: "religion/bahai.png";
+    icon-image: "presets/religion/bahai.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=buddhist] {
-    icon-image: "religion/buddhism.png";
+    icon-image: "presets/religion/buddhism.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=christian] {
-    icon-image: "religion/church.png";
+    icon-image: "presets/religion/church.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=hindu] {
-    icon-image: "religion/hinduism.png";
+    icon-image: "presets/religion/hinduism.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=jain] {
-    icon-image: "religion/jainism.png";
+    icon-image: "presets/religion/jainism.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=jewish] {
-    icon-image: "religion/jewish.png";
+    icon-image: "presets/religion/jewish.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=muslim] {
-    icon-image: "religion/muslim.png";
+    icon-image: "presets/religion/muslim.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=sikh] {
-    icon-image: "religion/sikhism.png";
+    icon-image: "presets/religion/sikhism.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=shinto] {
-    icon-image: "religion/shinto.png";
+    icon-image: "presets/religion/shinto.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=spiritualist][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=taoist] {
-    icon-image: "religion/taoism.png";
+    icon-image: "presets/religion/taoism.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=unitarian][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[amenity=place_of_worship][religion=zoroastrian][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[amenity=grave_yard] {
-    icon-image: "rendering/landuse/cemetery.png";
+    icon-image: "presets/landuse/graveyard.svg";
     set icon_z17;
 }
 node[amenity=crematorium][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[amenity=post_office] {
-    icon-image: "service/post_office.png";
+    icon-image: "presets/service/post_office.png";
     set icon_z17;
 }
 node[amenity=post_box] {
-    icon-image: "service/post_box.png";
+    icon-image: "presets/service/post_box.png";
     set icon_z17;
 }
 node[amenity=studio] {
-    icon-image: "service/studio.png";
+    icon-image: "presets/service/studio.png";
     set icon_z17;
 }
 node[amenity=school] {
-    icon-image: "education/school.png";
+    icon-image: "presets/education/school.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[amenity=university] {
-    icon-image: "education/university.png";
+    icon-image: "presets/education/university.png";
     set icon_z17;
 }
 node[amenity=college] {
-    icon-image: "education/college.png";
+    icon-image: "presets/education/college.png";
     set icon_z17;
 }
 node[amenity=kindergarten] {
-    icon-image: "education/kindergarten.png";
+    icon-image: "presets/education/kindergarten.svg";
     set icon_z17;
 }
 node[amenity=driving_school] {
-    icon-image: "education/driving_school.png";
+    icon-image: "presets/education/driving_school.png";
     set icon_z17;
 }
 area[amenity=pharmacy],
@@ -2648,55 +2688,55 @@ area[amenity=veterinary] {
     fill-color: health#eeeeee;
 }
 node[amenity=pharmacy] {
-    icon-image: "health/pharmacy.svg";
+    icon-image: "presets/health/pharmacy.svg";
     set icon_z17;
 }
 node[amenity=hospital] {
-    icon-image: "health/hospital.svg";
+    icon-image: "presets/health/hospital.svg";
     set icon_z17;
 }
 node[amenity=clinic] {
-    icon-image: "health/clinic.svg";
+    icon-image: "presets/health/clinic.svg";
     set icon_z17;
 }
 node[amenity=nursing_home] {
-    icon-image: "social_facility/nursing_home.svg";
+    icon-image: "presets/social_facility/nursing_home.svg";
     set icon_z17;
 }
 node[amenity=social_facility][social_facility=group_home] {
-    icon-image: "social_facility/group_home.svg";
+    icon-image: "presets/social_facility/group_home.svg";
     set icon_z17;
 }
 node[amenity=social_facility][social_facility=assisted_living] {
-    icon-image: "social_facility/assisted_living.svg";
+    icon-image: "presets/social_facility/assisted_living.svg";
     set icon_z17;
 }
 node[amenity=social_facility][social_facility=outreach] {
-    icon-image: "social_facility/outreach.svg";
+    icon-image: "presets/social_facility/outreach.svg";
     set icon_z17;
 }
 node[amenity=social_facility][social_facility=shelter] {
-    icon-image: "social_facility/shelter.svg";
+    icon-image: "presets/social_facility/shelter.svg";
     set icon_z17;
 }
 node[amenity=social_facility][social_facility=food_bank] {
-    icon-image: "social_facility/food_bank.svg";
+    icon-image: "presets/social_facility/food_bank.svg";
     set icon_z17;
 }
 node[amenity=baby_hatch] {
-    icon-image: "health/baby_hatch.svg";
+    icon-image: "presets/health/baby_hatch.svg";
     set icon_z17;
 }
 node[amenity=doctors] {
-    icon-image: "health/doctors.svg";
+    icon-image: "presets/health/doctors.svg";
     set icon_z17;
 }
 node[amenity=dentist] {
-    icon-image: "health/dentist.svg";
+    icon-image: "presets/health/dentist.svg";
     set icon_z17;
 }
 node[amenity=veterinary] {
-    icon-image: "health/veterinary.svg";
+    icon-image: "presets/health/veterinary.svg";
     set icon_z17;
 }
 area[amenity=library],
@@ -2716,60 +2756,60 @@ area[amenity=bbq] {
     fill-color: amenity_light#f7efb7;
 }
 node[amenity=library] {
-    icon-image: "shop/library.png";
+    icon-image: "presets/shop/library.png";
     set icon_z17;
 }
 node[amenity=police] {
-    icon-image: "service/police.png";
+    icon-image: "presets/service/police.svg";
     set icon_z17;
 }
 node[amenity=ranger_station] {
-    icon-image: "service/ranger_station.svg";
+    icon-image: "presets/service/ranger_station.svg";
     set icon_z17;
 }
 node[amenity=fire_station] {
-    icon-image: "service/firebrigade.png";
+    icon-image: "presets/service/firebrigade.svg";
     set icon_z17;
 }
 node[amenity=bus_station] {
-    icon-image: "transport/bus.png";
+    icon-image: "presets/transport/bus_old.svg";
     set icon_z17;
 }
 node[amenity=ferry_terminal] {
-    icon-image: "nautical/ferry.svg";
+    icon-image: "presets/nautical/ferry.svg";
     set icon_z17;
 }
 node[amenity=theatre] {
-    icon-image: "presets/theater.png";
+    icon-image: "presets/leisure/theater.png";
     icon-width: 16;
     set icon_z17;
 }
 node[amenity=cinema] {
-    icon-image: "leisure/cinema.png";
+    icon-image: "presets/leisure/cinema.svg";
     set icon_z17;
 }
 node[amenity=arts_centre] {
-    icon-image: "service/arts_centre.png";
+    icon-image: "presets/service/arts_centre.png";
     set icon_z17;
 }
 node[amenity=courthouse] {
-    icon-image: "service/administration/courthouse.svg";
+    icon-image: "presets/service/courthouse.svg";
     set icon_z17;
 }
 node[amenity=prison] {
-    icon-image: "service/administration/prison.svg";
+    icon-image: "presets/service/prison.svg";
     set icon_z17;
 }
 node[amenity=bank] {
-    icon-image: "money/bank.png";
+    icon-image: "presets/money/bank.svg";
     set icon_z17;
 }
 node[amenity=bureau_de_change] {
-    icon-image: "money/exchange.png";
+    icon-image: "presets/money/exchange.svg";
     set icon_z17;
 }
 node[amenity=atm] {
-    icon-image: "money/atm.png";
+    icon-image: "presets/money/atm.svg";
     set icon_z17;
 }
 way[amenity=bench] {
@@ -2777,15 +2817,16 @@ way[amenity=bench] {
     color: amenity_light#f7efb7;
 }
 node[amenity=bench] {
-    icon-image: "leisure/bench.png";
+    icon-image: "presets/leisure/bench.png";
     set icon_z17;
 }
 node[amenity=bbq] {
-    icon-image: "leisure/bbq.png";
+    icon-image: "presets/leisure/bbq.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[amenity=compressed_air] {
-    icon-image: "vehicle/compressed_air.svg";
+    icon-image: "presets/vehicle/compressed_air.svg";
     set icon_z17;
 }
 area[amenity=shelter],
@@ -2794,43 +2835,43 @@ area[amenity=wlan] {
     fill-color: amenity_light#f7efb7;
 }
 node[amenity=shelter] {
-    icon-image: "accommodation/shelter.png";
+    icon-image: "presets/accommodation/shelter.svg";
     set icon_z17;
 }
 node[amenity=shelter][shelter_type=public_transport] {
-    icon-image: "accommodation/shelter_public_transport_brown.png";
+    icon-image: "presets/accommodation/shelter_public_transport_brown.png";
     set icon_z17;
 }
 node[amenity=shelter][shelter_type=picnic_shelter] {
-    icon-image: "accommodation/shelter_picnic_brown.png";
+    icon-image: "presets/accommodation/shelter_picnic_brown.png";
     set icon_z17;
 }
 node[amenity=shelter][shelter_type=basic_hut] {
-    icon-image: "accommodation/basic_hut_blue.png";
+    icon-image: "presets/accommodation/basic_hut_blue.png";
     set icon_z17;
 }
 node[amenity=shelter][shelter_type=lean_to] {
-    icon-image: "accommodation/shelter_lean_to.svg";
+    icon-image: "presets/accommodation/shelter_lean_to.svg";
     set icon_z17;
 }
 node[amenity=hunting_stand] {
-    icon-image: "hunting_stand.png";
+    icon-image: "presets/landmark/hunting_stand.png";
     set icon_z17;
 }
 node[amenity=marketplace] {
-    icon-image: "place/marketplace.png";
+    icon-image: "presets/shop/marketplace.png";
     set icon_z17;
 }
 node[amenity=wlan] {
-    icon-image: "wlan.png";
+    icon-image: "presets/misc/wlan.svg";
     set icon_z17;
 }
 node[amenity=vending_machine] {
-    icon-image: "transport/ticket-machine.png";
+    icon-image: "presets/transport/ticket-machine.svg";
     set icon_z17;
 }
 node[vending=excrement_bags] {
-    icon-image: "service/excrement_bags.png";
+    icon-image: "presets/service/excrement_bags.png";
     set icon_z17;
 }
 
@@ -2865,98 +2906,98 @@ area[craft=tiler] {
     fill-color: craft#999900;
 }
 node[craft=carpenter][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=shoemaker][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=photographer][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=metal_construction][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }node[craft=electrician][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=brewery][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=plumber] {
-    icon-image: "craft/plumber.png";
+    icon-image: "presets/craft/plumber.png";
     set icon_z17;
 }
 node[craft=sawmill][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=gardener][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=winery][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=hvac][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=painter] {
-    icon-image: "craft/painter.png";
+    icon-image: "presets/craft/painter.png";
     set icon_z17;
 }
 node[craft=stonemason][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=handicraft][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=pottery] {
-    icon-image: "craft/pottery.png";
+    icon-image: "presets/craft/pottery.png";
     set icon_z17;
 }
 node[craft=key_cutter][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=caterer][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
-node[craft=roofer][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+node[craft=roofer] {
+    icon-image: "presets/craft/roofer.svg";
     set icon_z17;
 }
 node[craft=beekeeper][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=blacksmith][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=locksmith][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=window_construction] {
-    icon-image: "craft/window_construction.png";
+    icon-image: "presets/craft/window_construction.png";
     set icon_z17;
 }
 node[craft=upholsterer][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[craft=tiler] {
-    icon-image: "craft/tiler.png";
+    icon-image: "presets/craft/tiler.png";
     set icon_z17;
 }
 
@@ -2976,39 +3017,39 @@ area[tourism=caravan_site] {
     fill-color: hotel#feced0;
 }
 node[tourism=hotel] {
-    icon-image: "accommodation/hotel.svg";
+    icon-image: "presets/accommodation/hotel.svg";
     set icon_z17;
 }
 node[tourism=motel] {
-    icon-image: "accommodation/motel.svg";
+    icon-image: "presets/accommodation/motel.svg";
     set icon_z17;
 }
 node[tourism=guest_house] {
-    icon-image: "accommodation/guest_house.png";
+    icon-image: "presets/accommodation/guest_house.svg";
     set icon_z17;
 }
 node[tourism=hostel] {
-    icon-image: "accommodation/hostel.svg";
+    icon-image: "presets/accommodation/hostel.svg";
     set icon_z17;
 }
 node[tourism=chalet] {
-    icon-image: "accommodation/chalet.png";
+    icon-image: "presets/accommodation/chalet.svg";
     set icon_z17;
 }
 node[tourism=alpine_hut] {
-    icon-image: "accommodation/alpine_hut_blue.png";
+    icon-image: "presets/accommodation/alpine_hut_blue.png";
     set icon_z17;
 }
 node[tourism=wilderness_hut] {
-    icon-image: "accommodation/wilderness_hut_blue.png";
+    icon-image: "presets/accommodation/wilderness_hut_blue.png";
     set icon_z17;
 }
 node[tourism=camp_site] {
-    icon-image: "accommodation/camping.png";
+    icon-image: "presets/accommodation/camping.svg";
     set icon_z17;
 }
 node[tourism=caravan_site] {
-    icon-image: "accommodation/camping/caravan.png";
+    icon-image: "presets/accommodation/caravan.svg";
     set icon_z17;
 }
 area[tourism=picnic_site],
@@ -3020,23 +3061,24 @@ area[tourism=museum] {
     fill-color: tourism#e180a2;
 }
 node[tourism=picnic_site] {
-    icon-image: "leisure/picnic.png";
+    icon-image: "presets/leisure/picnic.png";
     set icon_z17;
 }
 node[tourism=viewpoint] {
-    icon-image: "sightseeing/viewpoint.png";
+    icon-image: "presets/sightseeing/viewpoint.svg";
     set icon_z17;
 }
 node[tourism=theme_park] {
-    icon-image: "leisure/theme_park.png";
+    icon-image: "presets/leisure/theme_park.svg";
     set icon_z17;
 }
 node[tourism=attraction] {
-    icon-image: "sightseeing.png";
+    icon-image: "presets/sightseeing/attraction.svg";
+    icon-width: 16;
     set icon_z17;
 }
 node[tourism=zoo] {
-    icon-image: "leisure/zoo.png";
+    icon-image: "presets/leisure/zoo.svg";
     set icon_z17;
 }
 area[tourism=artwork]:closed {
@@ -3047,11 +3089,11 @@ way[tourism=artwork] {
     color: tourism#e180a2;
 }
 node[tourism=artwork] {
-    icon-image: "service/arts_centre.png";
+    icon-image: "presets/service/arts_centre.png";
     set icon_z17;
 }
 node[tourism=museum] {
-    icon-image: "sightseeing/museum.svg";
+    icon-image: "presets/sightseeing/museum.svg";
     set icon_z17;
 }
 
@@ -3063,26 +3105,26 @@ area[tourism=information] {
     fill-color: tourism#e180a2;
 }
 node[tourism=information] {
-    icon-image: "misc/information.png";
+    icon-image: "presets/misc/information/information.svg";
     set icon_z17;
 }
 node[tourism=information][information=guidepost] {
-    icon-image: "misc/information/guidepost.png";
+    icon-image: "presets/misc/information/guidepost.svg";
     set icon_z17;
 }
 area[tourism=information][information=office] {
     fill-color: tourism#e180a2;
 }
 node[tourism=information][information=office] {
-    icon-image: "misc/information/informationoffice.png";
+    icon-image: "presets/misc/information/informationoffice.svg";
     set icon_z17;
 }
 node[tourism=information][information=map] {
-    icon-image: "misc/information/map.png";
+    icon-image: "presets/misc/information/map.svg";
     set icon_z17;
 }
 node[tourism=information][information=board] {
-    icon-image: "misc/information/board.png";
+    icon-image: "presets/misc/information/board.svg";
     set icon_z17;
 }
 
@@ -3103,43 +3145,44 @@ area[historic=boundary_stone] {
     fill-color: historic#663300;
 }
 node[historic=castle] {
-    icon-image: "sightseeing/castle.svg";
+    icon-image: "presets/sightseeing/castle.svg";
     set icon_z17;
 }
 node[historic=monument] {
-    icon-image: "sightseeing/monument.png";
+    icon-image: "presets/sightseeing/monument.svg";
     set icon_z17;
 }
 node[historic=memorial] {
-    icon-image: "sightseeing/memorial.png";
+    icon-image: "presets/sightseeing/memorial.svg";
     set icon_z17;
 }
 node[historic=archaeological_site] {
-    icon-image: "sightseeing/archaeological.png";
+    icon-image: "presets/sightseeing/archaeological.svg";
     set icon_z17;
 }
 node[historic=ruins] {
-    icon-image: "sightseeing/ruins.png";
+    icon-image: "presets/sightseeing/ruins.svg";
     set icon_z17;
 }
 node[historic=battlefield] {
-    icon-image: "sightseeing/battlefield.png";
+    icon-image: "presets/sightseeing/battlefield.svg";
     set icon_z17;
 }
 node[geological=palaeontological_site] {
-    icon-image: "historic/palaeontological_site.png";
+    icon-image: "presets/sightseeing/palaeontological_site.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[historic=wayside_cross] {
-    icon-image: "religion/wayside_cross.png";
+    icon-image: "presets/religion/wayside_cross.svg";
     set icon_z17;
 }
 node[historic=wayside_shrine] {
-    icon-image: "religion/wayside_shrine.png";
+    icon-image: "presets/religion/wayside_shrine.svg";
     set icon_z17;
 }
 node[historic=boundary_stone] {
-    icon-image: "historic/boundary_stone.png";
+    icon-image: "presets/misc/boundary_stone.png";
     set icon_z17;
 }
 
@@ -3237,7 +3280,7 @@ area[landuse=recreation_ground] {
     fill-color: green#b1e0c2;
 }
 node[landuse] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -3253,23 +3296,23 @@ area[military=range] {
     fill-color: military#b62c2c;
 }
 node[military=airfield] {
-    icon-image: "transport/airport/airfield.png";
+    icon-image: "presets/transport/airport/airfield.svg";
     set icon_z17;
 }
 node[military=bunker] {
-    icon-image: "misc/landmark/bunker.png";
+    icon-image: "presets/landmark/bunker.svg";
     set icon_z17;
 }
 node[military=barracks][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[military=danger_area] {
-    icon-image: "misc/danger.png";
+    icon-image: "presets/misc/danger.svg";
     set icon_z17;
 }
 node[military=range] {
-    icon-image: "misc/landmark/range.png";
+    icon-image: "presets/sport/range.svg";
     set icon_z17;
 }
 
@@ -3281,27 +3324,27 @@ area[railway=station] {
     fill-color: railwaypoint#f7efb7;
 }
 node[railway=station] {
-    icon-image: "transport/railway_station.png";
+    icon-image: "presets/transport/railway_station.svg";
     set icon_z17;
 }
 node[railway=halt] {
-    icon-image: "presets/station16.png";
+    icon-image: "presets/transport/station16.png";
     set icon_z17;
 }
 node[railway=tram_stop] {
-    icon-image: "transport/tram.png";
+    icon-image: "presets/transport/tram.svg";
     set icon_z17;
 }
 node[railway=subway_entrance] {
-    icon-image: "transport/underground.png";
+    icon-image: "presets/transport/underground.png";
     set icon_z17;
 }
 node[railway=crossing] {
-    icon-image: "transport/railway/crossing.svg";
+    icon-image: "presets/transport/railway/crossing.svg";
     set icon_z17;
 }
 node[railway=level_crossing] {
-    icon-image: "transport/railway/level_crossing.svg";
+    icon-image: "presets/transport/railway/level_crossing.svg";
     icon-width: 16;
     set icon_z17;
 }
@@ -3409,11 +3452,11 @@ area[railway=turntable] {
     fill-color: rail#404040;
 }
 node[railway=turntable] {
-    icon-image: "transport/railway/turntable.svg";
+    icon-image: "presets/transport/railway/turntable.svg";
     set icon_z17;
 }
 node[railway=buffer_stop] {
-    icon-image: "transport/railway/buffer_stop.svg";
+    icon-image: "presets/transport/railway/buffer_stop.svg";
     set icon_z17;
 }
 area[railway=platform]:closed {
@@ -3429,16 +3472,16 @@ way[railway=funicular] {
     dashes: 9,9;
 }
 node[railway=switch] {
-    icon-image: "transport/railway/switch.svg";
+    icon-image: "presets/transport/railway/switch.svg";
     icon-width: 16;
     set icon_z17;
 }
 node[railway=signal] {
-    icon-image: "transport/railway/signal.svg";
+    icon-image: "presets/transport/railway/signal.svg";
     set icon_z17;
 }
 node[railway=milestone] {
-    icon-image: "transport/railway/milestone.svg";
+    icon-image: "presets/transport/railway/milestone.svg";
     set icon_z17;
 }
 node[railway=rail], node[railway=tram], node[railway=light_rail],
@@ -3447,7 +3490,7 @@ node[railway=disused], node[railway=abandoned],
 node[railway=narrow_gauge], node[railway=monorail],
 node[railway=platform], node[railway=funicular],
 node[service=yard], node[service=siding], node[service=spur] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 way[railway=construction][!highway] {
@@ -3486,21 +3529,21 @@ area[aeroway=aerodrome] {
     dashes: 9,9;
 }
 node[aeroway=aerodrome][military!=airfield] {
-    icon-image: "transport/airport.png";
+    icon-image: "presets/transport/airport.svg";
     set icon_z17;
 }
 area[aeroway=terminal] {
     fill-color: terminal#bb0000;
 }
 node[aeroway=terminal] {
-    icon-image: "transport/airport/terminal.png";
+    icon-image: "presets/transport/airport/terminal.svg";
     set icon_z17;
 }
 area[aeroway=helipad] {
     fill-color: aeroway_dark#330000;
 }
 node[aeroway=helipad] {
-    icon-image: "transport/airport/helipad.png";
+    icon-image: "presets/transport/airport/helipad.svg";
     set icon_z17;
 }
 area[aeroway=runway]:closed {
@@ -3522,7 +3565,7 @@ way[aeroway=parking_position] {
     color: aeroway#660000;
 }
 node[aeroway=parking_position] {
-    icon-image: "transport/airport/parking_position.png";
+    icon-image: "presets/transport/airport/parking_position.png";
     set icon_z17;
 }
 area[aeroway=apron],
@@ -3532,19 +3575,19 @@ area[aeroway=hangar] {
 node[aeroway=apron],
 node[aeroway=runway],
 node[aeroway=taxiway] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[aeroway=hangar] {
-    icon-image: "transport/airport/hangar.png";
+    icon-image: "presets/transport/airport/hangar.svg";
     set icon_z17;
 }
 node[aeroway=gate] {
-    icon-image: "transport/airport/gate.png";
+    icon-image: "presets/transport/airport/gate.svg";
     set icon_z17;
 }
 node[aeroway=windsock] {
-    icon-image: "transport/airport/windsock.png";
+    icon-image: "presets/transport/airport/windsock.svg";
     set icon_z17;
 }
 
@@ -3591,11 +3634,11 @@ area[aerialway=station] {
     fill-color: aerialway#663300;
 }
 node[aerialway=station] {
-    icon-image: "transport/aerialway/station.png";
+    icon-image: "presets/transport/aerialway/station.svg";
     set icon_z17;
 }
 node[aerialway=pylon] {
-    icon-image: "transport/aerialway/pylon.svg";
+    icon-image: "presets/transport/aerialway/pylon.svg";
     set icon_z17;
 }
 node[aerialway=cable_car],
@@ -3609,7 +3652,7 @@ node[aerialway=platter],
 node[aerialway=magic_carpet],
 node[aerialway=rope_tow],
 node[aerialway=goods] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -3618,51 +3661,51 @@ node[aerialway=goods] {
 /*************************/
 
 node[highway=bus_stop] {
-    icon-image: "transport/bus_small.png";
+    icon-image: "presets/transport/bus_small.png";
     set icon_z17;
 }
 node[public_transport=stop_position] {
-    icon-image: "transport/railway_small.png";
+    icon-image: "presets/transport/railway_small.png";
     set icon_z17;
 }
 node[public_transport=stop_position][share_taxi=yes] {
-    icon-image: "transport/share_taxi.svg";
+    icon-image: "presets/transport/share_taxi.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][bus=yes] {
-    icon-image: "transport/bus.svg";
+    icon-image: "presets/transport/bus.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][train=yes] {
-    icon-image: "transport/train.svg";
+    icon-image: "presets/transport/train.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][tram=yes] {
-    icon-image: "transport/railway/tram.svg";
+    icon-image: "presets/transport/railway/tram.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][subway=yes] {
-    icon-image: "transport/railway/subway.svg";
+    icon-image: "presets/transport/railway/subway.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][monorail=yes] {
-    icon-image: "transport/railway/monorail.svg";
+    icon-image: "presets/transport/railway/monorail.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][trolleybus=yes] {
-    icon-image: "transport/trolleybus.svg";
+    icon-image: "presets/transport/trolleybus.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][funicular=yes] {
-    icon-image: "transport/funicular.svg";
+    icon-image: "presets/transport/railway/funicular.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][aerialway=yes] {
-    icon-image: "transport/aerialway/station.png";
+    icon-image: "presets/transport/aerialway/station.svg";
     set icon_z17;
 }
 node[public_transport=stop_position][ferry=yes] {
-    icon-image: "nautical/ferry.svg";
+    icon-image: "presets/nautical/ferry.svg";
     set icon_z17;
 }
 area[public_transport=platform]:closed {
@@ -3674,14 +3717,14 @@ way[public_transport=platform]!:closed {
     dashes: 12,3;
 }
 node[public_transport=platform] {
-    icon-image: "transport/platform.svg";
+    icon-image: "presets/transport/platform.svg";
     set icon_z17;
 }
 area[public_transport=station] {
     fill-color: railwaypoint#f7efb7;
 }
 node[public_transport=station] {
-    icon-image: "transport/station.svg";
+    icon-image: "presets/transport/station.svg";
     set icon_z17;
 }
 
@@ -3703,24 +3746,25 @@ area[sport=rugby_union] {
     fill-color: sport#bde3cb;
 }
 node[sport="9pin"] {
-    icon-image: "sport/10pin.png";
+    icon-image: "presets/sport/10pin.svg";
     set icon_z17;
 }
 node[sport="10pin"] {
-    icon-image: "sport/10pin.png";
+    icon-image: "presets/sport/10pin.svg";
     set icon_z17;
 }
 node[sport=athletics] {
-    icon-image: "sport/athletics.png";
+    icon-image: "presets/sport/athletics.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=running] {
-    icon-image: "sport/running.svg";
+    icon-image: "presets/sport/running.svg";
     set icon_z17;
 }
 node[sport=soccer],
 node[sport=gaelic_games] {
-    icon-image: "sport/soccer.png";
+    icon-image: "presets/sport/soccer.svg";
     set icon_z17;
 }
 node[sport=australian_football],
@@ -3728,7 +3772,7 @@ node[sport=american_football],
 node[sport=canadian_football],
 node[sport=rugby_league],
 node[sport=rugby_union] {
-    icon-image: "sport/football.png";
+    icon-image: "presets/sport/football.svg";
     set icon_z17;
 }
 area[sport=baseball],
@@ -3743,39 +3787,39 @@ area[sport=croquet] {
     fill-color: sport#bde3cb;
 }
 node[sport=baseball] {
-    icon-image: "sport/baseball.png";
+    icon-image: "presets/sport/baseball.svg";
     set icon_z17;
 }
 node[sport=basketball] {
-    icon-image: "sport/basketball.png";
+    icon-image: "presets/sport/basketball.svg";
     set icon_z17;
 }
 node[sport=boules] {
-    icon-image: "sport/boule.png";
+    icon-image: "presets/sport/boule.svg";
     set icon_z17;
 }
 node[sport=bowls] {
-    icon-image: "sport/boule.png";
+    icon-image: "presets/sport/boule.svg";
     set icon_z17;
 }
 node[sport=canoe] {
-    icon-image: "sport/canoe.svg";
+    icon-image: "presets/sport/canoe.svg";
     set icon_z17;
 }
 node[sport=chess] {
-    icon-image: "sport/chess.png";
+    icon-image: "presets/sport/chess.png";
     set icon_z17;
 }
 node[sport=climbing] {
-    icon-image: "sport/climbing.png";
+    icon-image: "presets/sport/climbing.svg";
     set icon_z17;
 }
 node[sport=cricket] {
-    icon-image: "sport/cricket.png";
+    icon-image: "presets/sport/cricket.svg";
     set icon_z17;
 }
 node[sport=croquet] {
-    icon-image: "sport/croquet.png";
+    icon-image: "presets/sport/croquet.svg";
     set icon_z17;
 }
 area[sport=cycling],
@@ -3795,49 +3839,51 @@ area[sport=motor][highway=raceway][area=yes] {
     fill-color: sport#bde3cb;
 }
 node[sport=cycling] {
-    icon-image: "sport/cycling.png";
+    icon-image: "presets/sport/cycling.svg";
     set icon_z17;
 }
 node[sport=dog_racing] {
-    icon-image: "leisure/dog.png";
+    icon-image: "presets/leisure/dog.png";
     set icon_z17;
 }
 node[sport=equestrian] {
-    icon-image: "presets/equestrian.png";
+    icon-image: "presets/leisure/equestrian.png";
     icon-width: 16;
     set icon_z17;
 }
 node[sport=golf] {
-    icon-image: "sport/golf.svg";
+    icon-image: "presets/sport/golf.svg";
     set icon_z17;
 }
 node[sport=gymnastics] {
-    icon-image: "presets/gymnastics.png";
-    icon-width: 16;
+    icon-image: "presets/sport/gymnastics.svg";
     set icon_z17;
 }
 node[sport=field_hockey] {
-    icon-image: "sport/field_hockey.png";
+    icon-image: "presets/sport/field_hockey.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=ice_hockey] {
-    icon-image: "sport/ice_hockey.png";
+    icon-image: "presets/sport/ice_hockey.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=horse_racing] {
-    icon-image: "sport/riding.png";
+    icon-image: "presets/sport/riding.svg";
     set icon_z17;
 }
 node[sport=karting] {
-    icon-image: "sport/karting.png";
+    icon-image: "presets/sport/karting.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=motocross] {
-    icon-image: "sport/motocross.png";
+    icon-image: "presets/sport/motocross.svg";
     set icon_z17;
 }
 node[sport=motor] {
-    icon-image: "sport/motor.png";
+    icon-image: "presets/sport/motor.png";
     set icon_z17;
 }
 area[sport=multi],
@@ -3849,38 +3895,40 @@ area[sport=skateboard] {
     fill-color: sport#bde3cb;
 }
 node[sport=multi] {
-    icon-image: "sport/multi.png";
+    icon-image: "presets/sport/multi.svg";
     set icon_z17;
 }
 node[sport=pelota] {
-    icon-image: "sport/pelota.png";
+    icon-image: "presets/sport/pelota.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=racquet] {
-    icon-image: "sport/racquetball.png";
+    icon-image: "presets/sport/racquetball.svg";
     set icon_z17;
 }
 node[sport=ice_skating] {
-    icon-image: "sport/skating.png";
+    icon-image: "presets/sport/skating.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=roller_skating] {
-    icon-image: "sport/roller_skating.svg";
+    icon-image: "presets/sport/roller_skating.svg";
     set icon_z17;
 }
 node[sport=skating] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[sport=skateboard] {
-    icon-image: "sport/skateboard.png";
+    icon-image: "presets/sport/skateboard.svg";
     set icon_z17;
 }
 area[sport=swimming] {
     fill-color: swimming_pool#51c4ef;
 }
 node[sport=swimming] {
-    icon-image: "sport/pool.png";
+    icon-image: "presets/sport/swimming.svg";
     set icon_z17;
 }
 area[sport=table_tennis],
@@ -3889,15 +3937,15 @@ area[sport=paintball] {
     fill-color: sport#bde3cb;
 }
 node[sport=table_tennis] {
-    icon-image: "sport/table_tennis.png";
+    icon-image: "presets/sport/table_tennis.svg";
     set icon_z17;
 }
 node[sport=tennis] {
-    icon-image: "sport/tennis.png";
+    icon-image: "presets/sport/tennis.svg";
     set icon_z17;
 }
 node[sport=paintball][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 area[sport=squash],
@@ -3914,48 +3962,49 @@ area[sport=badminton] {
     fill-color: sport#bde3cb;
 }
 node[sport=squash][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[sport=shooting] {
-    icon-image: "presets/range.png";
+    icon-image: "presets/sport/range.svg";
     icon-width: 16;
     set icon_z17;
 }
 node[sport=volleyball] {
-    icon-image: "sport/volleyball.png";
+    icon-image: "presets/sport/volleyball.svg";
     set icon_z17;
 }
 node[sport=beachvolleyball] {
-    icon-image: "sport/beachvolleyball.png";
+    icon-image: "presets/sport/beachvolleyball.png";
+    icon-width: 16;
     set icon_z17;
 }
 node[sport=billiards] {
-    icon-image: "sport/billiards.svg";
+    icon-image: "presets/sport/billiards.svg";
     set icon_z17;
 }
 node[sport=bowling] {
-    icon-image: "sport/10pin.png";
+    icon-image: "presets/sport/10pin.svg";
     set icon_z17;
 }
 node[sport=handball] {
-    icon-image: "sport/handball.png";
+    icon-image: "presets/sport/handball.svg";
     set icon_z17;
 }
 node[sport=rowing] {
-    icon-image: "sport/rowing.png";
+    icon-image: "presets/sport/rowing.svg";
     set icon_z17;
 }
 node[sport=sailing][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 node[sport=scuba_diving] {
-    icon-image: "sport/scuba_diving.svg";
+    icon-image: "presets/sport/scuba_diving.svg";
     set icon_z17;
 }
 node[sport=badminton][!is_prop_set(icon-image)] {
-    icon-image: "misc/no_icon.png";
+    icon-image: "presets/misc/no_icon.svg";
     set icon_z17;
 }
 area[sport=archery],
@@ -3965,19 +4014,19 @@ area[sport=rc_car] {
     fill-color: sport#bde3cb;
 }
 node[sport=archery] {
-    icon-image: "sport/archery.png";
+    icon-image: "presets/sport/archery.svg";
     set icon_z17;
 }
 node[sport=fishing] {
-    icon-image: "sport/fishing.png";
+    icon-image: "presets/sport/fishing.png";
     set icon_z17;
 }
 node[sport=model_aerodrome] {
-    icon-image: "transport/airport.png";
+    icon-image: "presets/transport/airport.svg";
     set icon_z17;
 }
 node[sport=rc_car] {
-    icon-image: "transport/car.png";
+    icon-image: "presets/sport/rc_car.svg";
     set icon_z17;
 }
 
@@ -3989,21 +4038,21 @@ area[natural=spring] {
     fill-color: light_water#00005f;
 }
 node[natural=spring] {
-    icon-image: "misc/landmark/spring.svg";
+    icon-image: "presets/landmark/spring.svg";
     set icon_z17;
 }
 node[natural=saddle] {
-    icon-image: "presets/saddle.svg";
+    icon-image: "presets/landmark/saddle.svg";
     set icon_z0;
     set text_z0;
 }
 node[natural=peak] {
-    icon-image: "presets/peak.svg";
+    icon-image: "presets/landmark/peak.svg";
     set icon_z0;
     set text_z0;
 }
 node[natural=peak][tourism=viewpoint] {
-    icon-image: "sightseeing/peak_viewpoint.svg";
+    icon-image: "presets/sightseeing/peak_viewpoint.svg";
     set icon_z0;
     set text_z0;
 }
@@ -4011,7 +4060,7 @@ area[natural=glacier] {
     fill-color: glacier#ffffff;
 }
 node[natural=volcano] {
-    icon-image: "misc/landmark/volcano_small.png";
+    icon-image: "presets/landmark/volcano.svg";
     set icon_z0;
     set text_z0;
 }
@@ -4019,13 +4068,13 @@ area[natural=cliff]:closed {
     fill-color: natural#002f00;
 }
 way[natural=cliff] {
-    repeat-image: "misc/cliff-pattern.png";
+    repeat-image: "presets/misc/cliff-pattern.png";
     repeat-image-align: top;
     width: 1;
     color: #b2b2b2;
 }
 node[natural=cliff] {
-    icon-image: "misc/cliff.svg";
+    icon-image: "presets/misc/cliff.svg";
     set icon_z17;
 }
 way[natural=ridge] {
@@ -4091,14 +4140,14 @@ area[natural=rock] {
     fill-color: stone#f8f8c7;
 }
 node[natural=rock] {
-    icon-image: "misc/rock.svg";
+    icon-image: "presets/misc/rock.svg";
     set icon_z17;
 }
 area[natural=stone] {
     fill-color: stone#f8f8c7;
 }
 node[natural=stone] {
-    icon-image: "misc/stone.svg";
+    icon-image: "presets/misc/stone.svg";
     set icon_z17;
 }
 area[natural=bay],
@@ -4106,29 +4155,36 @@ area[natural=cave_entrance] {
     fill-color: natural#002f00;
 }
 node[natural=bay] {
-    icon-image: "nautical/bay.svg";
+    icon-image: "presets/nautical/bay.svg";
+    set icon_z17;
+}
+area[natural=reef] {
+    fill-color: reef#80c9ff;
+}
+node[natural=reef] {
+    icon-image: "presets/landmark/reef.svg";
     set icon_z17;
 }
 node[natural=cave_entrance] {
-    icon-image: "misc/landmark/cave_entrance.png";
+    icon-image: "presets/landmark/cave_entrance.png";
     set icon_z17;
 }
 node[natural=tree] {
-    icon-image: "misc/landmark/trees.png";
+    icon-image: "presets/landmark/trees.svg";
     set icon_z17;
 }
 node[natural=tree][type=conifer],
 node[natural=tree][leaf_type=needleleaved] {
-    icon-image: "misc/landmark/trees_conifer.png";
+    icon-image: "presets/landmark/trees_conifer.svg";
     set icon_z17;
 }
 node[natural=tree][type=broad_leaved],
 node[natural=tree][leaf_type=broadleaved] {
-    icon-image: "misc/landmark/trees_broad_leaved.png";
+    icon-image: "presets/landmark/trees_broad_leaved.svg";
     set icon_z17;
 }
 node[natural=tree][type=palm] {
-    icon-image: "misc/landmark/trees_palm.png";
+    icon-image: "presets/landmark/trees_palm.png";
     set icon_z17;
 }
 node[natural=glacier],
@@ -4149,7 +4205,7 @@ node[natural=land],
 node[natural=bare_rock],
 node[natural=ridge],
 node[natural=valley] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 /*****************/
@@ -4190,39 +4246,39 @@ area[waterway=dock] {
     fill-color: dock#0000cf;
 }
 node[waterway=dock] {
-    icon-image: "nautical/boatyard.png";
+    icon-image: "presets/nautical/boatyard.png";
     set icon_z17;
 }
 node[waterway=lock_gate] {
-    icon-image: "nautical/lock_gate.png";
+    icon-image: "presets/nautical/lock_gate.svg";
     set icon_z17;
 }
 node[waterway=turning_point] {
-    icon-image: "nautical/turning.png";
+    icon-image: "presets/nautical/turning.svg";
     set icon_z17;
 }
 area[waterway=boatyard] {
     fill-color: manmade#d8d8d8;
 }
 node[waterway=boatyard] {
-    icon-image: "nautical/boatyard.png";
+    icon-image: "presets/nautical/boatyard.png";
     set icon_z17;
 }
 node[waterway=water_point],
 node[waterway=waste_disposal],
 node[waterway=mooring] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 node[mooring] {
-    icon-image: "nautical/marina.png";
+    icon-image: "presets/nautical/marina.png";
     set icon_z17;
 }
 area[waterway=fuel] {
     fill-color: amenity_traffic#f7efb7;
 }
 node[waterway=fuel] {
-    icon-image: "nautical/marine_fuel.png";
+    icon-image: "presets/nautical/marine_fuel.png";
     icon-width: 16;
     set icon_z17;
 }
@@ -4231,7 +4287,7 @@ way[waterway=weir] {
     color: manmade#d8d8d8;
 }
 node[waterway=weir] {
-    icon-image: "nautical/weir.svg";
+    icon-image: "presets/nautical/weir.svg";
     set icon_z17;
 }
 area[waterway=dam]:closed {
@@ -4242,7 +4298,7 @@ way[waterway=dam] {
     color: manmade#d8d8d8;
 }
 node[waterway=dam] {
-    icon-image: "nautical/dam.svg";
+    icon-image: "presets/nautical/dam.svg";
     set icon_z17;
 }
 /* it's not possible to have both line and area, line seems more likely */
@@ -4251,14 +4307,14 @@ way[waterway=waterfall] {
     color: manmade#d8d8d8;
 }
 node[waterway=waterfall] {
-    icon-image: "nautical/waterfall.svg";
+    icon-image: "presets/nautical/waterfall.svg";
     set icon_z17;
 }
 node[waterway=river], node[waterway=riverbank],
 node[waterway=canal], node[waterway=wadi],
 node[waterway=stream],
 node[waterway=ditch], node[waterway=drain] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -4279,7 +4335,7 @@ node[route=subsea],
 node[route=ski],
 node[route=tour],
 node[route=pub_crawl] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -4288,7 +4344,7 @@ node[route=pub_crawl] {
 /*******************/
 
 node[mountain_pass?] {
-    icon-image: "misc/landmark/mountain_pass.svg";
+    icon-image: "presets/landmark/mountain_pass.svg";
     set icon_z0;
     set text_z0;
 }
@@ -4364,7 +4420,7 @@ node[boundary=administrative],
 node[boundary=postal_code],
 node[boundary=political],
 node[boundary=national_park] {
-    icon-image: "misc/deprecated.png";
+    icon-image: "presets/misc/deprecated.svg";
     set icon_z17;
 }
 
@@ -4372,7 +4428,7 @@ node[boundary=national_park] {
 /* maxspeed nodes */
 /******************/
 node[traffic_sign][maxspeed=none][!is_prop_set(icon-image)] {
-    icon-image: "vehicle/restriction/maxspeed_none.svg";
+    icon-image: "presets/vehicle/restriction/maxspeed_none.svg";
     set icon_z17;
 }
 node[traffic_sign][maxspeed=~/^[0-9]+$/][!is_prop_set(icon-image)] {
@@ -4488,54 +4544,54 @@ node[place=country],
 node[place=state],
 node[place=region],
 node[place=county] {
-    icon-image: "place/settlement/capital.png";
+    icon-image: "presets/place/settlement/capital.png";
     z-index: 2.9;
 }
 node[place=city] {
-    icon-image: "place/settlement/city.png";
+    icon-image: "presets/place/settlement/city.png";
     z-index: 2.8;
 }
 node[place=town] {
-    icon-image: "place/settlement/town.png";
+    icon-image: "presets/place/settlement/town.png";
     z-index: 2.7;
 }
 node[place=suburb] {
-    icon-image: "place/settlement/suburb.png";
+    icon-image: "presets/place/settlement/suburb.png";
     z-index: 2.6;
 }
 node[place=village] {
-    icon-image: "place/settlement/village.png";
+    icon-image: "presets/place/settlement/village.png";
     z-index: 2.5;
 }
 node[place=neighbourhood] {
-    icon-image: "place/settlement/neighbourhood.png";
+    icon-image: "presets/place/settlement/neighbourhood.png";
     z-index: 2.4;
 }
 node[place=hamlet] {
-    icon-image: "place/settlement/hamlet.png";
+    icon-image: "presets/place/settlement/hamlet.png";
     z-index: 2.3;
 }
 node[place=isolated_dwelling] {
-    icon-image: "place/settlement/isolated_dwelling.png";
+    icon-image: "presets/place/settlement/isolated_dwelling.png";
     z-index: 2.2;
 }
 node[place=farm] {
-    icon-image: "place/settlement/farm.png";
+    icon-image: "presets/place/settlement/farm.png";
     z-index: 2.1;
 }
 node|z15-[place=locality],
 node|z-14[place=locality][!setting("hide_icons")] {
-    icon-image: "place/locality.png";
+    icon-image: "presets/place/locality.svg";
     font-weight: bold;
     text-color:black;
     text-halo-color: white;
     text-halo-radius: 1;
 }
 node[place=island] {
-    icon-image: "place/island.png";
+    icon-image: "presets/place/island.svg";
 }
 node[place=islet] {
-    icon-image: "place/islet.png";
+    icon-image: "presets/place/islet.svg";
 }
 
 /***************************/
@@ -4547,18 +4603,18 @@ node|z-15[fixme][!setting("hide_icons")]::core_note_fixme,
 node|z16-[FIXME]::core_note_fixme,
 node|z-15[FIXME][!setting("hide_icons")]::core_note_fixme {
     object-z-index: 10;
-    icon-image: "misc/fixme-annotation.png";
+    icon-image: "presets/misc/fixme-annotation.png";
 }
 node|z16-[note]::core_note_fixme,
 node|z-15[note][!setting("hide_icons")]::core_note_fixme {
     object-z-index: 10;
-    icon-image: "misc/note-annotation.png";
+    icon-image: "presets/misc/note-annotation.png";
 }
 node|z16-[note][fixme]::core_note_fixme,
 node|z-15[note][fixme][!setting("hide_icons")]::core_note_fixme,
 node|z16-[note][FIXME]::core_note_fixme,
 node|z-15[note][FIXME][!setting("hide_icons")]::core_note_fixme {
-    icon-image: "misc/note-fixme-annotation.png";
+    icon-image: "presets/misc/note-fixme-annotation.png";
 }
 
 /* special display of unreviewed tiger data (USA) */
diff --git a/styles/standard/potlatch2.mapcss b/styles/standard/potlatch2.mapcss
index 8105502..d25a399 100644
--- a/styles/standard/potlatch2.mapcss
+++ b/styles/standard/potlatch2.mapcss
@@ -26,25 +26,25 @@ node, area {
 }
 
 relation[restriction=no_left_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_left_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_left_turn.svg";
 }
 relation[restriction=no_right_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_right_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_right_turn.svg";
 }
 relation[restriction=no_straight_on] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_straight_on.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_straight_on.svg";
 }
 relation[restriction=no_u_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_u_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_u_turn.svg";
 }
 relation[restriction=only_left_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_left_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_left_turn.svg";
 }
 relation[restriction=only_right_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_right_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_right_turn.svg";
 }
 relation[restriction=only_straight_on] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_straight_on.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_straight_on.svg";
 }
 
 /****************
diff --git a/styles_nodist/potlatch2/prelude.css b/styles_nodist/potlatch2/prelude.css
index aa31e3a..4340201 100644
--- a/styles_nodist/potlatch2/prelude.css
+++ b/styles_nodist/potlatch2/prelude.css
@@ -25,24 +25,24 @@ node, area {
 }
 
 relation[restriction=no_left_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_left_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_left_turn.svg";
 }
 relation[restriction=no_right_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_right_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_right_turn.svg";
 }
 relation[restriction=no_straight_on] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_straight_on.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_straight_on.svg";
 }
 relation[restriction=no_u_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/no_u_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/no_u_turn.svg";
 }
 relation[restriction=only_left_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_left_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_left_turn.svg";
 }
 relation[restriction=only_right_turn] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_right_turn.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_right_turn.svg";
 }
 relation[restriction=only_straight_on] {
-    icon-image: "vehicle/restriction/turn_restrictions/only_straight_on.png";
+    icon-image: "presets/vehicle/restriction/turn_restrictions/only_straight_on.svg";
 }
 
diff --git a/test/functional/org/openstreetmap/josm/data/osm/TaginfoTestIT.java b/test/functional/org/openstreetmap/josm/data/osm/TaginfoTestIT.java
index 23a2882..4b47521 100644
--- a/test/functional/org/openstreetmap/josm/data/osm/TaginfoTestIT.java
+++ b/test/functional/org/openstreetmap/josm/data/osm/TaginfoTestIT.java
@@ -44,7 +44,7 @@ public class TaginfoTestIT {
      * @throws ParseException if any MapCSS parsing error occurs
      */
     @Test
-    public void checkPopularTags() throws SAXException, IOException, ParseException {
+    public void testCheckPopularTags() throws SAXException, IOException, ParseException {
         TaggingPresets.readFromPreferences();
         new TagChecker().initialize();
         MapCSSTagChecker mapCssTagChecker = new MapCSSTagChecker();
diff --git a/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java b/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
index 39fd1e6..5dd40f2 100644
--- a/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
+++ b/test/functional/org/openstreetmap/josm/io/MultiFetchServerObjectReaderTest.java
@@ -270,7 +270,7 @@ public class MultiFetchServerObjectReaderTest {
     }
 
     @Test
-    public void multiGetWithNonExistingNode() throws OsmTransferException {
+    public void testMultiGetWithNonExistingNode() throws OsmTransferException {
         MultiFetchServerObjectReader reader = new MultiFetchServerObjectReader();
         ArrayList<Node> nodes = new ArrayList<>(ds.getNodes());
         for (int i = 0; i < 10; i++) {
diff --git a/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java b/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
index 0534f79..4436598 100644
--- a/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
+++ b/test/functional/org/openstreetmap/josm/io/OsmServerBackreferenceReaderTest.java
@@ -272,7 +272,7 @@ public class OsmServerBackreferenceReaderTest {
     }
 
     @Test
-    public void testBackreferenceForNode_Full() throws OsmTransferException {
+    public void testBackreferenceForNodeFull() throws OsmTransferException {
         Node n = lookupNode(ds, 0);
         assertNotNull(n);
 
@@ -356,7 +356,7 @@ public class OsmServerBackreferenceReaderTest {
     }
 
     @Test
-    public void testBackreferenceForWay_Full() throws OsmTransferException {
+    public void testBackreferenceForWayFull() throws OsmTransferException {
         Way w = lookupWay(ds, 1);
         assertNotNull(w);
         // way with name "way-1" is referred to by two relations
@@ -505,7 +505,7 @@ public class OsmServerBackreferenceReaderTest {
     }
 
     @Test
-    public void testBackreferenceForRelation_Full() throws OsmTransferException {
+    public void testBackreferenceForRelationFull() throws OsmTransferException {
         Relation r = lookupRelation(ds, 1);
         assertNotNull(r);
         // way with name "relation-1" is referred to by four relations:
diff --git a/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java b/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java
index f54bbbf..fab7dde 100644
--- a/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java
+++ b/test/functional/org/openstreetmap/josm/tools/HttpClientTest.java
@@ -6,6 +6,7 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertThat;
 
+import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
@@ -16,10 +17,12 @@ import javax.json.JsonObject;
 import javax.json.JsonReader;
 import javax.json.spi.JsonProvider;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -37,12 +40,12 @@ public class HttpClientTest {
     }
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         progress = TestUtils.newTestProgressMonitor();
     }
 
     @Test
-    public void testConstructorGetterSetter() throws Exception {
+    public void testConstructorGetterSetter() throws IOException {
         final HttpClient client = HttpClient.create(new URL("https://httpbin.org/"));
         assertThat(client.getURL(), is(new URL("https://httpbin.org/")));
         assertThat(client.getRequestMethod(), is("GET"));
@@ -59,7 +62,7 @@ public class HttpClientTest {
     }
 
     @Test
-    public void testGet() throws Exception {
+    public void testGet() throws IOException {
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/get?foo=bar")).connect(progress);
         assertThat(response.getRequestMethod(), is("GET"));
         assertThat(response.getResponseCode(), is(200));
@@ -69,8 +72,8 @@ public class HttpClientTest {
         assertThat(response.getHeaderField("Content-TYPE"), is("application/json"));
         assertThat(response.getHeaderFields().get("Content-Type"), is(Collections.singletonList("application/json")));
         assertThat(response.getHeaderFields().get("Content-TYPE"), is(Collections.singletonList("application/json")));
-        try (final InputStream in = response.getContent();
-             final JsonReader json = JsonProvider.provider().createReader(in)) {
+        try (InputStream in = response.getContent();
+             JsonReader json = JsonProvider.provider().createReader(in)) {
             final JsonObject root = json.readObject();
             assertThat(root.getJsonObject("args").getString("foo"), is("bar"));
             assertThat(root.getString("url"), is("https://httpbin.org/get?foo=bar"));
@@ -78,15 +81,15 @@ public class HttpClientTest {
     }
 
     @Test
-    public void testUserAgent() throws Exception {
-        try (final InputStream in = HttpClient.create(new URL("https://httpbin.org/user-agent")).connect(progress).getContent();
-             final JsonReader json = JsonProvider.provider().createReader(in)) {
+    public void testUserAgent() throws IOException {
+        try (InputStream in = HttpClient.create(new URL("https://httpbin.org/user-agent")).connect(progress).getContent();
+             JsonReader json = JsonProvider.provider().createReader(in)) {
             assertThat(json.readObject().getString("user-agent"), is(Version.getInstance().getFullAgentString()));
         }
     }
 
     @Test
-    public void testFetchUtf8Content() throws Exception {
+    public void testFetchUtf8Content() throws IOException {
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/encoding/utf8")).connect(progress);
         assertThat(response.getResponseCode(), is(200));
         final String content = response.fetchContent();
@@ -95,7 +98,7 @@ public class HttpClientTest {
     }
 
     @Test
-    public void testPost() throws Exception {
+    public void testPost() throws IOException {
         final String text = "Hello World!\nGeetings from JOSM, the Java OpenStreetMap Editor";
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/post"), "POST")
                 .setHeader("Content-Type", "text/plain")
@@ -103,47 +106,47 @@ public class HttpClientTest {
                 .setFinishOnCloseOutput(false) // to fix #12583, not sure if it's the best way to do it
                 .connect(progress);
         assertThat(response.getResponseCode(), is(200));
-        try (final InputStream in = response.getContent();
-             final JsonReader json = JsonProvider.provider().createReader(in)) {
+        try (InputStream in = response.getContent();
+             JsonReader json = JsonProvider.provider().createReader(in)) {
             assertThat(json.readObject().getString("data"), is(text));
         }
     }
 
     @Test
-    public void testPostZero() throws Exception {
+    public void testPostZero() throws IOException {
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/post"), "POST")
                 .setHeader("Content-Type", "text/plain")
                 .setRequestBody("".getBytes(StandardCharsets.UTF_8))
                 .setFinishOnCloseOutput(false) // to fix #12583, not sure if it's the best way to do it
                 .connect(progress);
         assertThat(response.getResponseCode(), is(200));
-        try (final InputStream in = response.getContent();
-             final JsonReader json = JsonProvider.provider().createReader(in)) {
+        try (InputStream in = response.getContent();
+             JsonReader json = JsonProvider.provider().createReader(in)) {
             assertThat(json.readObject().getString("data"), is(""));
         }
     }
 
     @Test
-    public void testRelativeRedirects() throws Exception {
+    public void testRelativeRedirects() throws IOException {
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/relative-redirect/5")).connect(progress);
         assertThat(response.getResponseCode(), is(200));
         assertThat(response.getContentLength() > 100, is(true));
     }
 
     @Test
-    public void testAbsoluteRedirects() throws Exception {
+    public void testAbsoluteRedirects() throws IOException {
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/absolute-redirect/5")).connect(progress);
         assertThat(response.getResponseCode(), is(200));
         assertThat(response.getContentLength() > 100, is(true));
     }
 
     @Test(expected = IOException.class)
-    public void testTooMuchRedirects() throws Exception {
+    public void testTooMuchRedirects() throws IOException {
         HttpClient.create(new URL("https://httpbin.org/redirect/5")).setMaxRedirects(4).connect(progress);
     }
 
     @Test
-    public void test418() throws Exception {
+    public void testHttp418() throws IOException {
         // https://tools.ietf.org/html/rfc2324
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/status/418")).connect(progress);
         assertThat(response.getResponseCode(), is(418));
@@ -153,13 +156,53 @@ public class HttpClientTest {
     }
 
     @Test
-    public void testRequestInTime() throws Exception {
+    public void testRequestInTime() throws IOException {
         final HttpClient.Response response = HttpClient.create(new URL("https://httpbin.org/delay/3")).setReadTimeout(3500).connect(progress);
         assertThat(response.getResponseCode(), is(200));
     }
 
     @Test(expected = IOException.class)
-    public void testTakesTooLong() throws Exception {
+    public void testTakesTooLong() throws IOException {
         HttpClient.create(new URL("https://httpbin.org/delay/3")).setReadTimeout(2500).connect(progress);
     }
+
+    /**
+     * Test of {@link HttpClient.Response#uncompress} method with Gzip compression.
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void testOpenUrlGzip() throws IOException {
+        Main.initApplicationPreferences();
+        final URL url = new URL("https://www.openstreetmap.org/trace/1613906/data");
+        try (BufferedReader x = HttpClient.create(url).connect().uncompress(true).getContentReader()) {
+            Assert.assertTrue(x.readLine().startsWith("<?xml version="));
+        }
+    }
+
+    /**
+     * Test of {@link HttpClient.Response#uncompress} method with Bzip compression.
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void testOpenUrlBzip() throws IOException {
+        Main.initApplicationPreferences();
+        final URL url = new URL("https://www.openstreetmap.org/trace/785544/data");
+        try (BufferedReader x = HttpClient.create(url).connect().uncompress(true).getContentReader()) {
+            Assert.assertTrue(x.readLine().startsWith("<?xml version="));
+        }
+    }
+
+    /**
+     * Test of {@link HttpClient.Response#uncompress} method with Bzip compression.
+     * @throws IOException if any I/O error occurs
+     */
+    @Test
+    public void testTicket9660() throws IOException {
+        Main.initApplicationPreferences();
+        final URL url = new URL("http://www.openstreetmap.org/trace/1350010/data");
+        try (BufferedReader x = HttpClient.create(url).connect()
+                .uncompress(true).uncompressAccordingToContentDisposition(true).getContentReader()) {
+            Assert.assertTrue(x.readLine().startsWith("<?xml version="));
+        }
+    }
 }
diff --git a/test/performance/org/openstreetmap/josm/PerformanceTestUtils.java b/test/performance/org/openstreetmap/josm/PerformanceTestUtils.java
index d1deee9..7587cc6 100644
--- a/test/performance/org/openstreetmap/josm/PerformanceTestUtils.java
+++ b/test/performance/org/openstreetmap/josm/PerformanceTestUtils.java
@@ -1,6 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm;
 
+import java.util.ArrayList;
+import java.util.Collections;
+
 import org.openstreetmap.josm.io.XmlWriter;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -10,18 +13,39 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  * @author Michael Zangl
  */
 public final class PerformanceTestUtils {
+    private static final int TIMES_WARMUP = 2;
+    private static final int TIMES_RUN = 8;
+
+    /**
+     * A helper class that captures the time from object creation until #done() was called.
+     * @author Michael Zangl
+     */
+    public static class PerformanceTestTimerCapture {
+        private final long time;
+
+        protected PerformanceTestTimerCapture() {
+            time = System.nanoTime();
+        }
+
+        /**
+         * Get the time since this object was created.
+         * @return The time.
+         */
+        public long getTimeSinceCreation() {
+            return (System.nanoTime() - time) / 1000000;
+        }
+    }
+
     /**
      * A timer that measures the time from it's creation to the {@link #done()} call.
      * @author Michael Zangl
      */
-    public static class PerformanceTestTimer {
+    public static class PerformanceTestTimer extends PerformanceTestTimerCapture {
         private final String name;
-        private final long time;
-        private boolean measurementPlotsPlugin = false;
+        private boolean measurementPlotsPlugin = true;
 
         protected PerformanceTestTimer(String name) {
             this.name = name;
-            time = System.nanoTime();
         }
 
         /**
@@ -36,7 +60,7 @@ public final class PerformanceTestUtils {
          * Prints the time since this timer was created.
          */
         public void done() {
-            long dTime = (System.nanoTime() - time) / 1000000;
+            long dTime = getTimeSinceCreation();
             if (measurementPlotsPlugin) {
                 measurementPlotsPluginOutput(name + "(ms)", dTime);
             } else {
@@ -49,15 +73,47 @@ public final class PerformanceTestUtils {
     }
 
     /**
-     * Starts a new performance timer.
+     * Starts a new performance timer. The timer will output the measurements in a format understood by Jenkins.
+     * <p>
+     * The timer can only be used to meassure one value.
      * @param name The name/description of the timer.
      * @return A {@link PerformanceTestTimer} object of which you can call {@link PerformanceTestTimer#done()} when done.
      */
     @SuppressFBWarnings(value = "DM_GC", justification = "Performance test code")
     public static PerformanceTestTimer startTimer(String name) {
+        cleanSystem();
+        return new PerformanceTestTimer(name);
+    }
+
+    /**
+     * Runs the given performance test several (approx. 10) times and prints the median run time.
+     * @param name The name to use in the output
+     * @param testRunner The test to run
+     */
+    public static void runPerformanceTest(String name, Runnable testRunner) {
+        for (int i = 0; i < TIMES_WARMUP; i++) {
+            cleanSystem();
+            PerformanceTestTimerCapture capture = new PerformanceTestTimerCapture();
+            testRunner.run();
+            capture.getTimeSinceCreation();
+        }
+        ArrayList<Long> times = new ArrayList<>();
+        for (int i = 0; i < TIMES_RUN; i++) {
+            cleanSystem();
+            PerformanceTestTimerCapture capture = new PerformanceTestTimerCapture();
+            testRunner.run();
+            times.add(capture.getTimeSinceCreation());
+        }
+        System.out.println(times);
+        Collections.sort(times);
+        // Sort out e.g. GC during test run.
+        double avg = times.subList(2, times.size() - 2).stream().mapToLong(l -> l).average().getAsDouble();
+        measurementPlotsPluginOutput(name, avg);
+    }
+
+    private static void cleanSystem() {
         System.gc();
         System.runFinalization();
-        return new PerformanceTestTimer(name);
     }
 
     /**
@@ -67,7 +123,7 @@ public final class PerformanceTestUtils {
      *
      * @param name the name / title of the measurement
      * @param value the value
-     * @see https://wiki.jenkins-ci.org/display/JENKINS/Measurement+Plots+Plugin
+     * @see "https://wiki.jenkins-ci.org/display/JENKINS/Measurement+Plots+Plugin"
      */
     public static void measurementPlotsPluginOutput(String name, double value) {
         System.err.println("<measurement><name>"+XmlWriter.encode(name)+"</name><value>"+value+"</value></measurement>");
diff --git a/test/performance/org/openstreetmap/josm/data/osm/KeyValuePerformanceTest.java b/test/performance/org/openstreetmap/josm/data/osm/KeyValuePerformanceTest.java
index 23b8557..18d73e9 100644
--- a/test/performance/org/openstreetmap/josm/data/osm/KeyValuePerformanceTest.java
+++ b/test/performance/org/openstreetmap/josm/data/osm/KeyValuePerformanceTest.java
@@ -55,7 +55,7 @@ public class KeyValuePerformanceTest {
      */
     @Test
     @SuppressFBWarnings(value = "DM_STRING_CTOR", justification = "test Strings that are interned and those that are not")
-    public void measureStringEqualsIntern() {
+    public void testMeasureStringEqualsIntern() {
         String str1Interned = "string1";
         String str1InternedB = "string1";
         String str1 = new String(str1Interned);
diff --git a/test/performance/org/openstreetmap/josm/data/osm/RoundingPerformanceTest.java b/test/performance/org/openstreetmap/josm/data/osm/RoundingPerformanceTest.java
index b9c2160..755331e 100644
--- a/test/performance/org/openstreetmap/josm/data/osm/RoundingPerformanceTest.java
+++ b/test/performance/org/openstreetmap/josm/data/osm/RoundingPerformanceTest.java
@@ -24,7 +24,7 @@ public class RoundingPerformanceTest {
      */
     @Test
     @SuppressFBWarnings(value = "RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT")
-    public void test() {
+    public void testRounding() {
         final int n = 1000000;
         long start = System.nanoTime();
         for (int i = 0; i < n; i++) {
diff --git a/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java b/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
index 8357e65..8e5d8d5 100644
--- a/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
+++ b/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java
@@ -10,9 +10,11 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumMap;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.imageio.ImageIO;
 
@@ -29,7 +31,9 @@ import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.visitor.paint.RenderBenchmarkCollector.CapturingBenchmark;
 import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer;
+import org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer.StyleRecord;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.mappaint.StyleSetting.BooleanStyleSetting;
@@ -207,16 +211,15 @@ public class MapRendererPerformanceTest {
                 } catch (InterruptedException ex) {
                     Main.warn(ex);
                 }
-                StyledMapRenderer.BenchmarkData data = new StyledMapRenderer.BenchmarkData();
-                data.skipDraw = skipDraw;
-                renderer.benchmarkData = data;
+                BenchmarkData data = new BenchmarkData();
+                renderer.setBenchmarkFactory(() -> data);
                 renderer.render(dsCity, false, bounds);
 
                 if (i > noWarmup) {
-                    generateTimes.add(data.generateTime);
-                    sortTimes.add(data.sortTime);
-                    drawTimes.add(data.drawTime);
-                    totalTimes.add(data.generateTime + data.sortTime + data.drawTime);
+                    generateTimes.add(data.getGenerateTime());
+                    sortTimes.add(data.getSortTime());
+                    drawTimes.add(data.getDrawTime());
+                    totalTimes.add(data.getGenerateTime() + data.getSortTime() + data.getDrawTime());
                 }
                 if (i == 1) {
                     dumpElementCount(data);
@@ -317,20 +320,36 @@ public class MapRendererPerformanceTest {
         ImageIO.write(img, "png", outputfile);
     }
 
-    public static void dumpTimes(StyledMapRenderer.BenchmarkData bd) {
-        System.out.print(String.format("gen. %3d, sort %3d, draw %3d%n", bd.generateTime, bd.sortTime, bd.drawTime));
+    public static void dumpTimes(BenchmarkData bd) {
+        System.out.print(String.format("gen. %3d, sort %3d, draw %3d%n", bd.getGenerateTime(), bd.getSortTime(), bd.getDrawTime()));
     }
 
-    public static void dumpElementCount(StyledMapRenderer.BenchmarkData bd) {
-        String sep = null;
-        for (Map.Entry<Class<? extends StyleElement>, Integer> e : bd.styleElementCount.entrySet()) {
-            if (sep == null) {
-                sep = " ";
-            } else {
-                System.out.print(sep);
+    public static void dumpElementCount(BenchmarkData bd) {
+        System.out.println(bd.recordElementStats().entrySet().stream()
+                .map(e -> e.getKey().getSimpleName().replace("Element", "") + ":" + e.getValue()).collect(Collectors.joining(" ")));
+    }
+
+    public static class BenchmarkData extends CapturingBenchmark {
+
+        private List<StyleRecord> allStyleElems;
+
+        @Override
+        public boolean renderDraw(List<StyleRecord> allStyleElems) {
+            this.allStyleElems = allStyleElems;
+            return super.renderDraw(allStyleElems);
+        }
+
+        private Map<Class<? extends StyleElement>, Integer> recordElementStats() {
+            Map<Class<? extends StyleElement>, Integer> styleElementCount = new HashMap<>();
+            for (StyleRecord r : allStyleElems) {
+                Class<? extends StyleElement> klass = r.getStyle().getClass();
+                Integer count = styleElementCount.get(klass);
+                if (count == null) {
+                    count = 0;
+                }
+                styleElementCount.put(klass, count + 1);
             }
-            System.out.print(e.getKey().getSimpleName().replace("Element", "") + ":" + e.getValue());
+            return styleElementCount;
         }
-        System.out.println();
     }
 }
diff --git a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSConditionPerformanceTest.java b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSConditionPerformanceTest.java
new file mode 100644
index 0000000..8ec27df
--- /dev/null
+++ b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSConditionPerformanceTest.java
@@ -0,0 +1,68 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.mapcss;
+
+import java.util.EnumSet;
+
+import org.junit.Test;
+import org.openstreetmap.josm.PerformanceTestUtils;
+import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.Op;
+
+/**
+ * Performance test of MapCSS Condition objects.
+ * @author Michael Zangl
+ */
+public class MapCSSConditionPerformanceTest {
+    /**
+     * Test the performance of all OP entries.
+     */
+    @Test
+    public void testAllOps() {
+        // The JIT does some really heavy optimisations if it notices that other values are not used.
+        // If we want to simulate a real scenario, we need to invoke every op several times to let the compiler
+        // build the jump tables.
+        for (Op op : Op.values()) {
+            getRunner(op).run();
+        }
+        for (Op op : Op.values()) {
+            runTest(op);
+        }
+    }
+
+    private void runTest(Op op) {
+        Runnable r = getRunner(op);
+        PerformanceTestUtils.runPerformanceTest("Condition.Op." + op, r);
+    }
+
+    private Runnable getRunner(Op op) {
+        Runnable r;
+        if (EnumSet.of(Op.LESS, Op.LESS_OR_EQUAL, Op.GREATER, Op.GREATER_OR_EQUAL).contains(op)) {
+            r = () -> {
+                for (int i = 0; i < 10000; i++) {
+                        op.eval(null, "0.2");
+                        op.eval("nan", "0.1");
+                        op.eval("0.2983", "192.312");
+                        op.eval("0.2983", "0.2983");
+                        op.eval("2983", "1000");
+                        op.eval("1000", "1000");
+                }
+            };
+        } else {
+            // regexp are slow
+            int runs = EnumSet.of(Op.ONE_OF, Op.REGEX, Op.NREGEX).contains(op) ? 10000 : 100000;
+            r = () -> {
+                for (int i = 0; i < runs; i++) {
+                    op.eval("k1", "v1");
+                    op.eval("k1", "k1");
+                    op.eval("", "v1");
+                    op.eval(null, "abc");
+                    op.eval("extreamlylongkeyextreamlylongkeyextreamlylongkeyextreamlylongkey",
+                            "longvaluelongvaluelongvaluelongvalue");
+                    op.eval("0.2983", "192.312");
+                    op.eval("0.2983", "0.2983");
+                    op.eval("2983", "\\d+");
+                }
+            };
+        }
+        return r;
+    }
+}
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 9f7a24a..424a73f 100644
--- a/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSourceFilterTest.java
+++ b/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSourceFilterTest.java
@@ -103,7 +103,7 @@ public class MapCSSStyleSourceFilterTest {
         KeyValueDataGenerator data = OsmDataGenerator.getKeyValue();
         data.generateDataSet();
         CssGenerator css = new CssGenerator(data).addKeyValueRules(TEST_RULE_COUNT);
-        runTest(data, css, "only key=value rules", false);
+        runTest(data, css, "only key=value rules");
     }
 
     /**
@@ -114,7 +114,7 @@ public class MapCSSStyleSourceFilterTest {
         KeyValueDataGenerator data = OsmDataGenerator.getKeyValue();
         data.generateDataSet();
         CssGenerator css = new CssGenerator(data).addHasKeyRules(TEST_RULE_COUNT);
-        runTest(data, css, "only has key rules", false);
+        runTest(data, css, "only has key rules");
     }
 
     /**
@@ -125,7 +125,7 @@ public class MapCSSStyleSourceFilterTest {
         KeyValueDataGenerator data = OsmDataGenerator.getKeyValue();
         data.generateDataSet();
         CssGenerator css = new CssGenerator(data).addKeyRegexpRules(TEST_RULE_COUNT);
-        runTest(data, css, "regular expressions", true);
+        runTest(data, css, "regular expressions");
     }
 
     /**
@@ -136,21 +136,16 @@ public class MapCSSStyleSourceFilterTest {
         KeyValueDataGenerator data = OsmDataGenerator.getKeyValue();
         data.generateDataSet();
         CssGenerator css = new CssGenerator(data).addIsTrueRules(TEST_RULE_COUNT);
-        runTest(data, css, "is true", false);
+        runTest(data, css, "is true");
     }
 
-    private void runTest(KeyValueDataGenerator data, CssGenerator css, String description, boolean measurementPlotsPlugin) {
+    private void runTest(KeyValueDataGenerator data, CssGenerator css, String description) {
         MapCSSStyleSource source = new MapCSSStyleSource(css.getCss());
         PerformanceTestTimer timer = PerformanceTestUtils.startTimer("MapCSSStyleSource#loadStyleSource(...) for " + description);
         source.loadStyleSource();
         timer.done();
 
-        if (measurementPlotsPlugin) {
-            timer = PerformanceTestUtils.startTimer(description);
-            timer.setMeasurementPlotsPluginOutput(true);
-        } else {
-            timer = PerformanceTestUtils.startTimer(APPLY_CALLS + "x MapCSSStyleSource#apply(...) for " + description);
-        }
+        timer = PerformanceTestUtils.startTimer(APPLY_CALLS + "x MapCSSStyleSource#apply(...) for " + description);
         for (int i = 0; i < APPLY_CALLS; i++) {
             MultiCascade mc = new MultiCascade();
             source.apply(mc, data.randomNode(), 1, false);
diff --git a/test/performance/org/openstreetmap/josm/io/OsmReaderPerformanceTest.java b/test/performance/org/openstreetmap/josm/io/OsmReaderPerformanceTest.java
index 8fe0558..91e47d6 100644
--- a/test/performance/org/openstreetmap/josm/io/OsmReaderPerformanceTest.java
+++ b/test/performance/org/openstreetmap/josm/io/OsmReaderPerformanceTest.java
@@ -61,7 +61,7 @@ public class OsmReaderPerformanceTest {
      * @throws Exception if an error occurs
      */
     @Test
-    public void test() throws Exception {
+    public void testPlain() throws Exception {
         runTest(".osm-file", true);
     }
 
diff --git a/test/unit/org/CustomMatchers.java b/test/unit/org/CustomMatchers.java
index de4f469..1b20636 100644
--- a/test/unit/org/CustomMatchers.java
+++ b/test/unit/org/CustomMatchers.java
@@ -3,6 +3,7 @@ package org;
 
 import java.awt.geom.Point2D;
 import java.util.Collection;
+import java.util.function.Predicate;
 
 import org.hamcrest.CustomTypeSafeMatcher;
 import org.hamcrest.Description;
@@ -11,7 +12,6 @@ import org.hamcrest.TypeSafeMatcher;
 import org.junit.Ignore;
 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.
@@ -34,7 +34,7 @@ public final class CustomMatchers {
 
             @Override
             protected boolean matchesSafely(T item) {
-                return predicate.evaluate(item);
+                return predicate.test(item);
             }
 
             @Override
diff --git a/test/unit/org/openstreetmap/josm/TestUtils.java b/test/unit/org/openstreetmap/josm/TestUtils.java
index 11507e4..9786af5 100644
--- a/test/unit/org/openstreetmap/josm/TestUtils.java
+++ b/test/unit/org/openstreetmap/josm/TestUtils.java
@@ -141,7 +141,7 @@ public final class TestUtils {
 
     /**
      * Returns the Java version as an int value.
-     * @return the Java version as an int value (7, 8, 9, etc.)
+     * @return the Java version as an int value (8, 9, etc.)
      */
     public static int getJavaVersion() {
         String version = System.getProperty("java.version");
@@ -149,7 +149,6 @@ public final class TestUtils {
             version = version.substring(2);
         }
         // Allow these formats:
-        // 1.7.0_91
         // 1.8.0_72-ea
         // 9-ea
         // 9
diff --git a/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java b/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
index 7c9ee79..57d11c3 100644
--- a/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/AddImageryLayerActionTest.java
@@ -23,10 +23,12 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 public final class AddImageryLayerActionTest {
     /**
      * We need prefs for this. We need platform for actions and the OSM API for checking blacklist.
+     * The timeout is set to default httpclient read timeout + connect timeout + a small delay to ignore
+     * common but harmless network issues.
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().preferences().platform().fakeAPI();
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().fakeAPI().timeout(45500);
 
     /**
      * Unit test of {@link AddImageryLayerAction#updateEnabledState}.
diff --git a/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java b/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
index d8210b6..ddb4faa 100644
--- a/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/AlignInLineActionTest.java
@@ -44,7 +44,7 @@ public final class AlignInLineActionTest {
      * itself.
      */
     @Test
-    public void nodesOpenWay() {
+    public void testNodesOpenWay() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
@@ -83,7 +83,7 @@ public final class AlignInLineActionTest {
      * distant nodes.
      */
     @Test
-    public void nodesClosedWay() {
+    public void testNodesClosedWay() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
@@ -123,7 +123,7 @@ public final class AlignInLineActionTest {
      * distant nodes.
      */
     @Test
-    public void nodesOpenWays() {
+    public void testNodesOpenWays() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
diff --git a/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java
index ee3e295..e6ca451 100644
--- a/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CombineWayActionTest.java
@@ -61,7 +61,7 @@ public class CombineWayActionTest {
      * Unit test of methods {@link NodePair#equals} and {@link NodePair#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(NodePair.class).usingGetClass()
             .withPrefabValues(Node.class, new Node(1), new Node(2))
             .verify();
diff --git a/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java b/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
index 426b4e7..22db624 100644
--- a/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CopyActionTest.java
@@ -2,46 +2,119 @@
 package org.openstreetmap.josm.actions;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
 import java.util.Arrays;
-import java.util.Collections;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.Main;
+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;
+import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for class {@link CopyAction}.
  */
 public class CopyActionTest {
+    private static final class CapturingCopyAction extends CopyAction {
+        private boolean warningShown;
+
+        @Override
+        protected void showEmptySelectionWarning() {
+            warningShown = true;
+        }
+    }
 
     /**
-     * Setup test.
+     * We need prefs for this.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().fakeAPI();
 
     /**
-     * Test of {@link CopyAction#getCopyString} method for a single way.
+     * Test that copy action copies the selected primitive
+     * @throws IOException if an I/O error occurs
+     * @throws UnsupportedFlavorException if the requested data flavor is not supported
      */
     @Test
-    public void testCopyStringWay() {
-        final Way way = new Way(123L);
-        assertEquals("way 123", CopyAction.getCopyString(Collections.singleton(way)));
+    public void testWarnOnEmpty() throws UnsupportedFlavorException, IOException {
+        Clipboard clipboard = ClipboardUtils.getClipboard();
+        clipboard.setContents(new StringSelection("test"), null);
+
+        CapturingCopyAction action = new CapturingCopyAction();
+
+        action.updateEnabledState();
+        assertFalse(action.isEnabled());
+        action.actionPerformed(null);
+        assertTrue(action.warningShown);
+
+        Main.getLayerManager().addLayer(new OsmDataLayer(new DataSet(), "test", null));
+        action.warningShown = false;
+
+        action.updateEnabledState();
+        assertFalse(action.isEnabled());
+        action.actionPerformed(null);
+        assertTrue(action.warningShown);
+
+        assertEquals("test", clipboard.getContents(null).getTransferData(DataFlavor.stringFlavor));
     }
 
     /**
-     * Test of {@link CopyAction#getCopyString} method for a way and a relation.
+     * Test that copy action copies the selected primitive
+     * @throws Exception if an error occurs
      */
     @Test
-    public void testCopyStringWayRelation() {
-        final Way way = new Way(123L);
-        final Relation relation = new Relation(456);
-        assertEquals("way 123,relation 456", CopyAction.getCopyString(Arrays.asList(way, relation)));
-        assertEquals("relation 456,way 123", CopyAction.getCopyString(Arrays.asList(relation, way)));
+    public void testCopySinglePrimitive() throws Exception {
+        DataSet data = new DataSet();
+
+        Node node1 = new Node();
+        node1.setCoor(LatLon.ZERO);
+        data.addPrimitive(node1);
+
+        Node node2 = new Node();
+        node2.setCoor(LatLon.ZERO);
+        data.addPrimitive(node2);
+        Way way = new Way();
+        way.setNodes(Arrays.asList(node1, node2));
+        data.addPrimitive(way);
+        data.setSelected(way);
+
+        Main.getLayerManager().addLayer(new OsmDataLayer(data, "test", null));
+
+        CopyAction action = new CopyAction() {
+            @Override
+            protected void showEmptySelectionWarning() {
+                fail("Selection is not empty.");
+            }
+        };
+        action.updateEnabledState();
+        assertTrue(action.isEnabled());
+        action.actionPerformed(null);
+
+        Object copied = ClipboardUtils.getClipboard().getContents(null).getTransferData(PrimitiveTransferData.DATA_FLAVOR);
+        assertNotNull(copied);
+        assertTrue(copied instanceof PrimitiveTransferData);
+        PrimitiveTransferData ptd = (PrimitiveTransferData) copied;
+        Object[] direct = ptd.getDirectlyAdded().toArray();
+        assertEquals(1, direct.length);
+        Object[] referenced = ptd.getReferenced().toArray();
+        assertEquals(2, referenced.length);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java b/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
index 464c4b9..b9fbe80 100644
--- a/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/CreateCircleActionTest.java
@@ -73,7 +73,7 @@ public final class CreateCircleActionTest {
      * see #7421
      */
     @Test
-    public void test7421_0() {
+    public void testTicket7421case0() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
@@ -138,7 +138,7 @@ public final class CreateCircleActionTest {
      * see #7421
      */
     @Test
-    public void test7421_1() {
+    public void testTicket7421case1() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
diff --git a/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy b/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy
index 97b4c46..1c9b810 100644
--- a/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy
+++ b/test/unit/org/openstreetmap/josm/actions/CreateMultipolygonActionTest.groovy
@@ -9,7 +9,7 @@ import org.openstreetmap.josm.actions.search.SearchCompiler
 import org.openstreetmap.josm.data.osm.Relation
 import org.openstreetmap.josm.data.osm.Way
 import org.openstreetmap.josm.io.OsmReader
-import org.openstreetmap.josm.tools.Utils
+import org.openstreetmap.josm.tools.SubclassFilteredCollection
 
 class CreateMultipolygonActionTest {
 
@@ -44,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."))
+        def ways = SubclassFilteredCollection.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]"
     }
@@ -52,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(regexpSearch("ref=\".*1\$\"")))
+        def ways = SubclassFilteredCollection.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(regexpSearch("ref=1.2")))
+        def ways2 = SubclassFilteredCollection.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]"
@@ -65,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"))
+        def ways = SubclassFilteredCollection.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(regexpSearch("ref=1.1 OR ref=1.2 OR ref=1.1.2")))
+        def ways2 = SubclassFilteredCollection.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/ExtensionFileFilterTest.java b/test/unit/org/openstreetmap/josm/actions/ExtensionFileFilterTest.java
index efc7fa6..2c9be37 100644
--- a/test/unit/org/openstreetmap/josm/actions/ExtensionFileFilterTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/ExtensionFileFilterTest.java
@@ -40,7 +40,7 @@ public class ExtensionFileFilterTest {
      * Unit test of methods {@link ExtensionFileFilter#equals} and {@link ExtensionFileFilter#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ExtensionFileFilter.class).usingGetClass()
             .verify();
     }
diff --git a/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java b/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
index a813187..93c3a4b 100644
--- a/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/OrthogonalizeActionTest.java
@@ -19,7 +19,7 @@ import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.OsmReader;
 import org.openstreetmap.josm.tools.Geometry;
-import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 
 /**
  * Unit tests for class {@link OsmDataLayer}.
@@ -86,7 +86,7 @@ public class OrthogonalizeActionTest {
         try (FileInputStream in = new FileInputStream(TestUtils.getTestDataRoot() + "orthogonalize.osm")) {
             final DataSet ds = OsmReader.parseDataSet(in, null);
             for (String s : search) {
-                ds.addSelected(Utils.filter(ds.allPrimitives(), SearchCompiler.compile(s)));
+                ds.addSelected(SubclassFilteredCollection.filter(ds.allPrimitives(), SearchCompiler.compile(s)));
             }
             OrthogonalizeAction.orthogonalize(ds.getSelected()).executeCommand();
             return ds;
diff --git a/test/unit/org/openstreetmap/josm/actions/PasteTagsActionTest.java b/test/unit/org/openstreetmap/josm/actions/PasteTagsActionTest.java
deleted file mode 100644
index 0763efa..0000000
--- a/test/unit/org/openstreetmap/josm/actions/PasteTagsActionTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.actions;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
-import org.openstreetmap.josm.actions.PasteTagsAction.TagPaster;
-import org.openstreetmap.josm.data.osm.NodeData;
-import org.openstreetmap.josm.data.osm.PrimitiveData;
-import org.openstreetmap.josm.data.osm.RelationData;
-import org.openstreetmap.josm.data.osm.WayData;
-
-/**
- * Unit tests for class {@link PasteTagsAction}.
- */
-public class PasteTagsActionTest {
-
-    /**
-     * Setup test.
-     */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
-
-    private static boolean isHeterogeneousSource(PrimitiveData... t) {
-        return new TagPaster(Arrays.asList(t), null).isHeterogeneousSource();
-    }
-
-    /**
-     * Unit test of {@link TagPaster#isHeterogeneousSource}.
-     */
-    @Test
-    public void testTagPasterIsHeterogeneousSource() {
-        // 0 item
-        assertFalse(isHeterogeneousSource());
-        // 1 item
-        assertFalse(isHeterogeneousSource(new NodeData()));
-        assertFalse(isHeterogeneousSource(new WayData()));
-        assertFalse(isHeterogeneousSource(new RelationData()));
-        // 2 items of same type
-        assertFalse(isHeterogeneousSource(new NodeData(), new NodeData()));
-        assertFalse(isHeterogeneousSource(new WayData(), new WayData()));
-        assertFalse(isHeterogeneousSource(new RelationData(), new RelationData()));
-        // 2 items of different type
-        assertTrue(isHeterogeneousSource(new NodeData(), new WayData()));
-        assertTrue(isHeterogeneousSource(new NodeData(), new RelationData()));
-        assertTrue(isHeterogeneousSource(new WayData(), new RelationData()));
-    }
-}
diff --git a/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
index 938fc44..5d3216e 100644
--- a/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/SplitWayActionTest.java
@@ -14,6 +14,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.SplitWayAction.Strategy;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -176,17 +177,13 @@ public final class SplitWayActionTest {
         route.addMember(new RelationMember("", w3));
         dataSet.setSelected(Arrays.asList(w2, n3, n4, n5));
 
-        final SplitWayAction.Strategy strategy = new SplitWayAction.Strategy() {
-
-            @Override
-            public Way determineWayToKeep(Iterable<Way> wayChunks) {
+        final Strategy strategy = wayChunks -> {
                 final Iterator<Way> it = wayChunks.iterator();
                 for (int i = 0; i < indexOfWayToKeep; i++) {
                     it.next();
                 }
                 return it.next();
-            }
-        };
+            };
         final SplitWayAction.SplitWayResult result = SplitWayAction.splitWay(
                 layer, w2, SplitWayAction.buildSplitChunks(w2, Arrays.asList(n3, n4, n5)), new ArrayList<OsmPrimitive>(), strategy);
         Main.main.undoRedo.add(result.getCommand());
diff --git a/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java b/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
index a71ed17..971215e 100644
--- a/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/UnJoinNodeWayActionTest.java
@@ -49,7 +49,7 @@ public final class UnJoinNodeWayActionTest {
      * see #10396
      */
     @Test
-    public void test10396() {
+    public void testTicket10396() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
diff --git a/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java b/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
index 05d7783..0c0ae11 100644
--- a/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
+++ b/test/unit/org/openstreetmap/josm/actions/mapmode/SelectActionTest.java
@@ -85,7 +85,7 @@ public class SelectActionTest {
      */
     @Test
     @SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
-    public void test10748() {
+    public void testTicket10748() {
         DataSet dataSet = new DataSet();
         OsmDataLayer layer = new OsmDataLayer(dataSet, OsmDataLayer.createNewName(), null);
 
diff --git a/test/unit/org/openstreetmap/josm/command/AddCommandTest.java b/test/unit/org/openstreetmap/josm/command/AddCommandTest.java
index 1c7ab4c..f7b1789 100644
--- a/test/unit/org/openstreetmap/josm/command/AddCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/AddCommandTest.java
@@ -1,15 +1,25 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+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.Relation;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -19,18 +29,113 @@ import nl.jqno.equalsverifier.Warning;
 public class AddCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+
+    /**
+     * Test if the add command is executed correctly and sets the modified flag.
+     */
+    @Test
+    public void testAdd() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+        assertArrayEquals(new Object[0], layer1.data.allPrimitives().toArray());
+
+        Node osm = new Node(LatLon.ZERO);
+        assertTrue(new AddCommand(osm).executeCommand());
+
+        assertArrayEquals(new Object[] {osm}, layer1.data.allPrimitives().toArray());
+        assertArrayEquals(new Object[] {osm}, layer1.data.allModifiedPrimitives().toArray());
+        assertTrue(osm.isModified());
+    }
+
+    /**
+     * Tests if the add command respects the layer.
+     */
+    @Test
+    public void testAddToLayer() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "l1", null);
+
+        Main.getLayerManager().addLayer(layer1);
+        Main.getLayerManager().addLayer(layer2);
+
+        Node osm = new Node(LatLon.ZERO);
+        assertTrue(new AddCommand(layer2, osm).executeCommand());
+
+        assertArrayEquals(new Object[0], layer1.data.allPrimitives().toArray());
+        assertArrayEquals(new Object[] {osm}, layer2.data.allPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link AddCommand#undoCommand()}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testUndo() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+        Node osm = new Node(LatLon.ZERO);
+        layer1.data.addPrimitive(osm);
+
+        AddCommand command = new AddCommand(new Node(LatLon.ZERO));
+        command.executeCommand();
+
+        command.undoCommand();
+        assertArrayEquals(new Object[] {osm}, layer1.data.allPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link AddCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testParticipatingPrimitives() {
+        Node osm = new Node(LatLon.ZERO);
+
+        assertArrayEquals(new Object[] {osm}, new AddCommand(osm).getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Tests {@link AddCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        Node osm = new Node(LatLon.ZERO);
+
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new AddCommand(osm).fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {osm}, added.toArray());
+   }
+
+    /**
+     * Test {@link AddCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node = new Node(LatLon.ZERO);
+        node.put("name", "xy");
+        Way way = new Way();
+        way.addNode(node);
+        way.put("name", "xy");
+        Relation relation = new Relation();
+        relation.put("name", "xy");
+
+        assertTrue(new AddCommand(node).getDescriptionText().matches("Add node.*xy.*"));
+        assertTrue(new AddCommand(way).getDescriptionText().matches("Add way.*xy.*"));
+        assertTrue(new AddCommand(relation).getDescriptionText().matches("Add relation.*xy.*"));
     }
 
     /**
      * Unit test of methods {@link AddCommand#equals} and {@link AddCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(AddCommand.class).usingGetClass()
             .withPrefabValues(OsmPrimitive.class,
                 new Node(1), new Node(2))
diff --git a/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java b/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java
index 04aab92..bb9448e 100644
--- a/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/AddPrimitivesCommandTest.java
@@ -1,13 +1,33 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+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.NodeData;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.WayData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -17,18 +37,226 @@ import nl.jqno.equalsverifier.Warning;
 public class AddPrimitivesCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+
+    /**
+     * Test if the add command is executed correctly and does not set the modified flag.
+     */
+    @Test
+    public void testAdd() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+
+        List<PrimitiveData> testData = createTestData();
+        assertTrue(new AddPrimitivesCommand(testData).executeCommand());
+
+        testContainsTestData(layer1);
+        assertEquals(3, layer1.data.getAllSelected().size());
+    }
+
+    /**
+     * Test if the add command sets the selection.
+     */
+    @Test
+    public void testAddSetSelection() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+
+        List<PrimitiveData> testData = createTestData();
+        assertTrue(new AddPrimitivesCommand(testData, testData.subList(2, 3)).executeCommand());
+
+        testContainsTestData(layer1);
+
+        assertEquals(1, layer1.data.getAllSelected().size());
+        assertEquals(1, layer1.data.getSelectedWays().size());
+    }
+
+    /**
+     * Tests if the add command respects the layer.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testAddToLayer() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "l1", null);
+
+        Main.getLayerManager().addLayer(layer1);
+        Main.getLayerManager().addLayer(layer2);
+
+        List<PrimitiveData> testData = createTestData();
+        assertTrue(new AddPrimitivesCommand(testData, testData.subList(2, 3), layer1).executeCommand());
+
+        testContainsTestData(layer1);
+        assertTrue(layer2.data.allPrimitives().isEmpty());
+
+        assertEquals(1, layer1.data.getAllSelected().size());
+        assertEquals(1, layer1.data.getSelectedWays().size());
+    }
+
+    /**
+     * Tests if the add command ignores existing data
+     */
+    @Test
+    public void testAddIgnoresExisting() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+
+        List<PrimitiveData> testData = createTestData();
+        assertTrue(new AddPrimitivesCommand(testData).executeCommand());
+        assertEquals(2, layer1.data.getNodes().size());
+        assertEquals(1, layer1.data.getWays().size());
+
+        testData.set(2, createTestNode(7));
+        assertTrue(new AddPrimitivesCommand(testData).executeCommand());
+
+        assertEquals(3, layer1.data.getNodes().size());
+        assertEquals(1, layer1.data.getWays().size());
+    }
+
+    /**
+     * Test {@link AddPrimitivesCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+
+        List<PrimitiveData> testData = createTestData();
+        NodeData data2 = createTestNode(7);
+
+        AddPrimitivesCommand command1 = new AddPrimitivesCommand(testData);
+        AddPrimitivesCommand command2 = new AddPrimitivesCommand(Arrays.<PrimitiveData>asList(data2));
+
+        assertEquals("Added 3 objects", command1.getDescriptionText());
+        assertEquals("Added 1 object", command2.getDescriptionText());
+
+        // Name must be the same after execution.
+        assertTrue(command1.executeCommand());
+        assertTrue(command2.executeCommand());
+
+        assertEquals("Added 3 objects", command1.getDescriptionText());
+        assertEquals("Added 1 object", command2.getDescriptionText());
+    }
+
+    /**
+     * Test {@link AddPrimitivesCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+
+        List<PrimitiveData> testData = createTestData();
+
+        AddPrimitivesCommand command = new AddPrimitivesCommand(testData);
+
+        assertTrue(command.executeCommand());
+
+        assertEquals(3, layer1.data.allPrimitives().size());
+        assertEquals(1, layer1.data.getWays().size());
+        Way way = layer1.data.getWays().iterator().next();
+
+        for (int i = 0; i < 2; i++) {
+            // Needs to work multiple times.
+            command.undoCommand();
+
+            assertEquals(0, layer1.data.allPrimitives().size());
+            assertEquals(0, layer1.data.getWays().size());
+
+            // redo
+            assertTrue(command.executeCommand());
+
+            assertEquals(3, layer1.data.allPrimitives().size());
+            assertEquals(1, layer1.data.getWays().size());
+            assertSame(way, layer1.data.getWays().iterator().next());
+        }
+    }
+
+    /**
+     * Test {@link AddCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testParticipatingPrimitives() {
+        OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), "l1", null);
+        Main.getLayerManager().addLayer(layer1);
+
+        List<PrimitiveData> testData = createTestData();
+        AddPrimitivesCommand command = new AddPrimitivesCommand(testData);
+        assertTrue(command.executeCommand());
+
+        assertEquals(3, command.getParticipatingPrimitives().size());
+        HashSet<OsmPrimitive> should = new HashSet<>(layer1.data.allPrimitives());
+        assertEquals(should, new HashSet<>(command.getParticipatingPrimitives()));
+
+        // needs to be the same after undo
+        command.undoCommand();
+        assertEquals(should, new HashSet<>(command.getParticipatingPrimitives()));
+    }
+
+    /**
+     * Tests {@link AddPrimitivesCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+
+        List<PrimitiveData> testData = createTestData();
+        new AddPrimitivesCommand(testData).fillModifiedData(modified, deleted, added);
+
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    private void testContainsTestData(OsmDataLayer layer1) {
+        assertEquals(3, layer1.data.allPrimitives().size());
+        assertEquals(2, layer1.data.getNodes().size());
+        assertEquals(1, layer1.data.getWays().size());
+        assertEquals(0, layer1.data.allModifiedPrimitives().size());
+        for (OsmPrimitive n : layer1.data.allPrimitives()) {
+            assertEquals("test", n.get("test"));
+            assertFalse(n.isModified());
+        }
+
+        for (Node n : layer1.data.getNodes()) {
+            assertEquals(LatLon.ZERO, n.getCoor());
+        }
+
+        for (Way w : layer1.data.getWays()) {
+            assertEquals(2, w.getNodes().size());
+            assertEquals(5, w.getNode(0).getId());
+            assertEquals(6, w.getNode(1).getId());
+        }
+    }
+
+    private List<PrimitiveData> createTestData() {
+        NodeData node1 = createTestNode(5);
+        NodeData node2 = createTestNode(6);
+        WayData way = new WayData();
+        way.put("test", "test");
+        way.setNodes(Arrays.asList(node1.getId(), node2.getId()));
+        List<PrimitiveData> testData = Arrays.<PrimitiveData>asList(node1, node2, way);
+        return testData;
+    }
+
+    private NodeData createTestNode(int id) {
+        NodeData node1 = new NodeData();
+        node1.setCoor(LatLon.ZERO);
+        node1.put("test", "test");
+        node1.setId(id);
+        return node1;
     }
 
     /**
      * Unit test of methods {@link AddPrimitivesCommand#equals} and {@link AddPrimitivesCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(AddPrimitivesCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/ChangeCommandTest.java b/test/unit/org/openstreetmap/josm/command/ChangeCommandTest.java
index 6547e00..b3c2ca5 100644
--- a/test/unit/org/openstreetmap/josm/command/ChangeCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/ChangeCommandTest.java
@@ -1,15 +1,31 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestData;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataIntegrityProblemException;
 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.Relation;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -19,18 +35,123 @@ import nl.jqno.equalsverifier.Warning;
 public class ChangeCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Test that empty ways are prevented.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testPreventEmptyWays() {
+        Way emptyWay = new Way();
+        new ChangeCommand(testData.existingWay, emptyWay);
+    }
+
+    /**
+     * Test {@link ChangeCommand#executeCommand()}
+     */
+    @Test
+    public void testChange() {
+        Node newNode = new Node(5);
+        newNode.setCoor(LatLon.NORTH_POLE);
+        newNode.put("new", "new");
+
+        new ChangeCommand(testData.existingNode, newNode).executeCommand();
+
+        assertEquals("new", testData.existingNode.get("new"));
+        assertEquals(null, testData.existingNode.get("existing"));
+        assertEquals(LatLon.NORTH_POLE, testData.existingNode.getCoor());
+
+        Way newWay = new Way(10);
+        List<Node> newNodes = testData.existingWay.getNodes();
+        Collections.reverse(newNodes);
+        newWay.setNodes(newNodes);
+
+        new ChangeCommand(testData.existingWay, newWay).executeCommand();
+        assertArrayEquals(newNodes.toArray(), testData.existingWay.getNodes().toArray());
+    }
+
+    /**
+     * Test {@link ChangeCommand#executeCommand()} fails if ID is changed
+     */
+    @Test(expected = DataIntegrityProblemException.class)
+    public void testChangeIdChange() {
+        Node newNode = new Node(1);
+        newNode.setCoor(LatLon.NORTH_POLE);
+
+        new ChangeCommand(testData.existingNode, newNode).executeCommand();
+    }
+
+    /**
+     * Test {@link ChangeCommand#undoCommand()}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testUndo() {
+        Node newNode = new Node(5);
+        newNode.setCoor(LatLon.NORTH_POLE);
+        newNode.put("new", "new");
+
+        ChangeCommand command = new ChangeCommand(testData.existingNode, newNode);
+        command.executeCommand();
+
+        assertEquals("new", testData.existingNode.get("new"));
+        assertEquals(LatLon.NORTH_POLE, testData.existingNode.getCoor());
+
+        command.undoCommand();
+        assertNull(testData.existingNode.get("new"));
+        assertEquals("existing", testData.existingNode.get("existing"));
+        assertEquals(LatLon.ZERO, testData.existingNode.getCoor());
+    }
+
+    /**
+     * Tests {@link ChangeCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new ChangeCommand(testData.existingNode, testData.existingNode).fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {testData.existingNode}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Test {@link ChangeCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node = new Node(LatLon.ZERO);
+        node.put("name", "xy");
+        Way way = new Way();
+        way.addNode(node);
+        way.put("name", "xy");
+        Relation relation = new Relation();
+        relation.put("name", "xy");
+
+        assertTrue(new ChangeCommand(node, node).getDescriptionText().matches("Change node.*xy.*"));
+        assertTrue(new ChangeCommand(way, way).getDescriptionText().matches("Change way.*xy.*"));
+        assertTrue(new ChangeCommand(relation, relation).getDescriptionText().matches("Change relation.*xy.*"));
     }
 
     /**
      * Unit test of methods {@link ChangeCommand#equals} and {@link ChangeCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ChangeCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/ChangeNodesCommandTest.java b/test/unit/org/openstreetmap/josm/command/ChangeNodesCommandTest.java
index 6a82532..49c2948 100644
--- a/test/unit/org/openstreetmap/josm/command/ChangeNodesCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/ChangeNodesCommandTest.java
@@ -1,14 +1,30 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestData;
+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.User;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -18,18 +34,96 @@ import nl.jqno.equalsverifier.Warning;
 public class ChangeNodesCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Test that empty ways are prevented.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test(expected = IllegalArgumentException.class)
+    public void testPreventEmptyWays() {
+        new ChangeNodesCommand(testData.existingWay, Collections.<Node>emptyList());
+    }
+
+    /**
+     * Test {@link ChangeNodesCommand#executeCommand()}
+     */
+    @Test
+    public void testChange() {
+        List<Node> newNodes = testData.existingWay.getNodes();
+        Collections.reverse(newNodes);
+
+        new ChangeNodesCommand(testData.existingWay, newNodes).executeCommand();
+        assertArrayEquals(newNodes.toArray(), testData.existingWay.getNodes().toArray());
+
+        // tags are unchanged
+        assertEquals("existing", testData.existingWay.get("existing"));
+        assertTrue(testData.existingWay.isModified());
+    }
+
+    /**
+     * Test {@link ChangeCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        List<Node> newNodes = testData.existingWay.getNodes();
+        Collections.reverse(newNodes);
+
+        ChangeNodesCommand command = new ChangeNodesCommand(testData.existingWay, newNodes);
+        command.executeCommand();
+        command.undoCommand();
+        Collections.reverse(newNodes);
+        assertArrayEquals(newNodes.toArray(), testData.existingWay.getNodes().toArray());
+        assertFalse(testData.existingWay.isModified());
+    }
+
+    /**
+     * Tests {@link ChangeNodesCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new ChangeNodesCommand(testData.existingWay, Arrays.asList(testData.existingNode)).fillModifiedData(modified,
+                deleted, added);
+        assertArrayEquals(new Object[] {testData.existingWay}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Test {@link ChangeNodesCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node = new Node(LatLon.ZERO);
+        node.put("name", "xy");
+        Way way = new Way();
+        way.addNode(node);
+        way.put("name", "xy");
+
+        assertTrue(
+                new ChangeNodesCommand(way, Arrays.asList(node)).getDescriptionText().matches("Change nodes of.*xy.*"));
     }
 
     /**
      * Unit test of methods {@link ChangeNodesCommand#equals} and {@link ChangeNodesCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ChangeNodesCommand.class).usingGetClass()
             .withPrefabValues(Way.class,
                 new Way(1), new Way(2))
diff --git a/test/unit/org/openstreetmap/josm/command/ChangePropertyCommandTest.java b/test/unit/org/openstreetmap/josm/command/ChangePropertyCommandTest.java
index be5e164..b5b89aa 100644
--- a/test/unit/org/openstreetmap/josm/command/ChangePropertyCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/ChangePropertyCommandTest.java
@@ -1,13 +1,33 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+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.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestData;
 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.Relation;
+import org.openstreetmap.josm.data.osm.TagMap;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -17,18 +37,247 @@ import nl.jqno.equalsverifier.Warning;
 public class ChangePropertyCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Checks that the short constructors create the right {@link ChangePropertyCommand}
+     */
+    @Test
+    public void testShortConstructor() {
+        ChangePropertyCommand command = new ChangePropertyCommand(Arrays.asList(testData.existingNode), "a", "b");
+        assertEquals("b", command.getTags().get("a"));
+        assertEquals(1, command.getTags().size());
+        assertEquals(1, command.getObjectsNumber());
+
+        command = new ChangePropertyCommand(testData.existingNode, "a", "b");
+        assertEquals("b", command.getTags().get("a"));
+        assertEquals(1, command.getTags().size());
+        assertEquals(1, command.getObjectsNumber());
+    }
+
+    /**
+     * Checks that {@link ChangePropertyCommand} adds/updates a property
+     */
+    @Test
+    public void testUpdateSingleProperty() {
+        Node node1 = testData.createNode(14);
+        Node node2 = testData.createNode(15);
+        node2.removeAll();
+
+        TagMap tags = new TagMap();
+        tags.put("existing", "new");
+        new ChangePropertyCommand(Arrays.<OsmPrimitive>asList(node1, node2), tags).executeCommand();
+        assertEquals("new", node1.get("existing"));
+        assertEquals("new", node2.get("existing"));
+
+        assertTrue(node1.isModified());
+        assertTrue(node2.isModified());
+    }
+
+    /**
+     * Checks that {@link ChangePropertyCommand} removes a property
+     */
+    @Test
+    public void testRemoveProperty() {
+        Node node1 = testData.createNode(14);
+        Node node2 = testData.createNode(15);
+        node2.removeAll();
+
+        HashMap<String, String> tags = new HashMap<>();
+        tags.put("existing", "");
+        new ChangePropertyCommand(Arrays.<OsmPrimitive>asList(node1, node2), tags).executeCommand();
+        assertNull(node1.get("existing"));
+        assertNull(node2.get("existing"));
+
+        assertTrue(node1.isModified());
+        assertFalse(node2.isModified());
+    }
+
+    /**
+     * Checks that {@link ChangePropertyCommand} adds/updates multiple properties
+     */
+    @Test
+    public void testUpdateMultipleProperties() {
+        Node node1 = testData.createNode(14);
+        Node node2 = testData.createNode(15);
+        node2.removeAll();
+        node2.put("test", "xx");
+        node2.put("remove", "xx");
+
+        HashMap<String, String> tags = new HashMap<>();
+        tags.put("existing", "existing");
+        tags.put("test", "test");
+        tags.put("remove", "");
+        new ChangePropertyCommand(Arrays.<OsmPrimitive>asList(node1, node2), tags).executeCommand();
+        assertEquals("existing", node1.get("existing"));
+        assertEquals("existing", node2.get("existing"));
+        assertEquals("test", node1.get("test"));
+        assertEquals("test", node2.get("test"));
+        assertNull(node1.get("remove"));
+        assertNull(node2.get("remove"));
+
+        assertTrue(node1.isModified());
+        assertTrue(node2.isModified());
+    }
+
+    /**
+     * Checks that {@link ChangePropertyCommand} adds/updates a property
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testUpdateIgnoresExistingProperty() {
+        Node node1 = testData.createNode(14);
+        Node node2 = testData.createNode(15);
+        node2.removeAll();
+
+        TagMap tags = new TagMap();
+        tags.put("existing", "existing");
+        new ChangePropertyCommand(Arrays.<OsmPrimitive>asList(node1, node2), tags).executeCommand();
+        assertEquals("existing", node1.get("existing"));
+        assertEquals("existing", node2.get("existing"));
+
+        assertFalse(node1.isModified());
+        assertTrue(node2.isModified());
+    }
+
+    /**
+     * Tests {@link ChangePropertyCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     * and {@link ChangePropertyCommand#getObjectsNumber()}
+     */
+    @Test
+    public void testFillModifiedData() {
+        Node node1 = testData.createNode(14);
+        Node node2 = testData.createNode(15);
+        node2.put("existing", "new");
+
+        TagMap tags = new TagMap();
+        tags.put("existing", "new");
+
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new ChangePropertyCommand(Arrays.asList(node1, node2), tags).fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {node1}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+
+        assertEquals(1, new ChangePropertyCommand(Arrays.asList(node1, node2), tags).getObjectsNumber());
+
+        tags.clear();
+        assertEquals(0, new ChangePropertyCommand(Arrays.asList(node1, node2), tags).getObjectsNumber());
+
+        tags.put("a", "b");
+        assertEquals(2, new ChangePropertyCommand(Arrays.asList(node1, node2), tags).getObjectsNumber());
+    }
+
+    /**
+     * Test {@link ChangePropertyCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node1 = testData.createNode(14);
+        Node node2 = testData.createNode(15);
+        Node node3 = testData.createNode(16);
+        node1.put("name", "xy");
+        node2.put("existing", "new");
+        node3.put("existing", null);
+
+        TagMap tags = new TagMap();
+        tags.put("existing", "new");
+
+        HashMap<String, String> tagsRemove = new HashMap<>();
+        tagsRemove.put("existing", "");
+
+        Way way = new Way();
+        way.addNode(node1);
+        way.put("name", "xy");
+        way.put("existing", "existing");
+        Relation relation = new Relation();
+        relation.put("name", "xy");
+        relation.put("existing", "existing");
+
+        // nop
+        assertTrue(new ChangePropertyCommand(Arrays.asList(node2), tags).getDescriptionText()
+                .matches("Set.*tags for 0 objects"));
+
+        // change 1 key on 1 element.
+        assertTrue(new ChangePropertyCommand(Arrays.asList(node1, node2), tags).getDescriptionText()
+                .matches("Set existing=new for node.*xy.*"));
+        assertTrue(new ChangePropertyCommand(Arrays.asList(way, node2), tags).getDescriptionText()
+                .matches("Set existing=new for way.*xy.*"));
+        assertTrue(new ChangePropertyCommand(Arrays.asList(relation, node2), tags).getDescriptionText()
+                .matches("Set existing=new for relation.*xy.*"));
+
+        // remove 1 key on 1 element
+        assertTrue(new ChangePropertyCommand(Arrays.asList(node1, node3), tagsRemove).getDescriptionText()
+                .matches("Remove \"existing\" for node.*xy.*"));
+        assertTrue(new ChangePropertyCommand(Arrays.asList(way, node3), tagsRemove).getDescriptionText()
+                .matches("Remove \"existing\" for way.*xy.*"));
+        assertTrue(new ChangePropertyCommand(Arrays.asList(relation, node3), tagsRemove).getDescriptionText()
+                .matches("Remove \"existing\" for relation.*xy.*"));
+
+        // change 1 key on 3 elements
+        assertEquals("Set existing=new for 3 objects",
+                new ChangePropertyCommand(Arrays.asList(node1, node2, way, relation), tags).getDescriptionText());
+        // remove 1 key on 3 elements
+        assertEquals("Remove \"existing\" for 3 objects",
+                new ChangePropertyCommand(Arrays.asList(node1, node3, way, relation), tagsRemove).getDescriptionText());
+
+        // add 2 keys on 3 elements
+        tags.put("name", "a");
+        node2.put("name", "a");
+        assertEquals("Set 2 tags for 3 objects",
+                new ChangePropertyCommand(Arrays.asList(node1, node2, way, relation), tags).getDescriptionText());
+
+        tagsRemove.put("name", "");
+        // remove 2 key on 3 elements
+        assertEquals("Deleted 2 tags for 3 objects",
+                new ChangePropertyCommand(Arrays.asList(node1, node3, way, relation), tagsRemove).getDescriptionText());
+    }
+
+    /**
+     * Test {@link ChangePropertyCommand#getChildren()}
+     */
+    @Test
+    public void testChildren() {
+        Node node1 = testData.createNode(15);
+        Node node2 = testData.createNode(16);
+        node1.put("name", "node1");
+        node2.put("name", "node2");
+
+        assertNull(new ChangePropertyCommand(Arrays.asList(node1), "a", "b").getChildren());
+
+        Collection<PseudoCommand> children = new ChangePropertyCommand(Arrays.asList(node1, node2), "a", "b").getChildren();
+        assertEquals(2, children.size());
+        List<Node> nodesToExpect = new ArrayList<>(Arrays.asList(node1, node2));
+        for (PseudoCommand c : children) {
+            assertNull(c.getChildren());
+            Collection<? extends OsmPrimitive> part = c.getParticipatingPrimitives();
+            assertEquals(1, part.size());
+            OsmPrimitive node = part.iterator().next();
+            assertTrue(nodesToExpect.remove(node));
+
+            assertTrue(c.getDescriptionText().matches(".*" + node.get("name") + ".*"));
+        }
     }
 
     /**
      * Unit test of methods {@link ChangePropertyCommand#equals} and {@link ChangePropertyCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ChangePropertyCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/ChangePropertyKeyCommandTest.java b/test/unit/org/openstreetmap/josm/command/ChangePropertyKeyCommandTest.java
index c01687e..399aa6a 100644
--- a/test/unit/org/openstreetmap/josm/command/ChangePropertyKeyCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/ChangePropertyKeyCommandTest.java
@@ -1,13 +1,27 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+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.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestData;
 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.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -17,18 +31,123 @@ import nl.jqno.equalsverifier.Warning;
 public class ChangePropertyKeyCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Tests that a key is changed.
+     */
+    @Test
+    public void testChangeKeySingle() {
+        assertTrue(new ChangePropertyKeyCommand(testData.existingNode, "existing", "newKey").executeCommand());
+
+        assertNull(testData.existingNode.get("existing"));
+        assertEquals("existing", testData.existingNode.get("newKey"));
+        assertTrue(testData.existingNode.isModified());
+    }
+
+    /**
+     * Tests that a key is changed.
+     */
+    @Test
+    public void testChangeKey() {
+        assertTrue(new ChangePropertyKeyCommand(Arrays.asList(testData.existingNode, testData.existingWay), "existing",
+                "newKey").executeCommand());
+
+        assertNull(testData.existingNode.get("existing"));
+        assertEquals("existing", testData.existingNode.get("newKey"));
+        assertTrue(testData.existingNode.isModified());
+        assertNull(testData.existingWay.get("existing"));
+        assertEquals("existing", testData.existingWay.get("newKey"));
+        assertTrue(testData.existingWay.isModified());
+    }
+
+    /**
+     * Tests that nop operations are ignored.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testChangeKeyIgnored() {
+        Node node1 = testData.createNode(15);
+        node1.removeAll();
+        Node node2 = testData.createNode(16);
+        Node node3 = testData.createNode(17);
+
+        assertTrue(new ChangePropertyKeyCommand(Arrays.asList(node1, node2), "nonexisting", "newKey").executeCommand());
+
+        assertFalse(node1.isModified());
+        assertFalse(node2.isModified());
+
+        assertTrue(new ChangePropertyKeyCommand(Arrays.asList(node1, node2), "existing", "newKey").executeCommand());
+
+        assertFalse(node1.isModified());
+        assertTrue(node2.isModified());
+
+        // removes existing
+        assertTrue(new ChangePropertyKeyCommand(Arrays.asList(node1, node3), "newKey", "existing").executeCommand());
+
+        assertFalse(node1.isModified());
+        assertTrue(node3.isModified());
+        assertNull(node3.get("newKey"));
+        assertNull(node3.get("existing"));
+    }
+
+    /**
+     * Test {@link ChangePropertyKeyCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node1 = testData.createNode(15);
+        node1.put("name", "xy");
+
+        assertTrue(new ChangePropertyKeyCommand(node1, "a", "b").getDescriptionText()
+                .matches("Replace \"a\" by \"b\" for.*xy.*"));
+        assertTrue(new ChangePropertyKeyCommand(Arrays.asList(node1, testData.existingNode), "a", "b")
+                .getDescriptionText().matches("Replace \"a\" by \"b\" for 2 objects"));
+    }
+
+    /**
+     * Test {@link ChangePropertyCommand#getChildren()}
+     */
+    @Test
+    public void testChildren() {
+        Node node1 = testData.createNode(15);
+        Node node2 = testData.createNode(16);
+        node1.put("name", "node1");
+        node2.put("name", "node2");
+
+        ArrayList<Node> nodesToExpect = new ArrayList<>(Arrays.asList(node1, node2));
+
+        assertNull(new ChangePropertyKeyCommand(node1, "a", "b").getChildren());
+        Collection<PseudoCommand> children = new ChangePropertyKeyCommand(Arrays.asList(node1, node2), "a", "b").getChildren();
+        assertEquals(2, children.size());
+        for (PseudoCommand c : children) {
+            assertNull(c.getChildren());
+            Collection<? extends OsmPrimitive> part = c.getParticipatingPrimitives();
+            assertEquals(1, part.size());
+            OsmPrimitive node = part.iterator().next();
+            assertTrue(nodesToExpect.remove(node));
+
+            assertTrue(c.getDescriptionText().contains(node.getName()));
+        }
     }
 
     /**
      * Unit test of methods {@link ChangePropertyKeyCommand#equals} and {@link ChangePropertyKeyCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ChangePropertyKeyCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommandTest.java b/test/unit/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommandTest.java
index 57db8a4..d600ac3 100644
--- a/test/unit/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommandTest.java
@@ -1,14 +1,26 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+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.ArrayList;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -18,18 +30,121 @@ import nl.jqno.equalsverifier.Warning;
 public class ChangeRelationMemberRoleCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
+
+    /**
+     * Test if {@link ChangeRelationMemberRoleCommand} changes the role by index
+     */
+    @Test
+    public void testRoleChanged() {
+        assertTrue(new ChangeRelationMemberRoleCommand(testData.existingRelation, 0, "newRole").executeCommand());
+        assertEquals("newRole", testData.existingRelation.getMember(0).getRole());
+        assertEquals(testData.existingNode, testData.existingRelation.getMember(0).getMember());
+        assertEquals("way", testData.existingRelation.getMember(1).getRole());
+
+        assertTrue(testData.existingRelation.isModified());
+
+        assertTrue(new ChangeRelationMemberRoleCommand(testData.existingRelation, 1, "newRole").executeCommand());
+        assertEquals("newRole", testData.existingRelation.getMember(1).getRole());
+    }
+
+    /**
+     * Wrong index should be ignored.
+     */
+    @Test
+    public void testWrongIndex() {
+        // should be ignored
+        ChangeRelationMemberRoleCommand command1 = new ChangeRelationMemberRoleCommand(testData.existingRelation, -1, "newRole");
+        assertTrue(command1.executeCommand());
+        ChangeRelationMemberRoleCommand command2 = new ChangeRelationMemberRoleCommand(testData.existingRelation, 8, "newRole");
+        assertTrue(command2.executeCommand());
+        assertFalse(testData.existingRelation.isModified());
+
+        command1.undoCommand();
+        command2.undoCommand();
+        assertFalse(testData.existingRelation.isModified());
+    }
+
+
+    /**
+     * Same role should be ignored.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testSameRole() {
+        // should be ignored
+        assertTrue(new ChangeRelationMemberRoleCommand(testData.existingRelation, 0, "node").executeCommand());
+        assertFalse(testData.existingRelation.isModified());
+    }
+
+    /**
+     * Test {@link ChangeRelationMemberRoleCommand#undoCommand()}.
+     */
+    @Test
+    public void testUndo() {
+        ChangeRelationMemberRoleCommand command = new ChangeRelationMemberRoleCommand(testData.existingRelation, 0, "newRole");
+        command.executeCommand();
+        assertEquals("newRole", testData.existingRelation.getMember(0).getRole());
+        assertTrue(testData.existingRelation.isModified());
+
+        command.undoCommand();
+        assertEquals("node", testData.existingRelation.getMember(0).getRole());
+        assertFalse(testData.existingRelation.isModified());
+
+        command.executeCommand();
+        assertEquals("newRole", testData.existingRelation.getMember(0).getRole());
+        assertTrue(testData.existingRelation.isModified());
+    }
+
+    /**
+     * Tests {@link ChangeCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new ChangeRelationMemberRoleCommand(testData.existingRelation, 0, "newRole").fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {testData.existingRelation}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Test {@link ChangeRelationMemberRoleCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        testData.existingRelation.put("name", "xy");
+        assertTrue(new ChangeRelationMemberRoleCommand(testData.existingRelation, 0, "newRole").getDescriptionText()
+                .matches("Change relation member role for relation.*xy.*"));
+    }
+
+    /**
+     * Test {@link ChangeRelationMemberRoleCommand#getChildren()}
+     */
+    @Test
+    public void testChildren() {
+        assertNull(new ChangeRelationMemberRoleCommand(testData.existingRelation, 0, "newRole").getChildren());
     }
 
     /**
      * Unit test of methods {@link ChangeRelationMemberRoleCommand#equals} and {@link ChangeRelationMemberRoleCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ChangeRelationMemberRoleCommand.class).usingGetClass()
             .withPrefabValues(Relation.class,
                 new Relation(1), new Relation(2))
diff --git a/test/unit/org/openstreetmap/josm/command/CommandTest.java b/test/unit/org/openstreetmap/josm/command/CommandTest.java
index 7155ca2..47b59e7 100644
--- a/test/unit/org/openstreetmap/josm/command/CommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/CommandTest.java
@@ -1,13 +1,29 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+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.Relation;
+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.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -17,18 +33,54 @@ import nl.jqno.equalsverifier.Warning;
 public class CommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes / data sets.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Test {@link Command#invalidBecauselayerRemoved(org.openstreetmap.josm.gui.layer.Layer)}
+     */
+    @Test
+    public void testInvalidBecauselayerRemoved() {
+        OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "test", null);
+
+        Command command = new NopCommand();
+        assertFalse(command.invalidBecauselayerRemoved(layer2));
+        assertTrue(command.invalidBecauselayerRemoved(testData.layer));
+
+        Command command2 = new NopCommand(layer2);
+        assertTrue(command2.invalidBecauselayerRemoved(layer2));
+        assertFalse(command2.invalidBecauselayerRemoved(testData.layer));
+    }
+
+    /**
+     * Test {@link Command#getLayer()}
+     */
+    @Test
+    public void testGetLayer() {
+        OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), "test", null);
+        Command command = new NopCommand();
+        Command command2 = new NopCommand(layer2);
+        assertSame(testData.layer, command.getLayer());
+        assertSame(layer2, command2.getLayer());
     }
 
     /**
      * Unit test of methods {@link Command#equals} and {@link Command#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(Command.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
@@ -39,4 +91,124 @@ public class CommandTest {
             .suppress(Warning.NONFINAL_FIELDS)
             .verify();
     }
+
+    private static final class NopCommand extends Command {
+        NopCommand() {
+            super();
+        }
+
+        NopCommand(OsmDataLayer layer) {
+            super(layer);
+        }
+
+        @Override
+        public String getDescriptionText() {
+            return "";
+        }
+
+        @Override
+        public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
+                Collection<OsmPrimitive> added) {
+            // nop
+        }
+    }
+
+    /**
+     * A change test data consisting of two nodes and a way.
+     * @author Michael Zangl
+     */
+    public static class CommandTestData {
+        /**
+         * A test layer
+         */
+        public final OsmDataLayer layer;
+        /**
+         * A test node
+         */
+        public final Node existingNode;
+        /**
+         * A second test node
+         */
+        public final Node existingNode2;
+        /**
+         * A test way
+         */
+        public final Way existingWay;
+
+        /**
+         * Creates the new test data and adds {@link #layer} to the layer manager.
+         */
+        public CommandTestData() {
+            layer = new OsmDataLayer(new DataSet(), "layer", null);
+            Main.getLayerManager().addLayer(layer);
+
+            existingNode = createNode(5);
+            existingNode2 = createNode(6);
+
+            existingWay = createWay(10, existingNode, existingNode2);
+        }
+
+        /**
+         * Create and add a new test node.
+         * @param id the id
+         * @return The node.
+         */
+        public Node createNode(long id) {
+            Node node = new Node();
+            node.setOsmId(id, 1);
+            node.setCoor(LatLon.ZERO);
+            node.put("existing", "existing");
+            layer.data.addPrimitive(node);
+            return node;
+        }
+
+        /**
+         * Create and add a new test way.
+         * @param id the id
+         * @param nodes The nodes
+         * @return The way.
+         */
+        public Way createWay(int id, Node...nodes) {
+            Way way = new Way();
+            way.setOsmId(id, 1);
+            way.setNodes(Arrays.asList(nodes));
+            way.put("existing", "existing");
+            layer.data.addPrimitive(way);
+            return way;
+        }
+
+        /**
+         * Create and add a new test relation.
+         * @param id the id
+         * @param members The members
+         * @return The relation.
+         */
+        public Relation createRelation(int id, RelationMember...members) {
+            Relation relation = new Relation(id, 1);
+            for (RelationMember member : members) {
+                relation.addMember(member);
+            }
+            relation.put("existing", "existing");
+            layer.data.addPrimitive(relation);
+            return relation;
+        }
+    }
+
+    /**
+     * A change test data consisting of two nodes, a way and a relation.
+     * @author Michael Zangl
+     */
+    public static class CommandTestDataWithRelation extends CommandTestData {
+        /**
+         * A test relation
+         */
+        public final Relation existingRelation;
+
+        /**
+         * Creates the new test data and adds {@link #layer} to the layer manager.
+         */
+        public CommandTestDataWithRelation() {
+            existingRelation = createRelation(20, new RelationMember("node", existingNode), new RelationMember("way", existingWay));
+        }
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/command/DeleteCommandTest.java b/test/unit/org/openstreetmap/josm/command/DeleteCommandTest.java
index 0b8035c..89ae6d1 100644
--- a/test/unit/org/openstreetmap/josm/command/DeleteCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/DeleteCommandTest.java
@@ -1,13 +1,31 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 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.Relation;
 import org.openstreetmap.josm.data.osm.User;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.WaySegment;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -17,18 +35,347 @@ import nl.jqno.equalsverifier.Warning;
 public class DeleteCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
+
+    /**
+     * A simple deletion test with no references
+     */
+    @Test
+    public void testSimpleDelete() {
+        Node node = testData.createNode(15);
+        assertTrue(testData.layer.data.allPrimitives().contains(node));
+
+        new DeleteCommand(node).executeCommand();
+
+        assertTrue(node.isDeleted());
+        assertTrue(node.isModified());
+        assertFalse(testData.layer.data.allNonDeletedPrimitives().contains(node));
+    }
+
+    /**
+     * A delete should not delete referred objects but should should remove the reference.
+     */
+    @Test
+    public void testDeleteIgnoresReferences() {
+        assertTrue(testData.existingNode.getReferrers().contains(testData.existingRelation));
+        new DeleteCommand(testData.existingRelation).executeCommand();
+
+        assertTrue(testData.existingRelation.isDeleted());
+        assertEquals(0, testData.existingRelation.getMembersCount());
+        assertFalse(testData.existingNode.isDeleted());
+        assertFalse(testData.existingWay.isDeleted());
+        assertFalse(testData.existingNode.getReferrers().contains(testData.existingRelation));
+
+        // same for the way
+        assertTrue(testData.existingNode.getReferrers().contains(testData.existingWay));
+        new DeleteCommand(testData.existingWay).executeCommand();
+        assertEquals(0, testData.existingWay.getNodesCount());
+        assertFalse(testData.existingNode.getReferrers().contains(testData.existingWay));
+    }
+
+    /**
+     * A delete should delete all objects with references to the deleted one
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testDeleteFailsOnDelted() {
+        new DeleteCommand(testData.existingRelation).executeCommand();
+
+        new DeleteCommand(testData.existingRelation).executeCommand();
+    }
+
+    /**
+     * A delete should delete all objects with references to the deleted one
+     */
+    @Test
+    public void testReferredDelete() {
+        DeleteCommand.deleteWithReferences(testData.layer, Arrays.asList(testData.existingNode), true).executeCommand();
+
+        assertTrue(testData.existingNode.isDeleted());
+        assertEquals(0, testData.existingWay.getNodesCount());
+        assertTrue(testData.existingWay.isDeleted());
+    }
+
+    /**
+     * Delete nodes that would be without reference afterwards.
+     */
+    @Test
+    public void testDelteNodesInWay() {
+        testData.existingNode.removeAll();
+        // That untagged node should be deleted.
+        testData.existingNode2.removeAll();
+        DeleteCommand.delete(testData.layer, Arrays.asList(testData.existingWay), true, true).executeCommand();
+
+        assertTrue(testData.existingWay.isDeleted());
+        assertTrue(testData.existingNode2.isDeleted());
+        assertFalse(testData.existingNode.isDeleted());
+        assertFalse(testData.existingRelation.isDeleted());
+
+        // Same test, now with tagged nodes
+        Node node1 = testData.createNode(15);
+        Node node2 = testData.createNode(16);
+        Node node3 = testData.createNode(17);
+        Node node4 = testData.createNode(18);
+        node2.removeAll();
+        node4.removeAll();
+        Way way1 = new Way(25, 1);
+        way1.setNodes(Arrays.asList(node1, node2, node3));
+        testData.layer.data.addPrimitive(way1);
+        Way way2 = new Way(26, 1);
+        way2.setNodes(Arrays.asList(node2, node3, node4));
+        testData.layer.data.addPrimitive(way2);
+        DeleteCommand.delete(testData.layer, Arrays.asList(way1, way2), true, true).executeCommand();
+
+        assertTrue(way1.isDeleted());
+        assertTrue(way2.isDeleted());
+        assertFalse(node1.isDeleted());
+        assertTrue(node2.isDeleted());
+        assertFalse(node3.isDeleted());
+        assertTrue(node4.isDeleted());
+    }
+
+    /**
+     * Test that {@link DeleteCommand} checks for non-null.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testConsistency() {
+        new DeleteCommand(Arrays.asList(testData.existingNode, testData.existingWay, null));
+    }
+
+    /**
+     * Test that {@link DeleteCommand} checks for the dataset
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testConsistencyDataset() {
+        testData.layer.data.removePrimitive(testData.existingNode);
+        new DeleteCommand(Arrays.asList(testData.existingNode, testData.existingWay));
+    }
+
+    /**
+     * Test that {@link DeleteCommand} checks for non-empty list
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testConsistencyNonEmpty() {
+        new DeleteCommand(Arrays.<OsmPrimitive>asList());
+    }
+
+    /**
+     * Test that {@link DeleteCommand} checks for non-null list
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testConsistencyNonNull() {
+        new DeleteCommand((Collection<OsmPrimitive>) null);
+    }
+
+    /**
+     * Test {@link DeleteCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        DeleteCommand command = new DeleteCommand(
+                Arrays.asList(testData.existingNode, testData.existingNode2, testData.existingWay));
+        command.executeCommand();
+
+        assertTrue(testData.existingNode.isDeleted());
+        assertTrue(testData.existingWay.isDeleted());
+
+        command.undoCommand();
+
+        assertFalse(testData.existingNode.isDeleted());
+        assertFalse(testData.existingWay.isDeleted());
+        assertEquals("existing", testData.existingNode.get("existing"));
+
+        command.executeCommand();
+
+        assertTrue(testData.existingNode.isDeleted());
+        assertTrue(testData.existingWay.isDeleted());
+    }
+
+    /**
+     * Test {@link DeleteCommand#deleteWaySegment(OsmDataLayer, org.openstreetmap.josm.data.osm.WaySegment)}
+     * Way with only 1 segment
+     */
+    @Test
+    public void testDeleteWaySegment() {
+        Way way1 = testData.createWay(100, testData.createNode(101), testData.createNode(102));
+        WaySegment ws = new WaySegment(way1, 0);
+        Command command = DeleteCommand.deleteWaySegment(testData.layer, ws);
+        command.executeCommand();
+
+        assertTrue(way1.isDeleted());
+    }
+
+    /**
+     * Test {@link DeleteCommand#deleteWaySegment(OsmDataLayer, org.openstreetmap.josm.data.osm.WaySegment)}
+     * Delete end of way
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testDeleteWaySegmentEndOfWay() {
+        Way way = testData.createWay(200, testData.createNode(201), testData.createNode(202), testData.createNode(203),
+                testData.createNode(204));
+        WaySegment ws = new WaySegment(way, 2);
+        Command command = DeleteCommand.deleteWaySegment(testData.layer, ws);
+        command.executeCommand();
+
+        assertEquals(3, way.getNodesCount());
+        assertEquals(201, way.getNodeId(0));
+        assertEquals(202, way.getNodeId(1));
+        assertEquals(203, way.getNodeId(2));
+    }
+
+    /**
+     * Test {@link DeleteCommand#deleteWaySegment(OsmDataLayer, org.openstreetmap.josm.data.osm.WaySegment)}
+     * Delete start of way
+     */
+    @Test
+    public void testDeleteWaySegmentStartOfWay() {
+        Way way = testData.createWay(100, testData.createNode(101), testData.createNode(102), testData.createNode(103),
+                testData.createNode(104));
+        WaySegment ws = new WaySegment(way, 0);
+        Command command = DeleteCommand.deleteWaySegment(testData.layer, ws);
+        command.executeCommand();
+
+        assertEquals(3, way.getNodesCount());
+        assertEquals(102, way.getNodeId(0));
+        assertEquals(103, way.getNodeId(1));
+        assertEquals(104, way.getNodeId(2));
+    }
+
+    /**
+     * Test {@link DeleteCommand#deleteWaySegment(OsmDataLayer, org.openstreetmap.josm.data.osm.WaySegment)}
+     * Delete start of way
+     */
+    @Test
+    public void testDeleteWaySegmentSplit() {
+        Node node103 = testData.createNode(103);
+        Node node104 = testData.createNode(104);
+        Way way = testData.createWay(100, testData.createNode(101), testData.createNode(102), node103, node104);
+        WaySegment ws = new WaySegment(way, 1);
+        Command command = DeleteCommand.deleteWaySegment(testData.layer, ws);
+        command.executeCommand();
+
+        assertEquals(2, way.getNodesCount());
+        assertEquals(101, way.getNodeId(0));
+        assertEquals(102, way.getNodeId(1));
+        // there needs to be a new way
+        assertEquals(1, node104.getReferrers().size());
+        Way newWay = (Way) node104.getReferrers().get(0);
+        assertEquals(2, newWay.getNodesCount());
+        assertEquals(103, newWay.getNodeId(0));
+        assertEquals(104, newWay.getNodeId(1));
+    }
+
+    /**
+     * Test {@link DeleteCommand#deleteWaySegment(OsmDataLayer, org.openstreetmap.josm.data.osm.WaySegment)}
+     * Delete start of way
+     */
+    @Test
+    public void testDeleteWaySegmentCycle() {
+        Node n = testData.createNode(101);
+        Way way = testData.createWay(100, n, testData.createNode(102), testData.createNode(103),
+                testData.createNode(104), n);
+        WaySegment ws = new WaySegment(way, 2);
+        Command command = DeleteCommand.deleteWaySegment(testData.layer, ws);
+        command.executeCommand();
+
+        assertEquals(4, way.getNodesCount());
+        assertEquals(104, way.getNodeId(0));
+        assertEquals(101, way.getNodeId(1));
+        assertEquals(102, way.getNodeId(2));
+        assertEquals(103, way.getNodeId(3));
+    }
+
+    /**
+     * Tests {@link DeleteCommand#getChildren()}
+     */
+    @Test
+    public void testGetChildren() {
+        testData.existingNode.put("name", "xy");
+        Collection<PseudoCommand> children = new DeleteCommand(Arrays.<OsmPrimitive>asList(testData.existingNode, testData.existingNode2))
+                .getChildren();
+        assertEquals(2, children.size());
+        assertTrue(children.stream().allMatch(c -> c.getParticipatingPrimitives().size() == 1));
+        assertTrue(children.stream().anyMatch(c -> c.getParticipatingPrimitives().iterator().next() == testData.existingNode));
+        assertTrue(children.stream().anyMatch(c -> c.getParticipatingPrimitives().iterator().next() == testData.existingNode2));
+        assertTrue(children.stream().anyMatch(c -> c.getDescriptionText().matches("Deleted '.*xy.*'")));
+    }
+
+    /**
+     * Tests {@link DeleteCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new DeleteCommand(Arrays.<OsmPrimitive>asList(testData.existingNode)).fillModifiedData(modified, deleted, added);
+        // intentionally left empty.
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link DeleteCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        DeleteCommand command = new DeleteCommand(Arrays.<OsmPrimitive>asList(testData.existingNode));
+        assertArrayEquals(new Object[] {testData.existingNode }, command.getParticipatingPrimitives().toArray());
+
+        DeleteCommand command2 = new DeleteCommand(
+                Arrays.<OsmPrimitive>asList(testData.existingNode, testData.existingWay));
+        assertArrayEquals(new Object[] {testData.existingNode, testData.existingWay},
+                command2.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link DeleteCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node = testData.createNode(100);
+        node.put("name", "xy");
+        Way way = testData.createWay(101);
+        way.put("name", "xy");
+        Relation relation = testData.createRelation(102);
+        relation.put("name", "xy");
+
+        List<OsmPrimitive> nodeList = Arrays.<OsmPrimitive>asList(node);
+        assertTrue(new DeleteCommand(nodeList).getDescriptionText().matches("Delete node .*xy.*"));
+        List<OsmPrimitive> wayList = Arrays.<OsmPrimitive>asList(way);
+        assertTrue(new DeleteCommand(wayList).getDescriptionText().matches("Delete way .*xy.*"));
+        List<OsmPrimitive> relationList = Arrays.<OsmPrimitive>asList(relation);
+        assertTrue(new DeleteCommand(relationList).getDescriptionText().matches("Delete relation .*xy.*"));
+
+        List<OsmPrimitive> nodesList = Arrays.<OsmPrimitive>asList(node, testData.createNode(110));
+        assertTrue(new DeleteCommand(nodesList).getDescriptionText().matches("Delete 2 nodes"));
+        List<OsmPrimitive> waysList = Arrays.<OsmPrimitive>asList(way, testData.createWay(111));
+        assertTrue(new DeleteCommand(waysList).getDescriptionText().matches("Delete 2 ways"));
+        List<OsmPrimitive> relationsList = Arrays.<OsmPrimitive>asList(relation, testData.createRelation(112));
+        assertTrue(new DeleteCommand(relationsList).getDescriptionText().matches("Delete 2 relations"));
+
+        List<OsmPrimitive> mixed = Arrays.<OsmPrimitive>asList(node, way, relation);
+        assertTrue(new DeleteCommand(mixed).getDescriptionText().matches("Delete 3 objects"));
     }
 
     /**
      * Unit test of methods {@link DeleteCommand#equals} and {@link DeleteCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(DeleteCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java b/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java
index ff4b9e7..f0b35de 100644
--- a/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/MoveCommandTest.java
@@ -1,14 +1,31 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
+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.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -16,20 +33,232 @@ import nl.jqno.equalsverifier.Warning;
  * Unit tests of {@link MoveCommand} class.
  */
 public class MoveCommandTest {
+    /**
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().i18n().projection();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
+
+    /**
+     * Test the various constructors.
+     */
+    @Test
+    public void testConstructors() {
+        EastNorth offset = new EastNorth(1, 2);
+        LatLon destLatLon = Main.getProjection().eastNorth2latlon(offset);
+        EastNorth start = new EastNorth(2, 0);
+
+        Set<OsmPrimitive> nodeAsCollection = Collections.<OsmPrimitive>singleton(testData.existingNode);
+        assertEquals(1, nodeAsCollection.size());
+        checkCommandAfterConstructor(new MoveCommand(nodeAsCollection, offset));
+        checkCommandAfterConstructor(new MoveCommand(testData.existingNode, destLatLon));
+        checkCommandAfterConstructor(new MoveCommand(nodeAsCollection, 1, 2));
+        checkCommandAfterConstructor(new MoveCommand(nodeAsCollection, start, start.add(offset)));
+        checkCommandAfterConstructor(new MoveCommand(testData.existingNode, 1, 2));
+        checkCommandAfterConstructor(new MoveCommand(testData.existingNode, start, start.add(offset)));
+    }
+
+    private void checkCommandAfterConstructor(MoveCommand moveCommand) {
+        ArrayList<OsmPrimitive> nodes = new ArrayList<>();
+        moveCommand.fillModifiedData(nodes, null, null);
+        assertEquals(nodes, new ArrayList<>(Collections.<OsmPrimitive>singleton(testData.existingNode)));
+
+        assertEquals("east", 1, moveCommand.getOffset().east(), 0.0001);
+        assertEquals("north", 2, moveCommand.getOffset().north(), 0.0001);
+    }
 
     /**
-     * Setup test.
+     * Test {@link MoveCommand#executeCommand()} for simple nodes.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testSingleMove() {
+        MoveCommand command = new MoveCommand(testData.existingNode, 1, 2);
+        testData.existingNode.setEastNorth(new EastNorth(3, 7));
+        command.executeCommand();
+        assertEquals("east", 4, testData.existingNode.getEastNorth().east(), 0.0001);
+        assertEquals("north", 9, testData.existingNode.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Test {@link MoveCommand#executeCommand()} for multiple nodes.
+     */
+    @Test
+    public void testMultipleMove() {
+        MoveCommand command = new MoveCommand(
+                Arrays.asList(testData.existingNode, testData.existingNode2, testData.existingWay),
+                new EastNorth(1, 2));
+
+        testData.existingNode.setEastNorth(new EastNorth(3, 7));
+        testData.existingNode2.setEastNorth(new EastNorth(4, 7));
+        command.executeCommand();
+
+        assertEquals("east", 4, testData.existingNode.getEastNorth().east(), 0.0001);
+        assertEquals("north", 9, testData.existingNode.getEastNorth().north(), 0.0001);
+        assertEquals("east", 5, testData.existingNode2.getEastNorth().east(), 0.0001);
+        assertEquals("north", 9, testData.existingNode2.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Test {@link MoveCommand#moveAgain(double, double)} and {@link MoveCommand#moveAgainTo(double, double)}.
+     */
+    @Test
+    public void testMoveAgain() {
+        MoveCommand command = new MoveCommand(testData.existingNode, 1, 2);
+        assertEquals("east", 1, command.getOffset().east(), 0.0001);
+        assertEquals("north", 2, command.getOffset().north(), 0.0001);
+
+        command.moveAgain(1, 2);
+        assertEquals("east", 2, command.getOffset().east(), 0.0001);
+        assertEquals("north", 4, command.getOffset().north(), 0.0001);
+
+        command.moveAgain(-9, -3);
+        assertEquals("east", -7, command.getOffset().east(), 0.0001);
+        assertEquals("north", 1, command.getOffset().north(), 0.0001);
+
+        command.moveAgainTo(1, 2);
+        assertEquals("east", 1, command.getOffset().east(), 0.0001);
+        assertEquals("north", 2, command.getOffset().north(), 0.0001);
+    }
+
+    /**
+     * Test {@link MoveCommand#saveCheckpoint()} and {@link MoveCommand#resetToCheckpoint()}
+     */
+    @Test
+    public void testCheckpoint() {
+        MoveCommand command = new MoveCommand(testData.existingNode, 2, 4);
+        assertEquals("east", 2, command.getOffset().east(), 0.0001);
+        assertEquals("north", 4, command.getOffset().north(), 0.0001);
+
+        command.saveCheckpoint();
+        command.moveAgain(3, 7);
+        assertEquals("east", 5, command.getOffset().east(), 0.0001);
+        assertEquals("north", 11, command.getOffset().north(), 0.0001);
+
+        command.resetToCheckpoint();
+        assertEquals("east", 2, command.getOffset().east(), 0.0001);
+        assertEquals("north", 4, command.getOffset().north(), 0.0001);
+    }
+
+    /**
+     * Test the start point mechanism.
+     */
+    @Test
+    public void testStartPoint() {
+        EastNorth start = new EastNorth(10, 20);
+        MoveCommand command = new MoveCommand(testData.existingNode, start, start.add(1, 2));
+        assertEquals("east", 1, command.getOffset().east(), 0.0001);
+        assertEquals("north", 2, command.getOffset().north(), 0.0001);
+
+        command.applyVectorTo(start.add(3, 4));
+        assertEquals("east", 3, command.getOffset().east(), 0.0001);
+        assertEquals("north", 4, command.getOffset().north(), 0.0001);
+
+        // set to 100, 200
+        command.changeStartPoint(new EastNorth(103, 204));
+        command.applyVectorTo(new EastNorth(101, 202));
+        assertEquals("east", 1, command.getOffset().east(), 0.0001);
+        assertEquals("north", 2, command.getOffset().north(), 0.0001);
+    }
+
+    /**
+     * Test the start point mechanism ignored.
+     */
+    @Test
+    public void testNoStartPoint() {
+        MoveCommand command = new MoveCommand(testData.existingNode, 1, 0);
+        // ignored
+        command.applyVectorTo(new EastNorth(3, 4));
+        assertEquals("east", 1, command.getOffset().east(), 0.0001);
+        assertEquals("north", 0, command.getOffset().north(), 0.0001);
+
+        // set to 100, 200
+        command.changeStartPoint(new EastNorth(101, 200));
+        // works
+        command.applyVectorTo(new EastNorth(101, 202));
+        assertEquals("east", 1, command.getOffset().east(), 0.0001);
+        assertEquals("north", 2, command.getOffset().north(), 0.0001);
+    }
+
+    /**
+     * Test {@link MoveCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        testData.existingNode.setEastNorth(new EastNorth(3, 7));
+        MoveCommand command = new MoveCommand(testData.existingNode, 1, 2);
+        command.executeCommand();
+        assertEquals("east", 4, testData.existingNode.getEastNorth().east(), 0.0001);
+        assertEquals("north", 9, testData.existingNode.getEastNorth().north(), 0.0001);
+
+        command.undoCommand();
+        assertEquals("east", 3, testData.existingNode.getEastNorth().east(), 0.0001);
+        assertEquals("north", 7, testData.existingNode.getEastNorth().north(), 0.0001);
+
+        command.executeCommand();
+        assertEquals("east", 4, testData.existingNode.getEastNorth().east(), 0.0001);
+        assertEquals("north", 9, testData.existingNode.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Tests {@link MoveCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        new MoveCommand(Arrays.<OsmPrimitive>asList(testData.existingNode), 1, 2).fillModifiedData(modified,
+                deleted, added);
+        assertArrayEquals(new Object[] {testData.existingNode }, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link MoveCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        MoveCommand command = new MoveCommand(Arrays.<OsmPrimitive>asList(testData.existingNode), 1, 2);
+        command.executeCommand();
+        assertArrayEquals(new Object[] {testData.existingNode}, command.getParticipatingPrimitives().toArray());
+
+        MoveCommand command2 = new MoveCommand(
+                Arrays.<OsmPrimitive>asList(testData.existingNode, testData.existingWay), 1, 2);
+        command2.executeCommand();
+        assertArrayEquals(new Object[] {testData.existingNode, testData.existingNode2},
+                command2.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link MoveCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        Node node = new Node(LatLon.ZERO);
+        node.put("name", "xy");
+
+        List<OsmPrimitive> nodeList = Arrays.<OsmPrimitive>asList(node);
+        assertTrue(new MoveCommand(nodeList, 1, 2).getDescriptionText().matches("Move 1 node"));
+        List<OsmPrimitive> nodes = Arrays.<OsmPrimitive>asList(node, testData.existingNode, testData.existingNode2);
+        assertTrue(new MoveCommand(nodes, 1, 2).getDescriptionText().matches("Move 3 nodes"));
     }
 
     /**
      * Unit test of methods {@link MoveCommand#equals} and {@link MoveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(MoveCommand.class).usingGetClass()
             .withPrefabValues(LatLon.class,
                 LatLon.ZERO, new LatLon(45, 45))
diff --git a/test/unit/org/openstreetmap/josm/command/PurgeCommandTest.java b/test/unit/org/openstreetmap/josm/command/PurgeCommandTest.java
index a23b794..34caf64 100644
--- a/test/unit/org/openstreetmap/josm/command/PurgeCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/PurgeCommandTest.java
@@ -1,18 +1,34 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 import org.openstreetmap.josm.data.conflict.Conflict;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Hash;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Storage;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -20,20 +36,114 @@ import nl.jqno.equalsverifier.Warning;
  * Unit tests of {@link PurgeCommand} class.
  */
 public class PurgeCommandTest {
+    /**
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
 
     /**
-     * Setup test.
+     * Test {@link PurgeCommand#executeCommand()}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testExecute() {
+        Relation relationParent = testData.createRelation(100, new RelationMember("child", testData.existingRelation));
+        Relation relationParent2 = testData.createRelation(101, new RelationMember("child", testData.existingRelation));
+        // to check that algorithm ignores it:
+        Relation relationParent3 = testData.createRelation(102, new RelationMember("child", testData.existingRelation));
+        PurgeCommand command = new PurgeCommand(testData.layer,
+                Arrays.<OsmPrimitive>asList(testData.existingNode, testData.existingNode2, testData.existingWay,
+                        testData.existingRelation, relationParent, relationParent2),
+                Arrays.<OsmPrimitive>asList(testData.existingNode2, testData.existingWay, testData.existingRelation));
+        command.executeCommand();
+        assertTrue(testData.existingNode2.isIncomplete());
+        assertTrue(testData.existingWay.isIncomplete());
+        assertTrue(testData.existingRelation.isIncomplete());
+        assertNull(relationParent.getDataSet());
+        assertNull(relationParent2.getDataSet());
+        assertNotNull(relationParent3.getDataSet());
+        assertFalse(relationParent3.isIncomplete());
+        assertNull(testData.existingNode.getDataSet());
+        assertFalse(testData.existingNode.isIncomplete());
+    }
+
+    /**
+     * Test {@link PurgeCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        PurgeCommand command = new PurgeCommand(testData.layer,
+                Arrays.<OsmPrimitive>asList(testData.existingNode, testData.existingWay),
+                Arrays.<OsmPrimitive>asList(testData.existingWay));
+        command.executeCommand();
+        assertTrue(testData.existingWay.isIncomplete());
+        assertNull(testData.existingNode.getDataSet());
+
+        command.undoCommand();
+        assertFalse(testData.existingWay.isIncomplete());
+        assertSame(testData.layer.data, testData.existingNode.getDataSet());
+
+        command.executeCommand();
+        assertTrue(testData.existingWay.isIncomplete());
+        assertNull(testData.existingNode.getDataSet());
+    }
+
+    /**
+     * Tests {@link PurgeCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        PurgeCommand command = new PurgeCommand(testData.layer, Arrays.<OsmPrimitive>asList(testData.existingNode),
+                Arrays.<OsmPrimitive>asList(testData.existingRelation));
+        command.fillModifiedData(modified, deleted, added);
+        // intentianally empty (?)
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link PurgeCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        PurgeCommand command = new PurgeCommand(testData.layer, Arrays.<OsmPrimitive>asList(testData.existingNode),
+                Arrays.<OsmPrimitive>asList(testData.existingRelation));
+        assertArrayEquals(new Object[] {testData.existingNode }, command.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link PurgeCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        List<OsmPrimitive> shortList = Arrays.<OsmPrimitive>asList(testData.existingWay);
+        assertTrue(new PurgeCommand(testData.layer, shortList, Arrays.<OsmPrimitive>asList()).getDescriptionText()
+                .matches("Purged 1 object"));
+        List<OsmPrimitive> longList = Arrays.<OsmPrimitive>asList(testData.existingNode, testData.existingNode2,
+                testData.existingWay);
+        assertTrue(new PurgeCommand(testData.layer, longList, Arrays.<OsmPrimitive>asList()).getDescriptionText()
+                .matches("Purged 3 objects"));
     }
 
     /**
      * Unit test of methods {@link PurgeCommand#equals} and {@link PurgeCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(PurgeCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/RemoveNodesCommandTest.java b/test/unit/org/openstreetmap/josm/command/RemoveNodesCommandTest.java
index 1f1255a..2ddcabf 100644
--- a/test/unit/org/openstreetmap/josm/command/RemoveNodesCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/RemoveNodesCommandTest.java
@@ -1,14 +1,25 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -18,18 +29,99 @@ import nl.jqno.equalsverifier.Warning;
 public class RemoveNodesCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
+
+    /**
+     * Test {@link RemoveNodesCommand#executeCommand()}
+     */
+    @Test
+    public void testExecute() {
+        RemoveNodesCommand command = new RemoveNodesCommand(testData.existingWay,
+                Collections.singletonList(testData.existingNode));
+
+        command.executeCommand();
+
+        assertFalse(testData.existingWay.containsNode(testData.existingNode));
+        assertTrue(testData.existingWay.containsNode(testData.existingNode2));
+        assertTrue(testData.existingWay.isModified());
+    }
+
+    /**
+     * Test {@link RemoveNodesCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        RemoveNodesCommand command = new RemoveNodesCommand(testData.existingWay,
+                Collections.singletonList(testData.existingNode));
+
+        command.executeCommand();
+
+        command.undoCommand();
+        assertTrue(testData.existingWay.containsNode(testData.existingNode));
+        assertTrue(testData.existingWay.containsNode(testData.existingNode2));
+        assertFalse(testData.existingWay.isModified());
+
+        command.executeCommand();
+
+        assertFalse(testData.existingWay.containsNode(testData.existingNode));
+        assertTrue(testData.existingWay.containsNode(testData.existingNode2));
+        assertTrue(testData.existingWay.isModified());
+    }
+
+    /**
+     * Tests {@link RemoveNodesCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        RemoveNodesCommand command = new RemoveNodesCommand(testData.existingWay,
+                Collections.singletonList(testData.existingNode));
+        command.fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {testData.existingWay }, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link RemoveNodesCommand#getParticipatingPrimitives()}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testGetParticipatingPrimitives() {
+        RemoveNodesCommand command = new RemoveNodesCommand(testData.existingWay,
+                Collections.singletonList(testData.existingNode));
+        command.executeCommand();
+        assertArrayEquals(new Object[] {testData.existingWay }, command.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link RemoveNodesCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        assertTrue(new RemoveNodesCommand(testData.existingWay, Collections.singletonList(testData.existingNode))
+                .getDescriptionText().matches("Removed nodes from .*"));
     }
 
     /**
      * Unit test of methods {@link RemoveNodesCommand#equals} and {@link RemoveNodesCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(RemoveNodesCommand.class).usingGetClass()
             .withPrefabValues(Way.class,
                 new Way(1), new Way(2))
diff --git a/test/unit/org/openstreetmap/josm/command/RotateCommandTest.java b/test/unit/org/openstreetmap/josm/command/RotateCommandTest.java
index 85d4bd4..6e60b1d 100644
--- a/test/unit/org/openstreetmap/josm/command/RotateCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/RotateCommandTest.java
@@ -1,14 +1,26 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestData;
+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.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -18,28 +30,115 @@ import nl.jqno.equalsverifier.Warning;
 public class RotateCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Test a simple 45° rotation. Tests {@link RotateCommand#executeCommand()}
+     */
+    @Test
+    public void testRotate() {
+        // pivot needs to be at 0,0
+        Node n1 = new Node(new EastNorth(10, 10));
+        Node n2 = new Node(new EastNorth(-1, 0));
+        Node n3 = new Node(new EastNorth(-9, -10));
+        RotateCommand rotate = new RotateCommand(Arrays.asList(n1, n2, n3), new EastNorth(0, 0));
+        rotate.setRotationAngle(Math.PI / 4);
+        rotate.executeCommand();
+
+        assertEquals(Math.sqrt(2) * 10, n1.getEastNorth().east(), 0.0001);
+        assertEquals(0, n1.getEastNorth().north(), 0.0001);
+        assertEquals(-1 / Math.sqrt(2), n2.getEastNorth().east(), 0.0001);
+        assertEquals(1 / Math.sqrt(2), n2.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Test {@link RotateCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        Node n1 = new Node(new EastNorth(10, 10));
+        Node n2 = new Node(new EastNorth(-1, 0));
+        Node n3 = new Node(new EastNorth(-9, -10));
+        RotateCommand rotate = new RotateCommand(Arrays.asList(n1, n2, n3), new EastNorth(0, 0));
+        rotate.setRotationAngle(Math.PI / 4);
+        rotate.executeCommand();
+        rotate.undoCommand();
+
+        assertEquals(10, n1.getEastNorth().east(), 0.0001);
+        assertEquals(10, n1.getEastNorth().north(), 0.0001);
+        assertEquals(-1, n2.getEastNorth().east(), 0.0001);
+        assertEquals(0, n2.getEastNorth().north(), 0.0001);
+
+        rotate.executeCommand();
+
+        assertEquals(-1 / Math.sqrt(2), n2.getEastNorth().east(), 0.0001);
+        assertEquals(1 / Math.sqrt(2), n2.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Tests {@link RotateCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        RotateCommand command = new RotateCommand(Arrays.asList(testData.existingNode),
+                new EastNorth(0, 0));
+        // intentionally empty
+        command.fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link RotateCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        RotateCommand command = new RotateCommand(Arrays.asList(testData.existingNode), new EastNorth(0, 0));
+        command.executeCommand();
+        assertArrayEquals(new Object[] {testData.existingNode}, command.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link RotateCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        assertEquals("Rotate 1 node",
+                new RotateCommand(Arrays.asList(testData.existingNode), new EastNorth(0, 0))
+                        .getDescriptionText());
+        assertEquals("Rotate 2 nodes",
+                new RotateCommand(Arrays.asList(testData.existingNode, testData.existingNode2), new EastNorth(0, 0))
+                        .getDescriptionText());
     }
 
     /**
      * Unit test of methods {@link RotateCommand#equals} and {@link RotateCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(RotateCommand.class).usingGetClass()
-            .withPrefabValues(LatLon.class,
-                LatLon.ZERO, new LatLon(45, 45))
-            .withPrefabValues(DataSet.class,
-                new DataSet(), new DataSet())
-            .withPrefabValues(User.class,
-                    User.createOsmUser(1, "foo"), User.createOsmUser(2, "bar"))
-            .withPrefabValues(OsmDataLayer.class,
-                new OsmDataLayer(new DataSet(), "1", null), new OsmDataLayer(new DataSet(), "2", null))
-            .suppress(Warning.NONFINAL_FIELDS)
-            .verify();
+                .withPrefabValues(LatLon.class, LatLon.ZERO, new LatLon(45, 45))
+                .withPrefabValues(DataSet.class, new DataSet(), new DataSet())
+                .withPrefabValues(User.class, User.createOsmUser(1, "foo"), User.createOsmUser(2, "bar"))
+                .withPrefabValues(OsmDataLayer.class, new OsmDataLayer(new DataSet(), "1", null),
+                        new OsmDataLayer(new DataSet(), "2", null))
+                .suppress(Warning.NONFINAL_FIELDS).verify();
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/command/ScaleCommandTest.java b/test/unit/org/openstreetmap/josm/command/ScaleCommandTest.java
index 84a93d1..83802f2 100644
--- a/test/unit/org/openstreetmap/josm/command/ScaleCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/ScaleCommandTest.java
@@ -1,14 +1,26 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestData;
+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.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -18,18 +30,109 @@ import nl.jqno.equalsverifier.Warning;
 public class ScaleCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection();
+    private CommandTestData testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestData();
+    }
+
+    /**
+     * Test a simple 2.5 scale. Tests {@link ScaleCommand#executeCommand()}
+     */
+    @Test
+    public void testScale() {
+        // pivot needs to be at 0,0
+        Node n1 = new Node(new EastNorth(10, 10));
+        Node n2 = new Node(new EastNorth(-1, 0));
+        Node n3 = new Node(new EastNorth(-9, -10));
+        ScaleCommand scale = new ScaleCommand(Arrays.asList(n1, n2, n3), new EastNorth(0, 0));
+        scale.setScalingFactor(2.5);
+        scale.executeCommand();
+
+        assertEquals(25, n1.getEastNorth().east(), 0.0001);
+        assertEquals(25, n1.getEastNorth().north(), 0.0001);
+        assertEquals(-2.5, n2.getEastNorth().east(), 0.0001);
+        assertEquals(0, n2.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Test {@link ScaleCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        Node n1 = new Node(new EastNorth(10, 10));
+        Node n2 = new Node(new EastNorth(-1, 0));
+        Node n3 = new Node(new EastNorth(-9, -10));
+        ScaleCommand scale = new ScaleCommand(Arrays.asList(n1, n2, n3), new EastNorth(0, 0));
+        scale.setScalingFactor(2.5);
+        scale.executeCommand();
+        scale.undoCommand();
+
+        assertEquals(10, n1.getEastNorth().east(), 0.0001);
+        assertEquals(10, n1.getEastNorth().north(), 0.0001);
+        assertEquals(-1, n2.getEastNorth().east(), 0.0001);
+        assertEquals(0, n2.getEastNorth().north(), 0.0001);
+
+        scale.executeCommand();
+
+        assertEquals(-2.5, n2.getEastNorth().east(), 0.0001);
+        assertEquals(0, n2.getEastNorth().north(), 0.0001);
+    }
+
+    /**
+     * Tests {@link ScaleCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        ScaleCommand command = new ScaleCommand(Arrays.asList(testData.existingNode),
+                new EastNorth(0, 0));
+        // intentionally empty
+        command.fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link ScaleCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        ScaleCommand command = new ScaleCommand(Arrays.asList(testData.existingNode), new EastNorth(0, 0));
+        command.executeCommand();
+        assertArrayEquals(new Object[] {testData.existingNode }, command.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link ScaleCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        assertEquals("Scale 1 node",
+                new ScaleCommand(Arrays.asList(testData.existingNode), new EastNorth(0, 0))
+                        .getDescriptionText());
+        assertEquals("Scale 2 nodes",
+                new ScaleCommand(Arrays.asList(testData.existingNode, testData.existingNode2), new EastNorth(0, 0))
+                        .getDescriptionText());
     }
 
     /**
      * Unit test of methods {@link ScaleCommand#equals} and {@link ScaleCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ScaleCommand.class).usingGetClass()
             .withPrefabValues(LatLon.class,
                 LatLon.ZERO, new LatLon(45, 45))
diff --git a/test/unit/org/openstreetmap/josm/command/SelectCommandTest.java b/test/unit/org/openstreetmap/josm/command/SelectCommandTest.java
index 37b36cf..47a6566 100644
--- a/test/unit/org/openstreetmap/josm/command/SelectCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/SelectCommandTest.java
@@ -1,13 +1,25 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -17,18 +29,124 @@ import nl.jqno.equalsverifier.Warning;
 public class SelectCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
+
+    /**
+     * Test {@link SelectCommand#executeCommand()}
+     */
+    @Test
+    public void testExecute() {
+        SelectCommand command = new SelectCommand(Arrays.asList(testData.existingNode, testData.existingWay));
+
+        testData.layer.data.setSelected(Arrays.asList(testData.existingNode2));
+
+        command.executeCommand();
+
+        assertTrue(testData.existingNode.isSelected());
+        assertFalse(testData.existingNode2.isSelected());
+        assertTrue(testData.existingWay.isSelected());
+    }
+
+    /**
+     * Test {@link SelectCommand#executeCommand()}
+     */
+    @Test
+    public void testExecuteAfterModify() {
+        List<OsmPrimitive> list = new ArrayList<>(Arrays.asList(testData.existingNode, testData.existingWay));
+        SelectCommand command = new SelectCommand(list);
+
+        list.remove(testData.existingNode);
+        list.add(testData.existingNode2);
+
+        command.executeCommand();
+
+        assertTrue(testData.existingNode.isSelected());
+        assertFalse(testData.existingNode2.isSelected());
+        assertTrue(testData.existingWay.isSelected());
+    }
+
+    /**
+     * Test {@link SelectCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        SelectCommand command = new SelectCommand(Arrays.asList(testData.existingNode, testData.existingWay));
+        testData.layer.data.setSelected(Arrays.asList(testData.existingNode2));
+
+        command.executeCommand();
+
+        command.undoCommand();
+
+        assertFalse(testData.existingNode.isSelected());
+        assertTrue(testData.existingNode2.isSelected());
+        assertFalse(testData.existingWay.isSelected());
+
+        command.executeCommand();
+
+        assertTrue(testData.existingNode.isSelected());
+        assertFalse(testData.existingNode2.isSelected());
+        assertTrue(testData.existingWay.isSelected());
+    }
+
+    /**
+     * Tests {@link SelectCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testFillModifiedData() {
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        SelectCommand command = new SelectCommand(Arrays.asList(testData.existingNode, testData.existingWay));
+        command.fillModifiedData(modified, deleted, added);
+        // intentionally empty.
+        assertArrayEquals(new Object[] {}, modified.toArray());
+        assertArrayEquals(new Object[] {}, deleted.toArray());
+        assertArrayEquals(new Object[] {}, added.toArray());
+    }
+
+    /**
+     * Tests {@link SelectCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        SelectCommand command = new SelectCommand(Arrays.asList(testData.existingNode, testData.existingWay));
+        command.executeCommand();
+        assertArrayEquals(new Object[] {}, command.getParticipatingPrimitives().toArray());
+    }
+
+    /**
+     * Test {@link SelectCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        assertTrue(new SelectCommand(Arrays.<OsmPrimitive>asList(testData.existingNode))
+                .getDescriptionText().matches("Selected 1 object"));
+        assertTrue(new SelectCommand(Arrays.asList(testData.existingNode, testData.existingWay))
+                .getDescriptionText().matches("Selected 2 objects"));
+        assertTrue(new SelectCommand(Arrays.<OsmPrimitive>asList())
+                .getDescriptionText().matches("Selected 0 objects"));
+        assertTrue(new SelectCommand(null)
+                .getDescriptionText().matches("Selected 0 objects"));
     }
 
     /**
      * Unit test of methods {@link SelectCommand#equals} and {@link SelectCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(SelectCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                 new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java b/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java
index 31bb385..ec4b834 100644
--- a/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/SequenceCommandTest.java
@@ -1,14 +1,29 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.command;
 
-import org.junit.BeforeClass;
+import static org.junit.Assert.assertArrayEquals;
+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 static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.command.CommandTest.CommandTestDataWithRelation;
 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.User;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -18,18 +33,143 @@ import nl.jqno.equalsverifier.Warning;
 public class SequenceCommandTest {
 
     /**
-     * Setup test.
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+    private CommandTestDataWithRelation testData;
+
+    /**
+     * Set up the test data.
+     */
+    @Before
+    public void createTestData() {
+        testData = new CommandTestDataWithRelation();
+    }
+
+    /**
+     * Test {@link SequenceCommand#executeCommand()}
+     */
+    @Test
+    public void testExecute() {
+        final TestCommand command1 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode));
+        TestCommand command2 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode2)) {
+            @Override
+            public boolean executeCommand() {
+                assertTrue(command1.executed);
+                return super.executeCommand();
+            }
+        };
+        SequenceCommand command = new SequenceCommand("seq", Arrays.<Command>asList(command1, command2));
+
+        command.executeCommand();
+
+        assertTrue(command1.executed);
+        assertTrue(command2.executed);
+    }
+
+    /**
+     * Test {@link SequenceCommand#undoCommand()}
+     */
+    @Test
+    public void testUndo() {
+        final TestCommand command2 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode2));
+        TestCommand command1 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode)) {
+            @Override
+            public void undoCommand() {
+                assertFalse(command2.executed);
+                super.undoCommand();
+            }
+        };
+        SequenceCommand command = new SequenceCommand("seq", Arrays.<Command>asList(command1, command2));
+
+        command.executeCommand();
+
+        command.undoCommand();
+
+        assertFalse(command1.executed);
+        assertFalse(command2.executed);
+
+        command.executeCommand();
+
+        assertTrue(command1.executed);
+        assertTrue(command2.executed);
+    }
+
+    /**
+     * Test {@link SequenceCommand#undoCommand()}
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(false);
+    @Test
+    public void testGetLastCommand() {
+        final TestCommand command1 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode));
+        final TestCommand command2 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode2));
+
+        assertEquals(command2, new SequenceCommand("seq", command1, command2).getLastCommand());
+        assertNull(new SequenceCommand("seq").getLastCommand());
+    }
+
+    /**
+     * Tests {@link SequenceCommand#fillModifiedData(java.util.Collection, java.util.Collection, java.util.Collection)}
+     */
+    @Test
+    public void testFillModifiedData() {
+        Command command1 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode));
+        Command command2 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode2));
+        Command command3 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingWay)) {
+            @Override
+            public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
+                    Collection<OsmPrimitive> added) {
+                deleted.addAll(primitives);
+            }
+        };
+        Command command4 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingRelation)) {
+            @Override
+            public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
+                    Collection<OsmPrimitive> added) {
+                added.addAll(primitives);
+            }
+        };
+
+        ArrayList<OsmPrimitive> modified = new ArrayList<>();
+        ArrayList<OsmPrimitive> deleted = new ArrayList<>();
+        ArrayList<OsmPrimitive> added = new ArrayList<>();
+        SequenceCommand command = new SequenceCommand("seq", command1, command2, command3, command4);
+        command.fillModifiedData(modified, deleted, added);
+        assertArrayEquals(new Object[] {testData.existingNode, testData.existingNode2}, modified.toArray());
+        assertArrayEquals(new Object[] {testData.existingWay}, deleted.toArray());
+        assertArrayEquals(new Object[] {testData.existingRelation}, added.toArray());
+    }
+
+    /**
+     * Tests {@link SequenceCommand#getParticipatingPrimitives()}
+     */
+    @Test
+    public void testGetParticipatingPrimitives() {
+        Command command1 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode));
+        Command command2 = new TestCommand(Arrays.<OsmPrimitive>asList(testData.existingNode2));
+
+        SequenceCommand command = new SequenceCommand("seq", command1, command2);
+        command.executeCommand();
+        Collection<? extends OsmPrimitive> primitives = command.getParticipatingPrimitives();
+        assertEquals(2, primitives.size());
+        assertTrue(primitives.contains(testData.existingNode));
+        assertTrue(primitives.contains(testData.existingNode2));
+    }
+
+    /**
+     * Test {@link SequenceCommand#getDescriptionText()}
+     */
+    @Test
+    public void testDescription() {
+        assertTrue(new SequenceCommand("test").getDescriptionText().matches("Sequence: test"));
     }
 
     /**
      * Unit test of methods {@link SequenceCommand#equals} and {@link SequenceCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(SequenceCommand.class).usingGetClass()
             .withPrefabValues(Command.class,
                 new AddCommand(new Node(1)), new AddCommand(new Node(2)))
@@ -42,4 +182,50 @@ public class SequenceCommandTest {
             .suppress(Warning.NONFINAL_FIELDS)
             .verify();
     }
+
+    private static class TestCommand extends Command {
+        protected final Collection<? extends OsmPrimitive> primitives;
+        protected boolean executed;
+
+        TestCommand(Collection<? extends OsmPrimitive> primitives) {
+            super();
+            this.primitives = primitives;
+        }
+
+        @Override
+        public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
+                Collection<OsmPrimitive> added) {
+            modified.addAll(primitives);
+        }
+
+        @Override
+        public String getDescriptionText() {
+            fail("Should not be called");
+            return "";
+        }
+
+        @Override
+        public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
+            return primitives;
+        }
+
+        @Override
+        public boolean executeCommand() {
+            assertFalse("Cannot execute twice", executed);
+            executed = true;
+            return true;
+        }
+
+        @Override
+        public void undoCommand() {
+            assertTrue("Cannot undo without execute", executed);
+            executed = false;
+        }
+
+        @Override
+        public String toString() {
+            return "TestCommand [primitives=" + primitives + "]";
+        }
+
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/command/TransformNodesCommandTest.java b/test/unit/org/openstreetmap/josm/command/TransformNodesCommandTest.java
index 5339aa3..d1593fa 100644
--- a/test/unit/org/openstreetmap/josm/command/TransformNodesCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/TransformNodesCommandTest.java
@@ -29,7 +29,7 @@ public class TransformNodesCommandTest {
      * Unit test of methods {@link TransformNodesCommand#equals} and {@link TransformNodesCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(TransformNodesCommand.class).usingGetClass()
             .withPrefabValues(LatLon.class,
                 LatLon.ZERO, new LatLon(45, 45))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
index d78ac98..401873e 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/ConflictAddCommandTest.java
@@ -75,7 +75,7 @@ public class ConflictAddCommandTest {
      * Unit test of methods {@link ConflictAddCommand#equals} and {@link ConflictAddCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ConflictAddCommand.class).usingGetClass()
             .withPrefabValues(DataSet.class,
                     new DataSet(), new DataSet())
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/ConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/ConflictResolveCommandTest.java
index 35e9dda..c79d090 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/ConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/ConflictResolveCommandTest.java
@@ -30,7 +30,7 @@ public class ConflictResolveCommandTest {
      * Unit test of methods {@link ConflictResolveCommand#equals} and {@link ConflictResolveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ConflictResolveCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(1, 1), new Node(2, 1)),
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
index a2a8b98..b15a3d9 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/CoordinateConflictResolveCommandTest.java
@@ -90,7 +90,7 @@ public class CoordinateConflictResolveCommandTest {
      * Unit test of methods {@link CoordinateConflictResolveCommand#equals} and {@link CoordinateConflictResolveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(CoordinateConflictResolveCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(), new Node()), new Conflict<>(new Way(), new Way()))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommandTest.java
index 4b160ec..e29d9c7 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/DeletedStateConflictResolveCommandTest.java
@@ -31,7 +31,7 @@ public class DeletedStateConflictResolveCommandTest {
      * Unit test of methods {@link DeletedStateConflictResolveCommand#equals} and {@link DeletedStateConflictResolveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(DeletedStateConflictResolveCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(), new Node()), new Conflict<>(new Way(), new Way()))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommandTest.java
index eccafa5..8c0d9cd 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/ModifiedConflictResolveCommandTest.java
@@ -31,7 +31,7 @@ public class ModifiedConflictResolveCommandTest {
      * Unit test of methods {@link ModifiedConflictResolveCommand#equals} and {@link ModifiedConflictResolveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(ModifiedConflictResolveCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(), new Node()), new Conflict<>(new Way(), new Way()))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommandTest.java
index 3ae218f..50590b9 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/RelationMemberConflictResolverCommandTest.java
@@ -31,7 +31,7 @@ public class RelationMemberConflictResolverCommandTest {
      * Unit test of methods {@link RelationMemberConflictResolverCommand#equals} and {@link RelationMemberConflictResolverCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(RelationMemberConflictResolverCommand.class).usingGetClass()
             .withPrefabValues(Relation.class,
                     new Relation(1), new Relation(2))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/TagConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/TagConflictResolveCommandTest.java
index 95058a0..8949c7b 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/TagConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/TagConflictResolveCommandTest.java
@@ -31,7 +31,7 @@ public class TagConflictResolveCommandTest {
      * Unit test of methods {@link TagConflictResolveCommand#equals} and {@link TagConflictResolveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(TagConflictResolveCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(), new Node()), new Conflict<>(new Way(), new Way()))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommandTest.java
index c117b9e..22c6907 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommandTest.java
@@ -31,7 +31,7 @@ public class VersionConflictResolveCommandTest {
      * Unit test of methods {@link VersionConflictResolveCommand#equals} and {@link VersionConflictResolveCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(VersionConflictResolveCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(), new Node()), new Conflict<>(new Way(), new Way()))
diff --git a/test/unit/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommandTest.java b/test/unit/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommandTest.java
index f88f57e..6649abf 100644
--- a/test/unit/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommandTest.java
+++ b/test/unit/org/openstreetmap/josm/command/conflict/WayNodesConflictResolverCommandTest.java
@@ -31,7 +31,7 @@ public class WayNodesConflictResolverCommandTest {
      * Unit test of methods {@link WayNodesConflictResolverCommand#equals} and {@link WayNodesConflictResolverCommand#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(WayNodesConflictResolverCommand.class).usingGetClass()
             .withPrefabValues(Conflict.class,
                     new Conflict<>(new Node(), new Node()), new Conflict<>(new Way(), new Way()))
diff --git a/test/unit/org/openstreetmap/josm/data/BoundsTest.java b/test/unit/org/openstreetmap/josm/data/BoundsTest.java
index a9f767f..27b0e4b 100644
--- a/test/unit/org/openstreetmap/josm/data/BoundsTest.java
+++ b/test/unit/org/openstreetmap/josm/data/BoundsTest.java
@@ -14,7 +14,7 @@ import org.openstreetmap.josm.data.coor.LatLon;
 public class BoundsTest {
 
     @Test
-    public void crossingTests() {
+    public void testCrossing() {
         Bounds b1 = new Bounds(0, 170, 50, -170);
         assertTrue(b1.crosses180thMeridian());
         assertFalse(b1.contains(new LatLon(-10, -180)));
diff --git a/test/unit/org/openstreetmap/josm/data/cache/JCSCacheManagerTest.java b/test/unit/org/openstreetmap/josm/data/cache/JCSCacheManagerTest.java
index 75a225e..b893024 100644
--- a/test/unit/org/openstreetmap/josm/data/cache/JCSCacheManagerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/cache/JCSCacheManagerTest.java
@@ -1,12 +1,22 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data.cache;
 
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.logging.Logger;
 
+import org.apache.commons.jcs.access.CacheAccess;
+import org.apache.commons.jcs.auxiliary.disk.block.BlockDiskCacheAttributes;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 
+/**
+ * Unit tests for class {@link JCSCacheManager}.
+ */
 public class JCSCacheManagerTest {
 
     /**
@@ -17,9 +27,32 @@ public class JCSCacheManagerTest {
         JOSMFixture.createUnitTestFixture().init();
     }
 
+    /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/12054">Bug #12054</a>.
+     * @throws IOException if any I/O error occurs
+     */
     @Test
-    public void testLoggingAdaptor12054() throws Exception {
+    public void testLoggingAdaptor12054() throws IOException {
         JCSCacheManager.getCache("foobar", 1, 0, "foobar"); // cause logging adaptor to be initialized
         Logger.getLogger("org.apache.commons.jcs").warning("{switch:0}");
     }
+
+    @Test
+    public void testUseBigDiskFile() throws IOException {
+        if (JCSCacheManager.USE_BLOCK_CACHE.get()) {
+            // test only when using block cache
+            File cacheFile = new File("foobar/testUseBigDiskFile_BLOCK_v2.data");
+            if (!cacheFile.exists()) {
+                cacheFile.createNewFile();
+            }
+            try (FileOutputStream fileOutputStream = new FileOutputStream(cacheFile, false)) {
+                fileOutputStream.getChannel().truncate(0);
+                fileOutputStream.write(new byte[1024*1024*10]); // create 10MB empty file
+            }
+
+            CacheAccess<Object, Object> cache = JCSCacheManager.getCache("testUseBigDiskFile", 1, 100, "foobar");
+            assertEquals("BlockDiskCache use file size to calculate its size", 10*1024,
+                    ((BlockDiskCacheAttributes) cache.getCacheControl().getAuxCaches()[0].getAuxiliaryCacheAttributes()).getMaxKeySize());
+        }
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java b/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
index a2026e6..e392350 100644
--- a/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
+++ b/test/unit/org/openstreetmap/josm/data/cache/JCSCachedTileLoaderJobTest.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.data.cache;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 
 import java.io.IOException;
 import java.net.MalformedURLException;
@@ -12,6 +13,7 @@ import org.apache.commons.jcs.access.behavior.ICacheAccess;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.cache.ICachedLoaderListener.LoadResult;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -22,19 +24,18 @@ public class JCSCachedTileLoaderJobTest {
 
     private static class TestCachedTileLoaderJob extends JCSCachedTileLoaderJob<String, CacheEntry> {
         private String url;
+        private String key;
 
-        TestCachedTileLoaderJob(String url) throws IOException {
+        TestCachedTileLoaderJob(String url, String key) throws IOException {
             super(getCache(), 30000, 30000, null);
-            this.url = url;
-        }
 
-        private static ICacheAccess<String, CacheEntry> getCache() throws IOException {
-         return JCSCacheManager.getCache("test");
+            this.url = url;
+            this.key = key;
         }
 
         @Override
         public String getCacheKey() {
-            return "cachekey";
+            return key;
         }
 
         @Override
@@ -55,11 +56,13 @@ public class JCSCachedTileLoaderJobTest {
     private static class Listener implements ICachedLoaderListener {
         private CacheEntryAttributes attributes;
         private boolean ready;
+        private LoadResult result;
 
         @Override
         public synchronized void loadingFinished(CacheEntry data, CacheEntryAttributes attributes, LoadResult result) {
             this.attributes = attributes;
             this.ready = true;
+            this.result = result;
             this.notifyAll();
         }
     }
@@ -99,7 +102,8 @@ public class JCSCachedTileLoaderJobTest {
     @Test
     @SuppressFBWarnings(value = "WA_NOT_IN_LOOP")
     public void testUnknownHost() throws IOException, InterruptedException {
-        TestCachedTileLoaderJob job = new TestCachedTileLoaderJob("http://unkownhost.unkownhost/unkown");
+        String key = "key_unknown_host";
+        TestCachedTileLoaderJob job = new TestCachedTileLoaderJob("http://unkownhost.unkownhost/unkown", key);
         Listener listener = new Listener();
         job.submit(listener, true);
         synchronized (listener) {
@@ -108,6 +112,24 @@ public class JCSCachedTileLoaderJobTest {
             }
         }
         assertEquals("java.net.UnknownHostException: unkownhost.unkownhost", listener.attributes.getErrorMessage());
+        assertEquals(LoadResult.FAILURE, listener.result); // because response will be cached, and that is checked below
+
+        ICacheAccess<String, CacheEntry> cache = getCache();
+        CacheEntry e = new CacheEntry(new byte[]{0, 1, 2, 3});
+        CacheEntryAttributes attributes = new CacheEntryAttributes();
+        attributes.setExpirationTime(2);
+        cache.put(key, e, attributes);
+
+        job = new TestCachedTileLoaderJob("http://unkownhost.unkownhost/unkown", key);
+        listener = new Listener();
+        job.submit(listener, true);
+        synchronized (listener) {
+            if (!listener.ready) {
+                listener.wait();
+            }
+        }
+        assertEquals(LoadResult.SUCCESS, listener.result);
+        assertFalse(job.isCacheElementValid());
     }
 
     @SuppressFBWarnings(value = "WA_NOT_IN_LOOP")
@@ -124,6 +146,10 @@ public class JCSCachedTileLoaderJobTest {
     }
 
     private static TestCachedTileLoaderJob getStatusLoaderJob(int responseCode) throws IOException {
-        return new TestCachedTileLoaderJob("http://httpstat.us/" + responseCode);
+        return new TestCachedTileLoaderJob("http://httpstat.us/" + responseCode, "key_" + responseCode);
+    }
+
+    private static ICacheAccess<String, CacheEntry> getCache() throws IOException {
+        return JCSCacheManager.getCache("test");
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/data/coor/CachedLatLonTest.java b/test/unit/org/openstreetmap/josm/data/coor/CachedLatLonTest.java
index 11031ea..469b139 100644
--- a/test/unit/org/openstreetmap/josm/data/coor/CachedLatLonTest.java
+++ b/test/unit/org/openstreetmap/josm/data/coor/CachedLatLonTest.java
@@ -27,7 +27,7 @@ public class CachedLatLonTest {
      * Unit test of methods {@link CachedLatLon#equals} and {@link CachedLatLon#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(CachedLatLon.class).usingGetClass()
             .suppress(Warning.NONFINAL_FIELDS)
             .withPrefabValues(DecimalFormat.class, new DecimalFormat("00.0"), new DecimalFormat("00.000"))
diff --git a/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java b/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
index bf1439a..740c3c5 100644
--- a/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
+++ b/test/unit/org/openstreetmap/josm/data/coor/LatLonTest.java
@@ -129,7 +129,7 @@ public class LatLonTest {
      * Unit test of methods {@link LatLon#equals} and {@link LatLon#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(LatLon.class).usingGetClass()
             .withPrefabValues(DecimalFormat.class, new DecimalFormat("00.0"), new DecimalFormat("00.000"))
             .verify();
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/ImageryInfoTest.java b/test/unit/org/openstreetmap/josm/data/imagery/ImageryInfoTest.java
index 52b62d3..bc2fec6 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/ImageryInfoTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/ImageryInfoTest.java
@@ -42,6 +42,18 @@ public class ImageryInfoTest {
     }
 
     /**
+     * Non-regression test for <a href="https://josm.openstreetmap.de/ticket/13264">Bug #13264</a>.
+     */
+    @Test
+    public void testConstruct13264() {
+        final ImageryInfo info = new ImageryInfo("test imagery", "tms[16-23]:http://localhost");
+        assertEquals(ImageryInfo.ImageryType.TMS, info.getImageryType());
+        assertEquals(16, info.getMinZoom());
+        assertEquals(23, info.getMaxZoom());
+        assertEquals("http://localhost", info.getUrl());
+    }
+
+    /**
      * Tests the {@linkplain Preferences#serializeStruct(Object, Class) serialization} of {@link ImageryInfo.ImageryPreferenceEntry}
      */
     @Test
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java b/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
index 03f19cf..84ea5b1 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/TemplatedWMSTileSourceTest.java
@@ -76,7 +76,7 @@ public class TemplatedWMSTileSourceTest {
      * Test EPSG:4326 - wide bounds
      */
     @Test
-    public void testEPSG4326_widebounds() {
+    public void testEPSG4326widebounds() {
         Main.setProjection(new CustomProjection("+proj=lonlat +datum=WGS84 +axis=neu +bounds=-180,53,180,54"));
         TemplatedWMSTileSource source = getSource();
 
@@ -88,7 +88,7 @@ public class TemplatedWMSTileSourceTest {
      * Test EPSG:4326 - narrow bounds
      */
     @Test
-    public void testEPSG4326_narrowbounds() {
+    public void testEPSG4326narrowbounds() {
         Main.setProjection(new CustomProjection("+proj=lonlat +datum=WGS84 +axis=neu +bounds=18,-90,20,90"));
         TemplatedWMSTileSource source = getSource();
 
@@ -116,7 +116,7 @@ public class TemplatedWMSTileSourceTest {
      * Test EPSG:3006 with bounds
      */
     @Test
-    public void testEPSG3006_withbounds() {
+    public void testEPSG3006withbounds() {
         Main.setProjection(
                 new CustomProjection("+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "
                         + "+units=m +no_defs +axis=neu +wmssrs=EPSG:3006 +bounds=10.5700,55.2000,24.1800,69.1000 "));
@@ -131,7 +131,7 @@ public class TemplatedWMSTileSourceTest {
      * Test EPSG:3006 without bounds
      */
     @Test
-    public void testEPSG3006_withoutbounds() {
+    public void testEPSG3006withoutbounds() {
         Main.setProjection(
                 new CustomProjection("+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "
                         + "+units=m +no_defs +axis=neu +wmssrs=EPSG:3006"));
diff --git a/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java b/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
index e865c39..b29ab74 100644
--- a/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
+++ b/test/unit/org/openstreetmap/josm/data/imagery/WMTSTileSourceTest.java
@@ -214,7 +214,7 @@ public class WMTSTileSourceTest {
     }
 
     @Test
-    public void test12168() throws IOException {
+    public void testTicket12168() throws IOException {
         Main.setProjection(Projections.getProjectionByCode("EPSG:3857"));
         WMTSTileSource testSource = new WMTSTileSource(testImagery12168);
         testSource.initProjection(Main.getProjection());
diff --git a/test/unit/org/openstreetmap/josm/data/notes/NoteTest.java b/test/unit/org/openstreetmap/josm/data/notes/NoteTest.java
index c708faa..dc41335 100644
--- a/test/unit/org/openstreetmap/josm/data/notes/NoteTest.java
+++ b/test/unit/org/openstreetmap/josm/data/notes/NoteTest.java
@@ -56,7 +56,7 @@ public class NoteTest {
      * Unit test of methods {@link Note#equals} and {@link Note#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(Note.class).usingGetClass()
             .withIgnoredFields("latLon", "createdAt", "closedAt", "state", "comments")
             .suppress(Warning.NONFINAL_FIELDS)
diff --git a/test/unit/org/openstreetmap/josm/data/oauth/OAuthParametersTest.java b/test/unit/org/openstreetmap/josm/data/oauth/OAuthParametersTest.java
index 15ed7ad..9e8c15e 100644
--- a/test/unit/org/openstreetmap/josm/data/oauth/OAuthParametersTest.java
+++ b/test/unit/org/openstreetmap/josm/data/oauth/OAuthParametersTest.java
@@ -57,7 +57,7 @@ public class OAuthParametersTest {
      * Unit test of methods {@link OAuthParameters#equals} and {@link OAuthParameters#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(OAuthParameters.class).usingGetClass().verify();
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/data/oauth/OAuthTokenTest.java b/test/unit/org/openstreetmap/josm/data/oauth/OAuthTokenTest.java
index ece1af5..e982591 100644
--- a/test/unit/org/openstreetmap/josm/data/oauth/OAuthTokenTest.java
+++ b/test/unit/org/openstreetmap/josm/data/oauth/OAuthTokenTest.java
@@ -32,7 +32,7 @@ public class OAuthTokenTest {
      * Unit test of methods {@link OAuthToken#equals} and {@link OAuthToken#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(OAuthToken.class).usingGetClass().verify();
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java b/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
index 731f816..12ecced 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/APIDataSetTest.java
@@ -27,7 +27,7 @@ public class APIDataSetTest {
     }
 
     @Test
-    public void oneNewRelationOnly() {
+    public void testOneNewRelationOnly() {
         Relation r = new Relation();
         r.put("name", "r1");
         DataSet ds = new DataSet();
@@ -47,7 +47,7 @@ public class APIDataSetTest {
     }
 
     @Test
-    public void newParentChildPair() {
+    public void testNewParentChildPair() {
         DataSet ds = new DataSet();
         Relation r1 = new Relation();
         ds.addPrimitive(r1);
@@ -74,7 +74,7 @@ public class APIDataSetTest {
     }
 
     @Test
-    public void oneExistingAndThreNewInAChain() {
+    public void testOneExistingAndThreNewInAChain() {
         DataSet ds = new DataSet();
 
         Relation r1 = new Relation();
@@ -117,7 +117,7 @@ public class APIDataSetTest {
     }
 
     @Test
-    public void oneParentTwoNewChildren() {
+    public void testOneParentTwoNewChildren() {
         DataSet ds = new DataSet();
         Relation r1 = new Relation();
         ds.addPrimitive(r1);
@@ -150,7 +150,7 @@ public class APIDataSetTest {
     }
 
     @Test // for ticket #9624
-    public void deleteOneParentTwoNewChildren() {
+    public void testDeleteOneParentTwoNewChildren() {
         DataSet ds = new DataSet();
         Relation r1 = new Relation(1);
         ds.addPrimitive(r1);
@@ -197,7 +197,7 @@ public class APIDataSetTest {
     }
 
     @Test // for ticket #9656
-    public void deleteWay() {
+    public void testDeleteWay() {
         DataSet ds = new DataSet();
         final Way way = new Way(1, 2);
         way.put("highway", "unclassified");
@@ -238,7 +238,7 @@ public class APIDataSetTest {
     }
 
     @Test
-    public void oneCycle() {
+    public void testOneCycle() {
         DataSet ds = new DataSet();
         Relation r1 = new Relation();
         ds.addPrimitive(r1);
diff --git a/test/unit/org/openstreetmap/josm/data/osm/BBoxTest.java b/test/unit/org/openstreetmap/josm/data/osm/BBoxTest.java
index 53193c4..cdc6c3c 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/BBoxTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/BBoxTest.java
@@ -25,7 +25,7 @@ public class BBoxTest {
      * Unit test of methods {@link BBox#equals} and {@link BBox#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(BBox.class).usingGetClass()
             .suppress(Warning.NONFINAL_FIELDS)
             .verify();
diff --git a/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java b/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
index 3c9b53d..16aeb10 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/DataSetMergerTest.java
@@ -80,7 +80,7 @@ public class DataSetMergerTest {
      * on the other.
      */
     @Test
-    public void nodeSimple_IdenticalNoConflict() {
+    public void testNodeSimpleIdenticalNoConflict() {
         Node n = new Node(LatLon.ZERO);
         n.setOsmId(1, 1);
         n.setModified(false);
@@ -112,10 +112,9 @@ public class DataSetMergerTest {
     /**
      * two  nodes, my is unmodified, their is updated and has a higher version
      * => their version is going to be the merged version
-     *
      */
     @Test
-    public void nodeSimple_locallyUnmodifiedNoConflict() {
+    public void testNodeSimpleLocallyUnmodifiedNoConflict() {
         Node n = new Node(LatLon.ZERO);
         n.setOsmId(1, 1);
         n.setModified(false);
@@ -155,7 +154,7 @@ public class DataSetMergerTest {
      * the server
      */
     @Test
-    public void nodeSimple_TagConflict() {
+    public void testNodeSimpleTagConflict() {
         Node n = new Node(LatLon.ZERO);
         n.setOsmId(1, 1);
         n.setModified(true);
@@ -189,7 +188,7 @@ public class DataSetMergerTest {
      * the server
      */
     @Test
-    public void nodeSimple_DeleteConflict() {
+    public void testNodeSimpleDeleteConflict() {
         Node n = new Node(1, 1);
         n.setCoor(LatLon.ZERO);
         n.setDeleted(true);
@@ -217,10 +216,9 @@ public class DataSetMergerTest {
     /**
      * My node is deleted, their node has the same id and version and is not deleted.
      * => mine has precedence
-     *
      */
     @Test
-    public void nodeSimple_DeleteConflict_2() {
+    public void testNodeSimpleDeleteConflict2() {
         Node n = new Node(LatLon.ZERO);
         n.setOsmId(1, 1);
         n.setDeleted(true);
@@ -248,7 +246,7 @@ public class DataSetMergerTest {
      * => Ignore my node, no conflict
      */
     @Test
-    public void nodeSimple_DeleteConflict_3() {
+    public void testNodeSimpleDeleteConflict3() {
         Node n = new Node(new LatLon(1, 1));
         n.setDeleted(true);
         my.addPrimitive(n);
@@ -269,10 +267,9 @@ public class DataSetMergerTest {
      * My and their node are new but semantically equal. Both are deleted.
      *
      * => take mine
-     *
      */
     @Test
-    public void nodeSimple_DeleteConflict_4() {
+    public void testNodeSimpleDeleteConflict4() {
         Node n = new Node(new LatLon(1, 1));
         n.setDeleted(true);
         my.addPrimitive(n);
@@ -281,7 +278,6 @@ public class DataSetMergerTest {
         n1.setDeleted(true);
         their.addPrimitive(n1);
 
-
         DataSetMerger visitor = new DataSetMerger(my, their);
         visitor.merge();
 
@@ -296,10 +292,9 @@ public class DataSetMergerTest {
      * nodes with id == 0
      *
      * => merge it onto my node.
-     *
      */
     @Test
-    public void nodeSimple_NoIdSemanticallyEqual() {
+    public void testNodeSimpleNoIdSemanticallyEqual() {
 
         Calendar cal = GregorianCalendar.getInstance();
         User myUser = User.createOsmUser(1111, "my");
@@ -340,10 +335,9 @@ public class DataSetMergerTest {
      * my node is incomplete, their node is complete
      *
      * => merge it onto my node. My node becomes complete
-     *
      */
     @Test
-    public void nodeSimple_IncompleteNode() {
+    public void testNodeSimpleIncompleteNode() {
 
         Node n = new Node(1);
         my.addPrimitive(n);
@@ -372,10 +366,9 @@ public class DataSetMergerTest {
      * way is not modified. Merge is possible. No conflict.
      *
      * => merge it onto my way.
-     *
      */
     @Test
-    public void waySimple_IdenicalNodesDifferentTags() {
+    public void testWaySimpleIdenticalNodesDifferentTags() {
 
         // -- the target dataset
 
@@ -445,10 +438,9 @@ public class DataSetMergerTest {
      * of the existing nodes are modified.
      *
      * => merge it onto my way, no conflict
-     *
      */
     @Test
-    public void waySimple_AdditionalNodesAndChangedNodes() {
+    public void testWaySimpleAdditionalNodesAndChangedNodes() {
 
         // -- my data set
 
@@ -515,10 +507,9 @@ public class DataSetMergerTest {
      * their way has a higher version and different nodes. My way is modified.
      *
      * => merge onto my way not possible, create a conflict
-     *
      */
     @Test
-    public void waySimple_DifferentNodesAndMyIsModified() {
+    public void testWaySimpleDifferentNodesAndMyIsModified() {
 
         // -- the target dataset
 
@@ -580,10 +571,9 @@ public class DataSetMergerTest {
      * their way is not visible anymore.
      *
      * => conflict
-     *
      */
     @Test
-    public void waySimple_TheirVersionNotVisibleMyIsModified() {
+    public void testWaySimpleTheirVersionNotVisibleMyIsModified() {
 
         Node mn1 = new Node(LatLon.ZERO);
         mn1.setOsmId(1, 1);
@@ -623,10 +613,9 @@ public class DataSetMergerTest {
      * my and their way have no ids,  nodes they refer to have an id. but
      * my and  their way are semantically equal. so technical attributes of
      * their way can be merged on my way. No conflict.
-     *
      */
     @Test
-    public void waySimple_twoWaysWithNoId_NodesWithId() {
+    public void testWaySimpleTwoWaysWithNoIdNodesWithId() {
 
         // -- my data set
 
@@ -681,10 +670,9 @@ public class DataSetMergerTest {
      * my and their way have no ids, neither do the nodes they refer to. but
      * my and  their way are semantically equal. so technical attributes of
      * their way can be merged on my way. No conflict.
-     *
      */
     @Test
-    public void waySimple_twoWaysWithNoId_NodesWithoutId() {
+    public void testWaySimpleTwoWaysWithNoIdNodesWithoutId() {
 
         // -- my data set
 
@@ -737,10 +725,9 @@ public class DataSetMergerTest {
      *
      * => the merged way should include all three nodes. Deleted node should have deleted=false and
      * special conflict with isDeleted should exist
-     *
      */
     @Test
-    public void wayComplex_mergingADeletedNode() {
+    public void testWayComplexMergingADeletedNode() {
 
         // -- my dataset
 
@@ -792,17 +779,15 @@ public class DataSetMergerTest {
      *
      * => the merged relation should include all three nodes. There should be conflict for deleted
      * node with isMyDeleted set
-     *
      */
     @Test
-    public void relationComplex_mergingADeletedNode() {
+    public void testRelationComplexMergingADeletedNode() {
 
         Node mn1 = new Node(LatLon.ZERO);
         mn1.setOsmId(1, 1);
         mn1.setDeleted(true);
         my.addPrimitive(mn1);
 
-
         Node tn1 = new Node(LatLon.ZERO);
         tn1.setOsmId(1, 1);
         their.addPrimitive(tn1);
@@ -815,7 +800,6 @@ public class DataSetMergerTest {
         tn3.setOsmId(3, 1);
         their.addPrimitive(tn3);
 
-
         Relation theirRelation = new Relation();
         theirRelation.setOsmId(4, 1);
 
@@ -846,7 +830,7 @@ public class DataSetMergerTest {
      * Use case: a way loaded with a multiget, i.e. GET /api/0.6/ways?ids=123456
      */
     @Test
-    public void newIncompleteWay() {
+    public void testNewIncompleteWay() {
 
         Node n1 = new Node(1);
         their.addPrimitive(n1);
@@ -888,7 +872,7 @@ public class DataSetMergerTest {
      * Use case: a way loaded with a multiget, i.e. GET /api/0.6/ways?ids=123456 after a "Update selection " of this way
      */
     @Test
-    public void incompleteWayOntoCompleteWay() {
+    public void testIncompleteWayOntoCompleteWay() {
 
         // an incomplete node
         Node n1 = new Node(1);
@@ -943,7 +927,7 @@ public class DataSetMergerTest {
      * => both the nodes and the way should be complete in the target dataset after merging
      */
     @Test
-    public void twoCompleteNodesOntoAnIncompleteWay() {
+    public void testTwoCompleteNodesOntoAnIncompleteWay() {
 
         // -- source dataset
 
diff --git a/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java b/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
index ba76e0b..f6af013 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/FilterTest.java
@@ -5,7 +5,6 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.io.FileInputStream;
-import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Collection;
@@ -20,7 +19,6 @@ import org.openstreetmap.josm.actions.search.SearchAction.SearchMode;
 import org.openstreetmap.josm.actions.search.SearchCompiler.ParseError;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
-import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.io.OsmReader;
 
 /**
@@ -37,7 +35,7 @@ public class FilterTest {
     }
 
     @Test
-    public void basic() throws ParseError {
+    public void testBasic() throws ParseError {
         DataSet ds = new DataSet();
         Node n1 = new Node(LatLon.ZERO);
         n1.put("amenity", "parking");
@@ -65,7 +63,7 @@ public class FilterTest {
     }
 
     @Test
-    public void filter() throws ParseError, IllegalDataException, IOException {
+    public void testFilter() throws Exception {
         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/NodeDataTest.java b/test/unit/org/openstreetmap/josm/data/osm/NodeDataTest.java
index b36bc57..669c7e3 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/NodeDataTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/NodeDataTest.java
@@ -19,10 +19,10 @@ public class NodeDataTest {
         data.setVersion(14);
         data.setChangesetId(314159);
         final Object readData;
-        try (final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
-             final ObjectOutputStream out = new ObjectOutputStream(bytes)) {
+        try (ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+             ObjectOutputStream out = new ObjectOutputStream(bytes)) {
             out.writeObject(data);
-            try (final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
+            try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
                 readData = in.readObject();
             }
         }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java
index b2db840..52070b4 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveKeyHandlingTest.java
@@ -30,7 +30,7 @@ public class OsmPrimitiveKeyHandlingTest {
      * test query and get methods on a node withouth keys
      */
     @Test
-    public void emptyNode() {
+    public void testEmptyNode() {
         Node n = new Node();
         testKeysSize(n, 0);
         testGetKey(n, "nosuchkey", null);
@@ -44,7 +44,7 @@ public class OsmPrimitiveKeyHandlingTest {
      * Adds a tag to an empty node and test the query and get methods.
      */
     @Test
-    public void put() {
+    public void testPut() {
         Node n = new Node();
         n.put("akey", "avalue");
         testKeysSize(n, 1);
@@ -56,7 +56,7 @@ public class OsmPrimitiveKeyHandlingTest {
      * Adds two tags to an empty node and test the query and get methods.
      */
     @Test
-    public void put2() {
+    public void testPut2() {
         Node n = new Node();
         n.put("key.1", "value.1");
         n.put("key.2", "value.2");
@@ -74,7 +74,7 @@ public class OsmPrimitiveKeyHandlingTest {
      */
     @Test
     @SuppressFBWarnings(value = "DM_STRING_CTOR", justification = "test that equals is used and not ==")
-    public void remove() {
+    public void testRemove() {
         Node n = new Node();
         n.put("key.1", "value.1");
         n.put(new String("key.2"), new String("value.2")); // Test that equals is used and not ==
@@ -106,7 +106,7 @@ public class OsmPrimitiveKeyHandlingTest {
      * Removes all tags from a node.
      */
     @Test
-    public void removeAll() {
+    public void testRemoveAll() {
         Node n = new Node();
 
         n.put("key.1", "value.1");
@@ -121,7 +121,7 @@ public class OsmPrimitiveKeyHandlingTest {
      * in different orders.
      */
     @Test
-    public void hasEqualSemanticAttributes() {
+    public void testHasEqualSemanticAttributes() {
         Node n1 = new Node(1);
         n1.setCoor(LatLon.ZERO);
         n1.put("key.1", "value.1");
@@ -139,7 +139,7 @@ public class OsmPrimitiveKeyHandlingTest {
      * Test hasEqualSemanticAttributes on two nodes with different tags.
      */
     @Test
-    public void hasEqualSemanticAttributes_2() {
+    public void testHasEqualSemanticAttributes_2() {
         Node n1 = new Node(1);
         n1.setCoor(LatLon.ZERO);
         n1.put("key.1", "value.1");
diff --git a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
index 4bdc1ec..06d0c0f 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/OsmPrimitiveTest.java
@@ -41,7 +41,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void simpleReferrersTest() {
+    public void testSimpleReferrersTest() {
         Node n1 = new Node(LatLon.ZERO);
         Way w1 = new Way();
         w1.addNode(n1);
@@ -51,7 +51,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void addAndRemoveReferrer() {
+    public void testAddAndRemoveReferrer() {
         Node n1 = new Node(LatLon.ZERO);
         Node n2 = new Node(LatLon.ZERO);
         Way w1 = new Way();
@@ -67,7 +67,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void multipleReferrers() {
+    public void testMultipleReferrers() {
         Node n1 = new Node(LatLon.ZERO);
         Way w1 = new Way();
         Way w2 = new Way();
@@ -83,7 +83,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void removeMemberFromRelationReferrerTest() {
+    public void testRemoveMemberFromRelationReferrerTest() {
         Node n1 = new Node(LatLon.ZERO);
         Relation r1 = new Relation();
         r1.addMember(new RelationMember("", n1));
@@ -95,7 +95,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void setRelationMemberReferrerTest() {
+    public void testSetRelationMemberReferrerTest() {
         Node n1 = new Node(LatLon.ZERO);
         Node n2 = new Node(LatLon.ZERO);
         Relation r1 = new Relation();
@@ -112,7 +112,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void removePrimitiveReferrerTest() {
+    public void testRemovePrimitiveReferrerTest() {
         Node n1 = new Node(LatLon.ZERO);
         Way w1 = new Way();
         w1.addNode(n1);
@@ -134,7 +134,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test
-    public void nodeFromMultipleDatasets() {
+    public void testNodeFromMultipleDatasets() {
         // n has two referrers - w1 and w2. But only w1 is returned because it is in the same dataset as n
         Node n = new Node(LatLon.ZERO);
 
@@ -149,7 +149,7 @@ public class OsmPrimitiveTest {
     }
 
     @Test(expected = DataIntegrityProblemException.class)
-    public void checkMustBeInDatasate() {
+    public void testCheckMustBeInDatasate() {
         Node n = new Node();
         n.getReferrers();
     }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java b/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java
index c3f56a3..f0473ad 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/RelationTest.java
@@ -22,12 +22,12 @@ public class RelationTest {
     }
 
     @Test(expected = NullPointerException.class)
-    public void createNewRelation() {
+    public void testCreateNewRelation() {
         new Relation(null);
     }
 
     @Test
-    public void equalSemenaticsToNull() {
+    public void testEqualSemanticsToNull() {
         Relation relation = new Relation();
         assertFalse(relation.hasEqualTechnicalAttributes(null));
     }
diff --git a/test/unit/org/openstreetmap/josm/data/osm/TagCollectionTest.java b/test/unit/org/openstreetmap/josm/data/osm/TagCollectionTest.java
new file mode 100644
index 0000000..97cdc55
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/data/osm/TagCollectionTest.java
@@ -0,0 +1,708 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm;
+
+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.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests of {@link TagCollection}.
+ * @author Michael Zangl
+ */
+public class TagCollectionTest {
+    private final Tag tagA = new Tag("k", "v");
+    private final Tag tagB = new Tag("k", "b");
+    private final Tag tagC = new Tag("k2", "b");
+    private final Tag tagD = new Tag("k3", "c");
+    private final Tag tagEmpty = new Tag("k", "");
+    private final Tag tagNullKey = new Tag(null, "b");
+    private final Tag tagNullValue = new Tag("k2", null);
+
+    /**
+     * We need prefs for using primitives
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+
+    private void assertTagCounts(TagCollection collection, int a, int b, int c, int d) {
+        assertEquals(a, collection.getTagOccurence(tagA));
+        assertEquals(b, collection.getTagOccurence(tagB));
+        assertEquals(c, collection.getTagOccurence(tagC));
+        assertEquals(d, collection.getTagOccurence(tagD));
+    }
+
+    /**
+     * Test method for {@link TagCollection#from(org.openstreetmap.josm.data.osm.Tagged)}.
+     */
+    @Test
+    public void testFromTagged() {
+        TagCollection c = TagCollection.from(tagA);
+        assertTagCounts(c, 1, 0, 0, 0);
+
+        NodeData p1 = new NodeData();
+        p1.put(tagA);
+        p1.put(tagC);
+        TagCollection d = TagCollection.from(p1);
+        assertTagCounts(d, 1, 0, 1, 0);
+
+        TagCollection e = TagCollection.from((Tagged) null);
+        assertTagCounts(e, 0, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#from(Map)}.
+     */
+    @Test
+    public void testFromMapOfStringString() {
+        TagCollection c = TagCollection.from(tagA.getKeys());
+        assertTagCounts(c, 1, 0, 0, 0);
+
+        HashMap<String, String> map = new HashMap<>();
+        map.putAll(tagA.getKeys());
+        map.putAll(tagC.getKeys());
+        TagCollection d = TagCollection.from(map);
+        assertTagCounts(d, 1, 0, 1, 0);
+
+        TagCollection e = TagCollection.from((Map<String, String>) null);
+        assertTagCounts(e, 0, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#unionOfAllPrimitives(Collection)}.
+     */
+    @Test
+    public void testUnionOfAllPrimitivesCollectionOfQextendsTagged() {
+        TagCollection c = TagCollection.unionOfAllPrimitives(Arrays.asList(tagA));
+        assertEquals(1, c.getTagOccurence(tagA));
+
+        TagCollection d = TagCollection.unionOfAllPrimitives(Arrays.asList(tagA, tagC));
+        assertTagCounts(d, 1, 0, 1, 0);
+
+        TagCollection e = TagCollection.unionOfAllPrimitives((Collection<? extends Tagged>) null);
+        assertTagCounts(e, 0, 0, 0, 0);
+
+        TagCollection f = TagCollection.unionOfAllPrimitives(Arrays.<Tagged>asList());
+        assertTagCounts(f, 0, 0, 0, 0);
+
+        TagCollection g = TagCollection.unionOfAllPrimitives(Arrays.asList(tagA, tagC, tagC, null));
+        assertTagCounts(g, 1, 0, 2, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#TagCollection()}.
+     */
+    @Test
+    public void testTagCollection() {
+        TagCollection c = new TagCollection();
+        assertTagCounts(c, 0, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#TagCollection(TagCollection)}.
+     */
+    @Test
+    public void testTagCollectionTagCollection() {
+        TagCollection blueprint = TagCollection.unionOfAllPrimitives(Arrays.asList(tagA, tagC, tagC));
+        TagCollection c = new TagCollection(blueprint);
+        assertTagCounts(c, 1, 0, 2, 0);
+
+        TagCollection d = new TagCollection((TagCollection) null);
+        assertTagCounts(d, 0, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#TagCollection(Collection)}.
+     */
+    @Test
+    public void testTagCollectionCollectionOfTag() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertTagCounts(c, 1, 0, 2, 0);
+
+        TagCollection d = new TagCollection((Collection<Tag>) null);
+        assertTagCounts(d, 0, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#size()}.
+     */
+    @Test
+    public void testSize() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertEquals(2, c.size());
+
+        TagCollection d = new TagCollection();
+        assertEquals(0, d.size());
+    }
+
+    /**
+     * Test method for {@link TagCollection#isEmpty()}.
+     */
+    @Test
+    public void testIsEmpty() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertFalse(c.isEmpty());
+
+        TagCollection d = new TagCollection();
+        assertTrue(d.isEmpty());
+    }
+
+    /**
+     * Test method for {@link TagCollection#add(Tag)}.
+     */
+    @Test
+    public void testAddTag() {
+        TagCollection c = new TagCollection();
+        assertTagCounts(c, 0, 0, 0, 0);
+        c.add(tagC);
+        assertTagCounts(c, 0, 0, 1, 0);
+        c.add(tagA);
+        c.add(tagC);
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.add((Tag) null);
+        assertTagCounts(c, 1, 0, 2, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#getTagOccurence(Tag)}.
+     */
+    @Test
+    public void testGetTagCount() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertEquals(2, c.getTagOccurence(tagC));
+        assertEquals(0, c.getTagOccurence(tagB));
+        assertEquals(0, c.getTagOccurence(tagNullKey));
+        assertEquals(0, c.getTagOccurence(tagNullValue));
+    }
+
+    /**
+     * Test method for {@link TagCollection#add(Collection)}.
+     */
+    @Test
+    public void testAddCollectionOfTag() {
+        TagCollection c = new TagCollection();
+        assertTagCounts(c, 0, 0, 0, 0);
+        c.add(Arrays.asList(tagC));
+        assertTagCounts(c, 0, 0, 1, 0);
+        c.add(Arrays.asList(tagA, tagC));
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.add(Collections.emptyList());
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.add((Collection<Tag>) null);
+        assertTagCounts(c, 1, 0, 2, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#add(TagCollection)}.
+     */
+    @Test
+    public void testAddTagCollection() {
+        TagCollection c = new TagCollection();
+        assertTagCounts(c, 0, 0, 0, 0);
+        c.add(new TagCollection(Arrays.asList(tagC)));
+        assertTagCounts(c, 0, 0, 1, 0);
+        c.add(new TagCollection(Arrays.asList(tagA, tagC)));
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.add(new TagCollection());
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.add((TagCollection) null);
+        assertTagCounts(c, 1, 0, 2, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#remove(Tag)}.
+     */
+    @Test
+    public void testRemoveTag() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.remove(tagC);
+        assertTagCounts(c, 1, 0, 0, 0);
+        c.remove(tagB);
+        assertTagCounts(c, 1, 0, 0, 0);
+        c.remove((Tag) null);
+        assertTagCounts(c, 1, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#remove(Collection)}.
+     */
+    @Test
+    public void testRemoveCollectionOfTag() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.remove(Arrays.asList(tagC, tagB));
+        assertTagCounts(c, 1, 0, 0, 0);
+        c.remove((Collection<Tag>) null);
+        assertTagCounts(c, 1, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#remove(TagCollection)}.
+     */
+    @Test
+    public void testRemoveTagCollection() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagC));
+        assertTagCounts(c, 1, 0, 2, 0);
+        c.remove(new TagCollection(Arrays.asList(tagC, tagB)));
+        assertTagCounts(c, 1, 0, 0, 0);
+        c.remove(new TagCollection());
+        assertTagCounts(c, 1, 0, 0, 0);
+        c.remove((TagCollection) null);
+        assertTagCounts(c, 1, 0, 0, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#removeByKey(String)}.
+     */
+    @Test
+    public void testRemoveByKeyString() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagB, tagC));
+        assertTagCounts(c, 1, 2, 1, 0);
+        c.removeByKey("k");
+        assertTagCounts(c, 0, 0, 1, 0);
+        c.removeByKey((String) null);
+        assertTagCounts(c, 0, 0, 1, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#removeByKey(Collection)}.
+     */
+    @Test
+    public void testRemoveByKeyCollectionOfString() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagB, tagC, tagD));
+        assertTagCounts(c, 1, 2, 1, 1);
+        c.removeByKey(Arrays.asList("k", "k2", null));
+        assertTagCounts(c, 0, 0, 0, 1);
+        c.removeByKey((Collection<String>) null);
+        assertTagCounts(c, 0, 0, 0, 1);
+    }
+
+    /**
+     * Test method for {@link TagCollection#contains(Tag)}.
+     */
+    @Test
+    public void testContains() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagB));
+        assertTrue(c.contains(tagA));
+        assertTrue(c.contains(tagB));
+        assertFalse(c.contains(tagC));
+    }
+
+    /**
+     * Test method for {@link TagCollection#containsAll(Collection)}.
+     */
+    @Test
+    public void testContainsAll() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagB));
+        assertTrue(c.containsAll(Arrays.asList(tagA, tagB)));
+        assertFalse(c.containsAll(Arrays.asList(tagA, tagC)));
+        assertTrue(c.containsAll(Arrays.asList()));
+        assertFalse(c.containsAll(null));
+    }
+
+    /**
+     * Test method for {@link TagCollection#containsAllKeys(Collection)}.
+     */
+    @Test
+    public void testContainsAllKeys() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagC));
+        assertTrue(c.containsAllKeys(Arrays.asList("k", "k2")));
+        assertFalse(c.containsAllKeys(Arrays.asList("k", "k3")));
+        assertTrue(c.containsAllKeys(Arrays.asList()));
+        assertFalse(c.containsAllKeys(null));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getNumTagsFor(String)}.
+     */
+    @Test
+    public void testGetNumTagsFor() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagC));
+        assertEquals(2, c.getNumTagsFor("k"));
+        assertEquals(1, c.getNumTagsFor("k2"));
+        assertEquals(0, c.getNumTagsFor("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#hasTagsFor(String)}.
+     */
+    @Test
+    public void testHasTagsFor() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagB, tagC));
+        assertTrue(c.hasTagsFor("k"));
+        assertTrue(c.hasTagsFor("k2"));
+        assertFalse(c.hasTagsFor("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#hasValuesFor(String)}.
+     */
+    @Test
+    public void testHasValuesFor() {
+        TagCollection c = new TagCollection(Arrays.asList(tagC, tagEmpty));
+        assertFalse(c.hasValuesFor("k"));
+        assertTrue(c.hasValuesFor("k2"));
+        assertFalse(c.hasValuesFor("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#hasUniqueNonEmptyValue(String)}.
+     */
+    @Test
+    public void testHasUniqueNonEmptyValue() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagEmpty));
+        assertTrue(c.hasUniqueNonEmptyValue("k"));
+        assertTrue(c.hasUniqueNonEmptyValue("k2"));
+        assertFalse(c.hasUniqueNonEmptyValue("k3"));
+
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagEmpty));
+        assertFalse(d.hasUniqueNonEmptyValue("k"));
+        assertTrue(d.hasUniqueNonEmptyValue("k2"));
+        assertFalse(d.hasUniqueNonEmptyValue("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#hasEmptyValue(String)}.
+     */
+    @Test
+    public void testHasEmptyValue() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC, tagEmpty));
+        assertTrue(c.hasEmptyValue("k"));
+        assertFalse(c.hasEmptyValue("k2"));
+        assertFalse(c.hasEmptyValue("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#hasUniqueEmptyValue(String)}.
+     */
+    @Test
+    public void testHasUniqueEmptyValue() {
+        TagCollection c = new TagCollection(Arrays.asList(tagC, tagEmpty));
+        assertTrue(c.hasUniqueEmptyValue("k"));
+        assertFalse(c.hasUniqueEmptyValue("k2"));
+        assertFalse(c.hasUniqueEmptyValue("k3"));
+
+        TagCollection d = new TagCollection(Arrays.asList());
+        assertFalse(d.hasUniqueEmptyValue("k"));
+        assertFalse(d.hasUniqueEmptyValue("k2"));
+        assertFalse(d.hasUniqueEmptyValue("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getTagsFor(String)}.
+     */
+    @Test
+    public void testGetTagsForString() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagEmpty));
+        TagCollection collection = d.getTagsFor("k");
+        assertTagCounts(collection, 1, 1, 0, 0);
+        assertEquals(1, collection.getTagOccurence(tagEmpty));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getTagsFor(Collection)}.
+     */
+    @Test
+    public void testGetTagsForCollectionOfString() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagEmpty));
+        TagCollection collection = d.getTagsFor(Arrays.asList("k", "k2"));
+        assertTagCounts(collection, 1, 1, 1, 0);
+        assertEquals(1, collection.getTagOccurence(tagEmpty));
+    }
+
+    /**
+     * Test method for {@link TagCollection#asSet()}.
+     */
+    @Test
+    public void testAsSet() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagC));
+        Set<Tag> set = d.asSet();
+        assertEquals(3, set.size());
+        assertTrue(set.contains(tagA));
+        assertTrue(set.contains(tagB));
+        assertTrue(set.contains(tagC));
+    }
+
+    /**
+     * Test method for {@link TagCollection#asList()}.
+     */
+    @Test
+    public void testAsList() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagC));
+        List<Tag> set = d.asList();
+        assertEquals(3, set.size());
+        assertTrue(set.contains(tagA));
+        assertTrue(set.contains(tagB));
+        assertTrue(set.contains(tagC));
+    }
+
+    /**
+     * Test method for {@link TagCollection#iterator()}.
+     */
+    @Test
+    public void testIterator() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA));
+        Iterator<Tag> it = d.iterator();
+        assertTrue(it.hasNext());
+        assertEquals(tagA, it.next());
+        assertFalse(it.hasNext());
+    }
+
+    /**
+     * Test method for {@link TagCollection#getKeys()}.
+     */
+    @Test
+    public void testGetKeys() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagC));
+        Set<String> set = d.getKeys();
+        assertEquals(2, set.size());
+        assertTrue(set.contains("k"));
+        assertTrue(set.contains("k2"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getKeysWithMultipleValues()}.
+     */
+    @Test
+    public void testGetKeysWithMultipleValues() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagB, tagC, tagC));
+        Set<String> set = d.getKeysWithMultipleValues();
+        assertEquals(1, set.size());
+        assertTrue(set.contains("k"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#setUniqueForKey(Tag)}.
+     */
+    @Test
+    public void testSetUniqueForKeyTag() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagA, tagB, tagC, tagC));
+        assertTagCounts(d, 2, 1, 2, 0);
+        d.setUniqueForKey(tagA);
+        assertTagCounts(d, 1, 0, 2, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#setUniqueForKey(String, String)}.
+     */
+    @Test
+    public void testSetUniqueForKeyStringString() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagA, tagB, tagC, tagC));
+        assertTagCounts(d, 2, 1, 2, 0);
+        d.setUniqueForKey(tagA.getKey(), tagA.getValue());
+        assertTagCounts(d, 1, 0, 2, 0);
+    }
+
+    /**
+     * Test method for {@link TagCollection#getValues()}.
+     */
+    @Test
+    public void testGetValues() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagA, tagB, tagC, tagEmpty));
+        Set<String> set = d.getValues();
+        assertEquals(3, set.size());
+        assertTrue(set.contains("v"));
+        assertTrue(set.contains("b"));
+        assertTrue(set.contains(""));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getValues(String)}.
+     */
+    @Test
+    public void testGetValuesString() {
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagA, tagC, tagEmpty));
+        Set<String> set = d.getValues("k");
+        assertEquals(2, set.size());
+        assertTrue(set.contains("v"));
+        assertTrue(set.contains(""));
+    }
+
+    /**
+     * Test method for {@link TagCollection#isApplicableToPrimitive()}.
+     */
+    @Test
+    public void testIsApplicableToPrimitive() {
+        TagCollection c = new TagCollection();
+        assertTrue(c.isApplicableToPrimitive());
+        TagCollection d = new TagCollection(Arrays.asList(tagA, tagA, tagC, tagEmpty));
+        assertFalse(d.isApplicableToPrimitive());
+        TagCollection e = new TagCollection(Arrays.asList(tagA, tagC));
+        assertTrue(e.isApplicableToPrimitive());
+    }
+
+    /**
+     * Test method for {@link TagCollection#applyTo(Tagged)}.
+     */
+    @Test
+    public void testApplyToTagged() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC));
+        NodeData tagged = new NodeData();
+        tagged.put("k", "x");
+        tagged.put("k3", "x");
+        c.applyTo(tagged);
+        assertEquals("v", tagged.get("k"));
+        assertEquals("b", tagged.get("k2"));
+        assertEquals("x", tagged.get("k3"));
+        TagCollection d = new TagCollection(Arrays.asList(tagEmpty));
+        d.applyTo(tagged);
+        assertEquals(null, tagged.get("k"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#applyTo(Collection)}.
+     */
+    @Test
+    public void testApplyToCollectionOfQextendsTagged() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC));
+        NodeData tagged = new NodeData();
+        NodeData tagged2 = new NodeData();
+        tagged2.put("k", "x");
+        tagged2.put("k3", "x");
+        c.applyTo(Arrays.asList(tagged, tagged2));
+        assertEquals("v", tagged.get("k"));
+        assertEquals("b", tagged.get("k2"));
+        assertEquals("v", tagged2.get("k"));
+        assertEquals("b", tagged2.get("k2"));
+        assertEquals("x", tagged2.get("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#replaceTagsOf(Tagged)}.
+     */
+    @Test
+    public void testReplaceTagsOfTagged() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC));
+        NodeData tagged = new NodeData();
+        tagged.put("k", "x");
+        tagged.put("k3", "x");
+        c.replaceTagsOf(tagged);
+        assertEquals("v", tagged.get("k"));
+        assertEquals("b", tagged.get("k2"));
+        assertEquals(null, tagged.get("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#replaceTagsOf(Collection)}.
+     */
+    @Test
+    public void testReplaceTagsOfCollectionOfQextendsTagged() {
+        TagCollection c = new TagCollection(Arrays.asList(tagA, tagC));
+        NodeData tagged = new NodeData();
+        NodeData tagged2 = new NodeData();
+        tagged2.put("k", "x");
+        tagged2.put("k3", "x");
+        c.replaceTagsOf(Arrays.asList(tagged, tagged2));
+        assertEquals("v", tagged.get("k"));
+        assertEquals("b", tagged.get("k2"));
+        assertEquals("v", tagged2.get("k"));
+        assertEquals("b", tagged2.get("k2"));
+        assertEquals(null, tagged2.get("k3"));
+    }
+
+    /**
+     * Test method for {@link TagCollection#intersect(TagCollection)}.
+     */
+    @Test
+    public void testIntersect() {
+        TagCollection c1 = new TagCollection(Arrays.asList(tagA, tagC, tagD, tagEmpty));
+        TagCollection c2 = new TagCollection(Arrays.asList(tagA, tagB, tagD));
+        TagCollection c = c1.intersect(c2);
+        assertEquals(2, c.getKeys().size());
+        assertEquals(1, c.getTagOccurence(tagA));
+        assertEquals(1, c.getTagOccurence(tagD));
+    }
+
+    /**
+     * Test method for {@link TagCollection#minus(TagCollection)}.
+     */
+    @Test
+    public void testMinus() {
+        TagCollection c1 = new TagCollection(Arrays.asList(tagA, tagC, tagD, tagEmpty));
+        TagCollection c2 = new TagCollection(Arrays.asList(tagA, tagB, tagD));
+        TagCollection c = c1.minus(c2);
+        assertEquals(2, c.getKeys().size());
+        assertEquals(1, c.getTagOccurence(tagC));
+        assertEquals(1, c.getTagOccurence(tagEmpty));
+    }
+
+    /**
+     * Test method for {@link TagCollection#union(TagCollection)}.
+     */
+    @Test
+    public void testUnion() {
+        TagCollection c1 = new TagCollection(Arrays.asList(tagA, tagC, tagD, tagEmpty));
+        TagCollection c2 = new TagCollection(Arrays.asList(tagA, tagB, tagD));
+        TagCollection c = c1.union(c2);
+        assertEquals(2, c.getTagOccurence(tagA));
+        assertEquals(1, c.getTagOccurence(tagB));
+        assertEquals(1, c.getTagOccurence(tagC));
+        assertEquals(2, c.getTagOccurence(tagD));
+        assertEquals(1, c.getTagOccurence(tagEmpty));
+    }
+
+    /**
+     * Test method for {@link TagCollection#emptyTagsForKeysMissingIn(TagCollection)}.
+     */
+    @Test
+    public void testEmptyTagsForKeysMissingIn() {
+        TagCollection c1 = new TagCollection(Arrays.asList(tagA, tagC, tagD, tagEmpty));
+        TagCollection c2 = new TagCollection(Arrays.asList(tagA, tagB, tagD));
+        TagCollection c = c1.emptyTagsForKeysMissingIn(c2);
+        assertEquals(2, c.getKeys().size());
+        assertEquals(1, c.getTagOccurence(new Tag(tagC.getKey(), "")));
+        assertEquals(1, c.getTagOccurence(tagEmpty));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getJoinedValues(String)}.
+     */
+    @Test
+    public void testGetJoinedValues() {
+        TagCollection c = new TagCollection(Arrays.asList(new Tag("k", "a")));
+        assertEquals("a", c.getJoinedValues("k"));
+        TagCollection d = new TagCollection(Arrays.asList(new Tag("k", "a"), new Tag("k", "b")));
+        assertEquals("a;b", d.getJoinedValues("k"));
+        TagCollection e = new TagCollection(Arrays.asList(new Tag("k", "b"), new Tag("k", "a"), new Tag("k", "b;a")));
+        assertEquals("b;a", e.getJoinedValues("k"));
+        TagCollection f = new TagCollection(Arrays.asList(new Tag("k", "b"), new Tag("k", "a"), new Tag("k", "b"),
+                new Tag("k", "c"), new Tag("k", "d"), new Tag("k", "a;b;c;d")));
+        assertEquals("a;b;c;d", f.getJoinedValues("k"));
+        TagCollection g = new TagCollection(Arrays.asList(new Tag("k", "b"), new Tag("k", "a"), new Tag("k", "b"),
+                new Tag("k", "c"), new Tag("k", "d")));
+        assertEquals("a;b;c;d", Stream.of(g.getJoinedValues("k").split(";")).sorted().collect(Collectors.joining(";")));
+    }
+
+    /**
+     * Test method for {@link TagCollection#getSummedValues(String)}.
+     */
+    @Test
+    public void testGetSummedValues() {
+        TagCollection c = new TagCollection(Arrays.asList(new Tag("k", "10"), new Tag("k", "20")));
+        assertEquals("30", c.getSummedValues("k"));
+        TagCollection d = new TagCollection(Arrays.asList(new Tag("k", "10"), new Tag("k", "10")));
+        assertEquals("10", d.getSummedValues("k"));
+        TagCollection e = new TagCollection(Arrays.asList(new Tag("k", "10"), new Tag("k", "x")));
+        assertEquals("10", e.getSummedValues("k"));
+        TagCollection f = new TagCollection();
+        assertEquals("0", f.getSummedValues("k"));
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/data/osm/WayDataTest.java b/test/unit/org/openstreetmap/josm/data/osm/WayDataTest.java
index 4e0b2c3..57b6076 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/WayDataTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/WayDataTest.java
@@ -19,10 +19,10 @@ public class WayDataTest {
         data.setVersion(14);
         data.setChangesetId(314159);
         final Object readData;
-        try (final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
-             final ObjectOutputStream out = new ObjectOutputStream(bytes)) {
+        try (ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+             ObjectOutputStream out = new ObjectOutputStream(bytes)) {
             out.writeObject(data);
-            try (final ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
+            try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
                 readData = in.readObject();
             }
         }
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 65cdce7..8d2cb8a 100644
--- a/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
+++ b/test/unit/org/openstreetmap/josm/data/osm/history/HistoryWayTest.java
@@ -81,9 +81,7 @@ public class HistoryWayTest {
             fail("expected expection of type " + IndexOutOfBoundsException.class.toString());
         } catch (IndexOutOfBoundsException e) {
             // OK
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
 
         way.addNode(5);
diff --git a/test/unit/org/openstreetmap/josm/data/projection/EllipsoidTest.java b/test/unit/org/openstreetmap/josm/data/projection/EllipsoidTest.java
index 65ad7a0..43b20cd 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/EllipsoidTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/EllipsoidTest.java
@@ -18,7 +18,7 @@ public class EllipsoidTest {
      * convert latlon to cartesian coordinates back and forth
      */
     @Test
-    public void latLon2Cart2LatLon() {
+    public void testLatLon2Cart2LatLon() {
         Random r = new Random(System.currentTimeMillis());
         double maxErrLat = 0, maxErrLon = 0;
         Ellipsoid ellips = Ellipsoid.WGS84;
diff --git a/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java b/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
index 9a29814..0e9fd2d 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java
@@ -277,7 +277,7 @@ public class ProjectionRefTest {
     }
 
     @Test
-    public void test() throws IOException {
+    public void testProjections() throws IOException {
         StringBuilder fail = new StringBuilder();
         Set<String> allCodes = new HashSet<>(Projections.getAllProjectionCodes());
         Collection<RefEntry> refs = readData();
diff --git a/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java b/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java
index 484154a..df84de2 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java
@@ -163,7 +163,7 @@ public class ProjectionRegressionTest {
      * @throws IOException if any I/O error occurs
      */
     @Test
-    public void regressionTest() throws IOException {
+    public void testNonRegression() throws IOException {
         List<TestData> allData = readData();
         Set<String> dataCodes = new HashSet<>();
         for (TestData data : allData) {
diff --git a/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java b/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java
index 83442b4..9d5b259 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/ProjectionTest.java
@@ -23,7 +23,7 @@ public class ProjectionTest {
     String text;
 
     @Test
-    public void projections() {
+    public void testProjections() {
         error = false;
         text = "";
 
@@ -103,7 +103,7 @@ public class ProjectionTest {
     Collection<String> projIds;
 
     @Test
-    public void projs() {
+    public void testProjs() {
         error2 = false;
         text2 = "";
 
diff --git a/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java b/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
index b0555c9..21a9ec2 100644
--- a/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
+++ b/test/unit/org/openstreetmap/josm/data/projection/SwissGridTest.java
@@ -12,7 +12,7 @@ import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 
 public class SwissGridTest {
-    public static final String SWISS_EPSG_CODE = "EPSG:21781";
+    private static final String SWISS_EPSG_CODE = "EPSG:21781";
     private boolean debug = false;
 
     /**
@@ -55,10 +55,10 @@ public class SwissGridTest {
         }
     }
 
-    public static final double EPSILON_APPROX = 1.5;
-    public static final double EPSILON_ACCURATE = 0.05;
+    private static final double EPSILON_APPROX = 1.5;
+    private static final double EPSILON_ACCURATE = 0.05;
 
-    public void projReferenceTest(final double epsilon) {
+    private void projReferenceTest(final double epsilon) {
         Projection swiss = Projections.getProjectionByCode("EPSG:21781"); // Swiss grid
         StringBuilder errs = new StringBuilder();
         for (ProjData pd : data) {
@@ -71,19 +71,19 @@ public class SwissGridTest {
     }
 
     @Test
-    public void projReferenceTestApprox() {
+    public void testProjReferenceTestApprox() {
         projReferenceTest(EPSILON_APPROX);
     }
 
     @Test
     @Ignore("high accuracy of epsilon=" + EPSILON_ACCURATE + " is not met")
-    public void projReferenceTestAccurate() {
+    public void testProjReferenceTestAccurate() {
         // TODO make this test pass
         projReferenceTest(EPSILON_ACCURATE);
     }
 
     @Test
-    public void a_latlon2eastNorth_test() {
+    public void testAlatlon2eastNorth() {
         LatLon ll = new LatLon(46.518, 6.567);
         EastNorth en = Main.getProjection().latlon2eastNorth(ll);
         if (debug) {
@@ -126,7 +126,7 @@ public class SwissGridTest {
     }
 
     @Test
-    public void b_eastNorth2latlon_test() {
+    public void testBeastNorth2latlon() {
         EastNorth en = new EastNorth(533111.69, 152227.85);
         LatLon ll = Main.getProjection().eastNorth2latlon(en);
         if (debug) {
@@ -172,7 +172,7 @@ public class SwissGridTest {
      * Send and return should have less than 2mm of difference.
      */
     @Test
-    public void c_sendandreturn_test() {
+    public void testCsendandreturn() {
         EastNorth en = new EastNorth(533111.69, 152227.85);
         LatLon ll = Main.getProjection().eastNorth2latlon(en);
         EastNorth en2 = Main.getProjection().latlon2eastNorth(ll);
diff --git a/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java b/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
index 04cad07..af2fadf 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
@@ -29,6 +29,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.net.ConnectException;
 import java.net.HttpURLConnection;
 import java.net.IDN;
 import java.net.URL;
@@ -46,6 +47,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.junit.Test;
+import org.openstreetmap.josm.Main;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -77,7 +79,14 @@ public class DomainValidatorTestIT {
         Set<String> ianaTlds = new HashSet<>(); // keep for comparison with array contents
         DomainValidator dv = DomainValidator.getInstance();
         File txtFile = new File(System.getProperty("java.io.tmpdir"), "tlds-alpha-by-domain.txt");
-        long timestamp = download(txtFile, "http://data.iana.org/TLD/tlds-alpha-by-domain.txt", 0L);
+        long timestamp;
+        try {
+            timestamp = download(txtFile, "http://data.iana.org/TLD/tlds-alpha-by-domain.txt", 0L);
+        } catch (ConnectException e) {
+            Main.error(e);
+            // Try again one more time in case of random network issue
+            timestamp = download(txtFile, "http://data.iana.org/TLD/tlds-alpha-by-domain.txt", 0L);
+        }
         final File htmlFile = new File(System.getProperty("java.io.tmpdir"), "tlds-alpha-by-domain.html");
         // N.B. sometimes the html file may be updated a day or so after the txt file
         // if the txt file contains entries not found in the html file, try again in a day or two
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
index 4370fe4..2a8856d 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/DuplicateNodeTest.java
@@ -28,7 +28,7 @@ public class DuplicateNodeTest {
      * Test of "Duplicate node" validation test.
      */
     @Test
-    public void test() {
+    public void testDuplicateNode() {
         DataSet ds = new DataSet();
 
         Node a = new Node(new LatLon(10.0, 5.0));
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 9b96d59..c924657 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/MapCSSTagCheckerTest.java
@@ -54,6 +54,7 @@ public class MapCSSTagCheckerTest {
     public void testNaturalMarsh() throws Exception {
         ParseResult result = MapCSSTagChecker.TagCheck.readMapCSS(new StringReader("" +
                 "*[natural=marsh] {\n" +
+                "   group: tr(\"deprecated\");\n" +
                 "   throwWarning: tr(\"{0}={1} is deprecated\", \"{0.key}\", tag(\"natural\"));\n" +
                 "   fixRemove: \"{0.key}\";\n" +
                 "   fixAdd: \"natural=wetland\";\n" +
@@ -70,20 +71,21 @@ public class MapCSSTagCheckerTest {
         assertEquals("fixAdd: wetland=marsh", check.fixCommands.get(2).toString());
         final Node n1 = new Node();
         n1.put("natural", "marsh");
-        assertTrue(check.evaluate(n1));
-        assertEquals("natural=marsh is deprecated", check.getErrorForPrimitive(n1).getMessage());
+        assertTrue(check.test(n1));
+        assertEquals("deprecated", check.getErrorForPrimitive(n1).getMessage());
+        assertEquals("natural=marsh is deprecated", check.getErrorForPrimitive(n1).getDescription());
         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));
+        assertFalse(check.test(n2));
         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
-    public void test10913() throws Exception {
+    public void testTicket10913() throws Exception {
         final OsmPrimitive p = OsmUtils.createPrimitive("way highway=tertiary construction=yes");
         final TagCheck check = TagCheck.readMapCSS(new StringReader("way {" +
                 "throwError: \"error\";" +
@@ -98,7 +100,7 @@ public class MapCSSTagCheckerTest {
     }
 
     @Test
-    public void test9782() throws Exception {
+    public void testTicket9782() throws Exception {
         final MapCSSTagChecker test = buildTagChecker("*[/.+_name/][!name] {" +
                 "throwWarning: tr(\"has {0} but not {1}\", \"{0.key}\", \"{1.key}\");}");
         final OsmPrimitive p = OsmUtils.createPrimitive("way alt_name=Foo");
@@ -109,7 +111,7 @@ public class MapCSSTagCheckerTest {
     }
 
     @Test
-    public void test10859() throws Exception {
+    public void testTicket10859() throws Exception {
         final MapCSSTagChecker test = buildTagChecker("way[highway=footway][foot?!] {\n" +
                 "  throwWarning: tr(\"{0} used with {1}\", \"{0.value}\", \"{1.tag}\");}");
         final OsmPrimitive p = OsmUtils.createPrimitive("way highway=footway foot=no");
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java
index 6d1f16d..d052895 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/NameMismatchTest.java
@@ -34,7 +34,7 @@ public class NameMismatchTest {
      * Test "A name is missing, even though name:* exists."
      */
     @Test
-    public void test0() {
+    public void testCase0() {
         final List<TestError> errors = test("node name:de=Europa");
         assertEquals(1, errors.size());
         assertEquals("A name is missing, even though name:* exists.", errors.get(0).getMessage());
@@ -44,7 +44,7 @@ public class NameMismatchTest {
      * Test "Missing name:*={0}. Add tag with correct language key."
      */
     @Test
-    public void test1() {
+    public void testCase1() {
         final List<TestError> errors = test("node name=Europe name:de=Europa");
         assertEquals(1, errors.size());
         assertEquals("Missing name:*=Europe. Add tag with correct language key.", errors.get(0).getDescription());
@@ -54,7 +54,7 @@ public class NameMismatchTest {
      * Test no error
      */
     @Test
-    public void test2() {
+    public void testCase2() {
         final List<TestError> errors = test("node name=Europe name:de=Europa name:en=Europe");
         assertEquals(0, errors.size());
     }
@@ -63,7 +63,7 @@ public class NameMismatchTest {
      * Various other tests
      */
     @Test
-    public void test3() {
+    public void testCase3() {
         List<TestError> errors;
         errors = test("node \"name\"=\"Italia - Italien - Italy\"");
         assertEquals(0, errors.size());
diff --git a/test/unit/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTestTest.java b/test/unit/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTestTest.java
index 2054401..0839bb2 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTestTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/PublicTransportRouteTestTest.java
@@ -34,7 +34,7 @@ public class PublicTransportRouteTestTest {
      * Performs various tests.
      */
     @Test
-    public void test() {
+    public void testVarious() {
         final List<Node> nodes = Arrays.asList(new Node(), new Node(), new Node(), new Node(), new Node(), new Node());
         final Way w1 = TestUtils.newWay("", nodes.get(0), nodes.get(1));
         final Way w2 = TestUtils.newWay("", nodes.get(1), nodes.get(2));
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 1397fcb..2253496 100644
--- a/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
+++ b/test/unit/org/openstreetmap/josm/data/validation/tests/TagCheckerTest.java
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.data.validation.tests;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
@@ -49,7 +50,7 @@ public class TagCheckerTest {
         assertEquals(1, errors.size());
         assertEquals("Misspelled property key", errors.get(0).getMessage());
         assertEquals("Key 'Name' looks like 'name'.", errors.get(0).getDescription());
-        assertEquals(true, errors.get(0).isFixable());
+        assertTrue(errors.get(0).isFixable());
     }
 
     /**
@@ -62,7 +63,7 @@ public class TagCheckerTest {
         assertEquals(1, errors.size());
         assertEquals("Misspelled property key", errors.get(0).getMessage());
         assertEquals("Key 'landuse;' looks like 'landuse'.", errors.get(0).getDescription());
-        assertEquals(true, errors.get(0).isFixable());
+        assertTrue(errors.get(0).isFixable());
     }
 
     /**
@@ -76,7 +77,7 @@ public class TagCheckerTest {
         assertEquals(1, errors.size());
         assertEquals("Misspelled property key", errors.get(0).getMessage());
         assertEquals("Key 'Brand' looks like 'brand'.", errors.get(0).getDescription());
-        assertEquals(false, errors.get(0).isFixable());
+        assertFalse(errors.get(0).isFixable());
     }
 
     /**
diff --git a/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java b/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java
index 4a20a9b..924c1c8 100644
--- a/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/TableCellRendererTest.java
@@ -54,7 +54,7 @@ public class TableCellRendererTest {
      * Unit test of all table cell renderers against null values.
      */
     @Test
-    public void tableCellRendererTest() {
+    public void testTableCellRenderer() {
         Reflections reflections = new Reflections("org.openstreetmap.josm");
         Set<Class<? extends TableCellRenderer>> renderers = reflections.getSubTypesOf(TableCellRenderer.class);
         Assert.assertTrue(renderers.size() >= 10); // if it finds less than 10 classes, something is broken
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
index 542a0d2..c94901a 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMergeModelTest.java
@@ -78,7 +78,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToTop_1() {
+    public void testCopyMyNodesToTop1() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -100,7 +100,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToTop_2() {
+    public void testCopyMyNodesToTop2() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -126,7 +126,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToTop_3() {
+    public void testCopyMyNodesToTop3() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -152,7 +152,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToTop_4() {
+    public void testCopyMyNodesToTop4() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -179,7 +179,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToEnd_1() {
+    public void testCopyMyNodesToEnd1() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -200,7 +200,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToEnd_2() {
+    public void testCopyMyNodesToEnd2() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -225,7 +225,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToEnd_3() {
+    public void testCopyMyNodesToEnd3() {
         NodeListMergeModel model = new NodeListMergeModel();
 
 
@@ -252,7 +252,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesToEnd_4() {
+    public void testCopyMyNodesToEnd4() {
         NodeListMergeModel model = new NodeListMergeModel();
 
 
@@ -285,7 +285,7 @@ public class NodeListMergeModelTest {
     /* ----------------------------------------------------------------------------- */
 
     @Test
-    public void test_copyMyNodesBeforeCurrent_1() {
+    public void testCopyMyNodesBeforeCurrent1() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -312,7 +312,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesBeforeCurrent_2() {
+    public void testCopyMyNodesBeforeCurrent2() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -340,7 +340,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesBeforeCurrent_3() {
+    public void testCopyMyNodesBeforeCurrent3() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -359,9 +359,7 @@ public class NodeListMergeModelTest {
             fail("expected IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // OK
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
 
         try {
@@ -369,9 +367,7 @@ public class NodeListMergeModelTest {
             fail("expected IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // OK
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 
@@ -379,7 +375,7 @@ public class NodeListMergeModelTest {
     /* copyMyNodesAfterCurrent                                                       */
     /* ----------------------------------------------------------------------------- */
     @Test
-    public void test_copyMyNodesAfterCurrent_1() {
+    public void testCopyMyNodesAfterCurrent1() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -406,7 +402,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesAfterCurrent_2() {
+    public void testCopyMyNodesAfterCurrent2() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -435,7 +431,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_copyMyNodesAfterCurrent_3() {
+    public void testCopyMyNodesAfterCurrent3() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = my.addWay(1, 1);
@@ -468,7 +464,7 @@ public class NodeListMergeModelTest {
     /* moveUpMergedNodes                                                       */
     /* ----------------------------------------------------------------------------- */
     @Test
-    public void test_moveUpMergedNodes_1() {
+    public void testMoveUpMergedNodes1() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = new Way(1, 1);
@@ -494,7 +490,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_moveUpMergedNodes_2() {
+    public void testMoveUpMergedNodes2() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = new Way(1, 1);
@@ -524,7 +520,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_moveUpMergedNodes_3() {
+    public void testMoveUpMergedNodes3() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = new Way(1, 1);
@@ -557,7 +553,7 @@ public class NodeListMergeModelTest {
     /* moveDownMergedNodes                                                       */
     /* ----------------------------------------------------------------------------- */
     @Test
-    public void test_moveDownMergedNodes_1() {
+    public void testMoveDownMergedNodes1() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = new Way(1, 1);
@@ -583,7 +579,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_moveDownMergedNodes_2() {
+    public void testMoveDownMergedNodes2() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = new Way(1, 1);
@@ -613,7 +609,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void test_moveDownMergedNodes_3() {
+    public void testMoveDownMergedNodes3() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         Way myWay = new Way(1, 1);
@@ -647,7 +643,7 @@ public class NodeListMergeModelTest {
     /* ----------------------------------------------------------------------------- */
     @SuppressWarnings("unchecked")
     @Test
-    public void addPropertyChangeListener() {
+    public void testAddPropertyChangeListener() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         PropertyChangeListener listener = new PropertyChangeListener() {
@@ -669,7 +665,7 @@ public class NodeListMergeModelTest {
 
     @SuppressWarnings("unchecked")
     @Test
-    public void removePropertyChangeListener() {
+    public void testRemovePropertyChangeListener() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         PropertyChangeListener listener = new PropertyChangeListener() {
@@ -693,7 +689,7 @@ public class NodeListMergeModelTest {
     /* property frozen                                                               */
     /* ----------------------------------------------------------------------------- */
     @Test
-    public void setFrozen() {
+    public void testSetFrozen() {
         NodeListMergeModel model = new NodeListMergeModel();
         model.setFrozen(true);
         assertTrue(model.isFrozen());
@@ -703,7 +699,7 @@ public class NodeListMergeModelTest {
     }
 
     @Test
-    public void setFrozenWithPropertyChangeNotification() {
+    public void testSetFrozenWithPropertyChangeNotification() {
         NodeListMergeModel model = new NodeListMergeModel();
 
         class MyListener implements PropertyChangeListener {
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModelTest.java
index bb19568..734e70c 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModelTest.java
@@ -62,7 +62,7 @@ public class PropertiesMergeModelTest {
     }
 
     @Test
-    public void populate() {
+    public void testPopulate() {
         DataSet d1 = new DataSet();
         DataSet d2 = new DataSet();
         Node n1 = new Node(1);
@@ -85,7 +85,7 @@ public class PropertiesMergeModelTest {
     }
 
     @Test
-    public void decidingAboutCoords() {
+    public void testDecidingAboutCoords() {
         DataSet d1 = new DataSet();
         DataSet d2 = new DataSet();
 
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java
index 5728e44..8a40f53 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeItemTest.java
@@ -26,7 +26,7 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_TagMergeItem() {
+    public void testTagMergeItem() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         assertEquals("key", item.getKey());
         assertEquals("myvalue", item.getMyTagValue());
@@ -35,7 +35,7 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_TagMergeItem_2() {
+    public void testTagMergeItem2() {
         Node n1 = new Node(1);
         Node n2 = new Node(1);
         n1.put("key", "myvalue");
@@ -49,7 +49,7 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_TagMergeItem_3() {
+    public void testTagMergeItem3() {
         Node n1 = new Node(1);
         Node n2 = new Node(1);
         n1.put("key", "myvalue");
@@ -63,7 +63,7 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_TagMergeItem_4() {
+    public void testTagMergeItem4() {
         Node n1 = new Node(1);
         Node n2 = new Node(1);
         // n1 does not have this key
@@ -78,28 +78,26 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_decide() {
+    public void testDecide() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         item.decide(MergeDecisionType.KEEP_MINE);
         assertEquals(MergeDecisionType.KEEP_MINE, item.getMergeDecision());
     }
 
     @Test
-    public void test_decide_1() {
+    public void testDecide1() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         try {
             item.decide(null);
             fail("expected IllegalArgumentException not thrown");
         } catch (IllegalArgumentException e) {
             // OK
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 
     @Test
-    public void test_applyToMyPrimitive() {
+    public void testApplyToMyPrimitive() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         item.decide(MergeDecisionType.KEEP_MINE);
 
@@ -114,7 +112,7 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_applyToMyPrimitive_2() {
+    public void testApplyToMyPrimitive2() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         item.decide(MergeDecisionType.KEEP_THEIR);
 
@@ -129,7 +127,7 @@ public class TagMergeItemTest {
     }
 
     @Test
-    public void test_applyToMyPrimitive_3() {
+    public void testApplyToMyPrimitive3() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         // item is undecided
         // item.decide(MergeDecisionType.KEEP_THEIR);
@@ -141,14 +139,12 @@ public class TagMergeItemTest {
             fail("expected IllegalStateException");
         } catch (IllegalStateException e) {
             // OK
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 
     @Test
-    public void test_applyToMyPrimitive_4() {
+    public void testApplyToMyPrimitive4() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
 
         try {
@@ -156,9 +152,7 @@ public class TagMergeItemTest {
             fail("expected IllegalArgumentException");
         } catch (IllegalArgumentException e) {
             // OK
-            if (Main.isTraceEnabled()) {
-                Main.trace(e.getMessage());
-            }
+            Main.trace(e);
         }
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java b/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java
index d0765b6..9bd2e66 100644
--- a/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/conflict/pair/tags/TagMergeModelTest.java
@@ -31,7 +31,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void addPropertyChangeListener() {
+    public void testAddPropertyChangeListener() {
         TagMergeModel model = new TagMergeModel();
         PropertyChangeListener listener = new PropertyChangeListener() {
 
@@ -49,7 +49,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void removePropertyChangeListener() {
+    public void testRemovePropertyChangeListener() {
         TagMergeModel model = new TagMergeModel();
         PropertyChangeListener listener = new PropertyChangeListener() {
 
@@ -68,7 +68,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void populateNoConflichts() {
+    public void testPopulateNoConflichts() {
         Node my = new Node(1);
         Node their = new Node(1);
         TagMergeModel model = new TagMergeModel();
@@ -83,7 +83,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void populateNoConflicts1() {
+    public void testPopulateNoConflicts1() {
         Node my = new Node(1);
         my.put("key", "value");
         Node their = new Node(1);
@@ -100,7 +100,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void populateMissingKeyMine() {
+    public void testPopulateMissingKeyMine() {
         Node my = new Node(1);
         Node their = new Node(1);
         their.put("key", "value");
@@ -121,7 +121,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void populateMissingKeyTheir() {
+    public void testPopulateMissingKeyTheir() {
         Node my = new Node(1);
         my.put("key", "value");
         Node their = new Node(1);
@@ -142,7 +142,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void populateConflictingValues() {
+    public void testPopulateConflictingValues() {
         Node my = new Node(1);
         my.put("key", "myvalue");
         Node their = new Node(1);
@@ -164,7 +164,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void addItem() {
+    public void testAddItem() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         TagMergeModel model = new TagMergeModel();
         model.addItem(item);
@@ -183,7 +183,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void decide() {
+    public void testDecide() {
         TagMergeItem item = new TagMergeItem("key", "myvalue", "theirvalue");
         TagMergeModel model = new TagMergeModel();
         model.addItem(item);
@@ -210,7 +210,7 @@ public class TagMergeModelTest {
     }
 
     @Test
-    public void decideMultiple() {
+    public void testDecideMultiple() {
 
         TagMergeModel model = new TagMergeModel();
         for (int i = 0; i < 10; i++) {
diff --git a/test/unit/org/openstreetmap/josm/gui/correction/RoleCorrectionTableTest.java b/test/unit/org/openstreetmap/josm/gui/correction/RoleCorrectionTableTest.java
index 3d688a5..3de141f 100644
--- a/test/unit/org/openstreetmap/josm/gui/correction/RoleCorrectionTableTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/correction/RoleCorrectionTableTest.java
@@ -61,14 +61,14 @@ public class RoleCorrectionTableTest {
         assertEquals("relation (0, 1 member)", model.getValueAt(0, 0));
         assertEquals("foo", model.getValueAt(0, 1));
         assertEquals("bar", model.getValueAt(0, 2));
-        assertEquals(Boolean.TRUE, model.getValueAt(0, 3));
+        assertTrue((Boolean) model.getValueAt(0, 3));
         assertNull(model.getValueAt(0, 4));
         model.setValueAt("", 0, 0);
         assertEquals("relation (0, 1 member)", model.getValueAt(0, 0));
         model.setValueAt("", 0, 3);
-        assertEquals(Boolean.TRUE, model.getValueAt(0, 3));
+        assertTrue((Boolean) model.getValueAt(0, 3));
         model.setValueAt(Boolean.FALSE, 0, 3);
-        assertEquals(Boolean.FALSE, model.getValueAt(0, 3));
+        assertFalse((Boolean) model.getValueAt(0, 3));
         RoleCorrection[] array = new RoleCorrection[15];
         Arrays.fill(array, rc);
         t = new RoleCorrectionTable(Arrays.asList(array));
diff --git a/test/unit/org/openstreetmap/josm/gui/correction/TagCorrectionTableTest.java b/test/unit/org/openstreetmap/josm/gui/correction/TagCorrectionTableTest.java
index 6fcca46..20413b1 100644
--- a/test/unit/org/openstreetmap/josm/gui/correction/TagCorrectionTableTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/correction/TagCorrectionTableTest.java
@@ -66,20 +66,20 @@ public class TagCorrectionTableTest {
         assertEquals("bar", model.getValueAt(0, 1));
         assertEquals("foo", model.getValueAt(0, 2));
         assertEquals("baz", model.getValueAt(0, 3));
-        assertEquals(Boolean.TRUE, model.getValueAt(0, 4));
+        assertTrue((Boolean) model.getValueAt(0, 4));
         assertNull(model.getValueAt(0, 5));
         assertEquals("bar", model.getValueAt(1, 0));
         assertEquals("foo", model.getValueAt(1, 1));
         assertEquals("baz", model.getValueAt(1, 2));
         assertEquals("foo", model.getValueAt(1, 3));
-        assertEquals(Boolean.TRUE, model.getValueAt(1, 4));
+        assertTrue((Boolean) model.getValueAt(1, 4));
         assertNull(model.getValueAt(1, 5));
         model.setValueAt("", 0, 0);
         assertEquals("foo", model.getValueAt(0, 0));
         model.setValueAt("", 0, 4);
-        assertEquals(Boolean.TRUE, model.getValueAt(0, 4));
+        assertTrue((Boolean) model.getValueAt(0, 4));
         model.setValueAt(Boolean.FALSE, 0, 4);
-        assertEquals(Boolean.FALSE, model.getValueAt(0, 4));
+        assertFalse((Boolean) model.getValueAt(0, 4));
         TagCorrection[] array = new TagCorrection[15];
         Arrays.fill(array, tc1);
         t = new TagCorrectionTable(Arrays.asList(array));
diff --git a/test/unit/org/openstreetmap/josm/gui/datatransfer/ClipboardUtilsTest.java b/test/unit/org/openstreetmap/josm/gui/datatransfer/ClipboardUtilsTest.java
new file mode 100644
index 0000000..01979c9
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/datatransfer/ClipboardUtilsTest.java
@@ -0,0 +1,122 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.GraphicsEnvironment;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.IOException;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Basic tests for the clipboard utils class.
+ * @author Michael Zangl
+ */
+public class ClipboardUtilsTest {
+    private static final class ThrowIllegalStateClipboard extends Clipboard {
+        private int failingAccesses = 3;
+
+        private ThrowIllegalStateClipboard(String name) {
+            super(name);
+        }
+
+        @Override
+        public synchronized Transferable getContents(Object requestor) {
+            if (failingAccesses >= 0) {
+                failingAccesses--;
+                throw new IllegalStateException();
+            }
+            return super.getContents(requestor);
+        }
+
+        protected synchronized void setFailingAccesses(int failingAccesses) {
+            this.failingAccesses = failingAccesses;
+        }
+    }
+
+    private static final class SupportNothingTransferable implements Transferable {
+        @Override
+        public boolean isDataFlavorSupported(DataFlavor flavor) {
+            return false;
+        }
+
+        @Override
+        public DataFlavor[] getTransferDataFlavors() {
+            return new DataFlavor[0];
+        }
+
+        @Override
+        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
+            throw new UnsupportedFlavorException(flavor);
+        }
+    }
+
+    /**
+     * No dependencies
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link ClipboardUtils#getClipboard()}
+     */
+    @Test
+    public void testGetClipboard() {
+        Clipboard c = ClipboardUtils.getClipboard();
+        assertNotNull(c);
+        assertSame(c, ClipboardUtils.getClipboard());
+    }
+
+    /**
+     * Test {@link ClipboardUtils#copyString(String)} and {@link ClipboardUtils#getClipboardStringContent()}
+     */
+    @Test
+    public void testCopyPasteString() {
+        ClipboardUtils.copyString("");
+        assertEquals("", ClipboardUtils.getClipboardStringContent());
+        ClipboardUtils.copyString("xxx\nx");
+        assertEquals("xxx\nx", ClipboardUtils.getClipboardStringContent());
+
+        ClipboardUtils.copy(new SupportNothingTransferable());
+        assertEquals(null, ClipboardUtils.getClipboardStringContent());
+    }
+
+    /**
+     * Test that {@link ClipboardUtils#getClipboardContent(Clipboard)} handles illegal state exceptions
+     */
+    @Test
+    public void testGetContentIllegalState() {
+        ThrowIllegalStateClipboard throwingClipboard = new ThrowIllegalStateClipboard("test");
+
+        throwingClipboard.setContents(new StringSelection(""), null);
+        Transferable content = ClipboardUtils.getClipboardContent(throwingClipboard);
+        assertTrue(content.isDataFlavorSupported(DataFlavor.stringFlavor));
+
+        throwingClipboard.setFailingAccesses(50);
+        content = ClipboardUtils.getClipboardContent(new ThrowIllegalStateClipboard("test"));
+        assertNull(content);
+    }
+
+    /**
+     * Test that {@link ClipboardUtils#getSystemSelection()} works in headless mode.
+     */
+    @Test
+    public void testSystemSelectionDoesNotFail() {
+        assertTrue(GraphicsEnvironment.isHeadless());
+        assertNull(ClipboardUtils.getSystemSelection());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/datatransfer/LayerTransferableTest.java b/test/unit/org/openstreetmap/josm/gui/datatransfer/LayerTransferableTest.java
new file mode 100644
index 0000000..8b95fff
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/datatransfer/LayerTransferableTest.java
@@ -0,0 +1,98 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.util.Arrays;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openstreetmap.josm.gui.datatransfer.LayerTransferable.Data;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManagerTest;
+import org.openstreetmap.josm.gui.layer.LayerManagerTest.TestLayer;
+import org.openstreetmap.josm.gui.layer.MainLayerManager;
+
+/**
+ * Tests for {@link LayerTransferable}
+ * @author Michael Zangl
+ * @since 10605
+ */
+public class LayerTransferableTest {
+    private TestLayer layer1;
+    private TestLayer layer2;
+    private MainLayerManager manager;
+
+    /**
+     * Set up test data
+     */
+    @Before
+    public void createTestData() {
+        layer1 = new LayerManagerTest.TestLayer();
+        layer2 = new LayerManagerTest.TestLayer();
+        manager = new MainLayerManager();
+        manager.addLayer(layer1);
+        manager.addLayer(layer2);
+    }
+
+    /**
+     * Test {@link LayerTransferable.Data}
+     */
+    @Test
+    public void testLayerData() {
+        Data data = new Data(manager, Arrays.<Layer>asList(layer1, layer2));
+
+        // need to be identity
+        assertSame(manager, data.getManager());
+        assertSame(layer1, data.getLayers().get(0));
+        assertSame(layer2, data.getLayers().get(1));
+    }
+
+    /**
+     * Test {@link LayerTransferable#isDataFlavorSupported(java.awt.datatransfer.DataFlavor)}
+     * and {@link LayerTransferable#getTransferDataFlavors()}
+     */
+    @Test
+    public void testSupportedDataFlavor() {
+        LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
+
+        assertFalse(transferable.isDataFlavorSupported(DataFlavor.imageFlavor));
+        assertTrue(transferable.isDataFlavorSupported(LayerTransferable.LAYER_DATA));
+
+        DataFlavor[] flavors = transferable.getTransferDataFlavors();
+        assertEquals(1, flavors.length);
+        assertEquals(LayerTransferable.LAYER_DATA, flavors[0]);
+    }
+
+    /**
+     * Test {@link LayerTransferable#getTransferData(DataFlavor)}
+     * @throws Exception if any error occurs
+     */
+    @Test
+    public void testTransferData() throws Exception {
+        LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
+
+        Object object = transferable.getTransferData(LayerTransferable.LAYER_DATA);
+        assertTrue(object instanceof Data);
+        Data data = (Data) object;
+        assertSame(manager, data.getManager());
+        assertSame(layer1, data.getLayers().get(0));
+        assertSame(layer2, data.getLayers().get(1));
+    }
+
+    /**
+     * Test {@link LayerTransferable#getTransferData(DataFlavor)} for unsupported {@link DataFlavor}
+     * @throws Exception if any error occurs
+     */
+    @Test(expected = UnsupportedFlavorException.class)
+    public void testTransferDataUnsupported() throws Exception {
+        LayerTransferable transferable = new LayerTransferable(manager, Arrays.<Layer>asList(layer1, layer2));
+
+        transferable.getTransferData(DataFlavor.imageFlavor);
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferableTest.java b/test/unit/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferableTest.java
index 69ad859..2c708ca 100644
--- a/test/unit/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferableTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/datatransfer/PrimitiveTransferableTest.java
@@ -4,41 +4,52 @@ package org.openstreetmap.josm.gui.datatransfer;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-import static org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable.PRIMITIVE_DATA;
 
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.UnsupportedFlavorException;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.List;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.NodeData;
 import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.gui.datatransfer.data.TagTransferData;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link PrimitiveTransferable} class.
  */
 public class PrimitiveTransferableTest {
-
     /**
-     * Setup tests
+     * Prefs to use OSM primitives
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
     /**
-     * Test of {@link PrimitiveTransferable#getTransferDataFlavors()} method.
+     * Test of {@link PrimitiveTransferable#getTransferDataFlavors()} method response order
      */
     @Test
     public void testGetTransferDataFlavors() {
-        DataFlavor[] flavors = new PrimitiveTransferable(null).getTransferDataFlavors();
-        assertEquals(2, flavors.length);
-        assertEquals(PRIMITIVE_DATA, flavors[0]);
-        assertEquals(DataFlavor.stringFlavor, flavors[1]);
+        List<DataFlavor> flavors = Arrays.asList(new PrimitiveTransferable(null).getTransferDataFlavors());
+        int ptd = flavors.indexOf(PrimitiveTransferData.DATA_FLAVOR);
+        int tags = flavors.indexOf(TagTransferData.FLAVOR);
+        int string = flavors.indexOf(DataFlavor.stringFlavor);
+
+        assertTrue(ptd >= 0);
+        assertTrue(tags >= 0);
+        assertTrue(string >= 0);
+
+        assertTrue(ptd < tags);
+        assertTrue(tags < string);
     }
 
     /**
@@ -46,8 +57,8 @@ public class PrimitiveTransferableTest {
      */
     @Test
     public void testIsDataFlavorSupported() {
-        assertTrue(new PrimitiveTransferable(null).isDataFlavorSupported(PRIMITIVE_DATA));
-        assertFalse(new PrimitiveTransferable(null).isDataFlavorSupported(null));
+        assertTrue(new PrimitiveTransferable(null).isDataFlavorSupported(PrimitiveTransferData.DATA_FLAVOR));
+        assertFalse(new PrimitiveTransferable(null).isDataFlavorSupported(DataFlavor.imageFlavor));
     }
 
     /**
@@ -56,11 +67,17 @@ public class PrimitiveTransferableTest {
      */
     @Test
     public void testGetTransferDataNominal() throws UnsupportedFlavorException {
-        PrimitiveTransferable pt = new PrimitiveTransferable(Collections.singleton(new Node(1)));
-        assertEquals("node 1 # incomplete\n", pt.getTransferData(DataFlavor.stringFlavor));
-        Collection<PrimitiveData> td = ((PrimitiveTransferable.Data) pt.getTransferData(PRIMITIVE_DATA)).getPrimitiveData();
+        PrimitiveTransferData data = PrimitiveTransferData.getData(Collections.singleton(new Node(1)));
+        PrimitiveTransferable pt = new PrimitiveTransferable(data);
+        assertEquals("node 1", pt.getTransferData(DataFlavor.stringFlavor));
+        Collection<PrimitiveData> td = ((PrimitiveTransferData) pt.getTransferData(PrimitiveTransferData.DATA_FLAVOR)).getAll();
         assertEquals(1, td.size());
-        assertTrue(td.iterator().next() instanceof PrimitiveData);
+        assertTrue(td.iterator().next() instanceof NodeData);
+
+
+        data = PrimitiveTransferData.getData(Arrays.asList(new Node(1), new Node(2)));
+        pt = new PrimitiveTransferable(data);
+        assertEquals("node 1\nnode 2", pt.getTransferData(DataFlavor.stringFlavor));
     }
 
     /**
@@ -69,6 +86,7 @@ public class PrimitiveTransferableTest {
      */
     @Test(expected = UnsupportedFlavorException.class)
     public void testGetTransferDataError() throws UnsupportedFlavorException {
-        new PrimitiveTransferable(Collections.singleton(new Node(1))).getTransferData(null);
+        PrimitiveTransferData data = PrimitiveTransferData.getData(Collections.singleton(new Node(1)));
+        new PrimitiveTransferable(data).getTransferData(DataFlavor.imageFlavor);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferableTest.java b/test/unit/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferableTest.java
index 477fbf0..6a80442 100644
--- a/test/unit/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferableTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferableTest.java
@@ -3,7 +3,6 @@ package org.openstreetmap.josm.gui.datatransfer;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable.RELATION_MEMBER_DATA;
 
@@ -16,8 +15,10 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
 
 /**
  * Unit tests of {@link RelationMemberTransferable} class.
@@ -37,10 +38,11 @@ public class RelationMemberTransferableTest {
      */
     @Test
     public void testGetTransferDataFlavors() {
-        DataFlavor[] flavors = new RelationMemberTransferable(null).getTransferDataFlavors();
-        assertEquals(2, flavors.length);
+        DataFlavor[] flavors = new RelationMemberTransferable(Collections.<RelationMember>emptyList()).getTransferDataFlavors();
+        assertEquals(3, flavors.length);
         assertEquals(RELATION_MEMBER_DATA, flavors[0]);
-        assertEquals(DataFlavor.stringFlavor, flavors[1]);
+        assertEquals(PrimitiveTransferData.DATA_FLAVOR, flavors[1]);
+        assertEquals(DataFlavor.stringFlavor, flavors[2]);
     }
 
     /**
@@ -48,8 +50,10 @@ public class RelationMemberTransferableTest {
      */
     @Test
     public void testIsDataFlavorSupported() {
-        assertTrue(new RelationMemberTransferable(null).isDataFlavorSupported(RELATION_MEMBER_DATA));
-        assertFalse(new RelationMemberTransferable(null).isDataFlavorSupported(null));
+        RelationMemberTransferable transferable = new RelationMemberTransferable(Collections.<RelationMember>emptyList());
+        assertTrue(transferable.isDataFlavorSupported(RELATION_MEMBER_DATA));
+        assertTrue(transferable.isDataFlavorSupported(PrimitiveTransferData.DATA_FLAVOR));
+        assertFalse(transferable.isDataFlavorSupported(null));
     }
 
     /**
@@ -63,7 +67,13 @@ public class RelationMemberTransferableTest {
         Collection<RelationMemberData> td = ((RelationMemberTransferable.Data) rmt.getTransferData(RELATION_MEMBER_DATA))
                 .getRelationMemberData();
         assertEquals(1, td.size());
-        assertNotNull(td.iterator().next());
+        assertEquals(1, td.iterator().next().getMemberId());
+        assertEquals("test", td.iterator().next().getRole());
+
+        Collection<PrimitiveData> primitives = ((PrimitiveTransferData) rmt.getTransferData(PrimitiveTransferData.DATA_FLAVOR))
+                .getDirectlyAdded();
+        assertEquals(1, primitives.size());
+        assertEquals(1, primitives.iterator().next().getId());
     }
 
     /**
diff --git a/test/unit/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferDataTest.java b/test/unit/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferDataTest.java
new file mode 100644
index 0000000..b595cd7
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/datatransfer/data/PrimitiveTagTransferDataTest.java
@@ -0,0 +1,120 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.datatransfer.data;
+
+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.Map;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.NodeData;
+import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.PrimitiveData;
+import org.openstreetmap.josm.data.osm.RelationData;
+import org.openstreetmap.josm.data.osm.TagCollection;
+import org.openstreetmap.josm.data.osm.WayData;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Test {@link PrimitiveTagTransferData}
+ * @author Michael Zangl
+ */
+public class PrimitiveTagTransferDataTest {
+    /**
+     * Prefs only required because of the dependencies of OSM primitives.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+
+    private static boolean isHeterogeneousSource(PrimitiveData... t) {
+        return new PrimitiveTagTransferData(Arrays.asList(t)).isHeterogeneousSource();
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#PrimitiveTagTransferData(PrimitiveTransferData)}.
+     */
+    @Test
+    public void testPrimitiveTagTransferDataPrimitiveTransferData() {
+        PrimitiveTagTransferData data = new PrimitiveTagTransferData(PrimitiveTransferData.getData(Arrays.asList(new Node(), new Node())));
+        assertEquals(2, data.getSourcePrimitiveCount(OsmPrimitiveType.NODE));
+        assertEquals(0, data.getSourcePrimitiveCount(OsmPrimitiveType.WAY));
+        assertEquals(0, data.getSourcePrimitiveCount(OsmPrimitiveType.RELATION));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#isHeterogeneousSource()}.
+     */
+    @Test
+    public void testIsHeterogeneousSource() {
+        // 0 item
+        assertFalse(isHeterogeneousSource());
+        // 1 item
+        assertFalse(isHeterogeneousSource(new NodeData()));
+        assertFalse(isHeterogeneousSource(new WayData()));
+        assertFalse(isHeterogeneousSource(new RelationData()));
+        // 2 items of same type
+        assertFalse(isHeterogeneousSource(new NodeData(), new NodeData()));
+        assertFalse(isHeterogeneousSource(new WayData(), new WayData()));
+        assertFalse(isHeterogeneousSource(new RelationData(), new RelationData()));
+        // 2 items of different type
+        assertTrue(isHeterogeneousSource(new NodeData(), new WayData()));
+        assertTrue(isHeterogeneousSource(new NodeData(), new RelationData()));
+        assertTrue(isHeterogeneousSource(new WayData(), new RelationData()));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#getForPrimitives(OsmPrimitiveType)}.
+     */
+    @Test
+    public void testGetForPrimitives() {
+        PrimitiveTagTransferData data = createTestData();
+        TagCollection forNode = data.getForPrimitives(OsmPrimitiveType.NODE);
+        assertEquals(1, forNode.getKeys().size());
+        assertEquals(2, forNode.getValues("k").size());
+        TagCollection forWay = data.getForPrimitives(OsmPrimitiveType.WAY);
+        assertEquals(1, forWay.getKeys().size());
+        assertEquals(1, forWay.getValues("x").size());
+        TagCollection forRelation = data.getForPrimitives(OsmPrimitiveType.RELATION);
+        assertEquals(0, forRelation.getKeys().size());
+    }
+
+    private PrimitiveTagTransferData createTestData() {
+        NodeData nd1 = new NodeData();
+        nd1.put("k", "v");
+        NodeData nd2 = new NodeData();
+        nd2.put("k", "v2");
+        WayData way = new WayData();
+        way.put("x", "v");
+        return new PrimitiveTagTransferData(Arrays.asList(nd1, nd2, way));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#getSourcePrimitiveCount(OsmPrimitiveType)}.
+     */
+    @Test
+    public void testGetSourcePrimitiveCount() {
+        PrimitiveTagTransferData data = createTestData();
+        assertEquals(2, data.getSourcePrimitiveCount(OsmPrimitiveType.NODE));
+        assertEquals(1, data.getSourcePrimitiveCount(OsmPrimitiveType.WAY));
+        assertEquals(0, data.getSourcePrimitiveCount(OsmPrimitiveType.RELATION));
+    }
+
+    /**
+     * Test method for {@link PrimitiveTagTransferData#getStatistics()}.
+     */
+    @Test
+    public void testGetStatistics() {
+        PrimitiveTagTransferData data = createTestData();
+        Map<OsmPrimitiveType, Integer> stats = data.getStatistics();
+        assertEquals(2, (int) stats.get(OsmPrimitiveType.NODE));
+        assertEquals(1, (int) stats.get(OsmPrimitiveType.WAY));
+        assertEquals(null, stats.get(OsmPrimitiveType.RELATION));
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java
index daf3159..e33695c 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/properties/RecentTagCollectionTest.java
@@ -35,7 +35,7 @@ public class RecentTagCollectionTest {
      * @throws SearchCompiler.ParseError if an error has been encountered while compiling
      */
     @Test
-    public void test() throws SearchCompiler.ParseError {
+    public void testVarious() throws SearchCompiler.ParseError {
         final RecentTagCollection recentTags = new RecentTagCollection(2);
         assertTrue(recentTags.isEmpty());
 
@@ -75,6 +75,5 @@ public class RecentTagCollectionTest {
         assertEquals(Arrays.asList(bar, baz), recentTags.toList());
         recentTags.ignoreTag(new Tag("name", /*all values */""), searchSetting);
         assertEquals(Collections.emptyList(), recentTags.toList());
-
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorActionTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorActionTest.java
new file mode 100644
index 0000000..7f5d2f9
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorActionTest.java
@@ -0,0 +1,74 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation.actions;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditorTest;
+import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
+import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
+import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
+import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * This class provides the basic test environment for relation editor actions.
+ * @author Michael Zangl
+ */
+ at Ignore
+public abstract class AbstractRelationEditorActionTest {
+    /**
+     * Platform for tooltips.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform();
+
+    protected SelectionTableModel selectionTableModel;
+
+    protected IRelationEditor editor;
+
+    protected MemberTable memberTable;
+
+    protected OsmDataLayer layer;
+
+    protected MemberTableModel memberTableModel;
+
+    /**
+     * Set up the test data required for common tests using one relation.
+     */
+    @Before
+    public void setupTestData() {
+        DataSet ds = new DataSet();
+        final Relation orig = new Relation(1);
+        ds.addPrimitive(orig);
+        layer = new OsmDataLayer(ds, "test", null);
+        memberTableModel = new MemberTableModel(orig, layer, new TaggingPresetHandler() {
+            @Override
+            public void updateTags(List<Tag> tags) {
+            }
+
+            @Override
+            public Collection<OsmPrimitive> getSelection() {
+                return Collections.<OsmPrimitive>singleton(orig);
+            }
+        });
+        selectionTableModel = new SelectionTableModel(layer);
+
+        editor = GenericRelationEditorTest.newRelationEditor(orig, layer);
+
+        memberTable = new MemberTable(layer, editor.getRelation(), memberTableModel);
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java
new file mode 100644
index 0000000..cc020fe
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/PasteMembersActionTest.java
@@ -0,0 +1,126 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.dialogs.relation.actions;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.junit.Test;
+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.gui.datatransfer.ClipboardUtils;
+import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
+import org.openstreetmap.josm.gui.datatransfer.RelationMemberTransferable;
+import org.openstreetmap.josm.gui.datatransfer.data.PrimitiveTransferData;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+
+/**
+ * Test for {@link PasteMembersAction}
+ * @author Michael Zangl
+ */
+public class PasteMembersActionTest extends AbstractRelationEditorActionTest {
+    /**
+     * Test {@link PasteMembersAction#isEnabled()}
+     */
+    @Test
+    public void testEnabledState() {
+        copyString();
+
+        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        ClipboardUtils.getClipboard().addFlavorListener(action);
+
+        try {
+            assertFalse(action.isEnabled());
+
+            Node node = new Node();
+            copyNode(node);
+            syncListener();
+            assertTrue(action.isEnabled());
+
+            copyMember(node);
+            syncListener();
+            assertTrue(action.isEnabled());
+
+            copyString();
+            syncListener();
+            assertFalse(action.isEnabled());
+        } finally {
+            ClipboardUtils.getClipboard().removeFlavorListener(action);
+        }
+    }
+
+    private void syncListener() {
+        GuiHelper.runInEDTAndWait(() -> {
+            // nop
+        });
+    }
+
+    /**
+     * Test that pasting produces the result required
+     */
+    @Test
+    public void testActionWrongClipboard() {
+        copyString();
+        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        action.actionPerformed(null);
+
+        Relation relation = new Relation(1);
+        memberTableModel.applyToRelation(relation);
+        assertEquals(0, relation.getMembersCount());
+    }
+
+    /**
+     * Test that pasting produces the result required
+     */
+    @Test
+    public void testActionForMembers() {
+        Node testNode = new Node(10);
+        layer.data.addPrimitive(testNode);
+        copyMember(testNode);
+        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        action.actionPerformed(null);
+
+        Relation relation = new Relation(1);
+        memberTableModel.applyToRelation(relation);
+        assertEquals(1, relation.getMembersCount());
+        assertEquals("test", relation.getMember(0).getRole());
+        assertSame(testNode, relation.getMember(0).getMember());
+    }
+
+    /**
+     * Test that pasting primitvies produces the result required
+     */
+    @Test
+    public void testActionForPrimitives() {
+        Node testNode = new Node(10);
+        layer.data.addPrimitive(testNode);
+        copyNode(testNode);
+        PasteMembersAction action = new PasteMembersAction(memberTable, layer, editor);
+        action.actionPerformed(null);
+
+        Relation relation = new Relation(1);
+        memberTableModel.applyToRelation(relation);
+        assertEquals(1, relation.getMembersCount());
+        assertEquals("", relation.getMember(0).getRole());
+        assertSame(testNode, relation.getMember(0).getMember());
+    }
+
+    private void copyNode(Node node) {
+        PrimitiveTransferData data = PrimitiveTransferData.getData(Collections.singleton(node));
+        ClipboardUtils.copy(new PrimitiveTransferable(data));
+    }
+
+    private void copyMember(Node node) {
+        Set<RelationMember> members = Collections.singleton(new RelationMember("test", node));
+        ClipboardUtils.copy(new RelationMemberTransferable(members));
+    }
+
+    private void copyString() {
+        ClipboardUtils.copyString("");
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
index f44f7fb..bc5a1ab 100644
--- a/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/dialogs/relation/actions/RelationEditorActionsTest.java
@@ -1,9 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.dialogs.relation.actions;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditorTest;
@@ -14,22 +13,23 @@ import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.TagEditorModel;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests for relation editor actions.
  */
 public class RelationEditorActionsTest {
-
     /**
-     * Setup test.
+     * Plattform for tooltips.
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().platform().commands();
 
     /**
-     * Test all actions with minimal data.
+     * Check that all actions do not crash.
      */
     @Test
     public void testAllActions() {
@@ -57,7 +57,7 @@ public class RelationEditorActionsTest {
         new CancelAction(memberTable, memberTableModel, tagModel, layer, editor, tfRole).actionPerformed(null);
 
         new CopyMembersAction(memberTableModel, layer, editor).actionPerformed(null);
-        new PasteMembersAction(memberTableModel, layer, editor).actionPerformed(null);
+        new PasteMembersAction(memberTable, layer, editor).actionPerformed(null);
 
         new DeleteCurrentRelationAction(layer, editor).actionPerformed(null);
 
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java
index 9194941..b5ce9d4 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/ImageryLayerTest.java
@@ -1,11 +1,15 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.layer;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.gui.layer.imagery.ImageryFilterSettings;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link ImageryLayer} class.
@@ -13,23 +17,20 @@ import org.openstreetmap.josm.JOSMFixture;
 public class ImageryLayerTest {
 
     /**
-     * Setup tests
+     * For creating layers
      */
-    @BeforeClass
-    public static void setUpBeforeClass() {
-        JOSMFixture.createUnitTestFixture().init(true);
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
     /**
-     * Unit test of {@link ImageryLayer.ColorfulImageProcessor#toString}
-     *          and {@link ImageryLayer.GammaImageProcessor#toString()}.
-     *          and {@link ImageryLayer.SharpenImageProcessor#toString()}.
+     * Unit test of {@link ImageryLayer#getFilterSettings()}
      */
     @Test
-    public void testToString() {
+    public void testHasSettings() {
         ImageryLayer layer = TMSLayerTest.createTmsLayer();
-        assertEquals("ColorfulImageProcessor [colorfulness=1.0]", layer.collorfulnessImageProcessor.toString());
-        assertEquals("GammaImageProcessor [gamma=1.0]", layer.gammaImageProcessor.toString());
-        assertEquals("SharpenImageProcessor [sharpenLevel=1.0]", layer.sharpenImageProcessor.toString());
+        ImageryFilterSettings settings = layer.getFilterSettings();
+        assertNotNull(settings);
+        assertSame(settings, layer.getFilterSettings());
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java
index 5fe8dde..a975789 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/LayerManagerTest.java
@@ -32,7 +32,6 @@ import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.testutils.ExpectedRootException;
-import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.bugreport.ReportedException;
 
 /**
@@ -108,7 +107,7 @@ public class LayerManagerTest {
 
         @Override
         public LayerPositionStrategy getDefaultLayerPosition() {
-            return LayerPositionStrategy.afterLast(Predicates.<Layer>alwaysTrue());
+            return LayerPositionStrategy.afterLast(o -> true);
         }
     }
 
@@ -238,12 +237,7 @@ public class LayerManagerTest {
         TestLayer layer1 = new TestLayer() {
             @Override
             public LayerPositionStrategy getDefaultLayerPosition() {
-                return new LayerPositionStrategy() {
-                    @Override
-                    public int getPosition(LayerManager manager) {
-                        return 42;
-                    }
-                };
+                return manager -> 42;
             }
         };
         layerManager.addLayer(layer1);
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java
index c1ee42f..6921f02 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/MainLayerManagerTest.java
@@ -15,7 +15,6 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.tools.Predicates;
 
 /**
  * Tests {@link MainLayerManager}.
@@ -50,7 +49,7 @@ public class MainLayerManagerTest extends LayerManagerTest {
 
         @Override
         public LayerPositionStrategy getDefaultLayerPosition() {
-            return LayerPositionStrategy.afterLast(Predicates.<Layer>alwaysTrue());
+            return LayerPositionStrategy.afterLast(o -> true);
         }
     }
 
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/NoteLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/NoteLayerTest.java
new file mode 100644
index 0000000..f2a018f
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/layer/NoteLayerTest.java
@@ -0,0 +1,30 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openstreetmap.josm.JOSMFixture;
+
+/**
+ * Unit tests of {@link NoteLayer} class.
+ */
+public class NoteLayerTest {
+
+    /**
+     * Setup tests
+     */
+    @BeforeClass
+    public static void setUpBeforeClass() {
+        JOSMFixture.createUnitTestFixture().init();
+    }
+
+    /**
+     * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/13208">#13208</a>.
+     */
+    @Test
+    public void testTicket13208() {
+        assertEquals("0 notes", new NoteLayer().getToolTipText());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessorTest.java b/test/unit/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessorTest.java
new file mode 100644
index 0000000..424bc48
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/layer/imagery/ColorfulImageProcessorTest.java
@@ -0,0 +1,155 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.image.BufferedImage;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests for the {@link ColorfulImageProcessor} class.
+ * @author Michael Zangl
+ */
+public class ColorfulImageProcessorTest {
+
+    private static final int TEST_IMAGE_SIZE = 5;
+
+    /**
+     * No special rules
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link ColorfulImageProcessor#setColorfulness(double)} and {@link ColorfulImageProcessor#getColorfulness()}
+     */
+    @Test
+    public void testSetGet() {
+        ColorfulImageProcessor processor = new ColorfulImageProcessor();
+
+        assertEquals(1, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(2);
+        assertEquals(2, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(0);
+        assertEquals(0, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(0.78);
+        assertEquals(0.78, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(1);
+        assertEquals(1, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(-1);
+        assertEquals(0, processor.getColorfulness(), 0.001);
+
+        processor.setColorfulness(5);
+        assertEquals(5, processor.getColorfulness(), 0.001);
+    }
+
+    /**
+     *
+     */
+    @Test
+    public void testProcessing() {
+        for (ConversionData data : new ConversionData[] {
+                new ConversionData(Color.BLACK, 1.5, Color.BLACK),
+                new ConversionData(Color.WHITE, 0.5, Color.WHITE),
+                new ConversionData(Color.GRAY, 0, Color.GRAY),
+                new ConversionData(Color.GREEN, 1, Color.GREEN),
+                new ConversionData(Color.RED, 1, Color.RED),
+                new ConversionData(Color.BLUE, 1, Color.BLUE),
+                new ConversionData(0x908050, 0, 0x808080),
+                new ConversionData(0x908070, 1, 0x908070),
+                new ConversionData(0x908070, 2, 0x9c7c5c),
+                new ConversionData(0x908070, 2, 0x9c7c5c),
+                new ConversionData(0xf02080, 2, 0xff00ac),
+        }) {
+            for (int type : new int[] {
+                    BufferedImage.TYPE_3BYTE_BGR,
+                    BufferedImage.TYPE_4BYTE_ABGR,
+                    BufferedImage.TYPE_4BYTE_ABGR_PRE }) {
+                assertTrue(runProcessing(data, type));
+            }
+        }
+    }
+
+    private boolean runProcessing(ConversionData data, int type) {
+        BufferedImage image = createImage(data.getOldColor(), type);
+
+        ColorfulImageProcessor processor = new ColorfulImageProcessor();
+        processor.setColorfulness(data.getFactor());
+        image = processor.process(image);
+
+        for (int x = 0; x < TEST_IMAGE_SIZE; x++) {
+            for (int y = 0; y < TEST_IMAGE_SIZE; y++) {
+                Color color = new Color(image.getRGB(x, y));
+                assertEquals(data + ":" + type + ": red", data.getExpectedColor().getRed(), color.getRed(), 1.05);
+                assertEquals(data + ":" + type + ": green", data.getExpectedColor().getGreen(), color.getGreen(), 1.05);
+                assertEquals(data + ":" + type + ": blue", data.getExpectedColor().getBlue(), color.getBlue(), 1.05);
+            }
+        }
+        return true;
+    }
+
+    private BufferedImage createImage(Color color, int type) {
+        BufferedImage image = new BufferedImage(TEST_IMAGE_SIZE, TEST_IMAGE_SIZE, type);
+        Graphics2D graphics = image.createGraphics();
+        graphics.setColor(color);
+        graphics.fillRect(0, 0, TEST_IMAGE_SIZE, TEST_IMAGE_SIZE);
+        return image;
+    }
+
+    private static class ConversionData {
+        private final Color oldColor;
+        private final double factor;
+        private final Color expectedColor;
+
+        ConversionData(Color oldColor, double factor, Color expectedColor) {
+            super();
+            this.oldColor = oldColor;
+            this.factor = factor;
+            this.expectedColor = expectedColor;
+        }
+
+        ConversionData(int oldColor, double factor, int expectedColor) {
+            this(new Color(oldColor), factor, new Color(expectedColor));
+        }
+
+        Color getOldColor() {
+            return oldColor;
+        }
+
+        double getFactor() {
+            return factor;
+        }
+
+        Color getExpectedColor() {
+            return expectedColor;
+        }
+
+        @Override
+        public String toString() {
+            return "ConversionData [oldColor=" + oldColor + ", factor=" + factor + "]";
+        }
+    }
+
+    /**
+     * Test {@link ColorfulImageProcessor#toString()}
+     */
+    @Test
+    public void testToString() {
+        ColorfulImageProcessor processor = new ColorfulImageProcessor();
+        assertEquals("ColorfulImageProcessor [colorfulness=1.0]", processor.toString());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessorTest.java b/test/unit/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessorTest.java
new file mode 100644
index 0000000..82b97a1
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/layer/imagery/GammaImageProcessorTest.java
@@ -0,0 +1,61 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests for the {@link GammaImageProcessor} class.
+ * @author Michael Zangl
+ */
+public class GammaImageProcessorTest {
+
+    /**
+     * No special rules
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link GammaImageProcessor#setGamma(double)} and {@link GammaImageProcessor#getGamma()}
+     */
+    @Test
+    public void testSetGet() {
+        GammaImageProcessor processor = new GammaImageProcessor();
+
+        assertEquals(1, processor.getGamma(), 0.001);
+
+        processor.setGamma(2);
+        assertEquals(2, processor.getGamma(), 0.001);
+
+        processor.setGamma(0);
+        assertEquals(0, processor.getGamma(), 0.001);
+
+        processor.setGamma(0.78);
+        assertEquals(0.78, processor.getGamma(), 0.001);
+
+        processor.setGamma(1);
+        assertEquals(1, processor.getGamma(), 0.001);
+
+        processor.setGamma(-1);
+        assertEquals(-1, processor.getGamma(), 0.001);
+
+        processor.setGamma(5);
+        assertEquals(5, processor.getGamma(), 0.001);
+    }
+
+    /**
+     * Test {@link GammaImageProcessor#toString()}
+     */
+    @Test
+    public void testToString() {
+        GammaImageProcessor processor = new GammaImageProcessor();
+        assertEquals("GammaImageProcessor [gamma=1.0]", processor.toString());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessorTest.java b/test/unit/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessorTest.java
new file mode 100644
index 0000000..1c01586
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/layer/imagery/SharpenImageProcessorTest.java
@@ -0,0 +1,61 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.layer.imagery;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests for the {@link SharpenImageProcessor} class.
+ * @author Michael Zangl
+ */
+public class SharpenImageProcessorTest {
+
+    /**
+     * No special rules
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    /**
+     * Test {@link SharpenImageProcessor#setSharpenLevel(float)} and {@link SharpenImageProcessor#getSharpenLevel()}
+     */
+    @Test
+    public void testSetGet() {
+        SharpenImageProcessor processor = new SharpenImageProcessor();
+
+        assertEquals(1, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(2);
+        assertEquals(2, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(0);
+        assertEquals(0, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(0.78f);
+        assertEquals(0.78, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(1);
+        assertEquals(1, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(-1);
+        assertEquals(0, processor.getSharpenLevel(), 0.001);
+
+        processor.setSharpenLevel(5);
+        assertEquals(5, processor.getSharpenLevel(), 0.001);
+    }
+
+    /**
+     * Test {@link SharpenImageProcessor#toString()}
+     */
+    @Test
+    public void testToString() {
+        SharpenImageProcessor processor = new SharpenImageProcessor();
+        assertEquals("SharpenImageProcessor [sharpenLevel=1.0]", processor.toString());
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java b/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java
new file mode 100644
index 0000000..2911db1
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionTest.java
@@ -0,0 +1,251 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint.mapcss;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+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.Condition.SimpleKeyValueCondition;
+import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.ToTagConvertable;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * This test universally tests all {@link Condition}s.
+ * @author Michael Zangl
+ */
+public class ConditionTest {
+    /**
+     * We need prefs for nodes.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
+    private OsmPrimitive node0;
+    private OsmPrimitive node1;
+    private OsmPrimitive node2;
+    private OsmPrimitive node3;
+    private OsmPrimitive node4;
+
+    /**
+     * Set up some useful test data.
+     */
+    @Before
+    public void setUp() {
+        node0 = OsmUtils.createPrimitive("n");
+        node1 = OsmUtils.createPrimitive("n k1=v1 k2=v1 f1=0.2 r1=ababx c1=xya one=a;b");
+        node2 = OsmUtils.createPrimitive("n k1=v1 k2=v1a f1=0.8 r1=abxabxab c1=xy one=a;;x");
+        node3 = OsmUtils.createPrimitive("n k1=v1 f1=-100 c1=axy one=x;y;z");
+        node4 = OsmUtils.createPrimitive("n k1=v2a k2=v3 f1=x r1=abab c1=axya one=x;a;y");
+    }
+
+    /**
+     * Test {@link Op#EQ}.
+     */
+    @Test
+    public void testKeyValueEq() {
+        Condition op = Condition.createKeyValueCondition("k1", "v1", Op.EQ, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+
+        assertTrue(op instanceof SimpleKeyValueCondition);
+        assertEquals("[k1=v1]", op.toString());
+        assertEquals("k1", ((ToTagConvertable) op).asTag(null).getKey());
+        assertEquals("v1", ((ToTagConvertable) op).asTag(null).getValue());
+    }
+
+    /**
+     * Test {@link Op#EQ} and interpetation as key
+     */
+    @Test
+    public void testKeyValueEqAsKey() {
+        Condition op = Condition.createKeyValueCondition("k1", "k2", Op.EQ, Context.PRIMITIVE, true);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertFalse(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+
+        assertEquals("k1", ((ToTagConvertable) op).asTag(null).getKey());
+        assertEquals("k2", ((ToTagConvertable) op).asTag(null).getValue());
+    }
+
+    /**
+     * Test {@link Op#NEQ}
+     */
+    @Test
+    public void testKeyValueNeq() {
+        Condition op = Condition.createKeyValueCondition("k1", "v1", Op.NEQ, Context.PRIMITIVE, false);
+        assertTrue(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertFalse(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#GREATER_OR_EQUAL}
+     */
+    @Test
+    public void testKeyValueGreatherEq() {
+        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.GREATER_OR_EQUAL, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#GREATER}
+     */
+    @Test
+    public void testKeyValueGreather() {
+        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.GREATER, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#LESS_OR_EQUAL}
+     */
+    @Test
+    public void testKeyValueLessEq() {
+        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.LESS_OR_EQUAL, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertFalse(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#LESS}
+     */
+    @Test
+    public void testKeyValueLess() {
+        Condition op = Condition.createKeyValueCondition("f1", "0.2", Op.LESS, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertFalse(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#REGEX}
+     */
+    @Test
+    public void testKeyValueRegex() {
+        Condition op = Condition.createKeyValueCondition("r1", "(ab){2}", Op.REGEX, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertFalse(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#NREGEX}
+     */
+    @Test
+    public void testKeyValueNregex() {
+        Condition op = Condition.createKeyValueCondition("r1", "(ab){2}", Op.NREGEX, Context.PRIMITIVE, false);
+        assertTrue(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#ONE_OF}
+     */
+    @Test
+    public void testKeyValueOneOf() {
+        Condition op = Condition.createKeyValueCondition("one", "a", Op.ONE_OF, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#BEGINS_WITH}
+     */
+    @Test
+    public void testKeyValueBeginsWith() {
+        Condition op = Condition.createKeyValueCondition("c1", "xy", Op.BEGINS_WITH, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#ENDS_WITH}
+     */
+    @Test
+    public void testKeyValueEndsWith() {
+        Condition op = Condition.createKeyValueCondition("c1", "xy", Op.ENDS_WITH, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertFalse(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test {@link Op#CONTAINS}
+     */
+    @Test
+    public void testKeyValueContains() {
+        Condition op = Condition.createKeyValueCondition("c1", "xy", Op.CONTAINS, Context.PRIMITIVE, false);
+        assertFalse(op.applies(genEnv(node0)));
+        assertTrue(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertTrue(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+    }
+
+    /**
+     * Test of {@link Condition#createRegexpKeyRegexpValueCondition(String, String, Op)}
+     */
+    @Test
+    public void testRegexpKeyValueRegexpCondition() {
+        Condition op = Condition.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.REGEX);
+        assertFalse(op.applies(genEnv(node0)));
+        assertFalse(op.applies(genEnv(node1)));
+        assertTrue(op.applies(genEnv(node2)));
+        assertFalse(op.applies(genEnv(node3)));
+        assertTrue(op.applies(genEnv(node4)));
+
+        Condition notOp = Condition.createRegexpKeyRegexpValueCondition("^k", "\\da", Op.NREGEX);
+        assertTrue(notOp.applies(genEnv(node0)));
+        assertTrue(notOp.applies(genEnv(node1)));
+        assertFalse(notOp.applies(genEnv(node2)));
+        assertTrue(notOp.applies(genEnv(node3)));
+        assertFalse(notOp.applies(genEnv(node4)));
+    }
+
+    private Environment genEnv(OsmPrimitive primitive) {
+        return new Environment(primitive);
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java
index 676f6d6..6ce0494 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/ToolbarPreferencesTest.java
@@ -57,7 +57,7 @@ public class ToolbarPreferencesTest {
     }
 
     @Test
-    public void test1() {
+    public void testCase1() {
         Map<String, Action> actions = new HashMap<>();
         actions.put("action", new TestAction());
         ActionParser parser = new ActionParser(actions);
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/advanced/PrefEntryTest.java b/test/unit/org/openstreetmap/josm/gui/preferences/advanced/PrefEntryTest.java
index 66b9838..d22f520 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/advanced/PrefEntryTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/advanced/PrefEntryTest.java
@@ -53,7 +53,7 @@ public class PrefEntryTest {
      * Unit test of methods {@link PrefEntry#equals} and {@link PrefEntry#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(PrefEntry.class).usingGetClass()
             .withIgnoredFields("value", "defaultValue", "isDefault", "changed")
             .verify();
diff --git a/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
index 76a1dc6..f766cde 100644
--- a/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
+++ b/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
@@ -74,9 +74,12 @@ public class TaggingPresetPreferenceTestIT {
                     }
                     System.out.println(" => KO");
                 }
-            } catch (SAXException e) {
+            } catch (SAXException | IllegalArgumentException e) {
                 e.printStackTrace();
-                allErrors.add(e);
+                if (!source.url.contains("yopaseopor/traffic_signs")) {
+                    // ignore https://raw.githubusercontent.com/yopaseopor/traffic_signs_preset_JOSM cause too much errors
+                    allErrors.add(e);
+                }
                 System.out.println(" => KO");
             }
         }
@@ -93,7 +96,8 @@ public class TaggingPresetPreferenceTestIT {
             if (message.contains(TaggingPreset.PRESET_ICON_ERROR_MSG_PREFIX)) {
                 error = true;
                 // ignore https://github.com/yopaseopor/traffic_signs_preset_JOSM because of far too frequent missing icons errors
-                if (!source.url.contains("yopaseopor/traffic_signs")) {
+                // ignore https://github.com/molysgaard/OAM-JOSM not responding fast enough to our pull requests
+                if (!source.url.contains("yopaseopor/traffic_signs") && !source.url.contains("molysgaard/OAM-JOSM")) {
                     allMessages.add(message);
                 }
             }
diff --git a/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java b/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
index 72959f0..9a4625c 100644
--- a/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/tagging/presets/PresetClassificationsTest.java
@@ -9,6 +9,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -19,7 +20,6 @@ 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;
 
 /**
@@ -47,12 +47,7 @@ public class PresetClassificationsTest {
     }
 
     private List<String> getMatchingPresetNames(String searchText, OsmPrimitive w) {
-        return Utils.transform(getMatchingPresets(searchText, w), new Utils.Function<PresetClassification, String>() {
-            @Override
-            public String apply(PresetClassification x) {
-                return x.preset.name;
-            }
-        });
+        return getMatchingPresets(searchText, w).stream().map(x -> x.preset.name).collect(Collectors.toList());
     }
 
     /**
diff --git a/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java b/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
index 2162b62..25559b8 100644
--- a/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReaderTest.java
@@ -4,10 +4,12 @@ package org.openstreetmap.josm.gui.tagging.presets;
 import static org.CustomMatchers.hasSize;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -16,7 +18,6 @@ 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;
 
 /**
@@ -38,7 +39,7 @@ public class TaggingPresetReaderTest {
      * @throws IOException if any I/O error occurs
      */
     @Test
-    public void test8954() throws SAXException, IOException {
+    public void testTicket8954() throws SAXException, IOException {
         String presetfile = TestUtils.getRegressionDataFile(8954, "preset.xml");
         final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(presetfile, false);
         Assert.assertEquals("Number of preset items", 1, presets.size());
@@ -58,12 +59,8 @@ public class TaggingPresetReaderTest {
         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 x instanceof Key ? ((Key) x).key : null;
-            }
-        });
+        assertTrue(abc.data.stream().allMatch(Key.class::isInstance));
+        final List<String> keys = abc.data.stream().map(x -> ((Key) x).key).collect(Collectors.toList());
         assertEquals("[A1, A2, A3, B1, B2, B3, C1, C2, C3]", keys.toString());
     }
 
@@ -74,7 +71,7 @@ public class TaggingPresetReaderTest {
      * @throws IOException if any I/O error occurs
      */
     @Test
-    public void readDefaulPresets() throws SAXException, IOException {
+    public void testReadDefaulPresets() throws SAXException, IOException {
         String presetfile = "resource://data/defaultpresets.xml";
         final Collection<TaggingPreset> presets = TaggingPresetReader.readAll(presetfile, true);
         Assert.assertTrue("Default presets are empty", presets.size() > 0);
diff --git a/test/unit/org/openstreetmap/josm/io/GpxReaderTest.java b/test/unit/org/openstreetmap/josm/io/GpxReaderTest.java
index 00c20ee..407f9d6 100644
--- a/test/unit/org/openstreetmap/josm/io/GpxReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/io/GpxReaderTest.java
@@ -31,8 +31,8 @@ public class GpxReaderTest {
      */
     public static GpxData parseGpxData(String filename) throws IOException, SAXException {
         final GpxData result;
-        try (final FileInputStream in = new FileInputStream(new File(filename))) {
-            final GpxReader reader = new GpxReader(in);
+        try (FileInputStream in = new FileInputStream(new File(filename))) {
+            GpxReader reader = new GpxReader(in);
             assertTrue(reader.parse(false));
             result = reader.getGpxData();
         }
diff --git a/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java b/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java
index b3172ef..f53e7ae 100644
--- a/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/io/NmeaReaderTest.java
@@ -35,7 +35,7 @@ public class NmeaReaderTest {
      * Unit test of methods {@link NMEA_TYPE#equals} and {@link NMEA_TYPE#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(NMEA_TYPE.class).verify();
     }
 
diff --git a/test/unit/org/openstreetmap/josm/io/OsmWriterTest.java b/test/unit/org/openstreetmap/josm/io/OsmWriterTest.java
index 54112ac..cb75d90 100644
--- a/test/unit/org/openstreetmap/josm/io/OsmWriterTest.java
+++ b/test/unit/org/openstreetmap/josm/io/OsmWriterTest.java
@@ -1,7 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -10,7 +10,6 @@ import java.util.List;
 
 import org.junit.Test;
 import org.openstreetmap.josm.data.osm.NodeData;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * Unit tests of {@link OsmWriter} class.
@@ -32,13 +31,9 @@ public class OsmWriterTest {
 
         Collections.sort(ids, OsmWriter.byIdComparator);
 
-        final String idsAsString = Utils.transform(ids, new Utils.Function<NodeData, Object>() {
-            @Override
-            public Object apply(NodeData x) {
-                return x.getUniqueId();
-            }
-        }).toString();
-
-        assertEquals("[-3, -12, -20, -9223372036854775808, 0, 2, 12, 65, 9223372036854775807]", idsAsString);
+        final long[] longIds = ids.stream().mapToLong(NodeData::getUniqueId).toArray();
+        assertArrayEquals(new long[] {
+                -3, -12, -20, -9223372036854775808L, 0, 2, 12, 65, 9223372036854775807L
+        }, longIds);
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/DNSNameTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/DNSNameTest.java
index 9acc8d9..6880c74 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/DNSNameTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/DNSNameTest.java
@@ -38,7 +38,7 @@ public class DNSNameTest {
      * Unit test of methods {@link DNSName#equals} and {@link DNSName#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(DNSName.class).suppress(Warning.NULL_FIELDS).verify();
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java b/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
index d2216ef..87bf617 100644
--- a/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/io/session/SessionReaderTest.java
@@ -14,6 +14,7 @@ import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.TestUtils;
+import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -124,10 +125,10 @@ public class SessionReaderTest {
         final List<Layer> layers = testRead("bing.jos");
         assertEquals(layers.size(), 1);
         assertTrue(layers.get(0) instanceof ImageryLayer);
-        final ImageryLayer image = (ImageryLayer) layers.get(0);
+        final AbstractTileSourceLayer<?> image = (AbstractTileSourceLayer<?>) layers.get(0);
         assertEquals("Bing aerial imagery", image.getName());
-        assertEquals(image.getDx(), 12.34, 1e-9);
-        assertEquals(image.getDy(), -56.78, 1e-9);
+        assertEquals(image.getDisplaySettings().getDx(), 12.34, 1e-9);
+        assertEquals(image.getDisplaySettings().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 3cb237c..f1c922a 100644
--- a/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
+++ b/test/unit/org/openstreetmap/josm/io/session/SessionWriterTest.java
@@ -14,6 +14,7 @@ import java.util.Map;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.WayPoint;
@@ -135,8 +136,8 @@ public class SessionWriterTest {
     }
 
     private ImageryLayer createImageryLayer() {
-        ImageryLayer layer = new TMSLayer(new ImageryInfo("the name", "http://www.url.com/"));
-        layer.setOffset(12, 34);
+        TMSLayer layer = new TMSLayer(new ImageryInfo("the name", "http://www.url.com/"));
+        layer.getDisplaySettings().setDisplacement(new EastNorth(12, 34));
         return layer;
     }
 
diff --git a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
index f79ed33..1acafbd 100644
--- a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTest.java
@@ -36,7 +36,7 @@ public class PluginHandlerTest {
      * Unit test of methods {@link DeprecatedPlugin#equals} and {@link DeprecatedPlugin#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(DeprecatedPlugin.class).usingGetClass().verify();
     }
 
diff --git a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
index 30c9aad..abb8a2d 100644
--- a/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
+++ b/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
@@ -88,7 +88,12 @@ public class PluginHandlerTestIT {
     public static void downloadPlugins(Collection<PluginInformation> plugins) {
         // Update the locally installed plugins
         PluginDownloadTask pluginDownloadTask = new PluginDownloadTask(NullProgressMonitor.INSTANCE, plugins, null);
+        // Increase default timeout to avoid random network errors on big jar files
+        int defTimeout = Main.pref.getInteger("socket.timeout.read", 30);
+        Main.pref.putInteger("socket.timeout.read", 2 * defTimeout);
         pluginDownloadTask.run();
+        // Restore default timeout
+        Main.pref.putInteger("socket.timeout.read", defTimeout);
         assertTrue(pluginDownloadTask.getFailedPlugins().toString(), pluginDownloadTask.getFailedPlugins().isEmpty());
         assertEquals(plugins.size(), pluginDownloadTask.getDownloadedPlugins().size());
 
diff --git a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
index 9fba4cd..634b625 100644
--- a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
+++ b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
@@ -3,15 +3,15 @@ package org.openstreetmap.josm.testutils;
 
 import java.io.File;
 import java.io.IOException;
+import java.text.MessageFormat;
 import java.util.TimeZone;
 
-import org.junit.rules.DisableOnDebug;
 import org.junit.rules.TemporaryFolder;
 import org.junit.rules.TestRule;
-import org.junit.rules.Timeout;
 import org.junit.runner.Description;
 import org.junit.runners.model.InitializationError;
 import org.junit.runners.model.Statement;
+import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -19,6 +19,7 @@ import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.tools.I18n;
+import org.openstreetmap.josm.tools.MemoryManagerTest;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -32,20 +33,22 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  * @author Michael Zangl
  */
 public class JOSMTestRules implements TestRule {
-    private Timeout timeout = Timeout.seconds(10);
+    private int timeout = 10 * 1000;
     private TemporaryFolder josmHome;
     private boolean usePreferences = false;
     private APIType useAPI = APIType.NONE;
     private String i18n = null;
     private boolean platform;
     private boolean useProjection;
+    private boolean commands;
+    private boolean allowMemoryManagerLeaks;
 
     /**
      * Disable the default timeout for this test. Use with care.
      * @return this instance, for easy chaining
      */
     public JOSMTestRules noTimeout() {
-        timeout = null;
+        timeout = -1;
         return this;
     }
 
@@ -55,7 +58,7 @@ public class JOSMTestRules implements TestRule {
      * @return this instance, for easy chaining
      */
     public JOSMTestRules timeout(int millis) {
-        timeout = Timeout.millis(millis);
+        timeout = millis;
         return this;
     }
 
@@ -133,22 +136,32 @@ public class JOSMTestRules implements TestRule {
         return this;
     }
 
+    /**
+      * Allow the execution of commands using {@link Main#undoRedo}
+      * @return this instance, for easy chaining
+      */
+    public JOSMTestRules commands() {
+        commands = true;
+        return this;
+    }
+
+    /**
+     * Allow the memory manager to contain items after execution of the test cases.
+     * @return this instance, for easy chaining
+     */
+    public JOSMTestRules memoryManagerLeaks() {
+        allowMemoryManagerLeaks = true;
+        return this;
+    }
+
     @Override
-    public Statement apply(final Statement base, Description description) {
-        Statement statement = new Statement() {
-            @Override
-            public void evaluate() throws Throwable {
-                before();
-                try {
-                    base.evaluate();
-                } finally {
-                    after();
-                }
-            }
-        };
-        if (timeout != null) {
-            statement = new DisableOnDebug(timeout).apply(statement, description);
+    public Statement apply(Statement base, Description description) {
+        Statement statement = base;
+        if (timeout > 0) {
+            // TODO: new DisableOnDebug(timeout)
+            statement = new FailOnTimeoutStatement(statement, timeout);
         }
+        statement = new CreateJosmEnvironment(statement);
         if (josmHome != null) {
             statement = josmHome.apply(statement, description);
         }
@@ -160,10 +173,11 @@ public class JOSMTestRules implements TestRule {
      * @throws InitializationError If an error occured while creating the required environment.
      */
     protected void before() throws InitializationError {
-        cleanUpFromJosmFixture();
-
         // Tests are running headless by default.
         System.setProperty("java.awt.headless", "true");
+
+        cleanUpFromJosmFixture();
+
         // All tests use the same timezone.
         TimeZone.setDefault(DateUtils.UTC);
         // Set log level to info
@@ -218,6 +232,11 @@ public class JOSMTestRules implements TestRule {
         if (platform) {
             Main.determinePlatformHook();
         }
+
+        if (commands) {
+            // TODO: Implement a more selective version of this once Main is restructured.
+            JOSMFixture.createUnitTestFixture().init(true);
+        }
     }
 
     /**
@@ -225,6 +244,7 @@ public class JOSMTestRules implements TestRule {
      */
     @SuppressFBWarnings("DM_GC")
     private void cleanUpFromJosmFixture() {
+        MemoryManagerTest.resetState(true);
         Main.getLayerManager().resetState();
         Main.pref = null;
         Main.platform = null;
@@ -244,6 +264,7 @@ public class JOSMTestRules implements TestRule {
         });
         // Remove all layers
         Main.getLayerManager().resetState();
+        MemoryManagerTest.resetState(allowMemoryManagerLeaks);
 
         // TODO: Remove global listeners and other global state.
         Main.pref = null;
@@ -252,7 +273,82 @@ public class JOSMTestRules implements TestRule {
         System.gc();
     }
 
+    private final class CreateJosmEnvironment extends Statement {
+        private final Statement base;
+
+        private CreateJosmEnvironment(Statement base) {
+            this.base = base;
+        }
+
+        @Override
+        public void evaluate() throws Throwable {
+            before();
+            try {
+                base.evaluate();
+            } finally {
+                after();
+            }
+        }
+    }
+
     enum APIType {
         NONE, FAKE, DEV
     }
+
+    /**
+     * The junit timeout statement has problems when switchting timezones. This one does not.
+     * @author Michael Zangl
+     */
+    private static class FailOnTimeoutStatement extends Statement {
+
+        private int timeout;
+        private Statement original;
+
+        FailOnTimeoutStatement(Statement original, int timeout) {
+            this.original = original;
+            this.timeout = timeout;
+        }
+
+        @Override
+        public void evaluate() throws Throwable {
+            TimeoutThread thread = new TimeoutThread(original);
+            thread.setDaemon(true);
+            thread.start();
+            thread.join(timeout);
+            thread.interrupt();
+            if (!thread.isDone) {
+                Throwable exception = thread.getExecutionException();
+                if (exception != null) {
+                    throw exception;
+                } else {
+                    throw new Exception(MessageFormat.format("Test timed out after {0}ms", timeout));
+                }
+            }
+        }
+    }
+
+    private static final class TimeoutThread extends Thread {
+        public boolean isDone;
+        private Statement original;
+        private Throwable exceptionCaught;
+
+        private TimeoutThread(Statement original) {
+            super("Timeout runner");
+            this.original = original;
+        }
+
+        public Throwable getExecutionException() {
+            return exceptionCaught;
+        }
+
+        @Override
+        public void run() {
+            try {
+                original.evaluate();
+                isDone = true;
+            } catch (Throwable e) {
+                exceptionCaught = e;
+            }
+        }
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java b/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
index 658ba4f..0fcf036 100644
--- a/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/ExifReaderTest.java
@@ -34,7 +34,7 @@ public class ExifReaderTest {
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
-    public JOSMTestRules test = new JOSMTestRules().timeout(60000);
+    public JOSMTestRules test = new JOSMTestRules();
 
     private File orientationSampleFile, directionSampleFile;
 
diff --git a/test/unit/org/openstreetmap/josm/tools/GeoUrlToBoundsTest.java b/test/unit/org/openstreetmap/josm/tools/GeoUrlToBoundsTest.java
new file mode 100644
index 0000000..84aa473
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/tools/GeoUrlToBoundsTest.java
@@ -0,0 +1,57 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+/**
+ * Unit tests of {@link GeoUrlToBoundsTest} class.
+ */
+public class GeoUrlToBoundsTest {
+
+    /**
+     * Tests parsing Geo URLs with the zoom specified.
+     */
+    @Test
+    public void testParse() {
+        assertThat(
+                GeoUrlToBounds.parse("geo:12.34,56.78?z=9"),
+                is(OsmUrlToBounds.positionToBounds(12.34, 56.78, 9))
+        );
+    }
+
+    /**
+     * Tests parsing Geo URLs without the zoom parameter.
+     */
+    @Test
+    public void testParseWithoutZoom() {
+        assertThat(
+                GeoUrlToBounds.parse("geo:12.34,56.78"),
+                is(OsmUrlToBounds.positionToBounds(12.34, 56.78, 18))
+        );
+        assertThat(
+                GeoUrlToBounds.parse("geo:-37.786971,-122.399677"),
+                is(OsmUrlToBounds.positionToBounds(-37.786971, -122.399677, 18))
+        );
+    }
+
+    /**
+     * Tests parsing invalid Geo URL.
+     */
+    @Test
+    public void testInvalid() {
+        assertThat(GeoUrlToBounds.parse("geo:foo"), nullValue());
+        assertThat(GeoUrlToBounds.parse("geo:foo,bar"), nullValue());
+    }
+
+    /**
+     * Tests parsing null.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testNull() {
+        GeoUrlToBounds.parse(null);
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/tools/GeometryTest.java b/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
index f6eb1cc..04235e4 100644
--- a/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/GeometryTest.java
@@ -5,9 +5,8 @@ import java.io.FileInputStream;
 import java.util.List;
 
 import org.junit.Assert;
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.actions.search.SearchCompiler;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -15,19 +14,20 @@ import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.io.OsmReader;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link Geometry} class.
  */
 public class GeometryTest {
-
     /**
-     * Setup test.
+     * Primitives need preferences and projection.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences().projection();
 
     /**
      * Test of {@link Geometry#getLineLineIntersection} method.
@@ -70,7 +70,8 @@ public class GeometryTest {
     public void testClosedWayArea() throws Exception {
         try (FileInputStream in = new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm")) {
             DataSet ds = OsmReader.parseDataSet(in, null);
-            Way closedWay = (Way) Utils.filter(ds.allPrimitives(), SearchCompiler.compile("landuse=forest")).iterator().next();
+            Way closedWay = (Way) SubclassFilteredCollection.filter(ds.allPrimitives(),
+                    SearchCompiler.compile("landuse=forest")).iterator().next();
             Assert.assertEquals(5760015.7353515625, Geometry.closedWayArea(closedWay), 1e-3);
             Assert.assertEquals(5760015.7353515625, Geometry.computeArea(closedWay), 1e-3);
         }
@@ -100,7 +101,8 @@ public class GeometryTest {
     public void testAreaAndPerimeter() throws Exception {
         try (FileInputStream in = new FileInputStream(TestUtils.getTestDataRoot() + "create_multipolygon.osm")) {
             DataSet ds = OsmReader.parseDataSet(in, null);
-            Way closedWay = (Way) Utils.filter(ds.allPrimitives(), SearchCompiler.compile("landuse=forest")).iterator().next();
+            Way closedWay = (Way) SubclassFilteredCollection.filter(ds.allPrimitives(),
+                    SearchCompiler.compile("landuse=forest")).iterator().next();
             Geometry.AreaAndPerimeter areaAndPerimeter = Geometry.getAreaAndPerimeter(closedWay.getNodes());
             Assert.assertEquals(12495000., areaAndPerimeter.getArea(), 1e-3);
             Assert.assertEquals(15093.201209424187, areaAndPerimeter.getPerimeter(), 1e-3);
diff --git a/test/unit/org/openstreetmap/josm/tools/MemoryManagerTest.java b/test/unit/org/openstreetmap/josm/tools/MemoryManagerTest.java
new file mode 100644
index 0000000..0c4c353
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/tools/MemoryManagerTest.java
@@ -0,0 +1,168 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.tools.MemoryManager.MemoryHandle;
+import org.openstreetmap.josm.tools.MemoryManager.NotEnoughMemoryException;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Tests the {@link MemoryManager} class.
+ * @author Michael Zangl
+ */
+public class MemoryManagerTest {
+    /**
+     * Base test environment
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().memoryManagerLeaks();
+
+    /**
+     * Test {@link MemoryManager#allocateMemory(String, long, java.util.function.Supplier)}
+     * @throws NotEnoughMemoryException if there is not enough memory
+     */
+    @Test
+    public void testUseMemory() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+        long available = manager.getAvailableMemory();
+        assertTrue(available < Runtime.getRuntime().maxMemory());
+        assertEquals(available, manager.getMaxMemory());
+
+        Object o1 = new Object();
+        MemoryHandle<Object> testMemory = manager.allocateMemory("test", 10, () -> o1);
+        assertEquals(available - 10, manager.getAvailableMemory());
+        assertSame(o1, testMemory.get());
+        assertEquals(10, testMemory.getSize());
+        assertTrue(testMemory.toString().startsWith("MemoryHandle"));
+
+        manager.allocateMemory("test2", 10, Object::new);
+        assertEquals(available - 20, manager.getAvailableMemory());
+
+        testMemory.free();
+        assertEquals(available - 10, manager.getAvailableMemory());
+    }
+
+    /**
+     * Test that {@link MemoryHandle#get()} checks for use after free.
+     * @throws NotEnoughMemoryException if there is not enough memory
+     */
+    @Test(expected = IllegalStateException.class)
+    public void testUseAfterFree() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+        MemoryHandle<Object> testMemory = manager.allocateMemory("test", 10, Object::new);
+        testMemory.free();
+        testMemory.get();
+    }
+
+    /**
+     * Test that {@link MemoryHandle#get()} checks for free after free.
+     * @throws NotEnoughMemoryException if there is not enough memory
+     */
+    @Test(expected = IllegalStateException.class)
+    public void testFreeAfterFree() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+        MemoryHandle<Object> testMemory = manager.allocateMemory("test", 10, Object::new);
+        testMemory.free();
+        testMemory.free();
+    }
+
+    /**
+     * Test that too big allocations fail
+     * @throws NotEnoughMemoryException always
+     */
+    @Test(expected = NotEnoughMemoryException.class)
+    public void testAllocationFails() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+        long available = manager.getAvailableMemory();
+
+        manager.allocateMemory("test", available + 1, () -> {
+            fail("Should not reach");
+            return null;
+        });
+    }
+
+    /**
+     * Test that allocations with null object fail
+     * @throws NotEnoughMemoryException never
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testSupplierFails() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+
+        manager.allocateMemory("test", 1, () -> null);
+    }
+
+    /**
+     * Test {@link MemoryManager#isAvailable(long)}
+     */
+    @Test
+    public void testIsAvailable() {
+        MemoryManager manager = MemoryManager.getInstance();
+        assertTrue(manager.isAvailable(10));
+        assertTrue(manager.isAvailable(100));
+        assertTrue(manager.isAvailable(10));
+    }
+
+    /**
+     * Test {@link MemoryManager#isAvailable(long)} for negative number
+     * @throws NotEnoughMemoryException never
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testIsAvailableFails() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+
+        manager.isAvailable(-10);
+    }
+
+    /**
+     * Test {@link MemoryManager#resetState()}
+     * @throws NotEnoughMemoryException if there is not enough memory
+     */
+    @Test
+    public void testResetState() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+        assertTrue(manager.resetState().isEmpty());
+
+        manager.allocateMemory("test", 10, Object::new);
+        manager.allocateMemory("test2", 10, Object::new);
+        assertEquals(2, manager.resetState().size());
+
+        assertTrue(manager.resetState().isEmpty());
+    }
+
+    /**
+     * Test {@link MemoryManager#resetState()}
+     * @throws NotEnoughMemoryException if there is not enough memory
+     */
+    @Test(expected = IllegalStateException.class)
+    public void testResetStateUseAfterFree() throws NotEnoughMemoryException {
+        MemoryManager manager = MemoryManager.getInstance();
+        MemoryHandle<Object> testMemory = manager.allocateMemory("test", 10, Object::new);
+
+        assertFalse(manager.resetState().isEmpty());
+        testMemory.get();
+    }
+
+    /**
+     * Reset the state of the memory manager
+     * @param allowMemoryManagerLeaks If this is set, no exception is thrown if there were leaking entries.
+     */
+    public static void resetState(boolean allowMemoryManagerLeaks) {
+        List<MemoryHandle<?>> hadLeaks = MemoryManager.getInstance().resetState();
+        if (!allowMemoryManagerLeaks) {
+            assertTrue("Memory manager had leaking memory: " + hadLeaks, hadLeaks.isEmpty());
+        }
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/tools/MultiLineFlowLayoutTest.java b/test/unit/org/openstreetmap/josm/tools/MultiLineFlowLayoutTest.java
new file mode 100644
index 0000000..fc2e343
--- /dev/null
+++ b/test/unit/org/openstreetmap/josm/tools/MultiLineFlowLayoutTest.java
@@ -0,0 +1,136 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.tools;
+
+import static org.junit.Assert.assertEquals;
+
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
+/**
+ * Test {@link MultiLineFlowLayout}
+ * @author Michael Zangl
+ */
+public class MultiLineFlowLayoutTest {
+    /**
+     * No special rules.
+     */
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
+
+    private static final int TEST_WIDHT = 500;
+    private JPanel container;
+
+    /**
+     * Prepare test container.
+     */
+    @Before
+    public void setUp() {
+        JPanel parent = new JPanel();
+        parent.setBounds(0, 0, TEST_WIDHT, 500);
+
+        container = new JPanel(new MultiLineFlowLayout(FlowLayout.CENTER, 0, 0));
+        parent.add(container);
+    }
+
+    /**
+     * Test that one line is layed out correctly
+     */
+    @Test
+    public void testOneLine() {
+        fillOneLine();
+
+        container.invalidate();
+        Dimension preffered = container.getPreferredSize();
+        assertEquals(TEST_WIDHT, preffered.width);
+        assertEquals(100, preffered.height);
+
+        Dimension minimum = container.getMinimumSize();
+        assertEquals(TEST_WIDHT, minimum.width);
+        assertEquals(50, minimum.height);
+    }
+
+    /**
+     * Test that insets are respected
+     */
+    @Test
+    public void testInsets() {
+        fillOneLine();
+
+        container.setBorder(BorderFactory.createEmptyBorder(3, 0, 7, 0));
+        container.invalidate();
+        Dimension preffered = container.getPreferredSize();
+        assertEquals(TEST_WIDHT, preffered.width);
+        assertEquals(110, preffered.height);
+
+        // This should force wrapping
+        container.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 40));
+        container.invalidate();
+        preffered = container.getPreferredSize();
+        assertEquals(TEST_WIDHT, preffered.width);
+        assertEquals(200, preffered.height);
+    }
+
+    /**
+     * Test that gaps are respected
+     */
+    @Test
+    public void testGaps() {
+        fillOneLine();
+
+        container.setLayout(new MultiLineFlowLayout(FlowLayout.LEADING, 20, 10));
+        container.invalidate();
+        Dimension preffered = container.getPreferredSize();
+        assertEquals(TEST_WIDHT, preffered.width);
+        assertEquals(230, preffered.height);
+    }
+
+    /**
+     * Test that it behaves the same as FlowLayout for one line.
+     */
+    @Test
+    public void testSameAsFlowLayout() {
+        fillOneLine();
+        JPanel childx = new JPanel();
+        childx.setPreferredSize(new Dimension(300, 100));
+        childx.setMinimumSize(new Dimension(200, 50));
+        childx.setVisible(false);
+        container.add(childx);
+        container.setBorder(BorderFactory.createEmptyBorder(3, 4, 5, 6));
+
+        container.setLayout(new MultiLineFlowLayout(FlowLayout.LEADING, 2, 1));
+        container.invalidate();
+        Dimension is = container.getPreferredSize();
+
+        container.setLayout(new FlowLayout(FlowLayout.LEADING, 2, 1));
+        container.invalidate();
+        Dimension should = container.getPreferredSize();
+
+        assertEquals(should.height, is.height);
+    }
+
+    private void fillOneLine() {
+        JPanel child1 = new JPanel();
+        child1.setPreferredSize(new Dimension(300, 100));
+        child1.setMinimumSize(new Dimension(200, 50));
+        container.add(child1);
+        JPanel child2 = new JPanel();
+        child2.setPreferredSize(new Dimension(100, 100));
+        child1.setMinimumSize(new Dimension(100, 50));
+        container.add(child2);
+        JPanel child3 = new JPanel();
+        child3.setPreferredSize(new Dimension(50, 100));
+        child1.setMinimumSize(new Dimension(50, 50));
+        container.add(child3);
+    }
+}
diff --git a/test/unit/org/openstreetmap/josm/tools/MultiMapTest.java b/test/unit/org/openstreetmap/josm/tools/MultiMapTest.java
index 5c9daf3..f0654f3 100644
--- a/test/unit/org/openstreetmap/josm/tools/MultiMapTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/MultiMapTest.java
@@ -19,7 +19,7 @@ public class MultiMapTest {
      * Unit test of methods {@link MultiMap#equals} and {@link MultiMap#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(MultiMap.class).usingGetClass().verify();
     }
 
diff --git a/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java b/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
index ce7de70..9ecf4a2 100644
--- a/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/OsmUrlToBoundsTest.java
@@ -71,9 +71,7 @@ public class OsmUrlToBoundsTest {
                 bounds = OsmUrlToBounds.parse(item.url);
             } catch (IllegalArgumentException e) {
                 // Ignore. check if bounds is null after
-                if (Main.isTraceEnabled()) {
-                    Main.trace(e.getMessage());
-                }
+                Main.trace(e);
             }
             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 d8c8af0..125042f 100644
--- a/test/unit/org/openstreetmap/josm/tools/OverpassTurboQueryWizardTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/OverpassTurboQueryWizardTest.java
@@ -3,23 +3,22 @@ package org.openstreetmap.josm.tools;
 
 import static org.junit.Assert.assertEquals;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link OverpassTurboQueryWizard} class.
  */
 public class OverpassTurboQueryWizardTest {
-
     /**
-     * Setup test.
+     * Base test environment is enough
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init(false);
-        OverpassTurboQueryWizard.getInstance();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules();
 
     /**
      * Test key=value.
diff --git a/test/unit/org/openstreetmap/josm/tools/PairTest.java b/test/unit/org/openstreetmap/josm/tools/PairTest.java
index 8a0d06a..23a7bbc 100644
--- a/test/unit/org/openstreetmap/josm/tools/PairTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/PairTest.java
@@ -15,7 +15,7 @@ public class PairTest {
      * Unit test of methods {@link Pair#equals} and {@link Pair#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(Pair.class).suppress(Warning.NONFINAL_FIELDS).verify();
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/PredicatesTest.java b/test/unit/org/openstreetmap/josm/tools/PredicatesTest.java
index dded4b1..d69d4f3 100644
--- a/test/unit/org/openstreetmap/josm/tools/PredicatesTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/PredicatesTest.java
@@ -8,200 +8,215 @@ import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Properties;
+import java.util.function.Predicate;
 import java.util.regex.Pattern;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * This test tests the {@link Predicate}s created by the {@link Predicates} class.
  *
  * @author Michael Zangl
+ * @deprecated to remove when {@code Predicates} class is removed
  */
+ at Deprecated
 public class PredicatesTest {
     /**
-     * Not needed by this test, but JOSM has so many dependencies :-(
+     * Some of this depends on preferences.
+     * @deprecated to remove when {@code Predicates} class is removed
      */
-    @BeforeClass
-    public static void setUpClass() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Deprecated
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
     /**
      * Test {@link Predicates#alwaysTrue()}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testAlwaysTrue() {
         Predicate<Object> alwaysTrue = Predicates.alwaysTrue();
-        assertTrue(alwaysTrue.evaluate(new Object()));
-        assertTrue(alwaysTrue.evaluate(Boolean.TRUE));
+        assertTrue(alwaysTrue.test(new Object()));
+        assertTrue(alwaysTrue.test(Boolean.TRUE));
     }
 
     /**
      * Test {@link Predicates#alwaysFalse()}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testAlwaysFalse() {
         Predicate<Object> alwaysFalse = Predicates.alwaysFalse();
-        assertFalse(alwaysFalse.evaluate(new Object()));
-        assertFalse(alwaysFalse.evaluate(Boolean.TRUE));
-    }
-
-    /**
-     * Test {@link Predicates#not(Predicate)}
-     */
-    @Test
-    public void testNot() {
-        Predicate<Boolean> not = Predicates.not(new Predicate<Boolean>() {
-            @Override
-            public boolean evaluate(Boolean object) {
-                return object;
-            }
-        });
-        assertFalse(not.evaluate(Boolean.TRUE));
-        assertTrue(not.evaluate(Boolean.FALSE));
+        assertFalse(alwaysFalse.test(new Object()));
+        assertFalse(alwaysFalse.test(Boolean.TRUE));
     }
 
     /**
      * Test {@link Predicates#equalTo(Object)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testEqualTo() {
         Integer testObject = Integer.valueOf(1);
         Predicate<Integer> equalTo = Predicates.equalTo(testObject);
-        assertTrue(equalTo.evaluate(testObject));
-        assertTrue(equalTo.evaluate(Integer.valueOf(1)));
+        assertTrue(equalTo.test(testObject));
+        assertTrue(equalTo.test(Integer.valueOf(1)));
 
-        assertFalse(equalTo.evaluate(Integer.valueOf(2)));
-        assertFalse(equalTo.evaluate(null));
+        assertFalse(equalTo.test(Integer.valueOf(2)));
+        assertFalse(equalTo.test(null));
     }
 
     /**
      * Test {@link Predicates#isOfClass(Class)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testIsOfClass() {
         Predicate<Object> isOfClass = Predicates.<Object>isOfClass(Hashtable.class);
-        assertFalse(isOfClass.evaluate(null));
-        assertFalse(isOfClass.evaluate(new Object()));
-        assertFalse(isOfClass.evaluate(new Properties()));
-        assertTrue(isOfClass.evaluate(new Hashtable<>()));
+        assertFalse(isOfClass.test(null));
+        assertFalse(isOfClass.test(new Object()));
+        assertFalse(isOfClass.test(new Properties()));
+        assertTrue(isOfClass.test(new Hashtable<>()));
     }
 
     /**
      * Test {@link Predicates#isOfClass(Class)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testIsInstanceOf() {
         Predicate<Object> isInstanceOf = Predicates.<Object>isInstanceOf(Hashtable.class);
-        assertFalse(isInstanceOf.evaluate(null));
-        assertFalse(isInstanceOf.evaluate(new Object()));
-        assertTrue(isInstanceOf.evaluate(new Properties()));
-        assertTrue(isInstanceOf.evaluate(new Hashtable<>()));
+        assertFalse(isInstanceOf.test(null));
+        assertFalse(isInstanceOf.test(new Object()));
+        assertTrue(isInstanceOf.test(new Properties()));
+        assertTrue(isInstanceOf.test(new Hashtable<>()));
     }
 
     /**
      * Test {@link Predicates#stringMatchesPattern(java.util.regex.Pattern)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testStringMatchesPattern() {
         Pattern p = Pattern.compile("ab?c");
         Predicate<String> stringMatchesPattern = Predicates.stringMatchesPattern(p);
-        assertFalse(stringMatchesPattern.evaluate(""));
-        assertFalse(stringMatchesPattern.evaluate("a"));
-        assertFalse(stringMatchesPattern.evaluate("xabcx"));
-        assertTrue(stringMatchesPattern.evaluate("ac"));
-        assertTrue(stringMatchesPattern.evaluate("abc"));
+        assertFalse(stringMatchesPattern.test(""));
+        assertFalse(stringMatchesPattern.test("a"));
+        assertFalse(stringMatchesPattern.test("xabcx"));
+        assertTrue(stringMatchesPattern.test("ac"));
+        assertTrue(stringMatchesPattern.test("abc"));
     }
 
     /**
      * Test {@link Predicates#stringContainsPattern(java.util.regex.Pattern)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testStringContainsPattern() {
         Pattern p = Pattern.compile("ab?c");
         Predicate<String> stringContainsPattern = Predicates.stringContainsPattern(p);
-        assertFalse(stringContainsPattern.evaluate(""));
-        assertFalse(stringContainsPattern.evaluate("a"));
-        assertTrue(stringContainsPattern.evaluate("xabcx"));
-        assertTrue(stringContainsPattern.evaluate("ac"));
-        assertTrue(stringContainsPattern.evaluate("abc"));
-        assertTrue(stringContainsPattern.evaluate("xx\nabc\nx"));
+        assertFalse(stringContainsPattern.test(""));
+        assertFalse(stringContainsPattern.test("a"));
+        assertTrue(stringContainsPattern.test("xabcx"));
+        assertTrue(stringContainsPattern.test("ac"));
+        assertTrue(stringContainsPattern.test("abc"));
+        assertTrue(stringContainsPattern.test("xx\nabc\nx"));
     }
 
     /**
      * Test {@link Predicates#stringContains(String)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testStringContains() {
         Predicate<String> stringContains = Predicates.stringContains("abc");
-        assertFalse(stringContains.evaluate(""));
-        assertFalse(stringContains.evaluate("a"));
-        assertTrue(stringContains.evaluate("xabcx"));
-        assertFalse(stringContains.evaluate("ac"));
-        assertTrue(stringContains.evaluate("abc"));
+        assertFalse(stringContains.test(""));
+        assertFalse(stringContains.test("a"));
+        assertTrue(stringContains.test("xabcx"));
+        assertFalse(stringContains.test("ac"));
+        assertTrue(stringContains.test("abc"));
     }
 
     /**
      * Test {@link Predicates#hasTag(String, String...)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testHasTag() {
         Predicate<OsmPrimitive> hasTag = Predicates.hasTag("key", "value");
         Node n1 = new Node();
-        assertFalse(hasTag.evaluate(n1));
+        assertFalse(hasTag.test(n1));
         n1.put("Key", "x");
-        assertFalse(hasTag.evaluate(n1));
+        assertFalse(hasTag.test(n1));
         n1.put("key", "x");
-        assertFalse(hasTag.evaluate(n1));
+        assertFalse(hasTag.test(n1));
         n1.put("key", "value");
-        assertTrue(hasTag.evaluate(n1));
+        assertTrue(hasTag.test(n1));
     }
 
     /**
      * Test {@link Predicates#hasKey(String)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testHasKey() {
         Predicate<OsmPrimitive> hasKey = Predicates.hasKey("key");
         Node n1 = new Node();
-        assertFalse(hasKey.evaluate(n1));
+        assertFalse(hasKey.test(n1));
         n1.put("Key", "x");
-        assertFalse(hasKey.evaluate(n1));
+        assertFalse(hasKey.test(n1));
         n1.put("key", "x");
-        assertTrue(hasKey.evaluate(n1));
+        assertTrue(hasKey.test(n1));
     }
 
     /**
      * Test {@link Predicates#inCollection(java.util.Collection)}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testInCollection() {
         List<String> list = Arrays.asList("a", "b", "c");
         Predicate<String> inCollection = Predicates.inCollection(list);
-        assertTrue(inCollection.evaluate("a"));
-        assertTrue(inCollection.evaluate("c"));
-        assertFalse(inCollection.evaluate("d"));
-        assertFalse(inCollection.evaluate(null));
+        assertTrue(inCollection.test("a"));
+        assertTrue(inCollection.test("c"));
+        assertFalse(inCollection.test("d"));
+        assertFalse(inCollection.test(null));
 
         List<String> list2 = Arrays.asList("a", "b", "c", null);
         Predicate<String> inCollection2 = Predicates.inCollection(list2);
-        assertTrue(inCollection2.evaluate("a"));
-        assertTrue(inCollection2.evaluate("c"));
-        assertFalse(inCollection2.evaluate("d"));
-        assertTrue(inCollection2.evaluate(null));
+        assertTrue(inCollection2.test("a"));
+        assertTrue(inCollection2.test("c"));
+        assertFalse(inCollection2.test("d"));
+        assertTrue(inCollection2.test(null));
     }
 
     /**
      * Test {@link Predicates#isNull()}
+     * @deprecated to remove when {@code Predicates} class is removed
      */
     @Test
+    @Deprecated
     public void testIsNull() {
         Predicate<Object> isNull = Predicates.isNull();
-        assertTrue(isNull.evaluate(null));
-        assertFalse(isNull.evaluate(Integer.valueOf(2)));
+        assertTrue(isNull.test(null));
+        assertFalse(isNull.test(Integer.valueOf(2)));
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java b/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
index 3eae839..606ab47 100644
--- a/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/TextTagParserTest.java
@@ -6,22 +6,22 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.junit.Assert;
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
  * Unit tests of {@link TextTagParser} class.
  */
 public class TextTagParserTest {
-
     /**
-     * Setup test.
+     * Some of this depends on preferences.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
     /**
      * Test of {@link TextTagParser#unescape} method.
@@ -113,7 +113,7 @@ public class TextTagParserTest {
      * Test of {@link TextTagParser#readTagsFromText} method (error detection).
      */
     @Test
-    public void errorDetect() {
+    public void testErrorDetect() {
         String txt = "a=2 b=3 4";
         Map<String, String> tags = TextTagParser.readTagsFromText(txt);
         Assert.assertEquals(Collections.EMPTY_MAP, tags);
diff --git a/test/unit/org/openstreetmap/josm/tools/UtilsTest.java b/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
index cbe2b8b..eaba1ff 100644
--- a/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/UtilsTest.java
@@ -3,15 +3,13 @@ package org.openstreetmap.josm.tools;
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.net.URL;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.Locale;
 
 import org.junit.Assert;
 import org.junit.Test;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
 
 /**
@@ -87,46 +85,6 @@ public class UtilsTest {
     }
 
     /**
-     * Test of {@link Utils#openURLReaderAndDecompress} method with Gzip compression.
-     * @throws IOException if any I/O error occurs
-     */
-    @Test
-    public void testOpenUrlGzip() throws IOException {
-        Main.initApplicationPreferences();
-        final URL url = new URL("https://www.openstreetmap.org/trace/1613906/data");
-        try (BufferedReader x = HttpClient.create(url).connect().uncompress(true).getContentReader()) {
-            Assert.assertTrue(x.readLine().startsWith("<?xml version="));
-        }
-    }
-
-    /**
-     * Test of {@link Utils#openURLReaderAndDecompress} method with Bzip compression.
-     * @throws IOException if any I/O error occurs
-     */
-    @Test
-    public void testOpenUrlBzip() throws IOException {
-        Main.initApplicationPreferences();
-        final URL url = new URL("https://www.openstreetmap.org/trace/785544/data");
-        try (BufferedReader x = HttpClient.create(url).connect().uncompress(true).getContentReader()) {
-            Assert.assertTrue(x.readLine().startsWith("<?xml version="));
-        }
-    }
-
-    /**
-     * Test of {@link Utils#openURLReaderAndDecompress} method with Bzip compression.
-     * @throws IOException if any I/O error occurs
-     */
-    @Test
-    public void testTicket9660() throws IOException {
-        Main.initApplicationPreferences();
-        final URL url = new URL("http://www.openstreetmap.org/trace/1350010/data");
-        try (BufferedReader x = HttpClient.create(url).connect()
-                .uncompress(true).uncompressAccordingToContentDisposition(true).getContentReader()) {
-            Assert.assertTrue(x.readLine().startsWith("<?xml version="));
-        }
-    }
-
-    /**
      * Test of {@link Utils#getPositionListString} method.
      */
     @Test
@@ -175,7 +133,7 @@ public class UtilsTest {
      * Test of {@link Utils#getSizeString} method.
      */
     @Test
-    public void testSizeString() throws Exception {
+    public void testSizeString() {
         assertEquals("0 B", Utils.getSizeString(0, Locale.ENGLISH));
         assertEquals("123 B", Utils.getSizeString(123, Locale.ENGLISH));
         assertEquals("1023 B", Utils.getSizeString(1023, Locale.ENGLISH));
@@ -188,8 +146,17 @@ public class UtilsTest {
      * Test of {@link Utils#getSizeString} method.
      */
     @Test(expected = IllegalArgumentException.class)
-    public void testSizeStringNegative() throws Exception {
+    public void testSizeStringNegative() {
         Utils.getSizeString(-1, Locale.ENGLISH);
     }
 
+    /**
+     * Test {@link Utils#joinAsHtmlUnorderedList(Iterable)}
+     */
+    @Test
+    public void testJoinAsHtmlUnorderedList() {
+        List<? extends Object> items = Arrays.asList("1", Integer.valueOf(2));
+        assertEquals("<ul><li>1</li><li>2</li></ul>", Utils.joinAsHtmlUnorderedList(items));
+        assertEquals("<ul></ul>", Utils.joinAsHtmlUnorderedList(Collections.emptyList()));
+    }
 }
diff --git a/test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java b/test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java
index b0c11b8..802f81a 100644
--- a/test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/WindowGeometryTest.java
@@ -13,12 +13,13 @@ import java.awt.Rectangle;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import org.junit.BeforeClass;
+import org.junit.Rule;
 import org.junit.Test;
-import org.openstreetmap.josm.JOSMFixture;
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.testutils.JOSMTestRules;
 import org.openstreetmap.josm.tools.WindowGeometry.WindowGeometryException;
 
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 
@@ -26,14 +27,12 @@ import nl.jqno.equalsverifier.Warning;
  * Unit tests of {@link WindowGeometry} class.
  */
 public class WindowGeometryTest {
-
     /**
-     * Setup test.
+     * Some of this depends on preferences.
      */
-    @BeforeClass
-    public static void setUp() {
-        JOSMFixture.createUnitTestFixture().init();
-    }
+    @Rule
+    @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
+    public JOSMTestRules test = new JOSMTestRules().preferences();
 
     /**
      * Test of {@link WindowGeometry#centerInWindow} method.
@@ -52,6 +51,9 @@ public class WindowGeometryTest {
         Dimension dim = new Dimension(200, 100);
         assertEquals(new WindowGeometry(new Point(0, 0), dim), WindowGeometry.centerOnScreen(dim));
         assertEquals(new WindowGeometry(new Point(300, 250), dim), WindowGeometry.centerOnScreen(dim, null));
+
+        Main.pref.put("gui.geometry", "x=0,y=0,width=800,height=600");
+        assertEquals(new WindowGeometry(new Point(300, 250), dim), WindowGeometry.centerOnScreen(dim));
     }
 
     /**
@@ -143,7 +145,7 @@ public class WindowGeometryTest {
      * Unit test of methods {@link WindowGeometry#equals} and {@link WindowGeometry#hashCode}.
      */
     @Test
-    public void equalsContract() {
+    public void testEqualsContract() {
         EqualsVerifier.forClass(WindowGeometry.class).usingGetClass()
             .suppress(Warning.NONFINAL_FIELDS)
             .verify();
diff --git a/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandlerTest.java b/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandlerTest.java
index b2d2bd3..f479d0b 100644
--- a/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandlerTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/bugreport/BugReportExceptionHandlerTest.java
@@ -2,7 +2,6 @@
 package org.openstreetmap.josm.tools.bugreport;
 
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -22,14 +21,6 @@ public class BugReportExceptionHandlerTest {
     }
 
     /**
-     * Unit test for {@link BugReportExceptionHandler#buildPanel} method.
-     */
-    @Test
-    public void testBuildPanel() {
-        assertNotNull(BugReportExceptionHandler.buildPanel(new Exception("testBuildPanel")));
-    }
-
-    /**
      * Unit test for {@link BugReportExceptionHandler.BugReporterThread#askForBugReport} method.
      */
     @Test
diff --git a/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java b/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
index 06803a7..23373d2 100644
--- a/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
+++ b/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
@@ -23,6 +23,8 @@ public class DateUtilsTest {
 
     /**
      * Set the timezone and timeout.
+     * <p>
+     * Timeouts need to be disabled because we change the time zone.
      */
     @Rule
     @SuppressFBWarnings(value = "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
diff --git a/tools/checkstyle/josm_filters.xml b/tools/checkstyle/josm_filters.xml
index 5e00b4e..dfe1bb2 100644
--- a/tools/checkstyle/josm_filters.xml
+++ b/tools/checkstyle/josm_filters.xml
@@ -20,4 +20,5 @@
   <suppress checks="HeaderCheck" files="MultiSplitLayout\.java" />
   <suppress checks="HeaderCheck" files="MultiSplitPane\.java" />
   <suppress checks="HeaderCheck" files="DNSName\.java" />
+  <suppress checks="FileLengthCheck" files="DomainValidator\.java" />
 </suppressions>

-- 
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